E~x!tG|l{d>X>?8GPT#AofqSFgnPti;c*#IMc7KktbkI7whUNf0_o zP~J%}*-3ESNeEj>J!$_PyY~MLAg|%6t*g?i0S5sA2d`xV?P%?2Y*OuMg8&0-YX@bj zZ3Tk>Kuk^zDz*T|)&U>`bi*L)bDNz@%W}hO^9KvZJ0PQ%cjKKWr?X@8uM3Ym;BRkZ zTTilX?I)IuhHx5tyQu6iNid=zuV2-CB+AA@U5{E27^u%;WU`@#uQ(i?ZP z3>I>}SX7|`@vZnWwp0wuEqqGXbChI0?+|>ICCb@iL2rz`Ema8REJ9lfiWVj-C3Kq5 z<2*R>+NFB&HxU7 ;BWJV~bzG>JZ}hVFN8tuc`@_B(o?u>I`z=B7W=>x}xJb!dwN z#-CdE_ )c8RjC+ z=f#_` zjT5kIWUfOD*EjKjv`jx(%pc=No<`fB^J2oepuX>mfj3~2Wz3ndwJzRG>{dhXZ))|8D-R)#F3`4(itja^`yHhkP6~ ztS24bH=2(dL_B)lJFdBJt*04R`4j`}fa|%dw9&rv9_1;5wQHZP-;|Gi=8V01U9l~t zqBx3*NDNrz2)~&^rMTx}wDk>5X12M6jyX;(hXEfy{E(A;A7}{SfAd!s=CC&SHSYuG zn}hz$d>aD8{SgEc2kus53D=Q7Y {G-3ZcC>dzt z*;!J|j7s};I8PeMPZ#EB_$)FR2;{U9;}W(ECoee`IMu?odz`VLtTX-w2tt5!x%AVP zC;gGN*v;)z7OvN3MBG;)hO_-> prCMNUAI5_OGPzhanwFLL2N?M^tHFIXQg7>9bIle}{ zQg*FI_oYS~P@~!Txl+pGln5_wwVRZ&Tnu(nK?As=jCmhUHn&6Gm^~B$#6-lhx<;av z+|ZoxDpjvBqp6rx=#h;q@s(BilEtpV7IUl0?5k!3&{>cuw2j9c7ss0+nx5i&Ly!HQ zO>%W#ReXS3?8r(%xEZS?s;}NCOyWo{W#6mx;8}v{5Gg*+rF7Nx4O=bvNf4u9ile`z z*$2nQlgU9w4{HWs0V;!c_3WXW?OF0!&Lp*%AWDme%cNXoD0SzrmUxy@ao)?eI7Wo$ zd7DShP6l@-gVR(C*t3tnXr8pmIBh!1VJ{aZBvDzNGRkFO?_IUKHuU9BFt}vxfEhvz zN;Rzw9D1cL;)c{?b6Aq6Z-$@9a~HxmK=90Z$6tzW!tAG2ttw_2u|RkTgPyA=@Y+e9 zd}?%Y?nyX%a%U2L0=%H%nQi5Qb)YO)_5Ey{1%)M!;C4LlOY>>)k0QBnfoh^y7JF6? zvH};lOV~OQvl+wu1{*ah)1;cl3g73}ID0<;P96JN{Xtu|loSP*^*aiMe!>VjC;)98 zl24Gm{Fl2r;2dX_w0|u NINZ*fTZwL|AifrK>#k2mjUNf~sI6SWcE(=MEy-i5 z3tGd0M~=;9j56MqWV*~l&v75Q!*1iVn*LAp+S2i(CtN&$;cJ;Gk6zc}*Yf!dl*X@v zO!dqm*L5ko+ZDgVsQ1onw0lDZc~?{}kLVpbP+fzk ++s>>myAbJG$z=eDA(-G{N$2=z^arfzbW5&-+{5 zX7>S&nODBuoB^iaFNd1^qeZi_S}g_Fqf7S=McOD9OTWJ_|KiAoN$edx=~-;G{0dF8 zC7w%E$}k8NyfJ=QhQ 9dYI`jnq)V3%kZu0% z11#A$RASFZkkYRtU*xb!d&N&0;}WFe--o1UP qzuf9q8wH^q|=Bp(g zPDm-$NEUE+7zPCqUKoLiP935LL)j4-_RG@8;5|Z2TDuAh3pq3bw9I-v1dIbKOnxoY zrOJEYF@mmCe>2n1BqR!fIpWZhe7QaJ&@|#lCRm2_w}dK?Bro5`PA|vy@O=zVjMC(A zzb-t_P5LL6Z{b-Q>r_#6=zM4*(TA??TCHZG=A@O{_zh#GZBhX^lBCAkq35Qgkej4! zr- qUnChsk+8#z(^{N#w`?EFtw}MO2)e^!?jh#@4v?%{{PXnBSpjf9clURH`t;A zT9g9{3SLoOnp_SJ4$|0ISyB^M2LjOr)&o-C+7?~$7j5quZyp?K81I_vfdCnp3IiRP zTOV7fTwa+O-2gyr?}Sur9&8++1fA_)jDcNU2dv(&_bxs8-M-8%egr;mul;;$To~{f zg~9SurCp14`D&tZONKiTMXJ+%Y4JJ+5|4P%;M(kZp_(@7b(!!Wzz*REfugHqxva5L zuqRMZG}&k(P)ef{E>Miggyb}tFKC{Z8L?+}e;0~HilR=oic)1rMv}vJw+4@5yrXFU zBsrAJGMlx)%(AuG&RZQZ2>rx5QSZ1gk>#MmsNaCyL$Ro>CAsW0{w`uv9+TxH62;_9 zp(&T1Wq>+-N*HnRUU)Pb%C{eX`6hlimD&$=cr(AFP*e(OsHtD?a$Rmw{dBE=)Y`x7 zOLy?ARt@LGu1N 6X z(@Az#_Q60P U-}=P)KrOvP*1-~LPr&vb~xQ!AK%`qISlNTR|N`dR%v z-$XGw^Ed%+=zX5 _ju85+%vZGLutLTm8l@VtYU85VN7vdcLn%e}(78@AW-T%~M`k!WLQ`ws zxhiCarU9VOOI)h`^jcN|90B{NO;pDX&u7cEpxmtl_)ru2g+rdE$W7csTWZ)_{GyMZ zk=;R;Kf2eY$!@pErEUB@%)7$2@B@sl|2;i6deD+G#vTgCUcInpc06~V7w0MmtPnQy z>__ZW45pnADMy) cW95C&xV>oMrHfP88zz z5gFL(XYk42>c8D9fnx^fZ& #@Q;RZeHu5sQZgod{*@6 z=Z&GM+*n5Sf8tNuFXcNQdTs;8cL#oAd|a+T6!fn6l%je)%}hGLY)Vro)j#&Fq@a8OcX@ZfX=uq;SG1(woqE*CoZI&(Of;Roh}SP|5MC)827 zvahn9*b3!TW=(TbP ~e_R1k?msRt6n-#&49|99NN( zjnBmm^Ua{z%aa`J>AGV?7?<3CW=r;Y$cQ4i3Ng%2Tzp1fa$175C1LC5j_8o2Ovm)1 zuM-=AzV2g;Ku R=;uEYr!N3{e{@c%egGGA@Yk) zvAq2*eBPI0&)w-Ma^P1V-c>{x78lHI;J16WpD^nAQ)Eu1350iy7sDA(>_H*55bA?~ zGMtoX_y}vIdkD+%Qn>N*L=>mumBbtbaEoDhv!yaxnUyCRcI6!` @Y}aXW$$6mr0XbykxMnfp{>sYcM)hSaQ6RVMq0V_dJ>?Tc)#?<8O0$dAbs-Bi zS`sx{ndE9I18#K;5{6T8RbrMwFJ5MNbXJlvY6v;29Oi$4;#1!8zKOY@5cIr|^_Tii zM64ngGwgd(+#yF}Q~LyeSrCS;Fq|2QA`=>V6C${=&QJ6-2t+$^$eFEh)x}o!L+we; zzi4}pM|%Sb1&`v>_I3-W;SaMr{KQItgUyOt69gmA?3S!%)=C!}%ceYQ$L # z!DAM;7=B_sy5p#hs%z~kG4IEYsJA&$kLhyFZecg+tg>ME`AlpEXXU~nJtZessAAbS zj++saia=tYkkGnCd&fEv2fT_>`L={p{5Hm1o8rP EuB@)Gy?%ub8HE%*cSp>?~xUKKT!z##RbK>TZAiG z0#M`4R6Wpw3sc#H*}hw|$Kb-E@*7p-=to?MY^R+;Q0R4fUT;6ns&Vo|V2#h&unawN z&z?NveZfdfulCq?CX~L^Y#DdJ>C_{dl{DqI0c5oBILqT+CHI8Q{+!{Ovq#^RpGl@V zj-Jmb2E59Pc`&F2B8IOEQ(q-X-3)d=_^O17wUh%y!97&>R7mU0Ik6=*@a%U(>NaQF z`l|AHDe9$jS)#PHoql42ABB9etJ=`#NPM%MwivrX &$OJXt*9NF3L+Mi%xd@F4~Ds zb4Mvg-$z&G%K*h-lc 682?DIEBu{VXyTq#4wLjEOTrWsR|_HI!VQBA`9Lw6oj`LU z^(#>kkBkT|gHU3vq~x!m62B)`RIGxVl#n#MaKQ+MYe|<2UX8(wh}d@zl <*Kcz(yjq-ZEIw$ZENjl zQfUDhgn$?XuVbzm0vR40?^6N=pN0TiSs58)T3A|L1L+0GZY>}0fPrk#FAVQogF%eV z9Y`;%4!>NF{Gb5^xx0H^KI<7*15?-)@;HCWmcDo(7Ip 0`k1JsyaNjFo?MV!gJo{N`a^@k|mFk9)77)hBB zG^gK;_lo+B-0^yd@m3t4g3XI)QEj76a=L_dVM|L7#vtZ~{c3VD$MgTLnt;P=cfP<0 z)>dZ=_!&N`2`qVC(yqL1oaQ!k7x<-l6)NqmRfU*l=2$XF(DFMe^X2M t*V+L_w`pX?3y>YY9)I8qqF6rZ z0RGuR0JSs~QV1@!*8<3oaBvhZa8fi(0lw) Oir)OnA^T@(II@}Fk3c5?d!v_&}-CW$;c&_Qk>ji-||w>xud>^-qo9* z+HSwQA18#2PY_$D@Kl&W9p!Tn!nJ}-=OjX8(ClZro_VfjHBNsZ=ZXbHX V`iQ >l&Rf%@*Un$rrZu{7+}Z+rp?r}G;>0!U ztfEDU&zdt`rfk|vDQB(fvq0c&s*L_vmlf2_=nhpL43tH8otW$pH;(7a)%LO4?A*5u zIzZ8NyQ=8o4 %K%F6MWamj>)^7TyN3= 1`;eZuWD42e%WHc`Pm9IS #3_Pm zPR!4ayLc;j9=>2!WmPb1*!{an)DU&av7lD3L0$~UNvje(FmQbM6Qh|3sdWmh{II9u zBMBQ_oW#Gad5l>QS@e5U7GCp(7&;bdcq8rsemeLhW1o4V=9VOD9M%~9A!$r<&K~|W z7W^criz2yMA+F!>1dX6-q%QRd*#jt-fb>*y?ic<=1q!P~1gq3n>`A?R_q4mZGu(Nr z8J%lnWNQAhEir~z@W5pqv&B@Z)^6z=V^uK=zi9xM+1ZX{H JM zy(N|cr3bq{qId)=c{Y@6hH}K)?Fvd`Mv0~R&$3FVaRPUnp@PrnN@2tr I<_W;1`zUk}yTP_(tc9WmF=l5elyhGekBE=rhdQzK@il@7tK@$fo(_z#*i z76@tcBq0J3p^38@Mg(=@PLojRvSu3IMDQ+1-|~1zeZBQ~Q!|>)cp=Agx#&HSj$@Z9 z-h+L>^QiTuAn(-a{#u2Jq5=5Irabt-$gD VCU^JR({$M~Fr0n~%kZtGuw<>laAaE97hT6B4ZVi{T-k-vq5T$YQpxt(^y`!I zI}m!jMRK=V=iKg_U20)tL+CZ 9#sqyApNaT~bIfO?>w%~rzby-&Nry+^(E+$qGN zOKyMT7qV?Vl3AC)i?s*5FDUo^&t 0Xo#;T>=P zj(jaJfYb_{hcIfII~O~uyNS5s*`9)bf^;Ey!jq6YKX*=1;H{fgf!)< ~pSvNB zVNw>-aW8!DjVR)t;ymBgdu&;ud&~9o#9g3+Ly7M_-~tJcM$xpa`2G0a0IDsv;t-Kp zdvjRqvF_pP!dl9Y2%*tnx-z6)j!XU|nXu9|)%QAfk$lhRg0erV>UKzHqUfW!+Y345 zPV+kdECi`#FtqRIkO4obERcJaitwqw!+jvG$^#PQMk)JVs}6J!WsXc-rb){DE2+M` za@6Hx+z{j;9sD;PtuHq`NBqll*T+t%^{qg!)@yv=51;shm;}7v5pmc$0C2z~p$!li zx_Rwgoy+mL;NmKI>XX=M*zg?Cxh^oO?uJ4s$80HcQ0eXs>0{ig9}Yz{cw+1QM!yrz zzN>7VT4aQL=DQ^tNNEvxULul)q4_h|lpLFa`-tM5Gw97-Lx95 15-(L;Ok1!{%fH&hw{ mtY~RBtUZ=oQ>g3N@J5HLwjje1ghLfy6gt z(%T@*3vo0|)|p93J7Rsr^GhsTH92gWEkZa8HMcWB5;EwzD4bO+RP&w7Qkra~G9b`O z17}mo$qUPiTYbYNM1&iAm^d=FIT&;k9Ys5e2Q!M%StVvNQcgoMFG??TDcrgK)uV64 zG+-(M>MfK&nl528wDcUGR@+^=I0g#ZPcxHPs?yhGf?fZc=vZ)IzqBg1tEfw;Rf;x_ zoFoa86?G^iKOjpT&H~Xc0+GjpD8M2X ;@qQ4 zfobz|r*?6jK?@Hl$*$G;2+pTmbFbTMcPEHvEJMGaQtx7*#c>hvz+t (|FU{{|OKDFMr+jNAR=E_9jl^LUAOqde!3t-boY&3{!aR8QrI! zqIhAVZ4Mca>#Pt!!u=sX@TwEmFfbr9nJ{o+XlOSUP#rEe@nezYUT`DTTs?5W0qY|3 zqW6hfO)NUY+>CcUdpC|j4mc@G_@-O2nKnB7O(O}jPn(ciyMe1LT|cF&JQ`IpNY~#Q zjT_#_%e{&ub*Q}>GvyBs4S61WMz?1A%X_q83_n(NC8Pl(%(<@{+WK$~Mg&cs&dW57 zSt-mmyQxo#VvJ=WI5V$qMHCutNqJ;LdKK3%z|}^Ouj043qH2q+-QYGXuL|v03*qVj zkM)_2%E#~;lEOaTY@%#nz7Ka=kie(SbDl5?;BYTDtC9CzT>|y=%WkElp7` zj?Ieah`#r2Xa~0KeRIpY_Oe3TZc1#+Wkb|;pLBf +bmrVozR_i>w}E#5F|~ z(iP(j4TzVowR*!GJ8gZJ;T*kT;nH+xY|#7Cv|&kGi7KU;FS^iRJ;Cp^HkLGd5$)_~ zn(Yk$(9(`H%fU=^6>cWP*La;yf$$Ob>(lmZ4Tbn0h>o0lF?)Uh0LhUGv($ysC5%75 zB5(Iis6^6D?Ta5U&2^meSc#hPM%6UG9&U;h_K}4yLCr&6DVC}04eLZQ+x^;H!!GR3 zrS%Vwb)#*tXB0pB{0C}UC=!$9DA(}IqgrS-KaL}szn@8FW%0s&+|4gf!Esx`{*?tf z ZXlyKP3;t)Yx?dg2efjn%es8f6pfAvas6I!b zSn4t0)k9dHGK+qFRfn)A5fNusN?{4_S@)b%MeM@YLHM_uWP%o= g3#72 2Xq9|4eTgiZ7Bp$9Thk@-dV%MIgD3_TXuP7vWp zA{vuq5h&Dl&zrQX@2Q&R&QjXHB%#@YnHF`-gVuYux4Ee&)cqD6Z)@WppWcyqj>A$- zQ(;-Fu%^WF8r*)z!YWvmit}ZG8T~)T-T!X@yu5)2Jy}QXCQVYdypEA6>EbFReM$FR zWcpFsx9JMbPH$!hkJeZaSlCH}M}TdT>)#po3%bFeMy37Z{0?jieiEsLDStGI!@1F! z(`b1A57)G>FDfBR(Q(?WGHV!xD$)9qzoQ>5bnx+) yqZ7j8Pc8@|(VXs#Iz4jGN>&ikIULPAy+D+$t_78H(z{ct=AiCgK)VeN?Xmv9dK z+wFZy)voHhCK>>hrj{1s3?pY*v^%-Lm+oZc{{Pk7TQ=1Jg=?0$26uOt;0{586Wrb1 z-Ql1IcXxM!yX(Q--JReN2sxeZTh%qUrn{=UW M#Kb>`Wp=r=s&O`1GjL}60#|5pO>^k=B!407Fr_%r| zG7=B59A*+`=Y7+Q%B=O&BkQ{hwWyH6uTTx09yUb_l`F+iGfmi|VnO-ZHo5`1UPK;q zr7Y_oT9b#K0Lu-tG@$*BhG= _iX5C~^_w7q0BC}T0wR)aQC%|l0EDM@mlnl#j z(Ar@)WqcmQ%X!<6D(IY_M{GsPrUITE7 =;sNI#WHiGyG~GJjM}`x$Bd;4{cHO3nbBLb?nH`rW2#TB2qkOq)I&58sM_05 zYp`T&1;q~ _8G4ZUPoH6gdba?U130lO6~0_ zPg?enr%`eO-R{n#j3QgPrm%JiAbG*Ab-p}N<&8s;(b~a#dT@;MGcDFI6P`di6(MuY zW@WE*Hxsd%m`2lUE{EIiZi0)dwL30v`Gn_EzP)C0nB3L8$S`g$Zh~5eA`LvkI;^*L zPg7~BiR_^BlDK%2nn)Slu1e94#(MZ`{(c5?scCO%5_!dY$a3t{BPa1rW2|*Px;AK` z3Mz)EQf~aE{vKnocUjq;s=VA~UQ%ZmKbJni6w5-XCjHBE)Mt;y 7kF} zRP7($}Pyk_{yTDYCXc zT0?pxb3FW4=wxo%;n%@$H-Y)fkvMO4ST3i@me|RnN0D}Kuc|BKCaPKt=xRY7>4DsI z%$R&^Xy+R7lu(>* Gy4$2X5rJUDvJXOa$NKW(Qy{N zhG|*{y^3+fz++)m&?{vI+e(rX;nTT|6Y8w<7-oj~min>66EL4g=p=`VHU*Q9QX6GD z+943sLNj{P%b2Wd*>r^Ty#{4+0+);EzCm-julrrU0zEQS1VN#0C9Zhk02Xg&n-oA~ zv0TTz0}XrtZ#9UJ!zDV+8gXR>>fepuprTI=GN|K&27vIJG^2l&VMJy|cWU!>YsZYH z22vr!jx0xy@F`^R#`YrcadZHutf5ozBIgj|q_`!QK(SpVPUG}3q02fV-f;?a((ui3 z`>-DS|9=2@x&NZ)`+tOCzCc0>Rafd%LpMTK*KoE#HrLgwcR)bE^g(p8Hw+FAcPmx* zLCrwH3_x_TG{DTxEi6sQbwIDK%?>oPLiX>k4{UBp_a4me%`LL-&aD1gd$^K4+57eP z`ABoW`V1|b)1>tY=R%{wq}iWw62txtrFe+q%L2cD`7C$@0s@Pqyt`vQM>rY|5#~GK zih9zDNfyqgLZws^3)AjzOolRTq9^??M08w?QpF;K08=i)7Sm}=G6`INK2e4-$Xmne zYuVxxl~AEN)Tqtn-5Cu2P^e?ZHfh~fiH&IQ4-T8H0`30YEniB}Z*^9`ZttpJx0cYM zpP_0Q-{9xV(M|#jyOW&E#>uBtM<6=7%%fl* MoulVA?F_H;=v z51A}@(xRYvIuMmq1m3=9wD0VNUf7fi>-by_fB<_DwS?cVHu_4I$dUPPw|9sV?36rW zaJk)fvb-`;`2;r~%IQ2FX_!QG&n$Md5)E*D*M5V^Mi-N)N1w2!gOvev$${7~uL-_< zt?K9jFYJq(`~@0skbe2Uy#S%cQC>sRcO6ue)M3IUhhksG(ladSEC-5y5RQ$_8La`; zN+>vy(oB#HZD>Vf(C^^a;|a~(m&IgIlQT^Tcx(naRDWpfz>yPTQ<>rootRMS{FO9^ zTk~PCU>ptSJ&kNECD_dh4nv$vpXn^cF(ZC@+s~+&*qF-(yiHK%V#3Ih6i6~!(-fkd z9%p}x{R_xWEb}Qn&v&+z#VL~X)JacIdKX)&fQ!hk%(FecI8}5vl|3vmHi# @(yh6LsVo9_zH>193=rzs&~UAEr8{agF_x8g>3W$p z&}A_KlLt+yZlU&kc}i1ze0>}tr>M7>i{lbME*kqSkyo=zNTb$k8VG@f{-e9y7Y(19 zaR2=KJUxd_3E4+`3Ic%Njky%dg+cNH(%NNUKH+r@Et-5cPDN!A7HUcL0M#}Kf1Qb= zH#L>noX6u7A9V&*M%z@FOo{w)1~Y+!OMl070$sZxtIIuJ3=fHIWHw#3u+O$wsDK@` zjvvF0P^3WF5!81DoY_e$Zw)r^i<#O&z!Q2LC?u|PTuJ%C+|o{h^}~x^-PD05OiRds zl}pko<*rx25#Z@7v?km-VF_O5Jq8EmJalyXHoqWmpwTF*j;edjA`N%eGvQvqN%tv( z618S0PLXn0H*3se`raK9q%>jEXr=2Cc49VJvwK7?S@CZu4kxC{{L0LP_G!f~d}S+d zVcg8*R^9J^eSyyN(L?*$L4eCp4%2d7Kl0(W*q@Qo7`4>i&viJdr!sv8Z0<*8hQyr5 zgP{Kc8BYh*9;}7G?=}D@a0fs)5A`9{j=6UM;6B^vSu?)zK(5Ro=s`#D3B3&}Y#&nf z^F_e*CQ>?o4-KP {3_*@$lUAaS zff_Ks6@^@)B8n_>7{=vaU 7XyKk9wMr{BjaJ_> kN{9YYD!17l1`6MZ`-clTg#x*AVC(awGaN(JTyLREwD-E09#Y{DxTI z{fLRWMMhqAJhApbV*r6)QrQsQSm(Yp@!=JTwpvy9bdmav<3$emBPQI;O^2nMYJ_vZ zF{A1#jv4;31qU*Px13r3Io^f_Z&x|!;mAmsvI=xF2+$cHIYvIx?r{8*XaiECR=Gv* zun$QR-*(T%Y}PKm*0DD`HZK`$QWa%KbtAhnx8jrX8TS((wDKc1$0v%4 JL`33@d?-QxOYePhrQY|s#u%kW zdt9!rv^b$$N-tb&p(~POh$W9BmjZ=>nt?L}B_aobn!3Lt^7aQ-kPvky??Q=0NRN7! zI~N(xF21%TjB2)Z%OdB>o&0lNbA{!}sF|K`^Y8 Bk~*Hm-m0()0yz<;Yzpro~qJt7|B$RPij*kbws^1Lyf>R;Z@G@w2rz zXp)(qG0IROB2N1yuiRTtdXMNWsx4!s9_EZ{C{Xz^&$d=v0_Q@(3a1^d;T+anBXt|$ z2wiIkRvJkfx!nI9IGk=T1prVfMPiP$B01Ll;3d}gsOx}(AG;NliH%Cj?-* nneQVyvp{^c5)9^+8wsDhzKDCiyVP9v@G)$jO#;lAWojy<-xHSXcq8x|?I zROo2z@F33%#|a{%bdle|3VB+s_iS^1nyLD_oJXCG gmH~RcjoQRJ&-2AqAC=3$dO42dzuL*-4-1ul zG)|O_`KXe+S_laV%(KETi;A27+Hdcg;&)k^FkvXuc1Tl{pPGp0XT!5Ny!L?-r1UNQ z*Ql|-YAIVq>a!%STCl%H74xIT3fyQN*C@}b)0;0Y-RzcJahUc1cudVQFdRPbx6Z$R zD}H(D`Ov-f8TGC*0N@Q7ESqMaY@?P3whf!JTcAzf&B*G~j hI& zr9@sau#hm!$#r%m%{czG)!SoNYn^OH70!khHfAb$SN_rM((J 8mUv!c7p@`M+xz%pecHUYroezJyV`9`a ?;=E^%Yy z`)XamZNZfCpHMfS>PA`-ynj=&?!_`Jt6v=_k1g~eTS8zs+FHX0uU@d#lH1pkKp;i{ z9lS58ns^Qt+LM mIUDv0#gB1J5^8lc>X6kDTG8^LfI%^ZXK!Q< z_MTUA!Va-K_@MAZ-}ZJ5$aXr*3J;HkP(NHqp9Q91FE9D^@Q rqJ~Hcf(wk?<}Iv;=*{$Z?ymK)~f$c0FUdFgrAi} z*qKDUkwp4CiQFgQzoZghSfl`1T3Vb^`p<{2hK8(&uY!PSX{jx5h=#0z>g{cV=;(~- zhWJP3$6@M+M |hRsnNMo2|>!yTSXQ! Oy)2@L_~OHN LA zIkZkN_C|GyH1cS9(vtO%xo9?x={qJq^PxP_X#CA}Iu!9(tccQevQMnVVgXt@BbJ RTDoEsbr9Lx3bS70%yK5f`zE1kg%yl$aHD%< z8Y$nOZ^FBnyWx@&DTmbgyl}GfY7k_yw%s>37=)V0;~sbmzMy#8F>tW4N)J2@Zzh31 zg&oiHPWdfKrZ3hzwiSjo?U`c#M^ Iyu zIHWT8Wh{FwmAJEssrp$?qEZ!m2U?X0wcmJtpkj!+v? <~AyEZq>5igH2F2TqDtLn%uAO!qKl8 zQykM2E1BMls5AB6HTy-Px>tl4{DvJrM&zXk{+#7dJ(_PV{@tG&^ul+Xq{J$D^1@2! zYX^@dhB1J~$>-&&TCeESAydBeMA*0m_j7Y IIk-WeV)_MCV2X z3V6D*Z `pi%*f6ST{$P+C!{MGSe_M1Tg z7IAxO#cyz_aMGWqF-3)@y~`TX0XB`X6%czQbqLaHHkO0(q` z6g~>asCR> q1e_95YG2k1w=YsS>}DOg~Q z@8`hjhw()IbewB+RcV1VV`l4Mh)KY}U6HU{5=x+4x);{XEdvgJ*N3%wJ3sv%B4_rX z$(@qVHMuPm#stdDX;LHf);UHdH6Pkg21-$Fu|E5SYF^!1Y&AWp8k&A6rDL=UHfbn% zM&^ wzlt3CXIWLi1HFjw#~0{a)UbXFQYKJI&}DFKNuoTkHM zBsGBr=can!Q%6~58 csfR5!ZK_isPLG)^FB ze^*-E79V0~nst!)bU6k*yyZ>~v3s%1(Bz&=+ufhybgcjxcbibluMg2*H^9?e!;N4h znLZv%g1I1svSPfOJ_e4K8FK;m(yMEgwxL0KF_E8K;96C-P=J1_=VP?V5Sm!K)OXhu zcdf6-m-tg$N!VNA^;!CpwyO3sbh#9&!?E4Jvsk;=P9VX5XbjJtvxA3Mo!et8F5pRi zEZ_h5N@k}zady%k#xc^mjanu9R<4mUernXw{(KRycxfmxGUexGY|=YsPend~tBG4H z7WCp(GQa7WA}yC;`C&Qpej81NcqK&EKCo~A d+=6uIKR_YRBLrM z5}(X-qm?~O^{bO4|BIe1J=%u*6GK5u6De)Y366dz #l Iu6L)w{UpOi D2syzA}z|-oBldgdAt1O)fpGp5laXPqF z1a%zwqp}6oTTxDExg#w4dxQq#L^6V{e0C!>yR3rYGg&bzDSwRz*HW-)M*`qMj4gxw zo?O8?Pyt%1ScL!H!L7b_NFy53g%D^56&>-YuLXbia>`l= 5cys%8p zt^3eJEB75eGekDd08J)hFQ@J(9b#5m*y@#xehbcqOKzV7;@nH$gRO$RwG5r9fG{d< zMWevwhah(#KLw c8pKBxLLx9-q3fq@km<#Vp2HJ!+e5rU7JIk#W< zlMp_5bTBE8xF0aIZ{ CWi*c43odPC)0OmHn`gwe*q!ACSi`s>1m0~#hjBNAq zYL;L#+#o&<{g4kGcQy_(%;j_vEy#6r@+DF)!&&}G&JV}XfXqmxFK6=LRw* >B8sKP@MxB0V zdCH6MnxNx>+kM#)timUy;ZT50KmKP!00MX#hZ=>qx93sSH?tvZM)0;1uE3p4oo?O3 z$|nWIG)>*CNH8#Ol*AB45hCC0FbyV~xBZVaFvOO-l+y7UNAkdH^vml^u+T#K0yl|B z^0LJ%Ilh`1Y;Q-ft;G!APy&l7ew6;V9cyZjoKap2NOmM#Q+O)X77GfE4f?XkR{lo| zPo0 ;>R8yU-Cz!6>d|OBIgM25b_43RJ zxJ9)rAt^@FG~+tNBT;gm%>l*)sn+ M*;Hr3`L`-46_w@H z1og4D=;dj&5AV2nBAfgv^{ALOXa!(&a(??dBsLvfu2Li@TS3?KQ2VeNr1Ij%;uYVz z+FT5#D3&298%MYpo>!xc54I13N?A>0+MdifS)5|YCggg>!$l&R(2uHzB<>B476+49 z?y;h1<~HkJP>bn;_Y^DNzn|yg3FiFj!U&eO%e&z5VW&KDoOT)HvaMkQVG>`Xa-{JH z&=(OSAx2jbttseg&}+)ajtMngJ56X|C?EwME9z0k!ZN}%1K%)?kA0tjRqhM~OnzxG zYS~`96R^PoFB80Tax5)z?scw-JSpv^tWsn kRZ!aa@d_h*oUbtW!uqEG`kltUmEv3(xjboCctJdJcGq$SDQm+yD)!dWM z)UoFJk~nPxx Tt(1gM%NzJH2EP^S~u z0>n44{ (ju@?oO;05hpI zH@qOQiic#?^vflPiXD&!pTN>AS(|G@0Q5#?6G`FDE|%y9R!wtSCT2^eS`^>yGde1| zgeK}s;K^4iXt65g?AV&4?hTTo?ux~EZ<|x$@kBZtN)~W#)12PQa2fG1WbP0Z5YrS( zhJ`>D{LVeRw}%DS3pt|4y&@X(-OwqUV6x=qVwXy+$SU)AK79GTMU9TZwHT<{EJg7r z^zEErkvx7V0?GbDbS^?g{e0Q!`1b|O|IT>-pP?Bq6Vakss0!h5$^aOIFIlK@wLC0y z@Ebk})=y&oTz01Dz3($c3vLn#-E@bW8_HcGEv4`7=KBwc{0!M8KS^5B;83o(qukw* zW@A;czGkoU4VcEk3LCgJZOm2PaK>y_))JCWY9Fk`G~ACA6O6Zw!f84;l5?Le?K?}l z H*oJ*=iv+_izWO)Oxxi>%)?%;<;QC2}me772yLY7x;B!(*q zzp4$3KFn66-rF_OwjGmbyzD nf2&mt?v6`of6`9GGg*7qy5r za_9mR4h#vcWx7hB&5i0{XFXp$S@eM0;(8&o4M=jKSvQW!f4iX+((fCP6^}^diS!Yq z`FhC4CJ^(cM&YioVqkghSlnPu1zbDo&rE9m9uDhF529uNx%(A&(x8ZG O)&sIbJ`LpK7ZguwB^eK-7TByDw z3-q|$IKtBJsXtpWh)S19=9{Q skBdI~(G?$7ARs|nM z-!Q|U7fW$qhs{vX7r@!O 7}OzE;c!nZKrp8eT_aY>qq{^6(s`&qW>S<-Nb`%w4Q$H)s{EW_zN5 xmD$H`!+S*}P7c>-zT@e5 zd9t?q&R1V{uSmdsC`}n0_A> E`$gIy+yZNYSu%rF$&Y+Pq10cED5 zTSd0AYtCQCQK4W%F<|^T5ulE}d>zwCX6RVO-a<2)0Olp34dP)CO~J`2fIdo39(*71 zd#0==YGv&}xi#XZ$0YYwH|wBN1ldgT0xF9_FX;R@-Xb(t{G{mq zwPwN>#3KdYe7R+aRT0n~Gb3`mB8}EV{bZo3+NF)?Jv{L76o5axWdd?mf+{48gXsAZ ztg%0}LKPZ;MD&qQc#*8u5k?hWA>m0;j}?}yoKZ)R;UQ;H2N}^Gsvh>*cv-7Je#{sP zKJ^+2k--s>-$UVYnbyb7q2X&H-uNt0FIK4BYA?+(QY+s|LP*&~zjJ&KafD-ZJ%xJu z2POHiJ)h$Kzvm(U1Gq>2$L$XLU+)(s3CQw_(!_FTh`N7yNXV*~8W^bdc9@?{%|J-# zwvHi~^4^I4!OjUNh|#f-a)@D= ?XR_i-w%mb(kO =A_Q}=NJSbNt zH&_MaPpyO~r_y{+jcToes@6!kxb%K91NnVzZfbhD)mtmCHQzjXeHrd+_ H{Nn|WwtMhwF~VB_U&~|wc_6>H8b3@qYVgT&J7V48BsCewH-f*=P;atyCLb1w z-&KDk@S9g*bXNT}im(Zt O4BNz~36z>`HIGI+=F5szNiU~P14QwX zryC9qt?CF`?r(YNcdeH4-=R ^;)%*->W1{C<=|Rfe66@Phsz58oJ$)V zz>K0Xeb}hTovyY%jR14Q#^O6m*hC<5GTS 6G~j3WBF@ z*r-^jSp`lrPCS1XPK6=r XkL;7BK=wtZqH4`>UGC>s+YSPX8TG;3XrDv&%{r zE!Kwl9c )j-Kkqgp7FG8%jy05IJXs% ze?8sCT$O=FQb=Q$RNxEz$^6*0%XgUiZPY3I6k~8qlEoBw-n 8ct}zg(MolQ3(nLMw0v{MB;wzFYB_I<+n|d&=G-`H z05)*Z9vGvGmk_}&ih-x^5u83yaa{1D)aI2nn>nC!;Iza=G!H}UYqK%$-{_xKe#Otv zA8aUl4MkBjCMHtDU^Poku&>KIg?~Z#>wnnyaq`10rgW74HB**mAc2Oa_E3!ZVc@b= z(J_%BYmuY8;r|tzDd)(TnEvl%eLnV-nOOCUZD2UwEXb1k12|*ro075FQ_k%EJ6tU@ zjOt8CR)8X1(L<^>?WBiBV5?KnS3EW^DZ~oJkb%*lWuyS27g10Eekx>4wE(GQLKM7_ z9LS1I2XSK}K{f$y1vt>y;aljh0xRNgES^fpNAoGt68S5&k4hewwxk4QBb7++Buv>a zB)?Ykhjo!BkhT<^LLBtxDkkb`YG*42*mnPwb*U`wh9XY7{9dyI@KkW9juH1>uB^8# zwP(xG-~=u5>Rtf#JeGu}@ij@xRLwM4t~~4sVT-D9j3trt`*x9dIapo(Z2{0VV~l%y zF4O89%Ce2TLc_~Wx%GqASB)hswWMrY94Ukg&6_<}ImVnEt|reFA^}_j=`1p|arTyU z-Ldu6KfQ{7+;Cm4!Tu?-FQgxyu(SHuBrR4*Cuyy;r|41+dB JuE&DB>1eR5M0UdjS*$h%Rc^(*v$WM-Cuj} z;(q#{$?v^yzV^M%{G@AP0-fPrcI@E{@o7EG=0Pmr9IHd4TL`ZBpEs04YHl-_;U5r` zr-r;jlfgx8A-|b4wBW1)OqI+!(Y5AE%sK8+PESC(Awvmdw}zpxIvQtH+JlCeX2(r( z4TBi*{gK-GSU 5+LcCg z`2>q;A!mk4iK+q8U|lJU-B?@p~0MgPzax_9n_{VgONserjQ_TBz8_ZSY*)52{khP;#@Q zeP?HhvOb^UE3|vxf^=e{a<#LCBJDpTOx!nyplT4pE6$pY-R~*ANd}_5)D1VVk9Rue z1-=Ya<0ffBtKFGFTQIc8C>zntkBq)s1690yn+WxWhF-kFEr|oP17DtZfqsLsoYf40 z>gBX3wa9*(!J?NmO|PD5V9CWa=a6^b)hKB^SkJ^^PpgakmAi9oeQH!aJ)krKP|Nvp z6GElA$ZoQJ^<`H;DJX%fkj70JRz#w^33GG=`!`k|p_W(^Rf2X~qU~?iA0vN+Op2CX ze}Z=yGF3m>n84Kpk5=_SUacE7W`&Jm5zV}$yeqWl@5Y+}MinBOvDYDM#ezl+y=Q72 zTg9JNG%FblUYJE~drjVHeQ|x%erZ+TiuUENo^N0MZ)Y~y|NR-Nt@W}DKE^5f>-lD= zFns15Gids^&2 BoezWXOjS^eR9ur6^(|r|(hIu#O(V=COz!0?H )ixCMVkL$i*QSmGSM|F*gV? Ve{ud#)9(LUSw pD82w-vC?=Ntyrv diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/LICENSE.md b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/LICENSE.md deleted file mode 100644 index 261eeb9..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/LICENSE.md +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/fonts/font.ttf b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/fonts/font.ttf deleted file mode 100644 index a60ce88613704bc7fe02dbff52043c3757a0c9d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7080 zcmcgx36L9AdVYWFXw7&=cXz9Gw$zeZ8l9saNi#n1cs#!Gfx)vIGvGBg4t6j$zObES z1KF^HV^?vNvzP$c0t^Jh8b~%A3D;&TRDlx`7B+=b9K~isD#<2++GN8~Qoh%c>>-${ zO;svg_4MBB{`>vc_y6yIEk=y7es&|XF>URomD<$vdtbwy$I!m9W#{JIi;Pd*jL`tv zj$gg@(6&GO@lBsFCLClec;=d`H*bwSaSXJ|B /g,"%3E")),{text:n.text,base64:o}}{const t=new fo(JSON.parse(JSON.stringify({...e,textLength:e.size?Number(e.size):void 0,textColor:go(e.color),background:go(e.background)}))),{text:n,base64:o}=t.draw();return{text:n,base64:o}}}(s),c=await a.setVerifyCode({clientIP:r,deviceId:o,code:i,expiresDate:n,scene:t});return c.code>0?{...c,code:10001}:(this.DEVICEID2opts[o]=e,{code:0,msg:"验证码获取成功",captchaBase64:l})}catch(e){return{code:10001,msg:"验证码生成失败:"+e.message}}}async verify({deviceId:e,captcha:t,scene:n}){if(!(e=e||__ctx__.DEVICEID))throw new Error("deviceId不可为空");if(!n)throw new Error("scene验证码场景不可为空");const o=new To;try{const r=await o.verifyCode({deviceId:e,code:t,scene:n});return r.code>0?r:{code:0,msg:"验证码通过"}}catch(e){return{code:10002,msg:"验证码校验失败:"+e.message}}}async refresh(e={}){let{scene:t,expiresDate:n,deviceId:o,...r}=e;if(o=o||__ctx__.DEVICEID,!o)throw new Error("deviceId不可为空");if(!t)throw new Error("scene验证码场景不可为空");const s=await Uo.where(So.command.or([{device_uuid:o,scene:t},{deviceId:o,scene:t}])).orderBy("created_date","desc").limit(1).get();if(s&&s.data&&s.data.length>0){const e=s.data[0];await Uo.doc(e._id).update({state:2}),Object.keys(r).length>0&&(this.DEVICEID2opts[o]=Object.assign({},this.DEVICEID2opts[o],r));let a={};try{a=await this.create(Object.assign({},this.DEVICEID2opts[o],{deviceId:o,scene:t,expiresDate:n}))}catch(e){return{code:50403,msg:e.message}}return a.code>0?{...a,code:50403}:{code:0,msg:"验证码刷新成功",captchaBase64:a.captchaBase64}}return{code:10003,msg:`验证码刷新失败:无此设备在 ${t} 场景信息,请重新获取`}}}const Oo=new To;Object.keys(Oo).forEach(e=>{Eo.prototype[e]=xo(Oo[e])});const Lo=new Eo,ko=new Proxy(Lo,{get(e,t){if(t in e)return"function"==typeof e[t]?xo(e[t]).bind(ko):e[t]}});module.exports=ko; diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/package.json b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/package.json deleted file mode 100644 index 6df8de3..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "uni-captcha", - "version": "0.7.0", - "description": "uni-captcha", - "main": "index.js", - "homepage": "https://ext.dcloud.net.cn/plugin?id=4048", - "repository": { - "type": "git", - "url": "git+https://gitee.com/dcloud/uni-captcha" - }, - "author": "DCloud", - "license": "Apache-2.0", - "dependencies": { - "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" - } -} \ No newline at end of file diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/config.js b/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/config.js deleted file mode 100644 index c37b38b..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - "image-captcha":{ - "width": 150, //图片宽度 - "height": 44, //图片高度 - "background": "#FFFAE8", //验证码背景色,设置空字符`''`不使用背景颜色 - // "size": 4, //验证码长度,最多 6 个字符 - // "noise": 4, //验证码干扰线条数 - // "color": false, //字体是否使用随机颜色,当设置`background`后恒为`true` - // "fontSize": 40, //字体大小 - // "ignoreChars": '', //忽略那些字符 - // "mathExpr": false, //是否使用数学表达式 - // "mathMin": 1, //表达式所使用的最小数字 - // "mathMax": 9, //表达式所使用的最大数字 - // "mathOperator": '' //表达式所使用的运算符,支持 `+`、`-`。不传随机使用 - // "expiresDate":180 //验证码过期时间(s) - } -} \ No newline at end of file diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/index.obj.js b/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/index.obj.js deleted file mode 100644 index 186e82c..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/index.obj.js +++ /dev/null @@ -1,35 +0,0 @@ -// 开发文档: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj -//导入验证码公共模块 -const uniCaptcha = require('uni-captcha') -//获取数据库对象 -const db = uniCloud.database(); -//获取数据表opendb-verify-codes对象 -const verifyCodes = db.collection('opendb-verify-codes') -module.exports = { - async getImageCaptcha({ - scene,isUniAppX - }) { - //获取设备id - let { - deviceId, - platform - } = this.getClientInfo(); - //根据:设备id、场景值、状态,查找记录是否存在 - let res = await verifyCodes.where({ - scene, - deviceId, - state: 0 - }).limit(1).get() - //如果已存在则调用刷新接口,反之调用插件接口 - let action = res.data.length ? 'refresh' : 'create' - //执行并返回结果 - let option = { - scene, //来源客户端传递,表示:使用场景值,用于防止不同功能的验证码混用 - uniPlatform: platform - } - if(isUniAppX){ - option.mode = "bmp" - } - return await uniCaptcha[action](option) - } -} \ No newline at end of file diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/package.json b/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/package.json deleted file mode 100644 index b5188c3..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/uni-captcha-co/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "uni-captcha-co", - "dependencies": { - "uni-captcha": "file:../common/uni-captcha", - "uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" - }, - "extensions": { - "uni-cloud-jql": {} - } -} \ No newline at end of file diff --git a/uni_modules/uni-captcha/uniCloud/database/opendb-verify-codes.schema.json b/uni_modules/uni-captcha/uniCloud/database/opendb-verify-codes.schema.json deleted file mode 100644 index 1f3be59..0000000 --- a/uni_modules/uni-captcha/uniCloud/database/opendb-verify-codes.schema.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "bsonType": "object", - "properties": { - "_id": { - "description": "ID,系统自动生成" - }, - "code": { - "bsonType": "string", - "description": "验证码" - }, - "create_date": { - "bsonType": "timestamp", - "description": "创建时间" - }, - "device_uuid": { - "bsonType": "string", - "description": "设备UUID,常用于图片验证码" - }, - "email": { - "bsonType": "string", - "description": "邮箱" - }, - "expired_date": { - "bsonType": "timestamp", - "description": "过期时间" - }, - "ip": { - "bsonType": "string", - "description": "请求时客户端IP地址" - }, - "mobile": { - "bsonType": "string", - "description": "手机号码" - }, - "scene": { - "bsonType": "string", - "description": "使用验证码的场景,如:login, bind, unbind, pay" - }, - "state": { - "bsonType": "int", - "description": "验证状态:0 未验证、1 已验证、2 已作废" - } - }, - "required": [] -} \ No newline at end of file diff --git a/uni_modules/uni-cloud-s2s/changelog.md b/uni_modules/uni-cloud-s2s/changelog.md deleted file mode 100644 index 727d5b2..0000000 --- a/uni_modules/uni-cloud-s2s/changelog.md +++ /dev/null @@ -1,2 +0,0 @@ -## 1.0.1(2023-03-02) -- 修复 方法名错误 diff --git a/uni_modules/uni-cloud-s2s/package.json b/uni_modules/uni-cloud-s2s/package.json deleted file mode 100644 index 339d219..0000000 --- a/uni_modules/uni-cloud-s2s/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "id": "uni-cloud-s2s", - "displayName": "服务空间与服务器安全通讯模块", - "version": "1.0.1", - "description": "用于解决服务空间与服务器通讯时互相信任问题", - "keywords": [ - "安全通讯", - "服务器请求云函数", - "云函数请求服务器" -], - "repository": "", - "engines": { - "HBuilderX": "^3.1.0" - }, - "dcloudext": { - "type": "unicloud-template-function", - "sale": { - "regular": { - "price": "0.00" - }, - "sourcecode": { - "price": "0.00" - } - }, - "contact": { - "qq": "" - }, - "declaration": { - "ads": "无", - "data": "无", - "permissions": "无" - }, - "npmurl": "" - }, - "uni_modules": { - "dependencies": [], - "encrypt": [], - "platforms": { - "cloud": { - "tcb": "y", - "aliyun": "y" - }, - "client": { - "Vue": { - "vue2": "u", - "vue3": "u" - }, - "App": { - "app-vue": "u", - "app-nvue": "u" - }, - "H5-mobile": { - "Safari": "u", - "Android Browser": "u", - "微信浏览器(Android)": "u", - "QQ浏览器(Android)": "u" - }, - "H5-pc": { - "Chrome": "u", - "IE": "u", - "Edge": "u", - "Firefox": "u", - "Safari": "u" - }, - "小程序": { - "微信": "u", - "阿里": "u", - "百度": "u", - "字节跳动": "u", - "QQ": "u", - "钉钉": "u", - "快手": "u", - "飞书": "u", - "京东": "u" - }, - "快应用": { - "华为": "u", - "联盟": "u" - } - } - } - } -} \ No newline at end of file diff --git a/uni_modules/uni-cloud-s2s/readme.md b/uni_modules/uni-cloud-s2s/readme.md deleted file mode 100644 index 3c8ed0c..0000000 --- a/uni_modules/uni-cloud-s2s/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# uni-cloud-s2s - -文档见:[外部服务器如何与uniCloud安全通讯](https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-s2s.html) \ No newline at end of file diff --git a/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/index.js b/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/index.js deleted file mode 100644 index da9a36c..0000000 --- a/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("crypto"),t=require("path");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("fs");var o=s(e),n=s(t);const i="uni-cloud-s2s",r={code:5e4,message:"Config error"},c={code:51e3,message:"Access denied"};class a extends Error{constructor(e){super(e.message),this.errMsg=e.message||"",this.code=this.errCode=e.code,this.errSubject=e.subject,this.forceReturn=e.forceReturn||!1,this.cause=e.cause,Object.defineProperties(this,{message:{get(){return this.errMsg},set(e){this.errMsg=e}}})}toJSON(e=0){if(!(e>=10))return e++,{errCode:this.errCode,errMsg:this.errMsg,errSubject:this.errSubject,cause:this.cause&&this.cause.toJSON?this.cause.toJSON(e):this.cause}}}const d=Object.prototype.toString;const h=50002,u=Object.create(null);["string","boolean","number","null"].forEach((e=>{u[e]=function(t,s){if(function(e){return d.call(e).slice(8,-1).toLowerCase()}(t)!==e)return{code:h,message:`${s} is invalid`}}}));const f="Unicloud-S2s-Authorization";class g{constructor(e){const{config:t}=e||{};this.config=t;const{connectCode:s}=t||{};if(this.connectCode=s,!s||"string"!=typeof s)throw new a({subject:i,code:r.code,message:"Invalid connectCode in config"})}getHeadersValue(e={},t,s){const o=Object.keys(e||{}).find((e=>e.toLowerCase()===t.toLowerCase()));return o?e[o]:s}verifyHttpInfo(e){const t=this.getHeadersValue(e.headers,f,""),[s="",o=""]=t.split(" ");if(s.toLowerCase()==="CONNECTCODE".toLowerCase()&&o===this.config.connectCode)return!0;throw new a({subject:i,code:c.code,message:`Invalid CONNECTCODE in headers['${f}']`})}getSecureHeaders(e){return{[f]:`CONNECTCODE ${this.config.connectCode}`}}}function l(e){return function(t){const{content:s,signKey:n}=t||{};return o.default.createHash(e).update(s+"\n"+n).digest("hex")}}const p={md5:l("md5"),sha1:l("sha1"),sha256:l("md5"),"hmac-sha256":function(e){const{content:t,signKey:s}=e||{};return o.default.createHmac("sha256",s).update(t).digest("hex")}};function m(e){const{timestamp:t,data:s={},signKey:o,hashMethod:n="hmac-sha256"}=e||{},i=p[n],r=["number","string","boolean"],c=Object.keys(s).sort(),a=[];for(let e=0;ezseU3>S5 zPl_uUi{LSPh}mg1-Nqc?e?kBiyS3BPKQoj1aF;o4oY1<++Z&-@w{6K*_7W?w!?t3( z$fj*Y_9kv~-I*=Kf0<^@`1`y?JI~lw%s5q)+1YaRZsy`_uu_SQu?1`+JKS#LKA%@H zU&J=I+wC8>-)jG;{nzckY`@Z72PD0VoW0R6)f4zJo893QU48v?;0HE{=Jt4f{y ^aL}T%UmQ3mCOxEZun#&IriluU;I$SeH>W${;*xY&Z7hJS(e9 =v$&}2xNyZ*y_ikg) zeFqO_4;}783sz&2WqcBojKVy{tep#nwsO U0R2m_Nk2z(v#yIBpVsxJ^vU7}o-K`heEYG_J}GS3l7H(h zkal&NVSqRHpvWC8D%@~z8`nbQT5>HEt_7bwBKrew{{yc^^8G<6oK+PfMKubtES8;d zZDli)Axfpk$mVo7T)T_Use^s}N+_2Jg@}9sSxcpaOr|-OPKjL%RbkU4t9=ne=d7Cr zTh89(yv5nJ xdpzo7kvqgAWnxi!$<7^Og@>BWD6-v>G0EnW z&dzpo9D>`CtS6Hsv|7BK&FAmSS#-$pbTfP>A|hBox0y{-F*8l&z0s4^;U83nTmQCp z9nG{3U4Q-EFT8-&uwT-3pbsEB4k0gcjB!8eKAuhLmg{;sr9g^Uw 1QS(iL3 ;@zMoR@bH0O5m2f}Hu_j@!$ zQZO3#`3acgc)A%rNC8V=$`k4NDBz$%s m2!EE zjt_K=qDZkNujdvdQ|GMa^J`{2##ONNxwfm1giVu6iT#Kc{-jv^2@>z)kGBq;J`I8n zEt|#=`(^-y)5Ri38q9)ceemx9o+07_KE69b 2BXzS$0hL&Xm^HR?q5 z#>R~eTpL#BbGiKT<@p>@F2DG^>xAamhN;offz};8-=Uve4CMDPz6}BlaEv#tLIunU z C_`=wY|tFXiM=-^yaK!BvBbBekyuvYBE`R)g<+QOoF{C<;EG z&(o-{f{p@@;q_xpM_yLR)#tnF%NqA|J^-CPEX;KVEFd2bY_7Hy*?f~X^yyo!9NDJF zVmt}Y|I^};0yY&P9!t#}KYp*MhMHr^q-B7hlr4F^WcfS*3{OFS %BAxN=--o;z8y-pPwzA#GO|8h~$a`SFhYU|p7AP2q zmy!tqRoU=Hk7q&3?-hc9p++(ljWws;-bI!yF5qqn^c2x2tpd@cC9OX{QbbbYRpRA{ zxdP<90W=b5cui<<*^n}NyIP%AQaW87*3(oHO2t*HN+qJ1_a_r^qIhER{rA?EE0xNc z_wYKr&**xr#S4TvqzB9ZjnB+f?=$ZM+E3927|Y55{7l7T4d)92kq%mmoFdz6hbvpR zo7=Zm4%cXT>lwWFjMXpi=7@F+@APtwjzCmI(~9fOqx<)c-hR*MH*Xxhmu60!c>dLg zAAXe)KQGZ<@PaKClJ$aQzW!kS=HF?YEZqIG7hn9@-7pno_u*$L=sI~86%DVAX=&^A z&)QUPBhwDG&gAo)wo?m?QV}-G!pj`CJv_t6y2KsIE0^B>WK}K?FU@9&ve}7DIP5JJ zz2R`uS&v2{(P}LmiG)jJ_7w`_6GH_WbgNY|s;b*9wm#C5m9nM@f~J)#Ne#RW_-iHI zJBzoK+qk>BAU16OllRL*;jphz@P)(KMMjz^Z7dKQVO+IZ1Xr0%(d||rYHb12K`IPQ zj28-hU*b(x4OE5ReE*%rqf>>>HiNbQo~}n@vFNZS%l(zXOnPL};07=zN79+WO1~^e z(_Q7r>rsnpgoLgEBH^Oy^PIEuY+e7)?R@V;Utwon?{ObTSf-<`VSXWl@xtFy)8H~$ zr>N7lNYwtHMs{)u*VM>Qj-*na;Q>ij?b&eH@rqLoSJIJ4&JXhnJ!L~`PIeFegBVf` zLk%HPfkpm%itgtz8K~y-Hk77?NnTy|&SG_+INPP5)oB1I%}mU~t*q9PvfMX3m`aUJ z=$WHk0K<0_QA=c0LT GP 8wg%Jy7+v;I<34cmdUXtd@4 zMq*L_iq_k|UCUyp?%>Xk9M<2#o%JP(;|_oW>}JJ1pYWW*A6lOiZeI|K4^B JCMCPGV74pAcNyHgT1sHAG0eG ziHsttDo+T|I;mIEO2~s?eKZ%gzPjX2JvOc-kPm=U;_*mvtjE7opj<$?@vm20S=~3X zmyBQhqV+bO5U=^^X^c>hWKfQP%%W^k&YZ3+TRFUHS>+0I1z7w$uGZWC!q?@sP8jcW z^27N$BrtaIs=3$h9lP|>F|gRZ`_{V-9lDFt14C)hBez>+NI*0xJ-m6-@WDEE`;R|v zy?Yo2Ab$2?pMnl`2) *nsK=;Xc;vyoYz#YnVrwpS{fb@l2;Av(fY56NL^LG`Ho0Aj`24wu2qUzY{Hz zQPV#{&k35aNBFjIpYVY#Y+GuZw(Yik&-O#x8@B(ld+nNiu6@1znEj6(PREGju;ZBH zDaT(p{@(Gq)9cJSw>s~4o)tsllz31)BmUgwbcI}1*F~-yU5~il?~C_M_Z{wgq3_MU z&->l|x&HC~%lfy$C*0Q)_|F0;{)%gW{a)9PojBuf@cisV)OE%-)G*%e*p9n}?$`l8 z*Slj*eJQw*oyTjCUC|v2h>7dFV;gI*-|UX ->}=b%>$-hcZ{5Cc z*Phkr_U~MZ`4Vfc4VSChT
2;d}Pq7;1Zt diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/index.js b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/index.js deleted file mode 100644 index 8ad32e0..0000000 --- a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var e=require("assert"),t=require("path");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),r=n(t);const s={10001:"uni-captcha-create-fail",10002:"uni-captcha-verify-fail",10003:"uni-captcha-refresh-fail",10101:"uni-captcha-deviceId-required",10102:"uni-captcha-text-required",10103:"uni-captcha-verify-overdue",10104:"uni-captcha-verify-fail",50403:"uni-captcha-interior-fail"};function a(e){const t=.2*Math.random()-.1;switch(e.type){case"M":case"L":e.x+=t,e.y+=t;break;case"Q":case"C":e.x+=t,e.y+=t,e.x1+=t,e.y1+=t}return e}function i(e,t,n,o,r,s,a){let i,l,c,u,p,h;if(e<=0||e>=1)throw RangeError("spliteCurveAt requires position > 0 && position < 1");return u=[],p=0,i={},l={},c={},i.x=t,i.y=n,l.x=o,l.y=r,c.x=s,c.y=a,h=e,u[p++]=i.x,u[p++]=i.y,u[p++]=i.x+=(l.x-i.x)*h,u[p++]=i.y+=(l.y-i.y)*h,l.x+=(c.x-l.x)*h,l.y+=(c.y-l.y)*h,u[p++]=i.x+(l.x-i.x)*h,u[p++]=i.y+(l.y-i.y)*h,u[p++]=l.x,u[p++]=l.y,u[p++]=c.x,u[p++]=c.y,u}function l(e,t){return Math.random()*(t-e)+e}var c=function(e,t){const n=e[0];o.default(n,"expect a string");const r=t.fontSize,s=r/t.font.unitsPerEm,c=t.font.charToGlyph(n),u=c.advanceWidth?c.advanceWidth*s:0,p=t.x-u/2,h=(t.ascender+t.descender)*s,f=t.y+h/2,d=c.getPath(p,f,r);d.commands.forEach(a),d.commands=function(e,t){const n=[];for(let o=0;o t.truncateLineProbability){const e=l(-.1,.1);n.push(r),n.push({type:"L",x:(r.x+s.x)/2+e,y:(r.y+s.y)/2+e})}else n.push(r)}else if("Q"===r.type&&o>=1){const s=e[o-1];if(("L"===s.type||"M"===s.type)&&Math.random()>t.truncateCurveProbability){const e=s.x,o=s.y,a=l(-.1,.1),c=r.x1+a,u=r.y1+a,p=r.x+a,h=r.y+a,f=i(l(t.truncateCurvePositionMin,t.truncateCurvePositionMax),e,o,c,u,p,h),d={type:"Q",x1:f[2],y1:f[3],x:f[4],y:f[5]},g={type:"L",x:f[4],y:f[5]},m={type:"Q",x1:f[6],y1:f[7],x:f[8],y:f[9]},y={type:"L",x:f[8],y:f[9]};n.push(d),n.push(g),n.push(m),n.push(y)}}else n.push(r)}return n}(d.commands,t);return d.toPathData()};function u(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function p(e,t){this.source=e,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new u,this.dtree=new u}var h=new u,f=new u,d=new Uint8Array(30),g=new Uint16Array(30),m=new Uint8Array(30),y=new Uint16Array(30),v=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),b=new u,x=new Uint8Array(320);function S(e,t,n,o){var r,s;for(r=0;r >>=1,t}function E(e,t,n){if(!t)return n;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]< >>16-t;return e.tag>>>=t,e.bitcount-=t,o+n}function O(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]< >>=1,++r,n+=t.table[r],o-=t.table[r]}while(o>=0);return e.tag=s,e.bitcount-=r,t.trans[n+o]}function L(e,t,n){var o,r,s,a,i,l;for(o=E(e,5,257),r=E(e,5,1),s=E(e,4,4),a=0;a<19;++a)x[a]=0;for(a=0;a 8;)e.sourceIndex--,e.bitcount-=8;if((t=256*(t=e.source[e.sourceIndex+1])+e.source[e.sourceIndex])!==(65535&~(256*e.source[e.sourceIndex+3]+e.source[e.sourceIndex+2])))return-3;for(e.sourceIndex+=4,n=t;n;--n)e.dest[e.destLen++]=e.source[e.sourceIndex++];return e.bitcount=0,0}!function(e,t){var n;for(n=0;n<7;++n)e.table[n]=0;for(e.table[7]=24,e.table[8]=152,e.table[9]=112,n=0;n<24;++n)e.trans[n]=256+n;for(n=0;n<144;++n)e.trans[24+n]=n;for(n=0;n<8;++n)e.trans[168+n]=280+n;for(n=0;n<112;++n)e.trans[176+n]=144+n;for(n=0;n<5;++n)t.table[n]=0;for(t.table[5]=32,n=0;n<32;++n)t.trans[n]=n}(h,f),S(d,g,4,3),S(m,y,2,1),d[28]=0,g[28]=258;var D=function(e,t){var n,o,r=new p(e,t);do{switch(n=w(r),E(r,2,0)){case 0:o=R(r);break;case 1:o=k(r,h,f);break;case 2:L(r,r.ltree,r.dtree),o=k(r,r.ltree,r.dtree);break;default:o=-3}if(0!==o)throw new Error("Data error")}while(!n);return r.destLenthis.x2&&(this.x2=e)),"number"==typeof t&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),t this.y2&&(this.y2=t))},M.prototype.addX=function(e){this.addPoint(e,null)},M.prototype.addY=function(e){this.addPoint(null,e)},M.prototype.addBezier=function(e,t,n,o,r,s,a,i){const l=[e,t],c=[n,o],u=[r,s],p=[a,i];this.addPoint(e,t),this.addPoint(a,i);for(let e=0;e<=1;e++){const t=6*l[e]-12*c[e]+6*u[e],n=-3*l[e]+9*c[e]-9*u[e]+3*p[e],o=3*c[e]-3*l[e];if(0===n){if(0===t)continue;const n=-o/t;0 =0&&n>0&&(e+=" "),e+=t(o)}return e}e=void 0!==e?e:2;let o="";for(let e=0;e ",t},I.prototype.toDOMElement=function(e){const t=this.toPathData(e),n=document.createElementNS("http://www.w3.org/2000/svg","path");return n.setAttribute("d",t),n};var G={fail:B,argument:N,assert:N};const P={},A={},F={};function H(e){return function(){return e}}A.BYTE=function(e){return G.argument(e>=0&&e<=255,"Byte value should be between 0 and 255."),[e]},F.BYTE=H(1),A.CHAR=function(e){return[e.charCodeAt(0)]},F.CHAR=H(1),A.CHARARRAY=function(e){const t=[];for(let n=0;n >8&255,255&e]},F.USHORT=H(2),A.SHORT=function(e){return e>=32768&&(e=-(65536-e)),[e>>8&255,255&e]},F.SHORT=H(2),A.UINT24=function(e){return[e>>16&255,e>>8&255,255&e]},F.UINT24=H(3),A.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},F.ULONG=H(4),A.LONG=function(e){return e>=2147483648&&(e=-(4294967296-e)),[e>>24&255,e>>16&255,e>>8&255,255&e]},F.LONG=H(4),A.FIXED=A.ULONG,F.FIXED=F.ULONG,A.FWORD=A.SHORT,F.FWORD=F.SHORT,A.UFWORD=A.USHORT,F.UFWORD=F.USHORT,A.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e]},F.LONGDATETIME=H(8),A.TAG=function(e){return G.argument(4===e.length,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},F.TAG=H(4),A.Card8=A.BYTE,F.Card8=F.BYTE,A.Card16=A.USHORT,F.Card16=F.USHORT,A.OffSize=A.BYTE,F.OffSize=F.BYTE,A.SID=A.USHORT,F.SID=F.USHORT,A.NUMBER=function(e){return e>=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?A.NUMBER16(e):A.NUMBER32(e)},F.NUMBER=function(e){return A.NUMBER(e).length},A.NUMBER16=function(e){return[28,e>>8&255,255&e]},F.NUMBER16=H(3),A.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,255&e]},F.NUMBER32=H(5),A.REAL=function(e){let t=e.toString();const n=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(n){const o=parseFloat("1e"+((n[2]?+n[2]:0)+n[1].length));t=(Math.round(e*o)/o).toString()}let o="";for(let e=0,n=t.length;e >8&255,t[t.length]=255&o}return t},F.UTF16=function(e){return 2*e.length};const z={"x-mac-croatian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ","x-mac-cyrillic":"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю","x-mac-gaelic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ","x-mac-greek":"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ","x-mac-icelandic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-inuit":"ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł","x-mac-ce":"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ",macintosh:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-romanian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-turkish":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"};P.MACSTRING=function(e,t,n,o){const r=z[o];if(void 0===r)return;let s="";for(let o=0;o =-128&&e<=127}function X(e,t,n){let o=0;const r=e.length;for(;t >8&255,t+256&255)}return s}A.MACSTRING=function(e,t){const n=function(e){if(!_){_={};for(let e in z)_[e]=new String(e)}const t=_[e];if(void 0===t)return;if(W){const e=W.get(t);if(void 0!==e)return e}const n=z[e];if(void 0===n)return;const o={};for(let e=0;e =128&&(r=n[r],void 0===r))return;o[t]=r}return o},F.MACSTRING=function(e,t){const n=A.MACSTRING(e,t);return void 0!==n?n.length:0},A.VARDELTAS=function(e){let t=0;const n=[];for(;t =-128&&o<=127?V(e,t,n):j(e,t,n)}return n},A.INDEX=function(e){let t=1;const n=[t],o=[];for(let r=0;r >8,t[s+1]=255&a,t=t.concat(o[n])}return t},F.TABLE=function(e){let t=0;const n=e.fields.length;for(let o=0;o 0)return new ce(this.data,this.offset+t).parseStruct(e)},ce.prototype.parseListOfLists=function(e){const t=this.parseOffset16List(),n=t.length,o=this.relativeOffset,r=new Array(n);for(let o=0;o =0;r-=1){const n=pe.getUShort(e,t+4+8*r),s=pe.getUShort(e,t+4+8*r+2);if(3===n&&(0===s||1===s||10===s)){o=pe.getULong(e,t+4+8*r+4);break}}if(-1===o)throw new Error("No valid cmap sub-tables found.");const r=new pe.Parser(e,t+o);if(n.format=r.parseUShort(),12===n.format)!function(e,t){let n;t.parseUShort(),e.length=t.parseULong(),e.language=t.parseULong(),e.groupCount=n=t.parseULong(),e.glyphIndexMap={};for(let o=0;o >1,t.skip("uShort",3),e.glyphIndexMap={};const a=new pe.Parser(n,o+r+14),i=new pe.Parser(n,o+r+16+2*s),l=new pe.Parser(n,o+r+16+4*s),c=new pe.Parser(n,o+r+16+6*s);let u=o+r+16+8*s;for(let t=0;t 0?(s=e.parseByte(),0==(t&r)&&(s=-s),s=n+s):s=(t&r)>0?n:n+e.parseShort(),s}function we(e,t,n){const o=new pe.Parser(t,n);let r,s;if(e.numberOfContours=o.parseShort(),e._xMin=o.parseShort(),e._yMin=o.parseShort(),e._xMax=o.parseShort(),e._yMax=o.parseShort(),e.numberOfContours>0){const t=e.endPointIndices=[];for(let n=0;n 0){const t=o.parseByte();for(let n=0;n 0){const a=[];let i;if(n>0){for(let e=0;e =0,a.push(i);let e=0;for(let t=0;t 0?(2&r)>0?(n.dx=o.parseShort(),n.dy=o.parseShort()):n.matchedPoints=[o.parseUShort(),o.parseUShort()]:(2&r)>0?(n.dx=o.parseChar(),n.dy=o.parseChar()):n.matchedPoints=[o.parseByte(),o.parseByte()],(8&r)>0?n.xScale=n.yScale=o.parseF2Dot14():(64&r)>0?(n.xScale=o.parseF2Dot14(),n.yScale=o.parseF2Dot14()):(128&r)>0&&(n.xScale=o.parseF2Dot14(),n.scale01=o.parseF2Dot14(),n.scale10=o.parseF2Dot14(),n.yScale=o.parseF2Dot14()),e.components.push(n),t=!!(32&r)}if(256&r){e.instructionLength=o.parseUShort(),e.instructions=[];for(let t=0;t t.points.length-1||o.matchedPoints[1]>r.points.length-1)throw Error("Matched points out of range in "+t.name);const n=t.points[o.matchedPoints[0]];let s=r.points[o.matchedPoints[1]];const a={xScale:o.xScale,scale01:o.scale01,scale10:o.scale10,yScale:o.yScale,dx:0,dy:0};s=Ee([s],a)[0],a.dx=n.x-s.x,a.dy=n.y-s.y,e=Ee(r.points,a)}t.points=t.points.concat(e)}}return Oe(t.points)}var ke={getPath:Oe,parse:function(e,t,n,o){const r=new Me.GlyphSet(o);for(let s=0;s >4,s=15&o;if(15===r)break;if(t+=n[r],15===s)break;t+=n[s]}return parseFloat(t)}(e);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return n=e.parseByte(),256*(t-247)+n+108;if(t>=251&&t<=254)return n=e.parseByte(),256*-(t-251)-n-108;throw new Error("Invalid b0 "+t)}function Pe(e,t,n){t=void 0!==t?t:0;const o=new pe.Parser(e,t),r=[];let s=[];for(n=void 0!==n?n:e.length;o.relativeOffset >1,l.length=0,d=!0}return function n(p){let S,U,T,w,E,O,L,k,R,D,C,M,I=0;for(;I 1&&!d&&(v=l.shift()+h,d=!0),y+=l.pop(),b(m,y);break;case 5:for(;l.length>0;)m+=l.shift(),y+=l.shift(),i.lineTo(m,y);break;case 6:for(;l.length>0&&(m+=l.shift(),i.lineTo(m,y),0!==l.length);)y+=l.shift(),i.lineTo(m,y);break;case 7:for(;l.length>0&&(y+=l.shift(),i.lineTo(m,y),0!==l.length);)m+=l.shift(),i.lineTo(m,y);break;case 8:for(;l.length>0;)o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a+l.shift(),i.curveTo(o,r,s,a,m,y);break;case 10:E=l.pop()+u,O=c[E],O&&n(O);break;case 11:return;case 12:switch(B=p[I],I+=1,B){case 35:o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),L=s+l.shift(),k=a+l.shift(),R=L+l.shift(),D=k+l.shift(),C=R+l.shift(),M=D+l.shift(),m=C+l.shift(),y=M+l.shift(),l.shift(),i.curveTo(o,r,s,a,L,k),i.curveTo(R,D,C,M,m,y);break;case 34:o=m+l.shift(),r=y,s=o+l.shift(),a=r+l.shift(),L=s+l.shift(),k=a,R=L+l.shift(),D=a,C=R+l.shift(),M=y,m=C+l.shift(),i.curveTo(o,r,s,a,L,k),i.curveTo(R,D,C,M,m,y);break;case 36:o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),L=s+l.shift(),k=a,R=L+l.shift(),D=a,C=R+l.shift(),M=D+l.shift(),m=C+l.shift(),i.curveTo(o,r,s,a,L,k),i.curveTo(R,D,C,M,m,y);break;case 37:o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),L=s+l.shift(),k=a+l.shift(),R=L+l.shift(),D=k+l.shift(),C=R+l.shift(),M=D+l.shift(),Math.abs(C-m)>Math.abs(M-y)?m=C+l.shift():y=M+l.shift(),i.curveTo(o,r,s,a,L,k),i.curveTo(R,D,C,M,m,y);break;default:console.log("Glyph "+t.index+": unknown operator 1200"+B),l.length=0}break;case 14:l.length>0&&!d&&(v=l.shift()+h,d=!0),g&&(i.closePath(),g=!1);break;case 18:x();break;case 19:case 20:x(),I+=f+7>>3;break;case 21:l.length>2&&!d&&(v=l.shift()+h,d=!0),y+=l.pop(),m+=l.pop(),b(m,y);break;case 22:l.length>1&&!d&&(v=l.shift()+h,d=!0),m+=l.pop(),b(m,y);break;case 23:x();break;case 24:for(;l.length>2;)o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a+l.shift(),i.curveTo(o,r,s,a,m,y);m+=l.shift(),y+=l.shift(),i.lineTo(m,y);break;case 25:for(;l.length>6;)m+=l.shift(),y+=l.shift(),i.lineTo(m,y);o=m+l.shift(),r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a+l.shift(),i.curveTo(o,r,s,a,m,y);break;case 26:for(l.length%2&&(m+=l.shift());l.length>0;)o=m,r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s,y=a+l.shift(),i.curveTo(o,r,s,a,m,y);break;case 27:for(l.length%2&&(y+=l.shift());l.length>0;)o=m+l.shift(),r=y,s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a,i.curveTo(o,r,s,a,m,y);break;case 28:S=p[I],U=p[I+1],l.push((S<<24|U<<16)>>16),I+=2;break;case 29:E=l.pop()+e.gsubrsBias,O=e.gsubrs[E],O&&n(O);break;case 30:for(;l.length>0&&(o=m,r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a+(1===l.length?l.shift():0),i.curveTo(o,r,s,a,m,y),0!==l.length);)o=m+l.shift(),r=y,s=o+l.shift(),a=r+l.shift(),y=a+l.shift(),m=s+(1===l.length?l.shift():0),i.curveTo(o,r,s,a,m,y);break;case 31:for(;l.length>0&&(o=m+l.shift(),r=y,s=o+l.shift(),a=r+l.shift(),y=a+l.shift(),m=s+(1===l.length?l.shift():0),i.curveTo(o,r,s,a,m,y),0!==l.length);)o=m,r=y+l.shift(),s=o+l.shift(),a=r+l.shift(),m=s+l.shift(),y=a+(1===l.length?l.shift():0),i.curveTo(o,r,s,a,m,y);break;default:B<32?console.log("Glyph "+t.index+": unknown operator "+B):B<247?l.push(B-139):B<251?(S=p[I],I+=1,l.push(256*(B-247)+S+108)):B<255?(S=p[I],I+=1,l.push(256*-(B-251)-S-108)):(S=p[I],U=p[I+1],T=p[I+2],w=p[I+3],I+=4,l.push((S<<24|U<<16|T<<8|w)/65536))}}}(n),t.advanceWidth=v,i}function Ve(e,t){let n,o=de.indexOf(e);return o>=0&&(n=o),o=t.indexOf(e),o>=0?n=o+de.length:(n=de.length+t.length,t.push(e)),n}function je(e,t,n){const o={};for(let r=0;r =o)throw new Error("CFF table CID Font FDSelect has bad FD index value "+s+" (FD count "+o+")");r.push(s)}else{if(3!==i)throw new Error("CFF Table CID Font FDSelect table has unsupported format "+i);{const e=a.parseCard16();let t,i=a.parseCard16();if(0!==i)throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID "+i);for(let l=0;l =o)throw new Error("CFF table CID Font FDSelect has bad FD index value "+s+" (FD count "+o+")");if(t>n)throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID "+t);for(;i =1&&(n.ulCodePageRange1=o.parseULong(),n.ulCodePageRange2=o.parseULong()),n.version>=2&&(n.sxHeight=o.parseShort(),n.sCapHeight=o.parseShort(),n.usDefaultChar=o.parseUShort(),n.usBreakChar=o.parseUShort(),n.usMaxContent=o.parseUShort()),n},make:function(e){return new oe.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],e)},unicodeRanges:gt,getUnicodeRange:function(e){for(let t=0;t =n.begin&&e =ye.length){const e=o.parseChar();n.names.push(o.parseString(e))}break;case 2.5:n.numberOfGlyphs=o.parseUShort(),n.offset=new Array(n.numberOfGlyphs);for(let e=0;e t.value.tag?1:-1})),t.fields=t.fields.concat(o),t.fields=t.fields.concat(r),t}function Lt(e,t,n){for(let n=0;n 0){return e.glyphs.get(o).getMetrics()}}return n}function kt(e){let t=0;for(let n=0;n m||void 0===l)&&m>0&&(l=m),c 123 are reserved for internal usage");f|=1< 0?tt.make(O):void 0,R=yt.make(),D=Qe.make(e.glyphs,{version:e.getEnglishName("version"),fullName:T,familyName:S,weightName:U,postScriptName:w,unitsPerEm:e.unitsPerEm,fontBBox:[0,d.yMin,d.ascender,d.advanceWidthMax]}),C=e.metas&&Object.keys(e.metas).length>0?Ut.make(e.metas):void 0,M=[g,m,y,v,L,x,R,D,b];k&&M.push(k),e.tables.gsub&&M.push(St.make(e.tables.gsub)),C&&M.push(C);const I=Ot(M),B=wt(I.encode()),N=I.fields;let G=!1;for(let e=0;e >>1,s=e[r].tag;if(s===t)return r;s >>1,s=e[r];if(s===t)return r;s =0)return o[r].script;if(t){const t={tag:e,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return o.splice(-1-r,0,t),t.script}}},getLangSysTable:function(e,t,n){const o=this.getScriptTable(e,n);if(o){if(!t||"dflt"===t||"DFLT"===t)return o.defaultLangSys;const e=Dt(o.langSysRecords,t);if(e>=0)return o.langSysRecords[e].langSys;if(n){const n={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return o.langSysRecords.splice(-1-e,0,n),n.langSys}}},getFeatureTable:function(e,t,n,o){const r=this.getLangSysTable(e,t,o);if(r){let e;const t=r.featureIndexes,s=this.font.tables[this.tableName].features;for(let o=0;o =s[o-1].tag,"Features must be added in alphabetical order."),e={tag:n,feature:{params:0,lookupListIndexes:[]}},s.push(e),t.push(o),e.feature}}},getLookupTables:function(e,t,n,o,r){const s=this.getFeatureTable(e,t,n,r),a=[];if(s){let e;const t=s.lookupListIndexes,n=this.font.tables[this.tableName].lookups;for(let r=0;r =0){const e=s.ligatureSets[c];for(let t=0;t 0&&e<0?n:o<0&&e>0?-n:e*o},Zt={x:1,y:0,axis:"x",distance:function(e,t,n,o){return(n?e.xo:e.x)-(o?t.xo:t.x)},interpolate:function(e,t,n,o){let r,s,a,i,l,c,u;if(!o||o===this)return r=e.xo-t.xo,s=e.xo-n.xo,l=t.x-t.xo,c=n.x-n.xo,a=Math.abs(r),i=Math.abs(s),u=a+i,0===u?void(e.x=e.xo+(l+c)/2):void(e.x=e.xo+(l*i+c*a)/u);r=o.distance(e,t,!0,!0),s=o.distance(e,n,!0,!0),l=o.distance(t,t,!1,!0),c=o.distance(n,n,!1,!0),a=Math.abs(r),i=Math.abs(s),u=a+i,0!==u?Zt.setRelative(e,e,(l*i+c*a)/u,o,!0):Zt.setRelative(e,e,(l+c)/2,o,!0)},normalSlope:Number.NEGATIVE_INFINITY,setRelative:function(e,t,n,o,r){if(!o||o===this)return void(e.x=(r?t.xo:t.x)+n);const s=r?t.xo:t.x,a=r?t.yo:t.y,i=s+n*o.x,l=a+n*o.y;e.x=i+(e.y-l)/o.normalSlope},slope:0,touch:function(e){e.xTouched=!0},touched:function(e){return e.xTouched},untouch:function(e){e.xTouched=!1}},$t={x:0,y:1,axis:"y",distance:function(e,t,n,o){return(n?e.yo:e.y)-(o?t.yo:t.y)},interpolate:function(e,t,n,o){let r,s,a,i,l,c,u;if(!o||o===this)return r=e.yo-t.yo,s=e.yo-n.yo,l=t.y-t.yo,c=n.y-n.yo,a=Math.abs(r),i=Math.abs(s),u=a+i,0===u?void(e.y=e.yo+(l+c)/2):void(e.y=e.yo+(l*i+c*a)/u);r=o.distance(e,t,!0,!0),s=o.distance(e,n,!0,!0),l=o.distance(t,t,!1,!0),c=o.distance(n,n,!1,!0),a=Math.abs(r),i=Math.abs(s),u=a+i,0!==u?$t.setRelative(e,e,(l*i+c*a)/u,o,!0):$t.setRelative(e,e,(l+c)/2,o,!0)},normalSlope:0,setRelative:function(e,t,n,o,r){if(!o||o===this)return void(e.y=(r?t.yo:t.y)+n);const s=r?t.xo:t.x,a=r?t.yo:t.y,i=s+n*o.x,l=a+n*o.y;e.y=l+o.normalSlope*(e.x-i)},slope:Number.POSITIVE_INFINITY,touch:function(e){e.yTouched=!0},touched:function(e){return e.yTouched},untouch:function(e){e.yTouched=!1}};function Qt(e,t){this.x=e,this.y=t,this.axis=void 0,this.slope=t/e,this.normalSlope=-e/t,Object.freeze(this)}function Kt(e,t){const n=Math.sqrt(e*e+t*t);return t/=n,1===(e/=n)&&0===t?Zt:0===e&&1===t?$t:new Qt(e,t)}function Jt(e,t,n,o){this.x=this.xo=Math.round(64*e)/64,this.y=this.yo=Math.round(64*t)/64,this.lastPointOfContour=n,this.onCurve=o,this.prevPointOnContour=void 0,this.nextPointOnContour=void 0,this.xTouched=!1,this.yTouched=!1,Object.preventExtensions(this)}Object.freeze(Zt),Object.freeze($t),Qt.prototype.distance=function(e,t,n,o){return this.x*Zt.distance(e,t,n,o)+this.y*$t.distance(e,t,n,o)},Qt.prototype.interpolate=function(e,t,n,o){let r,s,a,i,l,c,u;a=o.distance(e,t,!0,!0),i=o.distance(e,n,!0,!0),r=o.distance(t,t,!1,!0),s=o.distance(n,n,!1,!0),l=Math.abs(a),c=Math.abs(i),u=l+c,0!==u?this.setRelative(e,e,(r*c+s*l)/u,o,!0):this.setRelative(e,e,(r+s)/2,o,!0)},Qt.prototype.setRelative=function(e,t,n,o,r){o=o||this;const s=r?t.xo:t.x,a=r?t.yo:t.y,i=s+n*o.x,l=a+n*o.y,c=o.normalSlope,u=this.slope,p=e.x,h=e.y;e.x=(u*p-c*i+l-h)/(u-c),e.y=u*(e.x-p)+h},Qt.prototype.touch=function(e){e.xTouched=!0,e.yTouched=!0},Jt.prototype.nextTouched=function(e){let t=this.nextPointOnContour;for(;!e.touched(t)&&t!==this;)t=t.nextPointOnContour;return t},Jt.prototype.prevTouched=function(e){let t=this.prevPointOnContour;for(;!e.touched(t)&&t!==this;)t=t.prevPointOnContour;return t};const en=Object.freeze(new Jt(0,0)),tn={cvCutIn:17/16,deltaBase:9,deltaShift:.125,loop:1,minDis:1,autoFlip:!0};function nn(e,t){switch(this.env=e,this.stack=[],this.prog=t,e){case"glyf":this.zp0=this.zp1=this.zp2=1,this.rp0=this.rp1=this.rp2=0;case"prep":this.fv=this.pv=this.dpv=Zt,this.round=_t}}function on(e){const t=e.tZone=new Array(e.gZone.length);for(let e=0;e =176&&o<=183)r+=o-176+1;else if(o>=184&&o<=191)r+=2*(o-184+1);else if(t&&1===s&&27===o)break}while(s>0);e.ip=r}function sn(e,t){exports.DEBUG&&console.log(t.step,"SVTCA["+e.axis+"]"),t.fv=t.pv=t.dpv=e}function an(e,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+e.axis+"]"),t.pv=t.dpv=e}function ln(e,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+e.axis+"]"),t.fv=e}function cn(e,t){const n=t.stack,o=n.pop(),r=n.pop(),s=t.z2[o],a=t.z1[r];let i,l;exports.DEBUG&&console.log("SPVTL["+e+"]",o,r),e?(i=s.y-a.y,l=a.x-s.x):(i=a.x-s.x,l=a.y-s.y),t.pv=t.dpv=Kt(i,l)}function un(e,t){const n=t.stack,o=n.pop(),r=n.pop(),s=t.z2[o],a=t.z1[r];let i,l;exports.DEBUG&&console.log("SFVTL["+e+"]",o,r),e?(i=s.y-a.y,l=a.x-s.x):(i=a.x-s.x,l=a.y-s.y),t.fv=Kt(i,l)}function pn(e){exports.DEBUG&&console.log(e.step,"POP[]"),e.stack.pop()}function hn(e,t){const n=t.stack.pop(),o=t.z0[n],r=t.fv,s=t.pv;exports.DEBUG&&console.log(t.step,"MDAP["+e+"]",n);let a=s.distance(o,en);e&&(a=t.round(a)),r.setRelative(o,en,a,s),r.touch(o),t.rp0=t.rp1=n}function fn(e,t){const n=t.z2,o=n.length-2;let r,s,a;exports.DEBUG&&console.log(t.step,"IUP["+e.axis+"]");for(let t=0;t 1?"loop "+(t.loop-i)+": ":"")+"SHP["+(e?"rp1":"rp2")+"]",o)}t.loop=1}function gn(e,t){const n=t.stack,o=e?t.rp1:t.rp2,r=(e?t.z0:t.z1)[o],s=t.fv,a=t.pv,i=n.pop(),l=t.z2[t.contours[i]];let c=l;exports.DEBUG&&console.log(t.step,"SHC["+e+"]",i);const u=a.distance(r,r,!1,!0);do{c!==r&&s.setRelative(c,c,u,a),c=c.nextPointOnContour}while(c!==l)}function mn(e,t){const n=t.stack,o=e?t.rp1:t.rp2,r=(e?t.z0:t.z1)[o],s=t.fv,a=t.pv,i=n.pop();let l,c;switch(exports.DEBUG&&console.log(t.step,"SHZ["+e+"]",i),i){case 0:l=t.tZone;break;case 1:l=t.gZone;break;default:throw new Error("Invalid zone")}const u=a.distance(r,r,!1,!0),p=l.length-2;for(let e=0;e ",i),t.stack.push(Math.round(64*i))}function Sn(e,t){const n=t.stack,o=n.pop(),r=t.fv,s=t.pv,a=t.ppem,i=t.deltaBase+16*(e-1),l=t.deltaShift,c=t.z0;exports.DEBUG&&console.log(t.step,"DELTAP["+e+"]",o,n);for(let e=0;e
>4)!==a)continue;let u=(15&o)-8;u>=0&&u++,exports.DEBUG&&console.log(t.step,"DELTAPFIX",e,"by",u*l);const p=c[e];r.setRelative(p,p,u*l,s)}}function Un(e,t){const n=t.stack,o=n.pop();exports.DEBUG&&console.log(t.step,"ROUND[]"),n.push(64*t.round(o/64))}function Tn(e,t){const n=t.stack,o=n.pop(),r=t.ppem,s=t.deltaBase+16*(e-1),a=t.deltaShift;exports.DEBUG&&console.log(t.step,"DELTAC["+e+"]",o,n);for(let e=0;e >4)!==r)continue;let i=(15&o)-8;i>=0&&i++;const l=i*a;exports.DEBUG&&console.log(t.step,"DELTACFIX",e,"by",l),t.cvt[e]+=l}}function wn(e,t){const n=t.stack,o=n.pop(),r=n.pop(),s=t.z2[o],a=t.z1[r];let i,l;exports.DEBUG&&console.log("SDPVTL["+e+"]",o,r),e?(i=s.y-a.y,l=a.x-s.x):(i=a.x-s.x,l=a.y-s.y),t.dpv=Kt(i,l)}function En(e,t){const n=t.stack,o=t.prog;let r=t.ip;exports.DEBUG&&console.log(t.step,"PUSHB["+e+"]");for(let t=0;t =0?1:-1,m=Math.abs(m),e&&(v=s.cvt[i],o&&Math.abs(m-v) ":"_")+(o?"R":"_")+(0===r?"Gr":1===r?"Bl":2===r?"Wh":"")+"]",e?i+"("+s.cvt[i]+","+v+")":"",l,"(d =",g,"->",y*m,")"),s.rp1=s.rp0,s.rp2=l,t&&(s.rp0=l)}function kn(e){(e=e||{}).empty||(Gt(e.familyName,"When creating a new Font object, familyName is required."),Gt(e.styleName,"When creating a new Font object, styleName is required."),Gt(e.unitsPerEm,"When creating a new Font object, unitsPerEm is required."),Gt(e.ascender,"When creating a new Font object, ascender is required."),Gt(e.descender,"When creating a new Font object, descender is required."),Gt(e.descender<0,"Descender should be negative (e.g. -512)."),this.names={fontFamily:{en:e.familyName||" "},fontSubfamily:{en:e.styleName||" "},fullName:{en:e.fullName||e.familyName+" "+e.styleName},postScriptName:{en:e.postScriptName||e.familyName+e.styleName},designer:{en:e.designer||" "},designerURL:{en:e.designerURL||" "},manufacturer:{en:e.manufacturer||" "},manufacturerURL:{en:e.manufacturerURL||" "},license:{en:e.license||" "},licenseURL:{en:e.licenseURL||" "},version:{en:e.version||"Version 0.1"},description:{en:e.description||" "},copyright:{en:e.copyright||" "},trademark:{en:e.trademark||" "}},this.unitsPerEm=e.unitsPerEm||1e3,this.ascender=e.ascender,this.descender=e.descender,this.createdTimestamp=e.createdTimestamp,this.tables={os2:{usWeightClass:e.weightClass||this.usWeightClasses.MEDIUM,usWidthClass:e.widthClass||this.usWidthClasses.MEDIUM,fsSelection:e.fsSelection||this.fsSelectionValues.REGULAR}}),this.supported=!0,this.glyphs=new Me.GlyphSet(this,e.glyphs||[]),this.encoding=new ve(this),this.substitution=new Mt(this),this.tables=this.tables||{},Object.defineProperty(this,"hinting",{get:function(){return this._hinting?this._hinting:"truetype"===this.outlinesFormat?this._hinting=new zt(this):void 0}})}function Rn(e,t){const n=JSON.stringify(e);let o=256;for(let e in t){let r=parseInt(e);if(r&&!(r<256)){if(JSON.stringify(t[e])===n)return r;o<=r&&(o=r+1)}}return t[o]=e,o}function Dn(e,t,n){const o=Rn(t.name,n);return[{name:"tag_"+e,type:"TAG",value:t.tag},{name:"minValue_"+e,type:"FIXED",value:t.minValue<<16},{name:"defaultValue_"+e,type:"FIXED",value:t.defaultValue<<16},{name:"maxValue_"+e,type:"FIXED",value:t.maxValue<<16},{name:"flags_"+e,type:"USHORT",value:0},{name:"nameID_"+e,type:"USHORT",value:o}]}function Cn(e,t,n){const o={},r=new pe.Parser(e,t);return o.tag=r.parseTag(),o.minValue=r.parseFixed(),o.defaultValue=r.parseFixed(),o.maxValue=r.parseFixed(),r.skip("uShort",1),o.name=n[r.parseUShort()]||{},o}function Mn(e,t,n,o){const r=[{name:"nameID_"+e,type:"USHORT",value:Rn(t.name,o)},{name:"flags_"+e,type:"USHORT",value:0}];for(let o=0;o 2)return;const n=this.font;let o=this._prepState;if(!o||o.ppem!==t){let e=this._fpgmState;if(!e){nn.prototype=tn,e=this._fpgmState=new nn("fpgm",n.tables.fpgm),e.funcs=[],e.font=n,exports.DEBUG&&(console.log("---EXEC FPGM---"),e.step=-1);try{At(e)}catch(e){return console.log("Hinting error in FPGM:"+e),void(this._errorState=3)}}nn.prototype=e,o=this._prepState=new nn("prep",n.tables.prep),o.ppem=t;const r=n.tables.cvt;if(r){const e=o.cvt=new Array(r.length),s=t/n.unitsPerEm;for(let t=0;t 1))try{return Ft(e,o)}catch(e){return this._errorState<1&&(console.log("Hinting error:"+e),console.log("Note: further hinting errors are silenced")),void(this._errorState=1)}},Ft=function(e,t){const n=t.ppem/t.font.unitsPerEm,o=n;let r,s,a,i=e.components;if(nn.prototype=t,i){const l=t.font;s=[],r=[];for(let e=0;e 1?"loop "+(e.loop-n)+": ":"")+"SHPIX[]",a,r),o.setRelative(i,i,r),o.touch(i)}e.loop=1},function(e){const t=e.stack,n=e.rp1,o=e.rp2;let r=e.loop;const s=e.z0[n],a=e.z1[o],i=e.fv,l=e.dpv,c=e.z2;for(;r--;){const u=t.pop(),p=c[u];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-r)+": ":"")+"IP[]",u,n,"<->",o),i.interpolate(p,s,a,l),i.touch(p)}e.loop=1},yn.bind(void 0,0),yn.bind(void 0,1),function(e){const t=e.stack,n=e.rp0,o=e.z0[n];let r=e.loop;const s=e.fv,a=e.pv,i=e.z1;for(;r--;){const n=t.pop(),l=i[n];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-r)+": ":"")+"ALIGNRP[]",n),s.setRelative(l,o,0,a),s.touch(l)}e.loop=1},function(e){exports.DEBUG&&console.log(e.step,"RTDG[]"),e.round=qt},vn.bind(void 0,0),vn.bind(void 0,1),function(e){const t=e.prog;let n=e.ip;const o=e.stack,r=t[++n];exports.DEBUG&&console.log(e.step,"NPUSHB[]",r);for(let e=0;e n?1:0)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"GTEQ[]",n,o),t.push(o>=n?1:0)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"EQ[]",n,o),t.push(n===o?1:0)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"NEQ[]",n,o),t.push(n!==o?1:0)},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"ODD[]",n),t.push(Math.trunc(n)%2?1:0)},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"EVEN[]",n),t.push(Math.trunc(n)%2?0:1)},function(e){let t=e.stack.pop();exports.DEBUG&&console.log(e.step,"IF[]",t),t||(rn(e,!0),exports.DEBUG&&console.log(e.step,"EIF[]"))},function(e){exports.DEBUG&&console.log(e.step,"EIF[]")},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"AND[]",n,o),t.push(n&&o?1:0)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"OR[]",n,o),t.push(n||o?1:0)},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"NOT[]",n),t.push(n?0:1)},Sn.bind(void 0,1),function(e){const t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SDB[]",t),e.deltaBase=t},function(e){const t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SDS[]",t),e.deltaShift=Math.pow(.5,t)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"ADD[]",n,o),t.push(o+n)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"SUB[]",n,o),t.push(o-n)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"DIV[]",n,o),t.push(64*o/n)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"MUL[]",n,o),t.push(o*n/64)},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"ABS[]",n),t.push(Math.abs(n))},function(e){const t=e.stack;let n=t.pop();exports.DEBUG&&console.log(e.step,"NEG[]",n),t.push(-n)},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"FLOOR[]",n),t.push(64*Math.floor(n/64))},function(e){const t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,"CEILING[]",n),t.push(64*Math.ceil(n/64))},Un.bind(void 0,0),Un.bind(void 0,1),Un.bind(void 0,2),Un.bind(void 0,3),void 0,void 0,void 0,void 0,function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"WCVTF[]",n,o),e.cvt[o]=n*e.ppem/e.font.unitsPerEm},Sn.bind(void 0,2),Sn.bind(void 0,3),Tn.bind(void 0,1),Tn.bind(void 0,2),Tn.bind(void 0,3),function(e){let t,n=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SROUND[]",n),e.round=Yt,192&n){case 0:t=.5;break;case 64:t=1;break;case 128:t=2;break;default:throw new Error("invalid SROUND value")}switch(e.srPeriod=t,48&n){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*t;break;case 32:e.srPhase=.5*t;break;case 48:e.srPhase=.75*t;break;default:throw new Error("invalid SROUND value")}n&=15,e.srThreshold=0===n?0:(n/8-.5)*t},function(e){let t,n=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"S45ROUND[]",n),e.round=Yt,192&n){case 0:t=Math.sqrt(2)/2;break;case 64:t=Math.sqrt(2);break;case 128:t=2*Math.sqrt(2);break;default:throw new Error("invalid S45ROUND value")}switch(e.srPeriod=t,48&n){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*t;break;case 32:e.srPhase=.5*t;break;case 48:e.srPhase=.75*t;break;default:throw new Error("invalid S45ROUND value")}n&=15,e.srThreshold=0===n?0:(n/8-.5)*t},void 0,void 0,function(e){exports.DEBUG&&console.log(e.step,"ROFF[]"),e.round=Wt},void 0,function(e){exports.DEBUG&&console.log(e.step,"RUTG[]"),e.round=Vt},function(e){exports.DEBUG&&console.log(e.step,"RDTG[]"),e.round=jt},pn,pn,void 0,void 0,void 0,void 0,void 0,function(e){const t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANCTRL[]",t)},wn.bind(void 0,0),wn.bind(void 0,1),function(e){const t=e.stack,n=t.pop();let o=0;exports.DEBUG&&console.log(e.step,"GETINFO[]",n),1&n&&(o=35),32&n&&(o|=4096),t.push(o)},void 0,function(e){const t=e.stack,n=t.pop(),o=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,"ROLL[]"),t.push(o),t.push(n),t.push(r)},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"MAX[]",n,o),t.push(Math.max(o,n))},function(e){const t=e.stack,n=t.pop(),o=t.pop();exports.DEBUG&&console.log(e.step,"MIN[]",n,o),t.push(Math.min(o,n))},function(e){const t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANTYPE[]",t)},function(e){const t=e.stack.pop();let n=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"INSTCTRL[]",t,n),t){case 1:return void(e.inhibitGridFit=!!n);case 2:return void(e.ignoreCvt=!!n);default:throw new Error("invalid INSTCTRL[] selector")}},void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,En.bind(void 0,1),En.bind(void 0,2),En.bind(void 0,3),En.bind(void 0,4),En.bind(void 0,5),En.bind(void 0,6),En.bind(void 0,7),En.bind(void 0,8),On.bind(void 0,1),On.bind(void 0,2),On.bind(void 0,3),On.bind(void 0,4),On.bind(void 0,5),On.bind(void 0,6),On.bind(void 0,7),On.bind(void 0,8),Ln.bind(void 0,0,0,0,0,0),Ln.bind(void 0,0,0,0,0,1),Ln.bind(void 0,0,0,0,0,2),Ln.bind(void 0,0,0,0,0,3),Ln.bind(void 0,0,0,0,1,0),Ln.bind(void 0,0,0,0,1,1),Ln.bind(void 0,0,0,0,1,2),Ln.bind(void 0,0,0,0,1,3),Ln.bind(void 0,0,0,1,0,0),Ln.bind(void 0,0,0,1,0,1),Ln.bind(void 0,0,0,1,0,2),Ln.bind(void 0,0,0,1,0,3),Ln.bind(void 0,0,0,1,1,0),Ln.bind(void 0,0,0,1,1,1),Ln.bind(void 0,0,0,1,1,2),Ln.bind(void 0,0,0,1,1,3),Ln.bind(void 0,0,1,0,0,0),Ln.bind(void 0,0,1,0,0,1),Ln.bind(void 0,0,1,0,0,2),Ln.bind(void 0,0,1,0,0,3),Ln.bind(void 0,0,1,0,1,0),Ln.bind(void 0,0,1,0,1,1),Ln.bind(void 0,0,1,0,1,2),Ln.bind(void 0,0,1,0,1,3),Ln.bind(void 0,0,1,1,0,0),Ln.bind(void 0,0,1,1,0,1),Ln.bind(void 0,0,1,1,0,2),Ln.bind(void 0,0,1,1,0,3),Ln.bind(void 0,0,1,1,1,0),Ln.bind(void 0,0,1,1,1,1),Ln.bind(void 0,0,1,1,1,2),Ln.bind(void 0,0,1,1,1,3),Ln.bind(void 0,1,0,0,0,0),Ln.bind(void 0,1,0,0,0,1),Ln.bind(void 0,1,0,0,0,2),Ln.bind(void 0,1,0,0,0,3),Ln.bind(void 0,1,0,0,1,0),Ln.bind(void 0,1,0,0,1,1),Ln.bind(void 0,1,0,0,1,2),Ln.bind(void 0,1,0,0,1,3),Ln.bind(void 0,1,0,1,0,0),Ln.bind(void 0,1,0,1,0,1),Ln.bind(void 0,1,0,1,0,2),Ln.bind(void 0,1,0,1,0,3),Ln.bind(void 0,1,0,1,1,0),Ln.bind(void 0,1,0,1,1,1),Ln.bind(void 0,1,0,1,1,2),Ln.bind(void 0,1,0,1,1,3),Ln.bind(void 0,1,1,0,0,0),Ln.bind(void 0,1,1,0,0,1),Ln.bind(void 0,1,1,0,0,2),Ln.bind(void 0,1,1,0,0,3),Ln.bind(void 0,1,1,0,1,0),Ln.bind(void 0,1,1,0,1,1),Ln.bind(void 0,1,1,0,1,2),Ln.bind(void 0,1,1,0,1,3),Ln.bind(void 0,1,1,1,0,0),Ln.bind(void 0,1,1,1,0,1),Ln.bind(void 0,1,1,1,0,2),Ln.bind(void 0,1,1,1,0,3),Ln.bind(void 0,1,1,1,1,0),Ln.bind(void 0,1,1,1,1,1),Ln.bind(void 0,1,1,1,1,2),Ln.bind(void 0,1,1,1,1,3)],kn.prototype.hasChar=function(e){return null!==this.encoding.charToGlyphIndex(e)},kn.prototype.charToGlyphIndex=function(e){return this.encoding.charToGlyphIndex(e)},kn.prototype.charToGlyph=function(e){const t=this.charToGlyphIndex(e);let n=this.glyphs.get(t);return n||(n=this.glyphs.get(0)),n},kn.prototype.stringToGlyphs=function(e,t){t=t||this.defaultRenderOptions;const n=[];for(let t=0;t >1;e 1&&console.warn("Only the first kern subtable is supported."),e.skip("uLong");const n=255&e.parseUShort();if(e.skip("uShort"),0===n){const n=e.parseUShort();e.skip("uShort",3);for(let o=0;o {const t=jn.loadSync(e);$n.font=t,$n.ascender=t.ascender,$n.descender=t.descender}};const Kn=Qn.options,Jn=function(e,t){return Math.round(e+Math.random()*(t-e))};const eo=function(e,t){return{text:(e+t).toString(),equation:e+"+"+t}},to=function(e,t){return{text:(e-t).toString(),equation:e+"-"+t}};function no(e,t,n){return 6*(n=(n+1)%1)<1?e+(t-e)*n*6:2*n<1?t:3*n<2?e+(t-e)*(2/3-n)*6:e}var oo={int:Jn,greyColor:function(e,t){const n=Jn(e=e||1,t=t||9).toString(16);return`#${n}${n}${n}`},captchaText:function(e){"number"==typeof e&&(e={size:e});const t=(e=e||{}).size||4,n=e.ignoreChars||"";let o=-1,r="",s=e.charPreset||Kn.charPreset;n&&(s=function(e,t){return e.split("").filter(e=>-1===t.indexOf(e))}(s,n));const a=s.length-1;for(;++o >16,o=t>>8&255,r=255&t,s=Math.max(n,o,r),a=Math.min(n,o,r);return(s+a)/510}(e):1;let r,s;o>=.5?(r=Math.round(100*o)-45,s=Math.round(100*o)-25):(r=Math.round(100*o)+25,s=Math.round(100*o)+45);const a=Jn(r,s)/100,i=a<.5?a*(a+n):a+n-a*n,l=2*a-i,c=Math.floor(255*no(l,i,t+1/3)),u=Math.floor(255*no(l,i,t));return"#"+(Math.floor(255*no(l,i,t-1/3))|u<<8|c<<16|1<<24).toString(16).slice(1)}};const ro=Qn.options,so=function(e,t){e=e||oo.captchaText();const n=(t=Object.assign({},ro,t)).width,o=t.height,r=t.background||t.backgroundColor;r&&(t.color=!0);const s=r?` `:"",a=[].concat(function(e,t,n){const o=n.color,r=[],s=n.inverse?7:1,a=n.inverse?15:9;let i=-1;for(;++i `)}return r}(n,o,t)).concat(function(e,t,n,o,r){const s=e.length,a=(t-2)/(s+1),i=o.inverse?10:0,l=o.inverse?14:4;let u=-1;const p=[],h=r||o.color?oo.color(o.background):oo.greyColor(i,l);for(;++u `)}return p}(e,n,o,t)).sort(()=>Math.random()-.5).join("");return`${``};var ao=so,io=oo.captchaText,lo=function(e){const t=e.text||oo.captchaText(e);return{text:t,data:so(t,e)}},co=function(e){const t=oo.mathExpr(e.mathMin,e.mathMax,e.mathOperator);return{text:t.text,data:so(t.equation,e)}},uo=ro,po=Qn.loadFont;ao.randomText=io,ao.create=lo,ao.createMathExpr=co,ao.options=uo,ao.loadFont=po;var ho=ao;var fo=class{constructor(e={}){let{level:t=2,...n}=e;this.width=300,this.height=100;const o=[Math.floor(256*Math.random()),Math.floor(256*Math.random()),Math.floor(256*Math.random())];-1===[1,2,3,4].indexOf(t)&&(t=2);const r={};1===t?Object.assign(r,{lineWidth:5,textColor:o,textLength:4,lineOffset:0,background:[255,250,232],randomLineNum:5},n):2===t?Object.assign(r,{lineWidth:5,textColor:o,textLength:4,lineOffset:0,background:[255,250,232],randomLineNum:10},n):3===t?Object.assign(r,{lineWidth:5,textColor:o,textLength:4,lineOffset:1,background:[255,250,232],randomLineNum:15},n):4===t&&(Object.assign(r,{lineWidth:5,textColor:o,textLength:4,lineOffset:1,background:[255,250,232],randomLineNum:15},n),r.textColor=function(){return[Math.floor(256*Math.random()),Math.floor(256*Math.random()),Math.floor(256*Math.random())]}),this.config=r,this.data=Buffer.alloc(9e4)}setPixel(e,t,n){const o=3*(t*this.width+e);this.data[o]=n.b,this.data[o+1]=n.g,this.data[o+2]=n.r}getFileBuffer(e){const t=54+this.data.length,n=Buffer.alloc(t);return n.write("BM",0),n.writeUInt32LE(t,2),n.writeUInt32LE(0,6),n.writeUInt32LE(54,10),n.writeUInt32LE(40,14),n.writeInt32LE(this.width,18),n.writeInt32LE(-this.height,22),n.writeUInt16LE(1,26),n.writeUInt16LE(24,28),n.writeUInt32LE(0,30),n.writeUInt32LE(this.data.length,34),this.data.copy(n,54),n}setImageBackground(e,t,n){for(let o=0;o=3?Math.floor(11*Math.random())-6:0}getTextOffset(e=0){const t=this.config.textLength,n=Math.round((300-50*t)/2/t);return{x:e*(300/this.config.textLength)+n,y:0}}drawRandomLinesWithVaryingWidth(e){const t=this.width,n=this.height;for(let o=0;o -i&&(u-=i,e+=l),p0){const e=s.data[0];if(e.expired_date {e.scene&&delete e.scene,this.pluginConfig.scene[n]=Object.assign({},t,e[n])})}}}{constructor(){super(),this.DEVICEID2opts={}}mergeConfig(e){const t=yo(this.pluginConfig.scene)?this.pluginConfig.scene[e.scene]:e.scene;return Object.assign({},yo(t)?t:this.pluginConfig,e)}async create(e={}){if(!e.scene)throw new Error("scene验证码场景不可为空");e=this.mergeConfig(e);let{scene:t,expiresDate:n,deviceId:o,clientIP:r,...s}=e;if(o=o||__ctx__.DEVICEID,r=r||__ctx__.CLIENTIP,!o)throw new Error("deviceId不可为空");const a=new To;try{const{text:i,base64:l}=function(e={}){const{uniPlatform:t="",mode:n="svg"}=e;if("svg"===n){let n;n=e.mathExpr?ho.createMathExpr(e):ho.create(e);let o="data:image/svg+xml;utf8,"+n.data.replace(/#/g,"%23");return(!t||["mp-toutiao","h5","web","app","app-plus"].indexOf(t)>-1)&&(o=o.replace(/"/g,"'").replace(/ e.toLowerCase()===t.toLowerCase()));return o?e[o]:s}getHttpData(e){const t=e.httpMethod.toLowerCase(),s=this.getHttpHeaders(e),o=this.getHeadersValue(s,"Content-Type","");if("get"===t)return e.queryStringParameters;if("post"!==t)throw new a({subject:i,code:c.code,message:`Invalid http method, expected "POST" or "get", got "${t}"`});if(0===o.indexOf("application/json"))return JSON.parse(e.body);if(0===o.indexOf("application/x-www-form-urlencoded"))return require("querystring").parse(e.body);throw new a({subject:i,code:c.code,message:`Invalid content type of POST method, expected "application/json" or "application/x-www-form-urlencoded", got "${o}"`})}verifyHttpInfo(e){const t=e.headers||{},s=this.getHeadersValue(t,"Unicloud-S2s-Timestamp","0");let[o,n]=this.getHeadersValue(t,"Unicloud-S2s-Signature","").split(" ");if(o=o.toLowerCase(),o!==this.hashMethod)throw new a({subject:i,code:c.code,message:`Invalid hash method, expected "${this.hashMethod}", got "${o}"`});const r=parseInt(s),d=Date.now();if(Math.abs(d-r)>1e3*this.timeDiffTolerance)throw new a({subject:i,code:c.code,message:`Invalid timestamp, server timestamp is ${d}, ${r} exceed max timeDiffTolerance(${this.timeDiffTolerance} seconds)`});return m({timestamp:r,data:this.getHttpData(e),signKey:this.signKey,hashMethod:this.hashMethod})===n}getSecureHeaders(e){const{data:t}=e||{},s=Date.now(),o=m({timestamp:s,data:t,signKey:this.signKey,hashMethod:this.hashMethod});return{"Unicloud-S2s-Timestamp":s+"","Unicloud-S2s-Signature":this.hashMethod+" "+o}}}const y=require("uni-config-center")({pluginId:i});class b{constructor(){this.config=y.config();const e=n.default.resolve(require.resolve("uni-config-center"),i,"config.json");if(!this.config)throw new a({subject:i,code:r.code,message:`${i} config required, please check your config file: ${e}`});if("connectCode"===this.config.type)this.verifier=new g({config:this.config});else{if(!function(e){return"sign"===e.type}(this.config))throw new a({subject:i,code:r.code,message:`Invalid ${i} config, expected policy is "code" or "sign", got ${this.config.policy}`});this.verifier=new w({config:this.config})}}verifyHttpInfo(e){if(!e)throw new a({subject:i,code:c.code,message:"Access denied, httpInfo required"});return this.verifier.verifyHttpInfo(e)}getSecureHeaders(e){return this.verifier.getSecureHeaders(e)}}exports.getSecureHeaders=function(e){return(new b).getSecureHeaders(e)},exports.verifyHttpInfo=function(e){const t=(new b).verifyHttpInfo(e);if(!t)throw new a({subject:i,code:c.code,message:c.message});return t}; diff --git a/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/package.json b/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/package.json deleted file mode 100644 index e99f52c..0000000 --- a/uni_modules/uni-cloud-s2s/uniCloud/cloudfunctions/common/uni-cloud-s2s/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "uni-cloud-s2s", - "version": "1.0.1", - "description": "", - "keywords": [], - "author": "DCloud", - "main": "index.js", - "dependencies": { - "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" - } -} \ No newline at end of file diff --git a/uni_modules/uni-cms-article/changelog.md b/uni_modules/uni-cms-article/changelog.md deleted file mode 100644 index f350e47..0000000 --- a/uni_modules/uni-cms-article/changelog.md +++ /dev/null @@ -1,41 +0,0 @@ -## 1.0.16(2024-06-21) -- 修复 小程序发布时无法上传的Bug -## 1.0.15(2024-06-20) -- 修复 小程序访问文章列表报错的Bug -## 1.0.14(2024-06-12) -- 修复 客户端无法显示文章详情问题的Bug -## 1.0.13(2023-12-09) -- 新增 支持uni-app-x,需要[uni-cms](https://ext.dcloud.net.cn/plugin?id=11700)插件版本>=1.0.17 -## 1.0.12(2023-10-17) -- 修复 使用腾讯云服务空间时无法加载封面图及正文图片的问题 -## 1.0.11(2023-08-07) -- 修复 Vue3下因`parse-scen-result.js`文件导出问题导致无法打包编译的bug -## 1.0.10(2023-07-14) -- 新增 文章预览功能,详见[文档](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html#article-preview)(需要uni-cms版本>=1.0.14) -- 修复 文章详情页换行重复问题 -- 修复 文章列表在数据量小时下拉刷新数据会重复的问题 -## 1.0.9(2023-07-10) -- 优化 文章详情页正文可以渲染多个换行 -## 1.0.8(2023-06-21) -- 增加 文章列表无图、三图封面样式(需要uni-cms版本>=1.0.12) -- 优化 文章详情页样式 -- 修复 在Vue3下出现 require is not defined 问题 -## 1.0.7(2023-06-07) -- 新增 文章详情页面支持播放视频(发布视频需要uni-cms版本>=1.0.11) -- 优化 文章正文渲染逻辑 -- 优化 文章详情页面样式 -- 修复 在文章详情页下点击返回按钮无响应问题 -## 1.0.6(2023-04-28) -- 修复 文章详情只存在列表时无法渲染的问题 -## 1.0.5(2023-04-24) -- 增加 license 文件 -## 1.0.4(2023-04-21) -- 优化代码结构,增加代码注释,提高可读性 -## 1.0.3(2023-04-17) -- 移除无用schema文件 -## 1.0.2(2023-04-12) -- 优化看广告解锁文章交互 -## 1.0.1(2023-04-12) -- 优化页面逻辑 -## 1.0.0(2023-04-11) -- 插件发布,支持图文内容展示、广告解锁全文功能 [详见文档](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html) diff --git a/uni_modules/uni-cms-article/common/parse-image-url.js b/uni_modules/uni-cms-article/common/parse-image-url.js deleted file mode 100644 index 8180074..0000000 --- a/uni_modules/uni-cms-article/common/parse-image-url.js +++ /dev/null @@ -1,68 +0,0 @@ -function parseEditorImage (blocks = []) { - const images = [] - - if (!Array.isArray(blocks)) { - blocks = [blocks] - } - - for (const block of blocks) { - const {insert = {}, attributes = {}} = block - const {'data-custom': custom = ""} = attributes - - let parseCustom = custom.split('&').reduce((obj, item) => { - const [key, value] = item.split('=') - - if (key && value) { - obj[key] = value - } - return obj - }, {}) - - images.push({ - src: insert.image, - source: parseCustom.source ? parseCustom.source: insert.image - }) - } - - return images -} - -/** - * 解析媒体库/编辑器中的图片 - * @param images 图片地址 - * @param type {string} 解析类型 media: 媒体库, editor: 编辑器 - * @returns {Promise<{src: *, source: *}[]|{src, source: *}[]>} - */ -export async function parseImageUrl (images = [], type = "media") { - if (type === "editor") { - images = parseEditorImage(images).map(item => item.source) - } else { - if (!Array.isArray(images)) { - images = [images] - } - } - - if (!images) return null - - const tcbFiles = images.filter(item => item.startsWith("cloud://")) - - if (tcbFiles.length) { - const res = await uniCloud.getTempFileURL({ - fileList: tcbFiles - }) - - return images.map(image => { - const file = res.fileList.find(item => item.fileID === image) - - return { - src: file ? file.tempFileURL : image, - source: image - } - }) - } else { - return images.map(image => ({ - src: image, - source: image - })) - } -} diff --git a/uni_modules/uni-cms-article/common/parse-image-url.uts b/uni_modules/uni-cms-article/common/parse-image-url.uts deleted file mode 100644 index 1f8e31e..0000000 --- a/uni_modules/uni-cms-article/common/parse-image-url.uts +++ /dev/null @@ -1,80 +0,0 @@ -export type ParseImageUrlResult = { - src: string - source: string -} -function parseEditorImage (_blocks: any): UTSJSONObject[] { - const images: UTSJSONObject[] = [] - let blocks: UTSJSONObject[] - - if (!Array.isArray(_blocks)) { - blocks = [_blocks as UTSJSONObject] as UTSJSONObject[] - } else { - blocks = _blocks as UTSJSONObject[] - } - - blocks.forEach((block: UTSJSONObject) => { - const insert = block.getJSON('insert') - const attributes = block.getJSON('attributes') - const custom = attributes!.getString('data-custom') - - let parseCustom = custom && custom.split('&') ? custom.split('&').reduce((obj: UTSJSONObject, item: string): UTSJSONObject => { - const kv = item.split('=') - - if (kv.length > 1) { - obj[kv[0]] = kv[1] - } - - return obj - }, {} as UTSJSONObject) : {} - - images.push({ - src: insert!.getString('image'), - source: parseCustom.getString('source') != null ? parseCustom.getString('source') : insert!.getString('image') - }) - }) - - return images -} - -/** - * 解析媒体库/编辑器中的图片 - * @param images 图片地址 - * @param type {string} 解析类型 media: 媒体库, editor: 编辑器 - * @returns {Promise<{src: *, source: *}[]|{src, source: *}[]>} - */ -export async function parseImageUrl (images: any, type: string = "media"): Promise { - let imagePaths: string[] = [] - if (type === "editor") { - imagePaths = parseEditorImage(images).map((item: UTSJSONObject): string => item.getString('source')!) - } else { - if (!Array.isArray(images)) { - imagePaths = [images as string] as string[] - } else { - imagePaths = images - } - } - - if (imagePaths.length <= 0) return null - - const tcbFiles = imagePaths.filter((item: string): boolean => item.startsWith("cloud://")) - - if (tcbFiles.length > 0) { - const res: UniCloudGetTempFileURLResult = await uniCloud.getTempFileURL({ - fileList: tcbFiles - }) - - return imagePaths.map((image: string): ParseImageUrlResult => { - const file = res.fileList.find((item: UniCloudGetTempFileURLResultItem): boolean => item.fileID === image) - - return { - src: file ? file.tempFileURL : image, - source: image - } as ParseImageUrlResult - }) - } else { - return imagePaths.map((image: string): ParseImageUrlResult => ({ - src: image, - source: image - } as ParseImageUrlResult)) - } -} diff --git a/uni_modules/uni-cms-article/common/parse-scan-result.js b/uni_modules/uni-cms-article/common/parse-scan-result.js deleted file mode 100644 index 3436849..0000000 --- a/uni_modules/uni-cms-article/common/parse-scan-result.js +++ /dev/null @@ -1,28 +0,0 @@ -function parseScanResult (scanText) { - const match = scanText.match(/^(.*?):\/\/(.*)/) - - if (!match || match.length < 1) { - uni.showToast({ - icon: 'none', - title: '未能识别到有效信息' - }) - } - - const [, protocol, path] = match - - switch (protocol) { - case "internallink": - uni.navigateTo({ - url: `/${path.replace(/^\//, '')}`, - fail: () => { - uni.showToast({ - icon: "none", - title: "访问的路径不存在" - }) - } - }) - break - } -} - -export default parseScanResult diff --git a/uni_modules/uni-cms-article/common/parse-scan-result.uts b/uni_modules/uni-cms-article/common/parse-scan-result.uts deleted file mode 100644 index 78744af..0000000 --- a/uni_modules/uni-cms-article/common/parse-scan-result.uts +++ /dev/null @@ -1,28 +0,0 @@ -function parseScanResult (scanText: string): void { - const match = scanText.match(/^(.*?):\/\/(.*)/) - - if (!match || match.length < 1) { - uni.showToast({ - icon: 'none', - title: '未能识别到有效信息' - }) - } - - const [, protocol, path] = match - - switch (protocol) { - case "internallink": - uni.navigateTo({ - url: `/${path.replace(/^\//, '')}`, - fail: () => { - uni.showToast({ - icon: "none", - title: "访问的路径不存在" - }) - } - }) - break - } -} - -export default parseScanResult diff --git a/uni_modules/uni-cms-article/common/publish-time.js b/uni_modules/uni-cms-article/common/publish-time.js deleted file mode 100644 index 7163e4b..0000000 --- a/uni_modules/uni-cms-article/common/publish-time.js +++ /dev/null @@ -1,93 +0,0 @@ -export default function translatePublishTime(timestamp) { - let result = '' - // 获取当前时间 - const currentData = new Date() - // 获取发布时间 - const date = new Date(timestamp) - // 获取发布年份 - const year = date.getFullYear() - // 获取发布月份 - const mouth = date.getMonth() + 1 - // 获取发布日期 - const day = date.getDate() - // 获取发布小时 - const hours = date.getHours() - // 获取发布分钟 - const minute = date.getMinutes() - // 获取发布秒数 - const second = date.getSeconds() - // 获取发布时间戳 - const timer = date.getTime() - // 获取当前年份 - const currentYear = currentData.getFullYear() - // 获取当前月份 - const currentMonth = currentData.getMonth() + 1 - // 获取当前日期 - const currentDay = currentData.getDate() - // 获取当前小时 - const currentHours = currentData.getHours() - // 获取当前分钟 - let currentMinute = currentData.getMinutes() - // 获取当前秒数 - const currentSecond = currentData.getSeconds() - // 获取当前时间戳 - const currentTimer = currentData.getTime() - - // 如果时间差小于10秒 - if ((currentTimer - timer) < 1000 * 10) { - // 显示刚刚 - result = `刚刚`; - // 如果时间差小于60秒 - } else if ((currentTimer - timer) < 1000 * 60) { - // 如果当前分钟大于发布分钟 - if (currentMinute > minute) { - // 显示秒数差 - result = `${(((currentMinute - minute) * 60) + currentSecond - second)}秒前`; - } else { - // 显示秒数差 - result = `${(currentSecond - second)}秒前`; - } - // 如果时间差小于1小时 - } else if ((currentTimer - timer) < 1000 * (60 * 60)) { - // 如果当前小时大于发布小时 - if (currentHours > hours) { - // 显示分钟差 - result = `${(((currentHours - hours) * 60) + currentMinute - minute)}分钟前`; - } else { - // 修改 昨天发布的文章时间会出现负数 - // 如果当前分钟小于发布分钟 - if (currentMinute < minute) { - // 当前分钟加60 - currentMinute += 60 - } - // 显示分钟差 - result = `${(currentMinute - minute)}分钟前`; - } - // 如果时间差小于1天 - } else if ((currentTimer - timer) < 1000 * (24 * 60 * 60)) { - // 如果当前日期大于发布日期 - if (currentDay > day) { - // 显示小时差 - result = `${((currentDay - day) * 24 + currentHours - hours)}小时前`; - } else { - // 修改 跨月-昨天发布的文章时间会出现负数 - // 如果当前月份不等于发布月份 - if (currentMonth !== mouth) { - // 显示小时差 - result = `${(24 + currentHours - hours)}小时前`; - } else { - // 显示小时差 - result = `${(currentHours - hours)}小时前`; - } - } - // 如果发布年份等于当前年份 - } else if (currentYear === year) { - // 显示月份和日期 - result = `${mouth}月${day}日`; - } else { - // 显示年份、月份和日期 - result = `${year}年${mouth}月${day}日`; - } - return result // 返回结果 -} - diff --git a/uni_modules/uni-cms-article/common/publish-time.uts b/uni_modules/uni-cms-article/common/publish-time.uts deleted file mode 100644 index 23b7761..0000000 --- a/uni_modules/uni-cms-article/common/publish-time.uts +++ /dev/null @@ -1,93 +0,0 @@ -export default function translatePublishTime(timestamp: number): string { - let result: string - // 获取当前时间 - const currentData = new Date() - // 获取发布时间 - const date = new Date(timestamp) - // 获取发布年份 - const year = date.getFullYear() - // 获取发布月份 - const mouth = date.getMonth() + 1 - // 获取发布日期 - const day = date.getDate() - // 获取发布小时 - const hours = date.getHours() - // 获取发布分钟 - const minute = date.getMinutes() - // 获取发布秒数 - const second = date.getSeconds() - // 获取发布时间戳 - const timer = date.getTime() - // 获取当前年份 - const currentYear = currentData.getFullYear() - // 获取当前月份 - const currentMonth = currentData.getMonth() + 1 - // 获取当前日期 - const currentDay = currentData.getDate() - // 获取当前小时 - const currentHours = currentData.getHours() - // 获取当前分钟 - let currentMinute = currentData.getMinutes() - // 获取当前秒数 - const currentSecond = currentData.getSeconds() - // 获取当前时间戳 - const currentTimer = currentData.getTime() - - // 如果时间差小于10秒 - if ((currentTimer - timer) < 1000 * 10) { - // 显示刚刚 - result = `刚刚`; - // 如果时间差小于60秒 - } else if ((currentTimer - timer) < 1000 * 60) { - // 如果当前分钟大于发布分钟 - if (currentMinute > minute) { - // 显示秒数差 - result = `${(((currentMinute - minute) * 60) + currentSecond - second)}秒前`; - } else { - // 显示秒数差 - result = `${(currentSecond - second)}秒前`; - } - // 如果时间差小于1小时 - } else if ((currentTimer - timer) < 1000 * (60 * 60)) { - // 如果当前小时大于发布小时 - if (currentHours > hours) { - // 显示分钟差 - result = `${(((currentHours - hours) * 60) + currentMinute - minute)}分钟前`; - } else { - // 修改 昨天发布的文章时间会出现负数 - // 如果当前分钟小于发布分钟 - if (currentMinute < minute) { - // 当前分钟加60 - currentMinute += 60 - } - // 显示分钟差 - result = `${(currentMinute - minute)}分钟前`; - } - // 如果时间差小于1天 - } else if ((currentTimer - timer) < 1000 * (24 * 60 * 60)) { - // 如果当前日期大于发布日期 - if (currentDay > day) { - // 显示小时差 - result = `${((currentDay - day) * 24 + currentHours - hours)}小时前`; - } else { - // 修改 跨月-昨天发布的文章时间会出现负数 - // 如果当前月份不等于发布月份 - if (currentMonth !== mouth) { - // 显示小时差 - result = `${(24 + currentHours - hours)}小时前`; - } else { - // 显示小时差 - result = `${(currentHours - hours)}小时前`; - } - } - // 如果发布年份等于当前年份 - } else if (currentYear === year) { - // 显示月份和日期 - result = `${mouth}月${day}日`; - } else { - // 显示年份、月份和日期 - result = `${year}年${mouth}月${day}日`; - } - return result // 返回结果 -} - diff --git a/uni_modules/uni-cms-article/components/list-template/not-cover.uvue b/uni_modules/uni-cms-article/components/list-template/not-cover.uvue deleted file mode 100644 index be45230..0000000 --- a/uni_modules/uni-cms-article/components/list-template/not-cover.uvue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - diff --git a/uni_modules/uni-cms-article/components/list-template/not-cover.vue b/uni_modules/uni-cms-article/components/list-template/not-cover.vue deleted file mode 100644 index 966826e..0000000 --- a/uni_modules/uni-cms-article/components/list-template/not-cover.vue +++ /dev/null @@ -1,46 +0,0 @@ - -- -- -{{ data?.title }} -- -{{ data!.user_id!.length > 0 ? data!.user_id[0]!.nickname : '' }} -{{ publishTime(data?.publish_date ?? 0) }} -- - - - - - - diff --git a/uni_modules/uni-cms-article/components/list-template/right-small-cover.uvue b/uni_modules/uni-cms-article/components/list-template/right-small-cover.uvue deleted file mode 100644 index ffa620c..0000000 --- a/uni_modules/uni-cms-article/components/list-template/right-small-cover.uvue +++ /dev/null @@ -1,50 +0,0 @@ - -- - -- -{{ data.title }} -- -{{ data.user_id[0] ? data.user_id[0].nickname : '' }} -{{ publishTime(data.publish_date) }} -- - - - - - diff --git a/uni_modules/uni-cms-article/components/list-template/right-small-cover.vue b/uni_modules/uni-cms-article/components/list-template/right-small-cover.vue deleted file mode 100644 index 4bf2acd..0000000 --- a/uni_modules/uni-cms-article/components/list-template/right-small-cover.vue +++ /dev/null @@ -1,46 +0,0 @@ - -- -{{ data?.title }} -- -{{ data!.user_id!.length > 0 ? data!.user_id[0]!.nickname : '' }} -{{ publishTime(data?.publish_date ?? 0) }} -- - - - - - - - diff --git a/uni_modules/uni-cms-article/components/list-template/style.scss b/uni_modules/uni-cms-article/components/list-template/style.scss deleted file mode 100644 index 9b70a1b..0000000 --- a/uni_modules/uni-cms-article/components/list-template/style.scss +++ /dev/null @@ -1,63 +0,0 @@ -.list-item { - &.not-cover { - .main { - .info { - margin-top: 20rpx; - } - } - } - .main { - display: flex; - justify-content: space-between; - flex-direction: column; - flex: 1; - .title { - font-size: 30rpx; - color: #333333; - } - - .thumbnails { - margin: 20rpx 0; - display: flex; - align-items: center; - flex-direction: row; - .img { - flex: 1; - /* #ifndef APP-NVUE */ - width: auto; - /* #endif */ - height: 200rpx; - border-radius: 8rpx; - margin: 0 10rpx; - &:first-child { - margin-left: 0; - } - &:last-child { - margin-right: 0; - } - } - } - - .info { - display: flex; - flex-direction: row; - } - - .author, - .publish_date { - font-size: 24rpx; - color: #bbbbbb; - } - - .publish_date { - margin-left: 14rpx; - } - } - - .thumbnail { - width: 240rpx; - height: 160rpx; - margin-left: 20rpx; - border-radius: 8rpx; - } -} diff --git a/uni_modules/uni-cms-article/components/list-template/three-cover.uvue b/uni_modules/uni-cms-article/components/list-template/three-cover.uvue deleted file mode 100644 index 6f1f123..0000000 --- a/uni_modules/uni-cms-article/components/list-template/three-cover.uvue +++ /dev/null @@ -1,58 +0,0 @@ - -- - - -{{ data.title }} -- -{{ data.user_id[0] ? data.user_id[0].nickname : '' }} -{{ publishTime(data.publish_date) }} -- - - - - - - - diff --git a/uni_modules/uni-cms-article/components/list-template/three-cover.vue b/uni_modules/uni-cms-article/components/list-template/three-cover.vue deleted file mode 100644 index 81b98b7..0000000 --- a/uni_modules/uni-cms-article/components/list-template/three-cover.vue +++ /dev/null @@ -1,52 +0,0 @@ - -- -{{ data?.title }} -- -- - -{{ data!.user_id!.length > 0 ? data!.user_id[0]!.nickname : '' }} -{{ publishTime(data?.publish_date ?? 0) }} -- - - - - - - diff --git a/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue b/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue deleted file mode 100644 index 1ae0b03..0000000 --- a/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue +++ /dev/null @@ -1,99 +0,0 @@ - -- - -{{ data.title }} -- -- - -{{ data.user_id[0] ? data.user_id[0].nickname : '' }} -{{ publishTime(data.publish_date) }} -- - - - - diff --git a/uni_modules/uni-cms-article/components/refresh-box/refreshBox.uvue b/uni_modules/uni-cms-article/components/refresh-box/refreshBox.uvue deleted file mode 100644 index 1ae0b03..0000000 --- a/uni_modules/uni-cms-article/components/refresh-box/refreshBox.uvue +++ /dev/null @@ -1,99 +0,0 @@ - -- - -{{config[state].text}} -- - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/image.uvue b/uni_modules/uni-cms-article/components/render-article-detail/image.uvue deleted file mode 100644 index 1269161..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/image.uvue +++ /dev/null @@ -1,167 +0,0 @@ - -- - -{{config[state].text}} -- - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/image.vue b/uni_modules/uni-cms-article/components/render-article-detail/image.vue deleted file mode 100644 index c516de6..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/image.vue +++ /dev/null @@ -1,131 +0,0 @@ - -- - - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/index.vue b/uni_modules/uni-cms-article/components/render-article-detail/index.vue deleted file mode 100644 index f2b29e8..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/index.vue +++ /dev/null @@ -1,129 +0,0 @@ - -- - - - - - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/list.vue b/uni_modules/uni-cms-article/components/render-article-detail/list.vue deleted file mode 100644 index e960a7b..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/list.vue +++ /dev/null @@ -1,50 +0,0 @@ - -- - - - - - - - - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/text.vue b/uni_modules/uni-cms-article/components/render-article-detail/text.vue deleted file mode 100644 index 9a4c9a8..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/text.vue +++ /dev/null @@ -1,160 +0,0 @@ - -- -{{data.type === 'ordered' ? `${index + 1}.` : '•'}} -- - - - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/unlock-content.vue b/uni_modules/uni-cms-article/components/render-article-detail/unlock-content.vue deleted file mode 100644 index b416698..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/unlock-content.vue +++ /dev/null @@ -1,216 +0,0 @@ - -- {{item.data.value}} - -- {{item.data.value}} - -- -
- - -\n - - -- - - - - - - - - - - - - diff --git a/uni_modules/uni-cms-article/components/render-article-detail/video.vue b/uni_modules/uni-cms-article/components/render-article-detail/video.vue deleted file mode 100644 index 472f0bc..0000000 --- a/uni_modules/uni-cms-article/components/render-article-detail/video.vue +++ /dev/null @@ -1,44 +0,0 @@ - -- - - -广告加载失败 -- - - - - - diff --git a/uni_modules/uni-cms-article/components/uni-cms-article-icons/uni-cms-article-icons.uvue b/uni_modules/uni-cms-article/components/uni-cms-article-icons/uni-cms-article-icons.uvue deleted file mode 100644 index 4b2fefd..0000000 --- a/uni_modules/uni-cms-article/components/uni-cms-article-icons/uni-cms-article-icons.uvue +++ /dev/null @@ -1,54 +0,0 @@ - -- - - - - - diff --git a/uni_modules/uni-cms-article/components/uni-cms-article-list/uni-cms-article-list.vue b/uni_modules/uni-cms-article/components/uni-cms-article-list/uni-cms-article-list.vue deleted file mode 100644 index 22840ba..0000000 --- a/uni_modules/uni-cms-article/components/uni-cms-article-list/uni-cms-article-list.vue +++ /dev/null @@ -1,371 +0,0 @@ - -{{iconCode}} -- - - - - - diff --git a/uni_modules/uni-cms-article/components/uni-cms-article-search-bar/uni-cms-article-search-bar.uvue b/uni_modules/uni-cms-article/components/uni-cms-article-search-bar/uni-cms-article-search-bar.uvue deleted file mode 100644 index 54a65ce..0000000 --- a/uni_modules/uni-cms-article/components/uni-cms-article-search-bar/uni-cms-article-search-bar.uvue +++ /dev/null @@ -1,195 +0,0 @@ - -- -- 当前网络不可用,请点击重试 -- -- - - -{{ refreshText[refreshState] }} -- - -- - - -- -{{ item.title }} -- -- -{{ item!.user_id!.length > 0 ? item.user_id[0].nickname : '' }} -- -{{ publishTime(item.publish_date) }} -- -- -{{ item.title }} -- -- -{{ item!.user_id!.length > 0 ? item.user_id[0].nickname : '' }} -- -{{ publishTime(item.publish_date) }} -- - - -- - - -- -{{ item.title }} -- -- - -- -{{ item!.user_id!.length > 0 ? item.user_id[0].nickname : '' }} -- -{{ publishTime(item.publish_date) }} -- -{{ loading ? '加载中...' : (hasMore ? '上拉加载更多' : '没有更多数据了') }} -- - - - - - diff --git a/uni_modules/uni-cms-article/components/uni-load-state/i18n/en.json b/uni_modules/uni-cms-article/components/uni-load-state/i18n/en.json deleted file mode 100644 index b600ad4..0000000 --- a/uni_modules/uni-cms-article/components/uni-load-state/i18n/en.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "noData": "No Data", - "noNetwork": "Network error", - "toSet": "Go to settings", - "error": "error" -} diff --git a/uni_modules/uni-cms-article/components/uni-load-state/i18n/index.js b/uni_modules/uni-cms-article/components/uni-load-state/i18n/index.js deleted file mode 100644 index c70a386..0000000 --- a/uni_modules/uni-cms-article/components/uni-load-state/i18n/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import en from './en.json' -import zhHans from './zh-Hans.json' -export default { - en, - 'zh-Hans': zhHans -} diff --git a/uni_modules/uni-cms-article/components/uni-load-state/i18n/zh-Hans.json b/uni_modules/uni-cms-article/components/uni-load-state/i18n/zh-Hans.json deleted file mode 100644 index 4fa8e1a..0000000 --- a/uni_modules/uni-cms-article/components/uni-load-state/i18n/zh-Hans.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "noData": "暂无数据", - "noNetwork": "网络异常", - "toSet": "前往设置", - "error": "错误" -} diff --git a/uni_modules/uni-cms-article/components/uni-load-state/readme.md b/uni_modules/uni-cms-article/components/uni-load-state/readme.md deleted file mode 100644 index 07288d6..0000000 --- a/uni_modules/uni-cms-article/components/uni-load-state/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -新增uni-load-state组件,这是一个封装数据请求状态的组件。根据uniCloud-db组件提供的参数直接响应对应的效果。 -包括加载中、当前页面为空、没有更多数据、上拉加载更多; -加载错误判断,如果是断网就引导打开系统网络设置页面。恢复联网后自动触发networkResume方法。 \ No newline at end of file diff --git a/uni_modules/uni-cms-article/components/uni-load-state/uni-load-state.vue b/uni_modules/uni-cms-article/components/uni-load-state/uni-load-state.vue deleted file mode 100644 index ec99b24..0000000 --- a/uni_modules/uni-cms-article/components/uni-load-state/uni-load-state.vue +++ /dev/null @@ -1,171 +0,0 @@ - -- - -- -- -- - -- 请输入搜索内容 - -- -- - - -搜索 -- - - - - - diff --git a/uni_modules/uni-cms-article/license.md b/uni_modules/uni-cms-article/license.md deleted file mode 100644 index ad29f83..0000000 --- a/uni_modules/uni-cms-article/license.md +++ /dev/null @@ -1,35 +0,0 @@ -# uni-cms源码使用许可协议 - -2022年10月 - -本许可协议,是数字天堂(北京)网络技术有限公司(以下简称DCloud)对其所拥有著作权的“DCloud uni-cms”(以下简称软件),提供的使用许可协议。 - -您对“软件”的复制、使用、修改及分发受本许可协议的条款的约束,如您不接受本协议,则不能使用、复制、修改本软件。 - -**授权许可范围** - -a) 授予您永久性的、全球性的、免费的、非独占的、不可撤销的本软件的源码使用许可,您可以使用这些源码制作自己的应用。 - -b) 您只能在DCloud产品体系内使用本软件及其源码。您不能将源码修改后运行在DCloud产品体系之外的环境,比如客户端脱离uni-app,或服务端脱离uniCloud。 - -c) DCloud未向您授权商标使用许可。您在根据本软件源码制作自己的应用时,需以自己的名义发布软件,而不是以DCloud名义发布。 - -d) 本协议不构成代理关系。 - -DCloud的责任限制 “软件”在提供时不带任何明示或默示的担保。在任何情况下,DCloud不对任何人因使用“软件”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 - -**您的责任限制** - -a) 您需要在授权许可范围内使用软件。 - -b) 您在分发自己的应用时,不得侵犯DCloud商标和名誉权利。 - -c) 您不得进行破解、反编译、套壳等侵害DCloud知识产权的行为。您不得利用DCloud系统漏洞谋利或侵害DCloud利益,如您发现DCloud系统漏洞应第一时间通知DCloud。您不得进行攻击DCloud的服务器、网络等妨碍DCloud运营的行为。您不得利用DCloud的产品进行与DCloud争夺开发者的行为。 - -d) 如您违反本许可协议,需承担因此给DCloud造成的损失。 - -本协议签订地点为中华人民共和国北京市海淀区。 - -根据发展,DCloud可能会对本协议进行修改。修改时,DCloud会在产品或者网页中显著的位置发布相关信息以便及时通知到用户。如果您选择继续使用本框架,即表示您同意接受这些修改。 - -条款结束 diff --git a/uni_modules/uni-cms-article/package.json b/uni_modules/uni-cms-article/package.json deleted file mode 100644 index 8efd310..0000000 --- a/uni_modules/uni-cms-article/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "id": "uni-cms-article", - "displayName": "uni-cms-article", - "version": "1.0.16", - "description": "uni-cms的用户端,包括文章展示、搜索、看广告解锁等功能", - "keywords": [ - "uni-cms-article", - "cms", - "uni-cms", - "内容管理", - "文章" -], - "repository": "", - "engines": { - "HBuilderX": "^3.1.0" - }, - "dcloudext": { - "type": "uniapp-template-page", - "sale": { - "regular": { - "price": "0.00" - }, - "sourcecode": { - "price": "0.00" - } - }, - "contact": { - "qq": "" - }, - "declaration": { - "ads": "无", - "data": "无", - "permissions": "无" - }, - "npmurl": "" - }, - "uni_modules": { - "dependencies": [ - "uni-search-bar", - "uni-nav-bar", - "uni-list" - ], - "encrypt": [], - "platforms": { - "cloud": { - "tcb": "y", - "aliyun": "y", - "alipay": "y" - }, - "client": { - "Vue": { - "vue2": "y", - "vue3": "y" - }, - "App": { - "app-vue": "y", - "app-nvue": "y" - }, - "H5-mobile": { - "Safari": "y", - "Android Browser": "y", - "微信浏览器(Android)": "y", - "QQ浏览器(Android)": "y" - }, - "H5-pc": { - "Chrome": "y", - "IE": "u", - "Edge": "y", - "Firefox": "y", - "Safari": "y" - }, - "小程序": { - "微信": "y", - "阿里": "u", - "百度": "u", - "字节跳动": "u", - "QQ": "u", - "钉钉": "u", - "快手": "u", - "飞书": "u", - "京东": "u" - }, - "快应用": { - "华为": "u", - "联盟": "u" - } - } - } - } -} diff --git a/uni_modules/uni-cms-article/pages/detail/detail.uvue b/uni_modules/uni-cms-article/pages/detail/detail.uvue deleted file mode 100644 index 3e773af..0000000 --- a/uni_modules/uni-cms-article/pages/detail/detail.uvue +++ /dev/null @@ -1,223 +0,0 @@ - -- - - -- -- {{noNetwork}} -- -{{toSet}} -{{error}}:{{JSON.stringify(state.error)}} -{{state.loading?'加载中...':(state.hasMore?'上拉加载更多':'没有更多数据了')}} - - -- - - - - - - - - - - diff --git a/uni_modules/uni-cms-article/pages/detail/detail.vue b/uni_modules/uni-cms-article/pages/detail/detail.vue deleted file mode 100644 index dee4c3c..0000000 --- a/uni_modules/uni-cms-article/pages/detail/detail.vue +++ /dev/null @@ -1,217 +0,0 @@ - -- - -- -{{ articleDetail.title }} -- -{{ articleDetail.excerpt }} -- - -{{ articleDetail.user_id?.nickname ?? '' }} -· - -{{ publishTime(articleDetail.publish_date as number) }} -- - -- - -- - - -- - - - - - - - - - diff --git a/uni_modules/uni-cms-article/pages/detail/preview.vue b/uni_modules/uni-cms-article/pages/detail/preview.vue deleted file mode 100644 index 80c8004..0000000 --- a/uni_modules/uni-cms-article/pages/detail/preview.vue +++ /dev/null @@ -1,255 +0,0 @@ - -- -- -{{ data.title }} -- -{{ data.excerpt }} -- - -{{ data.user_id[0].nickname || '' }} -· - -{{ publishTime(data.publish_date) }} -- - - -- - - - - - - - diff --git a/uni_modules/uni-cms-article/pages/list/list.nvue b/uni_modules/uni-cms-article/pages/list/list.nvue deleted file mode 100644 index 2950aba..0000000 --- a/uni_modules/uni-cms-article/pages/list/list.nvue +++ /dev/null @@ -1,298 +0,0 @@ - -此页面仅用于临时预览文章,链接将会在短期内失效。 -- -- -{{ articleData.title }} -- -{{ articleData.excerpt }} -- - -{{ articleData.user_id[0].nickname || '' }} -· - -{{ publishTime(articleData.publish_date) }} -- - - -- - - - - - - diff --git a/uni_modules/uni-cms-article/pages/list/list.uvue b/uni_modules/uni-cms-article/pages/list/list.uvue deleted file mode 100644 index 5d89d29..0000000 --- a/uni_modules/uni-cms-article/pages/list/list.uvue +++ /dev/null @@ -1,33 +0,0 @@ - -- - -- - - - - -- - - - -- - - - - -- - - - - - - -- - -
- -- - - - - -- - - - - - - - - - - - - - - - - -- - - -- - - - - - diff --git a/uni_modules/uni-cms-article/pages/search/search.nvue b/uni_modules/uni-cms-article/pages/search/search.nvue deleted file mode 100644 index 938e0fc..0000000 --- a/uni_modules/uni-cms-article/pages/search/search.nvue +++ /dev/null @@ -1,752 +0,0 @@ - -- - - - - - - - - - diff --git a/uni_modules/uni-cms-article/pages/search/search.uvue b/uni_modules/uni-cms-article/pages/search/search.uvue deleted file mode 100644 index 0c4c059..0000000 --- a/uni_modules/uni-cms-article/pages/search/search.uvue +++ /dev/null @@ -1,363 +0,0 @@ - -- - -- - -- - - - - - - -- - - -- - -- - -搜索历史 -- - -全部删除 -完成 -- -- -{{ word }} -- - - -- -- -搜索发现 -- - - -正在加载... -- - -{{ error.message }} - -{{ word.content }} - - -- -当前搜索发现已隐藏 -- - -- - - - - -- - - - - - -{{ item.title }} -- -{{ item.user_id[0] ? item.user_id[0].nickname : '' }} -{{ publishTime(item.publish_date) }} - - - -- - - - -- - - -- -- -- -- - - - - - diff --git a/uni_modules/uni-cms-article/pages/webview/webview.uvue b/uni_modules/uni-cms-article/pages/webview/webview.uvue deleted file mode 100644 index ff72a6a..0000000 --- a/uni_modules/uni-cms-article/pages/webview/webview.uvue +++ /dev/null @@ -1,48 +0,0 @@ - - -- -- - - -- - -- -- - -搜索历史 -- -全部删除 -完成 -- - -- -{{text}} -- - - -- -- -- -搜索发现 -- - - -- -正在加载... -- -{{error.message}} -- - -当前搜索发现已隐藏 -- - -{{ word.getString('content') }} -- - - - - - diff --git a/uni_modules/uni-cms-article/pages/webview/webview.vue b/uni_modules/uni-cms-article/pages/webview/webview.vue deleted file mode 100644 index 1597281..0000000 --- a/uni_modules/uni-cms-article/pages/webview/webview.vue +++ /dev/null @@ -1,35 +0,0 @@ - - -- - - - - diff --git a/uni_modules/uni-cms-article/readme.md b/uni_modules/uni-cms-article/readme.md deleted file mode 100644 index 983d5e8..0000000 --- a/uni_modules/uni-cms-article/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -# uni-cms-article - -uni-CMS是基于uniCloud开发的uni-admin插件,可用于快速搭建CMS内容管理系统。 -客户端可使用 uni-cms-article 插件进行内容展示,无需开发,即可在多端展示内容。 - - - - - -- -- ---- - -## 详细文档请在 [uni-cms 文档](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html) 中查看 diff --git a/uni_modules/uni-cms-article/static/disconnection.png b/uni_modules/uni-cms-article/static/disconnection.png deleted file mode 100644 index 8b99603c65ae92c1708fd370deea9839d8ccb633..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5687 zcmbVQ2{@E%`yXreBqXG1k`%*i#(1+EV+fV~RLYonF}4|IWUOsOsUrzRvJ+C4O14y@ zv---
---
---
o#m%RW3b#| zEuJ46pb-dtBOaSZ_kp=cci5BZZ-5%BsYfB13 &Y)| =^TM?wA)&2b1}!`gN*hZPh^ zht2naFxM|+!-mWPVH%ee=)hw6{yeDdKSM^EnSDPPq`D1_&h%f%W78k3U^0yh8=!C) z92Sispm8JzECC|uLIkV^h6G_Si%=UDgXs~n1YI~^G)~U}OM ~F4Yn;WBIZIfnyLI{*QV~Gqdf1EDxqH*x=Y%m?ACB z&4^e%A`y+#!hR3e#s;$V=WuEMbl8$?fC3fLVlo+!4ve7_^e{ST3=u;_!*~J_P14h4 zps^l$c&s~)j>p2l(f4D6$Siu$LLV&HFTN5C79DW>UwG~$4_z3q$3W{cXzpknfq+Mo zU ?G;_ZQ=$GCAO&Lw>wX_He)t$(M=z-a!zJzVK!kpy&%N0W(lP)XcxA z$3OD?!#>yx2BiO`OBTIzSRUM9S|DuV32OJxT2cG>_km{rC8>?sPh=>%l-1up}5w zpt-|nk~^J*W?(#Y@Zdsn_rMW<=Kmk@<8Tljw65OI*8QL3|4|^i7tP-j1{bb2>VMDZ zpLOVBs7o3B-OKooGQxo?5vlIX^k=YwIpAJcH2PCA+6(vWVy|icxedSX{ozgqr} GBR>S30L8_{>FMb}0J~sRR8$lc z6fDY%^U~HImH#ONFN?}Q35!cGg8``G;^LNUPn H` zjg0~P 9XQBd`VVAS9p%fF;|uwl+Wl z0H8#`5n%4_?tb|GTs8Qm)yuWBwMRe@g`^KbkSPQilEHIvP$9?|Lx3PMzor;bSzTBG zX(~k_k~XWUXc_XOWCUeJj8&zrAPJm4q$r^Y36l)vO%25)Ac$&BvVvqF$cmo=K_q=L z88Sqg3LDDc6d*x$3cnNtsgqF g#2BzaBa&17SOx~U;iSQ alrU9HeY&k_;})BWC;5+jPUSNzYW4=t&31Ku?z+)ZIsH29tHzjBxo`80Q~h$| zW}gIZR9C+(=ES$?O;f!Hu-;CK!SJ%E;EX4$_YQDFrzaaJP>Suo)9{G9FmsLT(8n$X z0jAIwlK>+=L|1dx_V%HkS3{dUUiQs#A2rrm^1CUhmYq^H`R%#Dpwt=@X;o1~H0=Nb zCAxRp#|hci3Loa}BfCZw-dVn3TUYIO(HB|OicPS}k^J>e4B|Au_W9ki4w8% mNdNLH_IsO@eaA`Tq;JF@3*OY?WPVE`J ZV-(hNX% zC%?$bydTyp7#$ssv)gX}N`ARpR88&n5wG8|zCmGE93@Ttl~Puk%1!rfdL_Es;@PLw zXIfrvn&=#f?OJ!bea3vx;eEnm!&>dGO-H=SzdTqb1TVK(w&ru*Az$o$K@*|mZ5D0E z3tZGrtoJTBwtHQkKWVi@3E9fT5w1LV>E_#*mE5q8r`o-0_hr7$Zb(vV4{+P89K|Pm zOL(tL^BbqGUvkaeU_FIwN2C3|`i;Vej$j&|Czr)MX~L`%P`Y%RXZ_AB;9Pl%yRiYE z<}h)?^f`!TE@&nvvyCF7(XAGynh m9Iuc_&*twas =tF81NY)RicHxM!HI`?^HSeqF) z`t$|FfL5cir%lL*rzun4hR0KNe6H;DqrXjKr5c70%&jssE6G1~@n!3+*$RqQ|EI#y zxwTzaJZvHA9GWs NI{F$(?+&PmAbUBS?^#=0p1X6!u=`~LIRVY94?debY;{smq@7ON S2hzB zU)J%vsal8EZjRyp4Bc`~m0(J(Xng?(V {GrF)ovoT>{4DMiLJZqQlSc! zwz~8JrNJ6m`f_D&@%zG^Tjp(>TBWApkroNHw=e3QaE!Rw-BN9s43?jCX=*1&ec0ye zq`=1O?vIWikQ0Vtge#9p%I$5s74_bt6zxIRB_g*NJnnyMa$rUC$l=T4E?bZ1=O{l6 zPPH8`FA5nsojESde>}VNgJ|Zd`~5L5*hG`~mrl10bSR8FLA{A{LYfaA7V_<(i1R=F z#Lg*=rQOd77^FU!KQs>~{MH}$%JvN3qvTWMDH7YGI-YgI;%0l=^3l};RWtR&`P-fq z WM(ll|Yk!#alc(=lS7rQ>e0-&2Ks-k&EVzp#s#K3^u$S^c?l^5ij{f*@ft z-tGJl^qi%tZE*l;{W|pv7nNi_ikMr;nnVl-%pmj6lOyUr-#Pzg?4z5-e&T#})n>SV zoxGI7qr~3I_O{1y{uoYiyWK{5%=Y$3{-f_!d0Wmt52_d0+GAJu&UsTEH2dX+nXiI6 zHLkHed|#+0Ugp<~RZO!`GBZm W#aS0>uhcp29* z2KxBDcR6ch!n3ndq(d%h@^=(EYgH!;+!@6vP}k}{SrJvmT=SqDW7OJO&bX2M7FSSK zO0AAdJ;ZT}=1Y?9Lu#qa43!k}imPFTz rz#q?1$n4 zL^10K6%)bh^M^3^wh_g)WXvA%>n^(brR6T;P&d-v(R;8VdfYUowm#xYEUNfkz4DbK zi3vBNdd9}OS9xAvz9BQAN#;~SPe}jc!U*@e#L*IMn_G}~p>x3Bc1G8J9_7(Th( z1s@Pkm5$AJk)^U5p02J)kVW#0PEnLt2f`xqT!UWi9E!*d%N9>8*KQRR!$jmrktMt)$h}&-s 6qM*}07GEN9H+{z#wRh^| zfd-xFXS-hIWb-}{dv_{6{Y3ziBOZJGae&eXwuqmlSL^e!b2MB^wq&2{R}`wL*CMJg zO14Il|5kbZ*-ZljwZ#>|FDvf!6}u2(tOoNX;~rgAN?LZ)bAxEC`?Jg|h6YZblq{=H z`h_t?F1(Iu8~e&VFk-4xZysdeboP^A*@eDwK{!y4)JXDA@REM=oMDu dsn` zIOmf|PQP4BG~e+%lHs^#l{zZNURE&M-fk*d{DsCNAr$0%X*1=)Z~C@X8oEBO6I_j3 zOk3j=b13h22hC+uc3(o^N^cFh?6Gvda&V(ADf-(ad19}-BiEz
hmtv7W<}SNG!@8N>>Y3Wn1u9)(d`JesAL^w)n(^^1@%c NmgctPOQvpz{sj}*(vScE diff --git a/uni_modules/uni-cms-article/static/uniicons.ttf b/uni_modules/uni-cms-article/static/uniicons.ttf deleted file mode 100644 index 835f33bc9411461b8b9046b3fec742e921d6ce3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35760 zcmeFacbp?vl{Q?rN>WLsSXIigCAC7gI!S6tox^m`be^1}CwPJ >yxZ{uSzi{WC_=LI+*Wx!<-H!v})21fuKMZQ#fB2Fs zuEGwU_ZyDmuR3&e_s&PS@Be}0T=(JF$l;w=9Als0-iQ4lE^0cm^YDeWhnK#G<4!$@ z>-QZydhsP6Kl0Pv9Cw|E bP-?YO$@C;`+ zuKnR1zxV)MXnddfv56Dn_-W<%#_jZ^d%1f!hyI(6O8C!lXY}93n l=3f9^gzbYS03Jm0vJ;T)Z1IKntf UtypB#zx`e6wG3 zC5AhB&Me^QdH${3yL1otSUp#NN^cKN_yKnkm%XqxczWUgrT^Oo|6lL`SPy&+DZ_DX z1{?B^82rf|!cpSXHhg1*;kZecHy+MI*MqCu>g9T0eYieaf9edzAC9!tJL|pm0UQ~l zBQN;JaG!_sb8)VT%i=%By_I_#_ZIFh?(N(=xVtf?-^|^~y@`7RcMEqbcN=#*_eSmx z?)BVjxU0EqFm9T;Q`~9pTJAdTdhWH{>+qBtxEr~fxSP3Gb60T(xkKDx?g)33JH{R7 zPH-1 465x0fg%5CGeb33>TxSiZCZa24wyO7(&Q z>$wfwMs5?gnVaOMxM^;NYvpFSIc_<(f-7( s&u0CxL#u8VbF$klItIryQ@x|5W z48lm`>dOtnnB(dz48rK+>MISxIOOW948n-y>Z=XH*yQSK48kbo>T3 axcUVKK~8Y>od!W-aP?gVL3VKU-3CF5aP>U~L7s5+3k`x~;p%%0f{fwn z`wW7#;p+Phg52Ti2MmG);_4R}1X;w@scs-hC9Y0&13^AJNK#+l4o$3aH zH00`3HxT3^SEssxAR)Or)eQt$$+z7tkWDxWPSHIIBXb!IaW`m$ZxcXZRf;QpmZ#4*d zg{!~KAZQq_ewRVeHC+Ae20`m^^>-Kq{lnGoHVB%CtKVY~bP`v;*C1#ou700E&{JIf zeuJQ~xcWN{g6`t#?=lEljH|!fAm}r${tpI0vvKtY41$j1>hCcK+K#I~Xb|)sSAVZT z(12Y1eFi}na`pEc1g*%`|Ir}mN3Q+>gP p}tAE%avLosrF^GJG z`bQ0dZsqD9GYDFitAE@e=v%J-34@?{x%wv!f)3{DpE3yAn5#cz5cD!v|Fl8S&|Lj9 z20>SI_0Jjvt VjlpxwFpV+N5QQ~$g{(D+>a3kE^= zbM-G81S^26f5{-&16=*f2Ej7m>R&MkHUd}wszKz<)E_qpb^}-cnn7g6)t@j3wggxI zx p1QBm2=klxXa|a&TVx+;Qp=WwVt{>D}O~9QXW)O>O0h5db_-@^8Ud$ ^pPT-1=NS- v_4k2r|_kM*0! vaW9xyNll~`AaKH zuPQxR4wv6t{%QC2?wh**v$DGK U?rS_5?F|crGafkiL7dNk-%Y_E4VmkSn6>Hb;SUukEx3l0# zej=BS$yT%Av8Uc*J`xpdRw>aQ5n{34Scli{%@0hjo|#!%t;CXMOO1~vM@By$$wu(0 z7+*JsbCF0c% -{dHFL+pQI~s3&zjaOf89{d%!`6o3fsCO(`6 PqiNa$~E4XJ#a8s%?nsx`&SiQ7Wz{CE9c z{`8HZR6KCoNiFA%;R<(H6}bLFzf?(SM+?JrKi`4-zoGT1F~-8`nx^V-CCOIcNwzPg zI#WEmoNbKdqI?lY^r{&3;lBduQzQ+^Q0Ovsdx3SZltt7_Sx&}T*-Yi_XK}hBNmrzk z`W5H7!&mhB=^p;ZXqR-ILzW%aNuB+jl6J_cC{Fe!sVl1a9E#$&!PeE+C9zxSuy$PP z>g$x)o>=F3@9E@S$%q
myN){klLz;R<&aXN8`s%G@phxt!K zT81!Qp!-;9h;^gnF6KqAb=R^vG3R0;DpNC#m4^5Z7H~65s*`2Ahgr3hz*s8zz3jfW znL^w2rs=k}>2KLH`CU6VU!(9>49tGDeYUM_cJpi-YoG1fXg9e`qb3tGIZf3~W`~Vk z+_(of9#1Aiu46~z_w4uX`$hZgrrCCVb8^4kY#uW^ag({{fJuTlH#}=jxPkvJG+QrO z5v;42>+VFqh{>$Q&3qOg)d0O!i!%&kY|BMI2ELfKh`wYcoAXgOl&XUaoR{scV&Ctz z2$wT{#MU0s`oe9tW!BtSi#avu3(u}dNLK$qDwpcY-uC{?Ex+MCJ2p Z*H zRW3zg|H(|IcZL%@9}m5s4~AMMT39UH6mdmtws4dwk^K+4%pduf#r-d8AfSHtKa`My z4*^|Nq3ifBz 4`eV~tpG8L+^7iTDPsamOK1#B@gjO)-ZI3CcqWx=BQGQ$~% zsygBw9dTlv)~SLTP)*}^IDETS<~zDKU9`Eoqh-}juY(=-RbwsVd0)s|T2fRJa_906 zhtKC&dWrT&uVd}aO|i9|m5t@{#!BbfSkujG9WZ>1vR= pb`++20D+s%TWry87A=aAN`_naX(i{)_z54|Iq`U0D$tip6 z|3n-9QPK7pft4Mepx3XxE#2OpX8R&-7L(M?gwOaSr`92dWTpgVM$LzEojC*9!@)X( zEtM>h?CvJHog%UAC0SofWe3r$R1`=YFl~(K?OQ+tT6k{X<_+aarMzMDHy3vHy5*~6 zpI5m`PJp~#`6{Km`<(MnZQ9V?{Ux90GC3hLT POF?EmvA_YTqb$3jT`{l>|O~NdJClgB S=^9WYeU-_ujXEB_^&f{hR%dzo~UKKRo~7mser=`7OEhIlY9BnTL|z>G5u zNioE;_w{dfFt1BhUD|JKeQOHErP5xf*X!IXc8q@y=PsmE7vfA?*D{;-YdXbzILD@@ zp+CKa(Wp&Y+U1R?nSm7h#NsjAvc@suX~<{r^lNl|nt@jU--jh%#6nfDkej&}NxmVb z%i=iGwJxz$4(x=g1#}+ERkBt7aqUELO%We 1SV=d%d|p^sUJTB(*TrB6bkfkQkV>fyvTho_Wi?Iw# L**4 ztzO#7vk&{5oCP1>(z0}7%>|G3tn3lEd~R&%s_Ub^Hg~(n#kVeN&5h-)iGb>9^+v@j z*Gw*LX`R0--vhU3L4T0EP{9Q`g9~14sTeXi!Tz>6!tZ!xhKF`IO-2TL>RcP6VKebR zLCf^Q#@K+8q;>J1bg>xItx_}>RGBXgr3{q?1r7V7LMAN!Ll2lC >g#&@S%^S$cmCfh-# zKq|{2<)Cf-uxB*iYDpJA>W&10Caa6RJzSJbHm_=87LVI4NH(kYRi vwyC^FLAY zHm17${cU{(*5#0W{=ky ^!6Wi`&QM*lT@m?O*Wy{*MX*`^YVxpr^}Ua=Jw+ z6K?AY f-D1FVE9 z4-^IjflvhWp%2 _jIH8|Rv3>9Wftx%Ew3x7_&>8+{3C{mN|gzhPLsB3nJv?^Ip= zlG7>myHsaC*y0t~>YwYkxm-57VW6>tacvlA@8 c66H#qzuUe%kE|r~htL(@+TTHe8#U8c)MN(q6 zbw?Sj@fSTG(l(t;)049)dJB{mSgDhT$xsz`LH#Q)eF6I|y}+f?^A$;dzFo!hk1#-N z3(pTj=A-->*z$6&@l=$(Q4^lLWHwKQTyKk_kW%byA)|_$>b35idP!?vy;4)$=afH+ zcEt1Hr}|`Hqg7CLs!0cP^EDacfpe>e*PmNP>w1)t|Ec2Et0k#u8MK=eRT#a1{Z@a0 z-k)gy8lk8ee~sD(wykJ`4PuEgZ-DvP8QIPT>^={3+qEBRPumj!I|dvNG6x%%5`GCn zvqfTlH*-6*M}XBe`u@xO&*+(~JGbyC8+B|yE8!*lmmS*Y^atg&@7p0U-3~V9V5dCv zrpB|LUVPQUGf~c>{>+rP@F*K(DrwFfaJDlZyY?kKjCb2vilyywKf?hBUvy{>Q$bma z_AiZs;$<%`C#u?blx?9An1xkQF5^L{Wupx~rxz5jqJpBtDVB1?{q(8@Km0!aQ;;7j z*F>0XCM9IMYf6&}3yBv}qQ9y3BAG_=jN}^6{{7=t>&MxbY5UVh?z@j&b??28 zD8l9*y*wmoA#wC_H0fmuEC2xn6bR?aBA)vx6+#>Mm<>fKuPc?-?WIjQ)tgNAj?;$! zq*iyv9oo;0;)Jg%t-El2skHvWbtUbI#x=Nb!4`Nc{~S==4tP*YDKf$U-ihSuLI;Ze za+6x^7U1BySvK7y6iM^L)1#q8ESc+KSsmxAWyvh^21N3h%cX!oH`AGJeA6l6jpd2X z!S=rQ9G~njuinEP*IP#OyoEo!`a UOUf z?4bJwUT3r6$b{^2b(+*d)XLs^a7ky+_A4$8mh&uV53|u6&mYcfzYGQsF4@kDJbv 7CSG1B9&E^hOEaj8a$(8y|+80@;B6YVU#uJ^se{pX=mGXTPl8R)oy0J*5T;Op-cx??be>V)^0B?+s5-b0TsTL z*8=XsbXz6~MEatU)A1DUavsYuZ!o}0sKcSW_Ul0KqS395D&5M9+9gdHT%~6-fRC<* zzV;$UO18{dU;M0pE|7ag9x&N=CBH964mvqqJlnTveW|; zju5|Hs7~z#OFHVa2$5~ zR-A6mc6F>=#nWc{x|!*s)#M9U^8>?^E60{B$8Z~4Iez(ScS*5HbE4liCrL_|XZOVP z8vWrq@1OaJa1 1&!OSHE1lfhrA5cjI5bC1)1l3v&U{MD{TjDGv zvF w#6P~b#nY!HH|1eARq~q+pf6DZwntGcp^Y_@~u#Lalri5+tQ)*CAg6ak_- @j^m80cy*o%rx@b3aD7E@#fn3kL-r9#}I)4xtNc0OSl@3rt}k zTWER|Sx8|tmoQ${66{{1@6tZqm4tUIT2k=bb)&dit~AU-bSuxS9=?g^SC70XnD#arKpVQIr^`-M& zg&BWP$ETj>Z-zM?q!=~9-_ZLnK=5R$C#t!?{V2J)qc1Z&Gm`0Vx0vK6H5$!Eqo#aw zzRXtJXSy=O+3awpYsRj9u#AKJ< Ys=EfHB(1cz^vvU7&|duoE@6#Ef#yHhGvU+l6HHuVTVr+H9u7tDBxr837F+t z{(oaXOA*(M3b=qLfZffzc$og8&eX$jNXk%1oeUg8phyA^AK}z#v8tkN6HwOt7e8%@ zDW6$oO=gqURi9B}4y)^igy2g06!$yd=~BE&w<&Rh%R2l9tCdfhO#Fj(hah^#%&PtK zCf>`QkOM;G-Gl|cJ0b*9Y1j3iR#JZJx^-56O8NBl&SuL^R-gSbUSJz7Y%4qUI?2VN z%-rx1s16y5qh|n`iuza`W? @Vx2scGbL=x3RVM;1^6he~VS* zlgvyN_A%@F^{9{f&}*IPwEx`tHao9>NKN_QZr;QM{xQ4XdJ{9FelGj_1k?L`<_I(M zH(CAmM|l(5gzzWC7H#ytYeucn8GpOhudpf$?TzxKUeF&XAN7YJLl>~KJjTE>%0OW7 z2YoU%ZW1gG{1xiZOo$qcZHP(&WnmTr0Tipa@?2O=I18ekgQ#^vXYr34I9l;6u%?|L z2sYlGU~g>fTuQi__0(CQ?KQ6mVjE6$C$u}78V@^yhw)DXXR}>@7I$M0y$Ej8e=cBd z28KYE(|-d+5DgTCoK}( 6n4KQ7995F#tOfs{D1)j>vebD8xF~`!5 {L9kerbDb=|TUp)|kMz zr>i|JEUNud4s@;AwYnH6NH$Xgca!)A?)HuGLKv8w-8TRIF2U*m2Ir0QKLP%hE2b^2 z`BBgCdfUMU^u`X_HjS#i`POtd&vGq&{9w@Yovt-q_ |nGwHR$?oc%xoM2g&-IL6bA0)D@A1xbF45L^*&TQALG4pN zvWJ7tAKjV0{n`HUf$|~Qv%T|(C7p<*hdMJzf!AdT#h1H)+Yce%X*F`W_ELWm{DZ-Z zUi5k06xAWf+s$N{#^_XZrwpR5Eb9oBnuLMZ&sb8X03kEF7j{%8>4PmrU7Slp((19^ zq#l0j2S>2${5f~2-Ievbb3JBZUA&D~+~!y@u61It^Bymsk8knBn%(kIO-ltIX9Jq{ zxIf8jU)FwYwcD-C$5v>+W )$F4qk!$UCyOb=zAH!Y9jk37U&+aorNv1Hr~GF-ccKXyOd(KS=@4 zli86>W+ZFu*S6Ja+t|*Nwe8jFww@QCf1Gi2#~Ir4<7!yVjKHK(BT9AK5xVinwyJ_S zh<-4vz90KIr+2l!S%@3x$d_)YyyD0K88@QN2o!#Uv<3wC%7O_ymK+=B6* %6V9mjPr_bjc+&_p9?e!mA<7cJJ@Z@kt-z?VIh!qb}7UJKH z7L$brV+Zb-peyNYPRQ2C4k8mMpb{5~5HznWmYh8a?0vt$vq{0{($=~B{3MJOw#V1$ zx{fzp_{t;Al}~#e_A*QwUV9tD{4Tc7gb `v9HS$EZpSg*bAuTIgpthD0BM;tcow2b?_h*&8lGKumTmVV6wJzc2sknS3*-Bu zi-M_CkPp#T`$kYMcy4k~Y?#S w1>m(Rl4qc5!TTN&gmC~*`Hq;Y(0A#>4Xbo^?Lq!^x}x_d+Q?(!6XttF5UX+ zKu3`Sg?`cx!1aXwfkA*Tgf$J@5sYf2$B-)vi3{@qB8dI2yuO@Gt{w3zR>2pty5+WG zgX^XyT3dNJtnw_?bm>e>#*qlGU=LZX-?j#<2VwMC*FJ0uYFDNDQmMYBwBesGuP+tm zBH=-AKng>Nt8!~Q0xeVPoDo%!oo;#c)Z~FsV(adFI;Z( jOgv}}$+k5QTiHJ} z9)o95oq0Xhd<|maY095yNGB8<6@)%VMaz0j*6 J-&upSiJ3AEH)!TnzKR&&?V!=aGvuifZ&J;R2 z3Ny2t*33>FD&R^=8N%fYHpp%KL&&UD^tccBuLhSc2|O2RWbLp{Wv>~&G|)VTv=0;& zV~P38Jn#3jes6XDGaU*W2>7)t8K<4G3Vy5gjJAbe+M#Iw6>Oes4r (|1}g}L z5t;_pBO=)(z>QN40Ew;HzU!j*)Y6fwV}57Y9TRP$q$Fa)!LVeq#N00LCU3^uD)$Z4 zw*SkHp22~9OIqFRb>Tv@6b=r@5{gx^#NA=1KlYlaqSV%`JFs(m!?%1jKacp_ENrwA zNlX3BR3xJ`I7E(dHV3l?oob2mHH%(QBWgx6mQKV?bT58@gDw0+<%zg0RX!f+3&fq# zn!n;V@s@aiS68G9nVgi2u?s)@g|(Ag*4 Z`-RV5IKWDs_iWfcIhGRyx97N5 zPOBZQ{q40Th6lN3?9H;Zjd-;YCk9VAkuMxUUNKOD8Volu0r-L#0&qM~u>jK4%yK|v za<0Zwxf*&47=b1IGk$5Qa(w zngidrd!~A8?ABwwHSPE@mSIk_S^J~^UUtWm-(YuYhn{>wtD3(@-0?k{KZJkC WPeHIsvp1CxEiBfYt5T;t_4DCjQklSkX3CM@Fh;H_x2zCfe1$ z*)ud;+kMRLF4*jA9kM_D&54zcuAae~_O05I&2G7%xHd1TJzN_c=y|xdWUn2m*1Aka zF3f2(u@^}403m3^xfJZ}z>sfbc&Q|l7jVEuY>-?zv}*%E4L}eBS~haLHg3{$xG3vu z->R{JM7B^UOiq7jdaAXpHJ2C|Th-j3O7~Cnr&$V3VC05%cjHlwEHK7}1DUoX0~_g% zw$`cXje|!D&B5?UW;74;7)Ek_6rRh1+&G1p9CA(6v!av|U`T2dv$RA1vs5n j zJJFPt1$+D8NP{=Yck&t%{=6A-s;=l 4o(I(9u<#MMf7mmlnjq=^W ze;(1VB{W+{mtw?Gkg>3W7I_V+F9ySr{iNGTH9h)>{EqHwAX!Bo2u2%4Aw@G-gB%!Q zU`PX;(cK-3kG0xW=Z<*)&h0MICb>Lz@MWcaq*puIvt&t6#vO4;wQNgEmc2gP@~PU8 zc^~`eW}C~twK pmlO4EdUn4RE%HbiY%FIQ6_sqk|}F0mV}iPFAz?pUPG$*_CSC B zjCJ;Dcim`bKKF> ~X|c)ZMhqdm@!Xur)?t68RGD}K4QY*|hAce4v_K=AcOx8Lu+ z(I0c%U~jbZNyv@>%>jaTCKOfA7XS~D+JIuHcGvV+3J?U@zgTYF{w9+g+=d_oA%v(7 zL?QpJ2jrsi50W<`UE_^-uaP2Z%!MSscq=Q!G+(^6HBK3T8S;`d?AHcV&rd!e%MT!& zFI}VEMW@-`YY<~UfCse3wQJ}mb}HVApV{H8c1`2vQvmrJd7F14$0VlbzAVG6tIeoO zDbT@#-y8OY2o =;-LtF*)FjSeE-b zLNV EY9-J~u+D`@t*hhx7+ha|*@H6qm@Ri!gl_&!2=jVk9@EB%+Wh{{1X_{Dq z-q6LnZWuz4Vq{lH$dhy@xjM}BFI`oM)OU2fFkp`%w}By*JFZ5p)}3oAmDRgM mEH$>E8&oUUv9HW;9tk`UT-$n)?_2A!D4Z^WxK7ZEtmBL zT|UO#N<7=ux*@)G*=$RDTg%MEwx;zhUD>#TDNu`JShr#R&KNes#>Kz}sz#%m@Kik{ zk+~|wj zZ^Zm6ns0?z;c1l1iarlRhZQiE=a3b!9qpa6Bw*gwk~tqq&|KC6Lm=RX(#V<#yslNV z=^7z{rD_g%5X@VY7~%$s0c-;a1aaWYfNlE8ZU(gKA4aq#2QVT4=UimZ3W$XF?MiE( zxNG_PT=v(z>D?LHF4yL=)?Xu#@9E!_W^>s27{65zPMi3x{MnuOuW;gt%==9IExy_A z`Nw>7-Ddv1X8u;+TzTo&Ggdn7(YH@zf3SQ*E`uk3MZf6ni%+^%FdoU +ytHI`vvkcPrbdA$N zkTnoMFsI*4Xap`q`=Fu7BPf?JbZTd>g?3uFm^~-^{jx){y5BCCcct-fmsxnb)5r3X zPfRv9Cq @*dKP0b+6Lkjr)mpqomPQt zt0X^lPzpZ;{RgHr)kwUOdc!#;`FUhX6q6a=-(q*W?Y9@wr_+Vo?34oad9UYEkN0!m zmYi-E1~7B{PI4lb+2wYga;q+v>gK2BpQpCsO>V!Z)LbYumpp#=ez&T+%kxhlU+6B$ zgG{Qu4m_B>-R^Qr+FrXSV)q!QJTycaHq^EJd!T>2Xa? |Q$?>$LU#gz zcZtFlq=B9B1SIG6LZ n>Rx5_2HsO|pLh!5Im=!24hAkexW{SjC=o`#j}LTU(~=LBg =R;K2tUd% zfTc{bEt?}LUDgM@E(D-`_ EIb^ (txv&DMArrOQ612!*z zr$xoLS<<(iZs|%&slHNj&vW>)yIgi0;Ge|ZxJA;p^M}k{{T6Jk7GA--@D@dXqjsb5 z5=DRG*Qhkeo#$NkD;kd~H||w!7g;T4y(C_<{&epR=iX{FYJjKW*`LDAJ`@X&!`Ii1 z>L_|`=(@$X-)TOlF2++EW$ry&F?8|5yxYey!@39?Xf3xBk=BdRyVR-_bkk#|S->!4 z10jk5wF6tHRxOfq2{A*q55x@)bs(uD&JXbzuzn-iAE)sI*sjRw7hHS?PR98hx|KL3 zO9_7Z4*wq(S5r!{dNLzXhdJugez %i{f-lm8-p1I&0&@SuxT*GSn))(VbGQ@w949SsbF^ zaEd1OV S`PJ8Ma$!j*b?V|al&0-PwyIAvZ#+0#}+@jNM(f)TRWzF-YWhRyx%Cb1# zzy?@bQu|r56HhX;ARcu=@16aZ&6v%S#d4?J#Z1!{uZ bSiWBHRTIFAp