From 1026fb769bbd0d5c73cdd888db7f4e97ef45c313 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Thu, 9 Apr 2026 22:54:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 ++++++++++++++++++++++++++++++------ doc/_media/gongzhonghao.jpg | Bin 0 -> 27836 bytes 2 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 doc/_media/gongzhonghao.jpg diff --git a/README.md b/README.md index c8df67ece..952b7ffbd 100644 --- a/README.md +++ b/README.md @@ -123,12 +123,14 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git - [X] 新增支持部标808和部标1078,大量新特性不一一列表了。支持作为网关被国标上级调用部标设备 - [X] 支持电子地图。支持展示通道位置,支持在地图上修改通道位置。支持了数据分层抽稀数据能力,百万级数据也可以轻松展示。提供标准的矢量瓦片图层,常见地图引擎都可以直接展示。 - [X] 借用zlm闭源版本新能力,可以支持录像保存至s3存储,支持minio。 +- [X] 全新虚拟线程支持,极大提升了平台的并发能力,局域网压测轻松接入五万+设备,这不是服务极限,这是我的压测工具和硬件测试服务器的极限,大家可自行测试。生产环境实际性能取决于服务器性能和网络带宽。 # 闭源内容 - [X] 国标增强版: 支持国标28181-2022协议,支持巡航轨迹查询,PTZ精准控制,存储卡格式化,设备软件升级,OSD配置,h265+aac,支持辅码流,录像倒放等。 - [X] 全功能版: - [X] 支持开源所有功能 - [X] ONVIF协议 + - 自研协议实现,安全可靠。 - 设备检索 - 实时图像预览 - 录像回放、回放倍速控制 @@ -139,6 +141,30 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git - 恢复出厂设置 - 自动获取设备品牌等信息、支持展示DNS信息、支持协议的展示 - 国标级联点播、自动点播等。 + - [X] 海康私有协议-ISUP5.0/ISUP4.0/ISUP2.0 + - 设备注册 + - 资源获取 + - 预览 + - 录像查询与回放 + - 云台控制 + - 预置位控制 + - 报警,支持大量报警类型的解析与展示, + - 绊线检测 + - 区域入侵 + - 移动侦测 + - 逆行检测 + - 徘徊检测 + - 人员聚集 + - 声音异常 + - 设备异常等。 + - 抓图(设备直接上传快照图片到服务器,流量消耗低,无需服务端拉流解码) + - 对讲支持 + - 设备配置(设备名称、循环录像等配置) + - 设备信息(设备序列号、类型等) + - 版本信息(软件、编码、面板、硬件的版本号) + - 编码配置(主辅码流分辨率、码率、帧率等配置) + - 图像参数配置(色调、对比度、亮度、饱和度配置) + - [ ] 大华私有协议-设备网络SDK(开发中...) - [X] 国网B接口协议 - 设备注册 - 资源获取 @@ -148,8 +174,8 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git - 可免费定制支持语音对讲、录像回放和抓拍图像。 - [X] 支持按权限分配可以使用的通道 - [X] 支持表格导出 - - [X] 拉流代理支持按照品牌拼接url。 - - [X] 播放鉴权,更加安全。 + - [X] 拉流代理支持按照品牌拼接url + - [X] 播放鉴权,给授权设备无法进行播放,拿到播放地址也不行 # 授权协议 @@ -157,14 +183,18 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git # 技术支持 -# 付费社群 +## 官方公众号 + + +> 为大家提供WVP最新的开发进展,未来规划等内容。欢迎关注。 + +## 付费社群 -> 付费社群即可以对作者提供支持,也可以为大家更加快速的解决问题。如果暂时无法加入,给项目点个星也是极大的鼓励。 +> 付费社群即可以对作者提供支持,也可以为大家更加快速的解决问题,对星球内容不满意,三天之内退出支持自动退款。如果暂时无法加入,给项目点个星也是极大的鼓励。 - -[知识星球](https://t.zsxq.com/0d8VAD3Dm)专栏列表:, -- [使用入门系列一:WVP-PRO能做什么](https://t.zsxq.com/0dLguVoSp) +[知识星球](https://t.zsxq.com/0d8VAD3Dm)专栏列表: +- [WVP 部署安全加固指南:新手必看,防范攻击与漏洞](https://articles.zsxq.com/id_tv8wz4uubx2n.html) 有偿技术支持,一对一开发辅导,闭源内容合作请发送邮件到648540858@qq.com咨询 diff --git a/doc/_media/gongzhonghao.jpg b/doc/_media/gongzhonghao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f82ac98acaebfe98c5d251dec527bc45b9a9c39 GIT binary patch literal 27836 zcmd6Q3tUX=8uv;nR6@C=7@G*8O(?WmIX1~{5XOBF2GI!J>}gg+c0`*tZNk`Yq0Jx( zrPWPIH16HhR3niY%@osQX4ZVqyQUJ`KIe44-|zc<&UVf|OwFvd-uHQ*=YLCAs4K_1 zOq=341v4S5KZn^ku!^i2#5;cMC(bu=>SXk~6{Zq?>rx-_h7 z2ZMG7?F3V9n}0xHQ1JG!UAx2g z{2HAXLMZ#n4$i%;J@`3_RV#5h3jh9zP(|46Leh$?E>Mq zVb}IXKa4c)HgS&0NebtsHoqE`ft{A95mquUNe|KR! z|EDW!xv($SRg9S#8oXxBOV7p*f`clr?eqNv4A?xvFmTKByHU$8dvF?v1v z6RX(<==aoMs~daHVSIOfnIK7!!`?|IMjc48DHqx5Fz+DlOtnSPM)LYF`#MdYX)wF` zi1F5#gQ8)6$2())%Ng>I+~PoLFNc~vnxv+j(_uT$=&)QRZ>A2r#i5SL92%IFG52sY zUJv=8IEkb62BMI%dBzhaF4vx1q#;Mmi*TEI_;}Upi5bT^_MtN|es>*~`Gj0A{yap` z=>AlPHTI5DZFiPU&|#CEblBkDY#la$RdWsA=rr|kMY(4BI30G?_@WNG|6Cyd$S#Va z_O8@n>H0r0Xq>OZET(AVh_~m7D#PhI?DYn<4x>8GRL|kf(w@UB*6FZ}9EG#Sj$KF= z5i4|^#-V;B%u6 zGg_>@kZR9=6jrfWw!B`)<}jk)tszjf|AsNUz9=c7Rl;gqhCkNH|{ptc5wcvV7r0}PL5;I*2+L> z@#skkn@n7OV84$@ZSpzfa>0q$jeO4M2)3_lA*FOmjx3ivxM2A4jM7w_LXFpK(Ei0U zEf-s>s@0s#?J*^(FV<)et~5DXRk(DTz;(7mr0cq%mB&}erwUKu9B(Wa%Ki+d3?m43=8XuQ*(z}~t|1D`?4G%0DyNGR z?!i-Kmt^TMyG!@C9CE3e<#h1A@m*F07nP#*@{5cV4@g7TaX z+s*Gmq-4NO^I(?jy*wGdMQ?m{t*y#A{SHSdiWq}m)gH=|b)EPoI8a$fiX2+s`TG{C z?T#`R7lx$^DoQb^D8V!Rs+y$;B{9+@#RTOhDhuzL0yV9}+m|Wuaw4v{G`Nfz^M<%^ zSSfiFRqH+BR(@xE8o5GPA}VL4bBiXVrJ5@Q2RiSsoarnRZ@5m~Ck1)+jvodxPY$;3 zJojhUk=dJr+s`(6fw%F-kp1wAx8#lTa^4IHmDW^Zg{a!hVCt*QyY=j$M7r4lyduEz zF|i6&JYM|YN-KO9@r_!ol}K}HJ)zmpzRIv7xXc}FBaQz>m2>uTm+{UKqs0!g1?-}p z^^N@1og=gK_gIm&3Ngwfd*3UtSwO2>nAS&N6oS??8Fw2c3(5b+A0 z*{p!WjV!3A9y%;qs*2TNn?>3&#jKjRuWuTBr*UUS&w+Okqi;A8Z~BJk&hcQMwI8L! zjupYzGPR`ek`61s0F`4EY_1R1IxKGbv_>zg!x|knCV?s!s0nw5gZ?w9-3I9}^dV*j z{4S7B7c{z&;p_%W_?&A>9lyRb4^1}-oEQ}`T3E*)3j*C4^WbdUYN9#lN<8Q4u#FB- zJ=Ta-1MM}Vfne{*^3B*Oi$`n~pR1jNYwqYU_1;Km2;LGk z2jHN-2~9<{GD^9JG7MhMF2qYp-{`Q;;@GnaQiA&%4kBG^*6|sWc!S3w} z%QY{1xyg9g?~V>K7FpaN4?elnvm5W=tP4LLJXJBpFZz%tEZ08%^m28=RX8lyL7_Mn ze3~T4iUM{*uh+cM<6v7;@StjH1{*dom1k5{I?Sv{?vN$!s>80~75%AuYDdjHhF zV#hCLJrKwz{UA^+3;l=}qD5w^!_1+wb}rOmk$yUCmp#?PQS$>)4@-3eEER2njCiNR z6tdTks-$Xm40SDOV`;YR6dW3Fs;PAXY8j!u$KIfsquogv@zyC`qMk3v_Pv|k^Aza$ zbeNAg{Y|i+ooC(T@uxDTgzdJ@p5-}+>`tr@?k?-4dID#qO?v96XZTH5=Zo58Spa+8 zk>;cF=$BRq^Cyy=WqI&f|AZwv%M})Xhd|8$Vv`R0Ls*jfOc|8`+o9LZO=>(fFdzpX zTF)k6;V&T9)P~~;D^*MRwm}@K>$A(mh7eNgR`Wi;j-LxRTZk%e^asg=+xf<~43!uc?nWpK-~39qry1os@J<_~s5fHeMDq zwAW!JpFaz!PEk5+kiEj0st|nMc0+g=FArzeFTp=_q?c`7lBT;&REe;XgSxyTsJm}c zp*DQmR#z>C$pHS?ns~Gkc7;79E_guKm{vtA1YYn}jX6xxB_>3mFEQtnr(s%(9xq_T zIQ!F(^%m1GO}oFp*{8o1=9D<)X?WdSSaQ>N{tD+TLbVv$Jz`Tx3^kCHM``18>o%7bjqT)H!Vu7{<`uEOGI_whE%p=eq1w1xkskc*QM7z|{RBqXLXo6ig`$H4V)^|CY zzML3>?s8z$-mVJw+mYMuHm>?X01L-7=_m3UuB2ipTPU&fVYv)vQZnHse5IgpHUFMi z9?MY8BrD)B+7%;Z*LQ*;h!QEIK66KC%ZQs}8$?(i?mb4yGdP%uJ{$PviWvR5{6IY) z`YR3eSKUzOI?DF!uR&1O%6B@va2vw&f(pQGw}C%OaU>2E0B3l4ZBZ4R;sd8bE4?Ux z`OmgPvbO}ahgKSv0mT$nt{qQg!Ka&fI-c=JZ?@YJ0w=tb8hJ* z_4|eAb~jA&v(y~$OExj<(AO(R(>08W@2MFkQ15_O5*(<<%-A=uyY{ED6uymo1Lz;e z6PcbGdbLQIDi7jjDm;j8qQvIK;+s_}a0o2zReHeh5G)R9l6nLTY5S-NK^%#FHWNwTpvOMd4$d(=-Y_~m51{KW4o~~ZjdDIA0 zz`nWk+U83yEUNe3Qe6wDTvRznGa6cLOWruDq%ZXQP-@)o{sOCSA|3rFfoiWN)}$UkQu7zo%Dq#Lw&ZzG(9G-#RQtebK3vU4?a9l*_)95_>q#L`_7_%L z_hUTqxaYW+-%B;Td?qt{`Kae`d}^H02e_+th2wVhML5bG#^v1)+wGFi#ExlRYVVk6 zT>ntnQ)t2bAZM45N#vWJN<2|3kct)B*Nw4Mt{)`~C>4x#9>EjR)$cL^#jlgXIWtN% zUrZOjSZWX<|1AWHpYLgbmR02SWzGCfWwMhTH6sblAh80Tbq3VEj*f-oo8d}Ef>t17 ze9T^^PJJTVf44r(M6AQEi=lnVQ97zDD+FPLHEL@+1ZG8n7Rx~g5zs5L^VP{zEbjn*1c zZoId=M>=eEJ^tcKsXDmimKGYXIU3k-;nAw@mE1jy5<(6Q7^?1r*sIm7=+~u_@z0mv zCA%#Ur;JQ?m9#gMo0M~rf{#$XxMjUcPx^()p%K_=tpIzlC;wb2otg zSC|I#?6=Tct(F-2(Lg;1T8r~EnDkU2zd=-Zt755cj#9Riyh@x}T-@juSd2z?7`x_Z zr4nwhToKgdwnAiE#PVs(;(ZlSQaJHVJz9_$3VPblMlS$V(h48yusN2poLEL#cA(#J zTOO?3?V36Aoa`vnX^)co#%Zrr++{+i4O{MF5p~o0DG!~1g{S->O9xO_G0#yaah4?6V$jIw`%P#>>XXVn&xlB96{DBfzhNb`f(Tr)-~lr8g-DU(pS|Lf*e>dnhVYeSv^;?&>P zH#cLa$0hzN*qYY~)xU^}<78zel!l(lT3K!5Zf%r|;HaH7{6@F6@Y$9U@umAw`OzOP zX!*>j^&QAO(b;+R%Fuq= zBQOBq;rKNoO<<<6QRM=9I4RXG$VbL5zT>D2dC^dm`ow?ub38S1??U!A=dSquYMZN@ z({?nXp1AXE1i>EFVO0e5aIcSHb>sme(LSrTc*eRjl`s{f(T2v?e0*LvmVJXJ)m{3; zKES>%hPB)T$id|{0dfMLW+MhkY%($QDx3v{bg^^^Z z7ymiij95#e_W2qDmpjxdVZ1BEACI__Qfn^*(DYY93uszySl)@+%kRlgho09|^?rsT zCXCm48@Jo~RBjQMNUW`{)7(F4-#GBZZ&h}F4~}yNv^QiQBNOfE%KTU*tK>!sj5SWE zhGr7ov@vRj#p;mDQN?_bPxrsXx9=Po620+dU0iFtH+;DgD$|MAz^=tx4jz-oSpAzp%TA6D$p=$1e$0X zMk3$bBwktSFz)**u4*W*5pc4^>Tu%Sm8YTOn1v1%f#GhW`7hm!<=n^{B3YDq4dJU^ z7E?Sh>|vdB1fX4mT7jnSgnq1JCoF0`*4fl6)pQ|8m^NA(&6sw)5+RxTtus^3Ef>S$ zqqoj=7;o1>U#8zXEHD1&n!#xA075b$QkIt2r4x}pgj^$z5GSxT!x^fD6l#K?4N*Hv z8Sj)y%LAj82=@>s_1#GPVqKcOd9y*|WqGplBcQNL((Z5&2)pA95GwUFdW(Q(1bqxM zYnu9dVeo8y;LK2dq~U4=iu(gj8Dv9);(+-gxVojPC&Wj(`i`4(eD&suLIYSyO9`M| zU`)RyppJcbYgk*W8d@OpfCJeFHzg~U2E|fc#WFbZlXTdr#if8W79m^=FxBfJuQ-9@ z(lRJiz%m&nlggRR1#A%B&2>6mz|{Y$$&ullJ4aqJUKQtA4Y_F(6#aVQiQD5=c{1UR zq{;9`(G1h5OaW@se;&=I-zcsaodiX$u$gVQ#97~e zZOF#qNf8?yBg8lUP@Q%gfR3ggP9yZ9Y44^M0LU5vXjW7$$0jIy7N3R6+Zs`X_!^PJ zHPftCOw~u;(?||)P!h+gD2cR0d%ayA*7^3)Mt)q9O6{eIBG%mTAfp%wV&meD!2T*8SV^!V^s!(1Qr>spZ3OS7s zeVRdAPl-M-;7Sl3H$YIrUa!L<1R6WWhB{vC zB7gzrE9ZUbi`!ZdwU<=OVAXa~IZ7@&WiL0Ek9&d!Npj6yssNE6{h>2E5&$bJXQ54u_-=*p~4;x*1X>}L1IMaO8M>`kP_&K29>vx%ufR@EBJ_Sk2k(pno%RwO`U zJ{Culku7hG(y?)ONU{uHr}of}-M3aeKs+JY`y>;H&}9`-`x%K*J5p>U!=2RLncEQ& zx<(nX0*FvkSl|(dv-^&A{W1T?AUoCvL7KRT3w>*;7Rqg>_lOFG@hOj0x}2pV-WmZ^dA+PJCqq}wI@Dy+KW(0zFj88F;+dQVw08;_9J$waptCG(?&sPwbOB(joZ#G3k)_ls8OuqD?3!!B)@6(EUxy@j+&9TFsv zFb{mft%LHss3OInb5#If-`@-Pbwq#Wp@CoE>*W{KMm*ps(Bza>X0AALl%AYqVjtir z=*cMy2J;6Ji{5>EaeBFS8*C^8qGmbqCW1q~A*o6sNv;vWhkMFym*S+bfe(io4)}1u z8K7ctk^XRBIHX3lX8e1lw=3M*8{=A-61j=Y6R-z8?iX7wPA8#q(Xihd>cJC!x*qns z=kHv5y2gpe?g_Yq;`POH>uWECbCYeBT)?r#+z!$6|!Pt1N&F81GJGhoA~4FoZpA4chLZpu!3f?+fL`0HVkP$JBA0{U_%HU7EAM&fAO2gY~qVOmJj2+A8fq_b$A_0rq3;PCyHq^V+m!@49g67ADO zs`WUUll@Q?M}rxvtx9HMu-nY%=xd8f( zVe2rz*(QhoS5%@#kR~dQs)&-=Yj3#OHi0_>WH8C~TtEYQ?Dv&l0KI774PY8Fw?|xM zXX0kg9zD2kiGLp*>r7Mt^#5sLRMtPx1@8EK2e}E=5thDvkvxy8BtH8j3onrsjpQe& z#dYri9vj-oqB?HPkrl{A=9qIEkAfC;+rJdlQjELjfIseYKwt0$iS48=63 z;o6B;9Fx8*=&L8w)9HDJrV9epJk?v_?2;Gb@?ARY9xU4yR*}`hDh9Q%iVnnAbXJ2& z2BYMcaxzEQD{eQ>r1D+L#49%}wkp?s^ij?4Kf^ch(A4f-wiqu8pFY^y&M=o>L|%*9 z1E*lF>!4$Ty|p)t<+&;Id;6b$)fg_h|B8Wc6aEG=k`1YgVYnN-?xk41OT&86wS8cH z**hh^evUdTYGYidU$(qfymdNm#{V<3)5LCPH*~dHVeoji$s3kt+=O%h7I~B4tD)`b zt^HBGjVO(!G^A=?^||(s+cSKl)Cq(*28xSYDWd@pCeo4WK5n$Xl|kbke}MPAei2XTm0x$-J^`G z5t?+n34df~K8iXs>bJCT{73eU@dZbC0jlFTN3<)|S@C@F%9p2~Y+}vs%`WEWU+=Lw z@{*dd!v2jq?oiO1P`o?wHBFf}O-n!n?Y%|Rinq`10En_Q&soAt<07MW{kPHNdJUekqG7g>LP^60jD+6T? za2IcBTo4}OJ(+s0CP4EhjIIue2K0bE)K_%azBGSqePpBtX1Q;{Fu-*gN23}~6OC}! z8@h)8f;ob>MUTB#2!4eTK%fWTXbc zolb`F(GinV=@G%t(;kM=ms7e>8z*g;vuvjN{e{!J$7TX8`oSs5aF{z3!}jOkU;|Yk zht_tXTHlO?t7%yvg5z4DYjDo2j6%KYYA!T*&AqCR+M%geb%$P6FrMyJMV~e$uPt-- z?SPlx4g#^um%>zYnHVoda*G3`QHm*&TkuVKqdAzCTPQ7?IGS0YPwQ7P%PBgvBXkm9 z?S8cyuDBNt6?!?U&^KM-Lo3;;quOZMa%QwYYMqh*bXdZdXG`lNyI4FBsRlaACdu;v z5V6vqHRJt-(rYW+($N%$`v7*;syZ-ms*JSajZ~b030oAIVsjC;Y7o~8h+s#)Xjt=v zed$(aw&bvNwnzKkY8GY7$tEfSn)q#jT;kX~Kw|t$PnyrIzQ5CQTZ6x;c@BTpBJ5g$ zrxQgJny_oodLfkvVAo!t644^;`ma4h1{|0t8D|^nQ)fam8}>zdHG$6!A*Na)Ps)P* z&I>#r)T~)^be7&+&YKMq7A9!^u7mKR`iOP5iCrg5J6O9L+V5D(a;16-lsx##U5-+` z5U)2?Gm5DvN`XpI=L%=aYB&KGCHsnEY+`ZPT$xu$5GoGh=rEJdaX>K?RLzDuvyA_2 z7l-ODU?>^SKn_E?L$`_!5h+`4pNSh&qX2~JQXA11Zk6)NKCQqXQMk*d`&-mrUUj5r zsd*N&Zd|t1_Q!r0AF$EC!?7`XI2P^9-TMK6o=RThA?2K&aEN&Wj87|6hd3Rzmu;mP z3Ew-P#f`))WMXWTV@2vsAe<5eM#RI!2#jdT26Pre+p99wn_JT$^rv==xZVC zHwtf|SQ>g;w%kzR0k~#&IXh>uAPlaYMttDTB2_9Nct0PC6Iq!xQFt!>_F|0;sspIx z>~cU(7%s&>8nVxCnL1#~s()RIJha_l`64-2`J2jLJ>}i8bMWBFu0+P9_2*xu8@&>& zx}8{8`s+9Y>nftRkySZd`L2gx{cvs^L`73X4CPtw@O1??1PGP-WF zi61^Cdv@{ssu#!e2CuEE7&mvKS}3a+aPoM5-f?B=%hV@|K-tK03yWJBC=Tx!J;(;H>ABhRa(Tnr&0BbUykrU{G=j8@$TBgd6(}T+)=k9`oJjW z%ZpTDYP$lyJ(UlbwL?WLL-x}z^PZmB`SjVN1CC=fuOz(4OD-lC+odi@88GXwKTWnp zUCzw+A2P+id#sD2YG97$kGM=+9ihYC<$oaiwNa18f6h;5m};1EZ-79Z!+75332#*t z4S}XUu>#3P2-=%YKRlSaC)_39qTgPXVO#g+U$ephquzO$pGN{;BtnXVD?Dh=I=p)c zNJ$eEiLb6hI*czk0|V-4`Uw1W7G+Jm0uX6djQ^)u{H4HP0t#)+)2q|pXD>ICJJafP zJ*-2k(`i@-h?ZAd&bZt!4+HrrZ;tjZ$mrM0MgBM>dn^r8WXx zSReivppocexmBA`ad*02HGQ?2M;hGy3uIR#%n&2R$g}d92xxo`*da&|p~ckG#!H0& zr?)!nH3on^4_0}XlL&jJv6UQo*-^lr%k;*UjLNT0m(d1VEAOg%|BJ~c4^Td6TH&7D z5NL+hg8BwEcL+c5YMIBBOh+vb!MTD!my-NZPI4oRm`^L3n^n!PXPcxk0CMUUL-qDT zkP~dLj3@Aow(5m6@NWcaoP4Yp@A=PRu=Q1+vALE%iVsJ^&ZVGX{iGR1lS{E9-iv{{ zW0r_Op~MD~9Z*@$0pc343EDlg9VfwKtwI-u}Kwx zEFmzY30his3gKQ~pe2d|dGZlp`JNJmdn$1NYMS_Efqyf<44`zgTLBtc{{m@_4*MA} z#&R779}FmJm@aJuRA1OMy(F;Bm>LJ6Y9{_>4fO*0dqxrdjFgn*?s+Iiw|_`u; zPNy-ja~Agy(b)XF{}C@Ts3KZ5n;}~G;;oDX=u9kmFvs+5(ha+PS2rBbs!Rf@9fI6$ zxPjEJT%64W9L8HN<l+hafj^r68d=k8acUt}Yn^O{h!$E8C0xLIHBafBXpDSaV|! zSkkw1SAk}b0OqbWAhnH>3h1$Gl78&EtRK5-V4t@KmRN<$FLx%SINHF!z~U6|K1mC> z(7^W$r}bMf@X>PV)k5fF6TYl2Oj8f5)PAcxuX25@HgP3ToV~SU?7WX@VE)<(w=Z`j zl02_Ww$Ne)Zv(U5FI(_FZG3^!Dk0}D4_{7VkB199?IQPd-HDS)TurCYF^QKArz^Ve zE2_B@a{e5rU*^QXP7n5fTF}0C9p0D9>)ZJy-#REE)6M#clsCcc*0l$Ap`)^rx^{cw zR`#z@Pm^_Tr(XGG;#2;h4a#G=&qs{eH{t%aT3Nis$C!D)+viT?Ms=Y82W1c zu}5zXpDSLk95v?g$u$vGOO7sH({(_H*K7CBpSs!I%;n06f~l%l?giD}dADAS4B^CI zIhMLD-?jEe(xEE@f6M9Eb@0ehL*tFpU3tZoBM&RQey_>B*&u7MUMXM58#bWR9M9p& z+Uh51W{Tw;_0MQl-_4Nk%jQp@@~C1e^O@uhB~p77X>?fGrjj?CHj%$vdG_?2>gO>% zp1V#Q@hHHtGg*`^VEkIP;7+$)T-PX=4B2p# zd5H&1lbPeEraUj3<(&N>^SAL`mva2_s65=3tT@YWAH=D2Ryrb}h-R)h#ng+}jn1Re zsf1NOSIG_| zjA?ZTkx7^%*#$`W5>wT9@$gl5VjBwPOn3TltdiCEN)lj|BVm8uG*_UPqZUr1^B5$th9C-fRCOp?PTmE7IOBMGY42-HBvTM#> zIbdQ&q{RLZ*foD|je#ZBCCMJC&56vOM22OQ4HOZ8fbB~N;8zjx1CaX1;%1R!&ie-0 zdxZy#axiuwgH>Mo9f1=3K_W0%HAs;VFh;4sbBA8HJ$qmr*z&d*2s1H4Mcei11vdaCMKP4skqOAmAlvOPxXO}R%N-<4>4|c-b&x2n zdJ%9q&}TH8DFPe1+UHu;gmvuQ*@|QBdT5>D$Mbs!pK90qn;b)O*~mebEdW%3KCC+@ zRL-0(#hcNyT3Howa$$GlZqBY(^M4%IkM(YfkAmGI@E?mbu3229P&x>-nHCiO0#NwJ ze~^}G(gn$!3XQ`jkH(& zwX~P7!=TqdN>5tZD`=(k{0A)CMDwR!`7Zpv^4%RDLk-~#2ULgKrv{7yK&v4GA2JFE z&}e{s0Ii!sV(myI4_O3zaBH5K#PIuA=YKqN zUl41MJ_uZ225XK*eu}9xQW-) z%p%z;x(&KFYSXbYXoEPuQ|9gDQ`+0aN`Y#VLHQw9*bNAbXZs@EZwnZ|t{IGXiwDru zjP7~NG)TaYdL9-n;74AmBOt03!#X8{s(pj~!%B~ONZk8|O%8U<6c+zdA-qS*EL4*;{^xu^ zCP}f2Q*+zL<<>iIEIsaD2)J_Yl|0JwvI7;?L#(o}S3NeFvna;WF1qZ}kEAI(+92jX{svsC}Q!IE?KRf{*UGWy7pHr#(*kFpQ~ZZo?Jl_sccQ#p_P? z8q4$(mS(S_o*gNl`5^m2pZUBUc}8}}jpon!%_7%AHPl`sU}ll$j{=dJJgq8qFa>5A zMA&;NVj?x2X~LdWEF==8_DyiyiRLH(%#wYMk!V4WD@;jT1b+aKeDVW*I7syWkFyHQ z38Y?<(k^ADyt-MEvZj?JY5 zzD~%^OKnC0L52KD1mdTV6rO~37tyPtuch$Vd;VamOhD^Iy#Oyvq4C00R&kRm>;54W zF915xNtw1BllEQNd&#!p@lOTC`(RK(w4b7YwkXnR3gZBV=c6Co9$qcGE$M z3YGpK6?D@kQ7iG4YG?3ffkmoHoGemimo-YNmd-Z$1RU{~e2ZP>-L`kaG@;tNI2Q-X zf$(AU0eJl6I4WCS7OP}jF9Hw)T8<+ z=C$_l-?wAQSZ#BKDOikTk+j1fBpRYL$rSiNNTQ)$j>Le6L8CFGsL2<$*8$Y`5=&Xr`s%KV>b-S%U&#?ZR|-QSD?#6 zHg?oMbo+u)LzlHfOpC3HJ=9#Py9lP|AE_7ETiZ(cr&hO-;;0lBdQ)R(p!#oaqr-YyQeDWaI&6gwd*~=7eAFJr zgd_**oc54dyH=L$w$yhcbr^csINERA)WagbG3sFx@{s8EAY5;&um=NNK95}#Y0HS< z;7UwyJI9eKp*RYnEZB;YEU__V4itEo+Hk73+EKY+pVD**63V}HxJZWhTP3)?yE2eC zk?*`>rMuzB_=-SjPq{-mdEkb~I>M7Zo*m34U}R^Wblx4|D!T zOM`8@+$d+m|FC@ZkRg(oub(7Orn=|orS|#(fCk~{0ifF#hEi+LR-Pf$?Sl3$Wv_}Y z7fDY@1lB+wX4qALg$)4#22}=<^aV{Sy#wxJ>Z3H>l9YQ?VMtGkK&ah^g~DIS zYs7Vw_n;4yIQmtfglf{aS^yFi`s=mGLckk=cScZX$1YC@8VW@w0Hh#av@1WpjoaxIX}fcBuvpri4u+ry7sDXu?8O{`rS=kWJ1Ibi#ZF)`R#WNx zAuj*`&83VLf=J&OR@2yE+7jKepN?)ZK*ZEvLP)NVW&=mN`^Z+$ZzRnOiWAwVm zCSwfJJ<`UQU|RQxj4|`G`#RfR$RFj>@3G1IYR&i($h+9cW3r91*cnw;m z>2SYI)A>ADdzU|0B`7EL+tAsI%2o_I3fpk`_qSoA0bOb0ObjbI3?=pyg)Nc9`#K?I zdTbOQW~NtgDH{hHLekN9Y+!sJemWav)1X_vgNM#WT6d)n@1buwDB!+WpkW(aYU5~w z@mK&4JaWO?gWLy}`_1kz+RC^JAL*?_wJ26bGX+Vv&!AWts>wJ6Wu}$1;eRm>og3Xc zJfsC?kEMDuzlGVwiedlMy7GiAXmb_a;CzcV!xk^O{}tTKv{!EjMz{~Z6ZO)KHotGx zBBQW=ut%EyVZ+g2Z=Ju~!}VJBW*3b0)*_>}(2@46uRl3T&fSrZM$t#KX#jcFEdh?P zYuO_!Lf08q3L5_fBk=-9)grvXkjh7mR+_;1p_)+J@Pw76IcazzBgYYha!9Edr9~6A zUMROjNg|=#U$cqJg<2C!X#@Empd5@=G8&=k=Dc~SvVn$kV~-Bzk+2kMph zY5_9e{=i1M|5ZFsrT7a1PcWbR`Pb-{ zkNev2K?3_!6U|~REN21DB7nK&U=wbFk`caxn|M@f0e8^rL9!6qkJ4Rc9r@irWpvV~ z7RI?ieV;uhop1HXx^oZZAK4;rtWn@%Okfd6Sy1liZ?u)FlP{EGYAW>AG+ zuSGKzQXSJOXqp1jtDNYus#yume-0$#2X)*8zw9k;R4=zr<#-!Ig=l-*TpD{^kE<3N zHUoCFxotQyjnn3~);F*AGmtKw_Cq|z5QS480_D%dO_=ui3fY}RLK4tf{i!Hv7Lr&p z!l{9@kOaCh#trSsmrE`XAwE`KgNiO!5(l#b%Bwuv8^ZcoDJ)z~729VQDUvil4n&Iiun7BwG?R&#lveG1>Gdf()DK1d+23mKjrPgF0y2Zra`7GTw|p`n~ZvpXB9 z5`FuD);*m%L>tdg>QG&3i@Pf4Z>d9l^@C;G^!tr0sgoLztjwO!I6+Hn#ncSK<%hI; zs8!@jXap!|re+LmnS&Oqbr5z3VqVQi?OD-1i!U1vw8y>3JIzsd17SdGin{yF0`U0o zUa%3Oby)U)tI4kv$Ti~6%@Q{LVO|>oe}rj_wt4>C85@WP>;8QtP&sHpVX}7Opu_d6|YkW~e+#pl-v0W9ANf4EKn=i5EYCV&f`>K{oh02gG~)csVSd~;mm zg3!$q`%K0{kUS7b{UHQBLj!w(H090pK=cpw;1g4MR#i=>3EBTwX+jm8jM|cCbOyz{ zlZfCoMn?;r6iw-IC^*XXYIADS3e4dXthBFP_Ryu7Xngm?X%;~uk@&lbM2;GlyykEh z4^5XGVYWU_k$*`)y3_HLvkdG{ojd!}V8gVw0UAr=zKxgR!_rQlb4z;%Vj571)rYEl z`3UZe`TxZ<#vTgKEE42}H{nTML`gQSIgszg+H8+Y6BkF*Vru9UK?H|f8~-S#7CaC) z0V`$&boP@73Vt)uLsxttdJ5)Dgo+O`2;bT}Ta#=#13<7)9?qerbF}FYYZL0Wps9;) z6~*~`+awEPK6@eP3l`crgnU)v%?l0M+UA32>^1Z;S{*!~MAd^rO`jc(Zy2XCJiuwg zR>3q1s8CaO6}h36l-2~SFv`^7--YOsgMCh)yYvQRI*Fl3MhdN>svMh%_fb+dz*kquQ=;4HLD^}_72z>4;b!^ zRn9pkh>U^Z9;}-v5h|iJkuqv(_vau(xXACte?)?Y_gczKeRD)pR^LfAL}x^|YC(yx ziLojQWM5(@IV1Xr&bgvduRTPDGxRRIw6sYL*rR5X+HWR*Tf3~+CT&ZS0Yi^pjCO%Y zlZdNtrc#Iru_$JuHpZ6N6xF#Y0R%?Q?-W z=xl|^j28W&+9o)A3NinG)rSVp!u19MvSKxqQVaD2H6S+acw#3R}` zq61`a!0l=0o-tJ=Ssw#dPYAg&o^Qt`vf1$i{=R+z4qsU20WRQt#=ok=&$^I2i*<&H1hyOOyod%7Z#xenDIp z0=6QQsCYgP;?AC{&MBCg45O5eNOKNYDBh$w=NxH5TL*&ky36J`>)dk7rKoNr6O5hz zHF-5C(GK=Okw+UxpsWMErSA*AWDj{g&M@>f?G`8}O@j20?+VfxL$%?E+=99T>$4Kh zl3h7eH}*B+p@S4(3(5feT}pC8$QeWoha&O%S2+pfHsBQ7kS2!gO(;!_jt+)UxkQ-S z(!|K#M2qKPi~a|DlPh4Z>2vV45D?m9k!S|7g3h0b(r2)?A%Nx%SrV&+hY{`w7i^D8 z^bBSMAL_-A!mALq1WpBbP<6GX)oO1pPf;g?OvOuk2cHh@gnmzYdgQl{r!3MOzquJ~ zV7T|X*{d88WvUnNp}Z*|*kee}-e!;L{N_xI-^}^$=xV<4y?utW{2O1`Y!l#u=%^Qq zh~q?|K0x~0lv9U)&iAaQdg{;P)c*q1>g)x<4=4>86~JH*e{(^yyUB{ zYcnQH{2R+uL$wXn3dK$NJyggd`VpOIGiZw_I?+V5MHCLS1z-_gy$Cj3r)Fw` z8YwuMVd4B$l1${CxEyr}T8(e>l?(yP`o=>>FSc_So_a^*#VA9T15d+A$}P?h~g^p4pU-JL3q>XZo6rz|kJw95r6+1s=ams;4BscRr!T~vl)Ls?tg-qnVZoOc?FI3rliFXT0 zmIab@9lwf_Ia|fbhXB%P1bKX^ND(TJhd30Vb5Ikmk3;#sy8|A&DamEh1|{UBIq5uFC zKGM^*-1J*7S#cC#DBPw{%>P22fbWHY>g(KW`@h9?Uofl@wi+^`TK#(}jOX91v2WZ* zrz~EuRYRTet8rN(6d0BNG!?|!C2- zoj}-jQ|;+|9NtAP7>9~>uP6t1NcpHK3*-;P>J4z9= zBOl4`P~xldE{dk@*4i8P`jC(Ktzlg}WqLG6GXz(|nJ3#F%$6o2dnU9?ki$rOK~dJ8 zEo76jG}G}4Mza}IoY<-$ssbY_`dVILM6>K~e^dU$-P>!2GVIlQR6lBG5W1LsSoU?4d~Wq$#nRoCYoZFbI+m zK-6t>js&`JeS}w)=htB=p#Z1A$iH?5=ym=Sfz^PEg2LPxLy1gN_^VuCJ_e8|qG7i` zQk!Y=*hTDOfw$WJvx$b+_!uQ~z9Hh5B`fQb{P3?VqS_(ghD@Nl{U$Rc>h@6qUq^TQ zsJZ!)v&6>0@!2*G@lnmWlwRY}YI^rN6rhh6fgbTAIZ`=M+L4((S#0!VsZgSqXY zJw31$fpzRg^TZZ)cqTE8Z40yoxOV6OCbk(&gdl~50KuLO5TOuT1wUe@749y`5S0|5 zp8El(oGOyKgb!XfmfO;DV2m;dQ64Hs4(9j?j3`{YoAYC~1 zbr=jESTIlxp!BOI{GbnveFY%T9!|$!!SMAlyCwf>2<`BEuZT;#1IGzRvg0omcdp*y zi8AOOActqCrYx9o?f1(2(BJ{eSeE Hp)2}7a)Yo; literal 0 HcmV?d00001