From cd400b56c63265e52e5d10dbedb2fde3820028b8 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Mon, 23 Jan 2023 18:14:53 +0100 Subject: [PATCH] update project --- CHANGELOG | 4 ++++ agent_based/bgp_peer.py | 27 +++++++++++++++++++++++---- agent_based/inv_bgp_peer.py | 7 ++++++- agent_based/utils/bgp_peer.py | 24 ++++++++++++++---------- bgp_peer.mkp | Bin 15376 -> 15608 bytes packages/bgp_peer | 6 +++--- web/plugins/metrics/bgp_peer.py | 2 +- 7 files changed, 51 insertions(+), 19 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b76f66a..c644463 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -25,3 +25,7 @@ changed IPv6 address format to lower case as required by rfc5952 section-4.3 (this affects IPv6 items) 2022-09-05: added missing wato parameters to register.check_plugin check_default_parameters 2022-09-05: added internal_item to WATO as hidden_key to avoid warnings on cmk updates (THX to Jay2k1 for reporting the issue) +2022-09-11: optimized internal flow: > alias > not found > admin down > peer state > ... +2023-01-21: changed to always yield fsm_established_time (not only if beep connects, but also on all other states) +2023-01-20: add description to BgpPeerItem (for Arista) +2023-01-22: fix output for admin_state diff --git a/agent_based/bgp_peer.py b/agent_based/bgp_peer.py index 58c4bbe..0427531 100644 --- a/agent_based/bgp_peer.py +++ b/agent_based/bgp_peer.py @@ -23,8 +23,12 @@ # 2022-05-11: changed bgp_get_peer_entry to get proper parameters instead of Nontransparent list # added remote_as to BgpPeerItem # 2022-09-05: added missing wato parameters to register.check_plugin check_default_parameters -# 2022-09-10: made more reliable on limited data (fsm_established_time and admin_state) (THX to martin[dot]pechstein[at]posteo[dot]de) +# 2022-09-10: made more reliable on limited data (fsm_established_time and admin_state) +# (THX to martin[dot]pechstein[at]posteo[dot]de) # 2022-09-11: optimized internal flow: > alias > not found > admin down > peer state > ... +# 2023-01-21: changed to always yield fsm_established_time (not only if beep connects, but also on all other states) +# 2023-01-22: fix output for admin_state +# # Example Agent Output: # BGP4-MIB @@ -68,6 +72,8 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( from cmk.base.plugins.agent_based.utils.bgp_peer import ( BgpPeer, bgp_get_peer_entry, + bgp_adminstate, + bgp_peerstate, ) @@ -130,16 +136,29 @@ def check_bgp_peer(item, params, section: Dict[str, BgpPeer]) -> CheckResult: yield Result(state=State(peer_not_found_state), summary='Item not found in SNMP data') return + if peer.description: + yield Result(state=State.OK, summary=f'[{peer.description}]', details=' ') + if peer.admin_state == 1: # shutdown - yield Result(state=State(params['admindown']), summary=f'Admin state: {peer.peer_statestr}') + yield Result(state=State(params['admindown']), summary=f'Admin state: {bgp_adminstate(peer.admin_state)}') return - yield Result(state=State(neighborstate.get(str(peer.peer_state))), notice=f'Peer state: {peer.peer_statestr}') + yield Result( + state=State(neighborstate.get(str(peer.peer_state))), + notice=f'Peer state: {bgp_peerstate(peer.peer_state)}' + ) + + if peer.fsm_established_time: # always yield fsm_established time + yield Metric( + name=f'bgp_peer_fsmestablishedtime', + value=peer.fsm_established_time, + boundaries=(0, None) + ) if not peer.peer_state == 6: # not established return - if peer.fsm_established_time: # fms_time not None + if peer.fsm_established_time: # if peer is established use fsm_established_time as uptime yield from check_levels( value=peer.fsm_established_time, label='Uptime', diff --git a/agent_based/inv_bgp_peer.py b/agent_based/inv_bgp_peer.py index 0262c14..9ed2db7 100644 --- a/agent_based/inv_bgp_peer.py +++ b/agent_based/inv_bgp_peer.py @@ -10,6 +10,7 @@ # inventory of bgp peers # # 2022-04-30: code cleanup/streamlining +# 2023-01-17: always remove fsm_established_time # import time @@ -102,8 +103,12 @@ def inventory_bgp_peers(params, section) -> InventoryResult: pass fsm_established_time = bgp_peer.get('fsm_established_time') - if fsm_established_time: + try: bgp_peer.pop('fsm_established_time') + except KeyError: + pass + + if fsm_established_time: peer_state = bgp_peer.get('peer_state') in_service = True not_in_service_time = params.get('not_in_service_time', 2592000) diff --git a/agent_based/utils/bgp_peer.py b/agent_based/utils/bgp_peer.py index 803d1c2..c3123f2 100644 --- a/agent_based/utils/bgp_peer.py +++ b/agent_based/utils/bgp_peer.py @@ -17,6 +17,7 @@ # added remote_as to BgpPeerItem # 2022-05-12: merged bgp_get_ip_address_from_oid with bgp_render_ip_address # changed IPv6 address format to lower case as required by rfc5952 section-4.3 (this affects IPv6 items) +# 2023-01-20: add description to BgpPeerItem (for Arista) # # https://ftp.ripe.net/ripe/asnames/asn.txt AS Name List @@ -39,7 +40,7 @@ class BgpPeerItem(TypedDict): @dataclass class BgpPeer: peer_state: int - peer_statestr: str + # peer_statestr: str admin_statestr: str metric_rate: List[Tuple[str, int]] metric_count: List[Tuple[str, int]] @@ -53,6 +54,7 @@ class BgpPeer: accepted_prefixes: Optional[int] peer_unavail_reason: Optional[int] peer_unavail_reason_str: Optional[str] + description: Optional[str] class InvBgpPeer(TypedDict): @@ -215,18 +217,19 @@ def bgp_get_peer_entry( remote_as: str, peer_state: str, fsm_established_transitions: str, - fsm_established_time: Optional[str], - admin_state: Optional[str], - in_updates: Optional[str], - out_updates: Optional[str], - in_messages: Optional[str], - out_messages: Optional[str], - in_update_elapsed_time: Optional[str], + fsm_established_time: Optional[str] = None, + admin_state: Optional[str] = None, + in_updates: Optional[str] = None, + out_updates: Optional[str] = None, + in_messages: Optional[str] = None, + out_messages: Optional[str] = None, + in_update_elapsed_time: Optional[str] = None, + description: Optional[str] = None, ) -> Optional[Dict[str, BgpPeer]]: bgp_peer = BgpPeer( peer_state=int(peer_state), - peer_statestr=bgp_peerstate(int(peer_state)), + # peer_statestr=bgp_peerstate(int(peer_state)), admin_state=int(admin_state) if admin_state.isdigit() else None, admin_statestr=bgp_adminstate(int(admin_state) if admin_state.isdigit() else None), fsm_established_time=int(fsm_established_time) if fsm_established_time.isdigit() else None, @@ -245,6 +248,7 @@ def bgp_get_peer_entry( accepted_prefixes=None, peer_unavail_reason=0, peer_unavail_reason_str='', + description=description if description else '' ) for key, value in [ @@ -260,7 +264,7 @@ def bgp_get_peer_entry( for key, value in [ ('fsmestablishedtransitions', fsm_established_transitions), - ('inupdateelapsedtime', in_update_elapsed_time), + # ('inupdateelapsedtime', in_update_elapsed_time), ]: try: bgp_peer.metric_count.append((key, int(value))) diff --git a/bgp_peer.mkp b/bgp_peer.mkp index d0b078c448371845ebd4ce3f5c2e79fd972788c5..f0effdd8dae4f037d446f186132bc65c83270bfc 100644 GIT binary patch literal 15608 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 literal 15376 zcmb80Q;;T1u%_F#ZTHu<ZBN_gOxw0?+qOAv+vc=we*2$uxi=ddkr7o<SrK)SnHTxg zo5ayDFxdh`reHu5O9w*-b8{yKR%TXKW*!z6MmH8lZWBh^-wq(xzFSU5+)YOPb$wvv zbet43((E!jnAMR-b#m?Pmxm4dOO|W3%JXREjnQNr6z1tlq2w=IFRw3hoNS;8`|3{m zU6yVWnT)F9VA3Fw)8b@_4n3{FA$LC)kFamS?@;Q`HFn8w;ut?A;%Dz6<NDWNyE94q zC-5czH}E`P9Bt5o2L`-K&Ktwy_wAOKg;C@z)zzL&D|`0UC{8=~&TkJ}31@%e&OYG1 z*NN0)X}>KOAL6Rs#sRB?TjG&-#^os7HRhwh%aPLQ)pi@W8?JWZjKQC)6DhaHfjZ8g zRk)4%zDqB+yX>_;4bw}2FAw8AXhn<-BHd3=@B0^Q3maZ6t+@UBQ1=a8AktmfLVOOT zvk@MIF8tQ;YGA*)+@Rm-jXhz!gdoWFhQTp3@|dPEn7KP*admw8v`%e7Q|$Fkf&Z$v zeI!R{5goPOM|Aeqj)`UZQ#@euOle~k$*!=*n|hNVbLHydyN*TCa_6endrReUasA^p z?^3sVM9{&}flH+YzMPu6XsR`~KiX#o*$&q0y2A~|NLajmo)4Z3^38WAWyGc%It1XK zHQyM0RQQ^B6h=+=#h+RzbJW(_gMp=8;Qbl4_<k2gt;+|OW8Sqb%6~}U9_LG(M-b|r zbGjS#l}sIE`8z|%q~CjWwXBkQON#h)E0iFC#V;afoU)-PQbzmciUgw>XF@z5C(O;# z>Ik1heT#ROtO3~Q4u-c)H7%;3Byv@AB2^HON;5wH6lqZ=@>1w}v>DwC4Gv>;>oe!~ zRp|Hg1dW^j;(g}rpZCQD^^b%ch$u$9`T#^u1kQDQ`E#1jAx!}-318$<ff?r$hd{2| zXoyeyUCoHAy&fja(J|TG;t_yrA(?q2vRo+u3|$GD2B%VdeDL<tGRjDJAf{$OiO2E% z50YVNj69|&EeX!KX{gb#34Lh+Tmq(NXUiXh1p6!8C@wOFNIV~M<1pgraRkti0+ECk zfGV15Q4EPnN+rmzq)3wx3RO}y5h&%|T~}0dTAzcZH$#~QTJ};>@~@%ye&a>&EMRt- z@#+^a-Xmq=RchQ{>mvSb@9#cz=hy9Dqouc3uin4o$47fW^0E9zV!M~P?y8Fl@N;0% z+@n9=M)==}*rVL_UBWGa0M`9yygBVxCjGW2%{X^H^G~ZC!lQI3iXO+bHtbE+m!)px zD{6eRu9K$6?^t+N?UF`5bW$am<_wJpSC9{fdngS7RSi0D(0`OpUIC=WHSyhLaU)|{ zQZ0=#pTfLp4?^W00S3;%+t;t&%Z<dgrmfghW%*xcDUeEQ^2=xlmAZev2cTSno+qPf z;=aa1X~lR7|FN3a87kH9vgNZ^H-OtH8tLk;-AAb-wT8f+5mebMJNe#X-EChNyUC)X z^@4k@grClwizTqs3XRh(U7%=oo3){-J+55WfWT1BYUtpesdZJxA%HN?x!G}XF^iMZ zg5po<ib(A=t*+{92)FHScJ4saRBZJSEY39Kdnnzy&o85|^-Bf8UbQ|(cFwLwhM+}M z$v|1>A-gL6tJ#?B1DCZ_gxM1*mrnhgwu<!If&r<OBmuINavh<IHx94pQv4;Ya5h<# zplN85-^BZjvVy;1sG+;9E$-6+ZD3yXcXxq=L|S``(vRQ04#NfrubycB{+W^c?k1}1 zIamaU6-XCeAIPj=99Imu8eyQ@Py_!~5N+$|vnPg@0Ze5AEFP9*C?VRqu22vaTI-ib zx7f@T!X~;Y8)(R(_CW|~9GY9b4$~Lhm2L&tFpA2OsJzLKsd;^EFT6s8GfgRe*O^3? zQ{Xl4vZt`h@_{nFqR6UF_*N+54&)!Y?e%JjV_|>rjXO|16v9^R%ZpQ>uuGc;h=9DR zk0ldV0Pa^%XaD2DO8G5)XbaWy3Ac0mtUp>NNE%VY2uH$t%6F`GfCh}efDqVhQ@9O~ ziUv9z>@HXfoBCfri^5VufA5Ext^0hMs@lT3ch;=x8&XZ(p0D={`Jh$U>QdNUJuDCx z{LOeDNOkATy*e#o$hHxad#%U=sh~|)SpvdlIM7|KDb(AQ(PSW#X5g9Dr1Np2{XwY> zrOvR#@nI;ly0GRpSwgULP*9F<9$a|(&<g?v@^J>LNk6p8T;+r~>2%WlWcjK3`fzc0 zwWFl0oqt}6iR7&9-}KVXsli1M6K;zBQM%yJ#wQekqnHQfIC*9q&Zgtze-0={@>W8d zcETrs2<3^gQ2>0gyG|7LFxBLO({pNTM8^~-F*&H7mlBdlod_{rp>%-xpT-Qf-u~gj zDBw;XzU*#4)eL0t+sH2v1`UZ}i8%0UDu#c%r-S(-k?C*V?nV3pU55vHxLy9`s~1oU z*h})bg=y)<B-{BZVw^9~v^DcK?qV}2QVVrG3*L0m0jVZt1Vy}kf!o-3gh|+5DcM%g zq}AeO;$f0&2$BS6J~`x1d#g=I&?4!FR8SGAoayq9rai`k{fB47*HrZGBde~0nSxJq z|48mDmKr0+yq{eOXTsNoA;sLt*Mo3aNtin2j#ju5n1uC7C=G+ZD^f)zL}Coz1NtFT zLecLRT|EVhiIEvMzZXRj_v>KLtyZ6gav`R@1{IqSd90>jOSdu>ymW!B75ta5jOBES zpLGeP*R~W}Yd;)4yrm3N8AuXQE^Tf$m<q2~nVVM|!Nv)jE3*^jh;pThY@m9~QjHBl zHGH6BHYSpjqkjpMkH#0z>_*(4@K#C-^GrO=LjS0ojZ8<|zQ}^$9R@Rts%BC&MRO`U zy`Iy0NsN-VpTT0!3^PgG9N4p_+N`j5UgIUsSea-vGu@<}W=_%v%|4dighHURuRH0p zej;al=b%*fBSc&ul+cg{-#LTC3WUXC$|f%9ZjQ;#SV^}EZhoUhQ*spMu)?rS3RJli zL>L{YxH_^X)N<>Z0xR(y-s#eIAMwh^8m=yvP_(2TxP~)gzu}nqEU`9QG|kUK0`85D z!m9lEzrT$;sTdgyAz24Pgr#g26V=CudU2yJg~!}MycjaWx-`ni?;J+PweoxJFd^g& z=`MP(c_W1BAG<l!i=ez7B3(~p*^tSksc589@>J`LS|*-7goGaoS)SqM@X=Cn#R`~* zWH8EodGsZeVL3AvnTyUTsG6fch!gZm;6B41z*cT-DoROjApFy}AN=p6@Qp6dZyv^T zN2Ifwt8uV*0l8Q|32O7cyIoI3dQlr##`H7%aa?maM-_@lbkbANT%FDCh;I|21UhzG z0vp9@n0mLx!GE|6;YXopF%WbPA?b^vvpd``^WA2HY9UxiFo1~y;{yxg1F}n)VTgBS zmW)y!`)UDyS$NJ#7W4eh1$L}bW<nyldHPyriA`}UWm$SvhwdG!hY)K7?wqm9;a?bL z=|<QVBn_Hj%k&u)<F%7^3`ve^<6ihq*N}2Ugx~VS)ZI>^97>lACE9bc)zZ-_Yh8^y z+K=FMjn^@!5KKNI|8g=3Byg$)pz|y_aF%DVtvs{t-4Xu|=AM*-cJ|r@re$hh*))Qv zVal_uw=4-r;lAX#LbJJ`u4|lmbAP&C2=uXyTc!n&`lc&Q1?wG*jBKdO<J9vQSB%_U z{8CFAHA^hS4w}lY8J8ZMA|cnLn}N07mb37!;)=G&I(=lVWX`dzBq*|-aUSV#bFzoD zx`R|OJ`z)q_FS|{!wL4JZ}}R~k~`LTiPHRCEI7au{??ZOt2aH5Y{O)KQ&U5ZaR<@P z?(&su)QC$*F_Y&((ey0JHAOobPOh4ql!qYE28YsHt2aSCJ@2Yu=|7RSA&Dljb+q}+ zpoNI0rMrnF<hv;7E4td_bVIO>m0EGi%N_28D^=uKFbyazRE`0>%5lqMm77|4aw@Tm zk+MC=t7ABY3>!nZk<{r{8lNAJcI^m`Z%x{e;b^ONC-~-Bel}~*;_LtRZf;uN!DwCV z9<y*`^!(}7>pmnlDPmv*#mt5+v8bV`btCW3p>9GE3&hF{i4j4*xdS_rXp)z;rg7{o zk_42N;@LOgR$OrLv0N1GBf$fxTd+G?M53>+=+?I)0oZhLHbiuF8gt6j?J%toEvvA$ zG5~H@I0QT8jYcr&)kcP1vBy&1isCdYH2$jcK3u`rb!B3&tsT*`V4u~}@`M6_9d^<d ze{)M_L~zZuRcEFQy*_L30x!pJEG>Fa&9sca<*JQvo~brXw>5(st~NPY<av)_Lx%Ho z7_kG^G;ENrnP_7W^KzgGIuXjB%!r({RSe*!XS4-ux8UueW(6@A%b&h#2o@G_-4Enb zzVz~Bxa$UO<8=EXaBr?1zNyR?)x$<f6C5>@r8;~b?XU3NhnQUPCHwD-Vh!9{AfTAD z9s2DnfL+vgcp6^YP_Gr+GPn!G_YZC9aF6)+ep%0i^<O4%bJ?0r1@GTA8>hqTg*b3! z0EPZJ`ag7~ZkUOU%UxvfjBSk+z26zOk`3<HC^!ta**?wLRn~$xc`czLkd-%S;<@=v ztK-Xo)X!mEbrC$~iAaQ8a}>ib0kmwYlGL56*{ovkd8_hE*3f4B`{CQa?xrVwXe0Hr zm~25oV+Gk}DrC4LW+!K6X+;T_Ld?mg#?6`_i=ERaw&PX53B6oBGPi@(c&!iqaw4)q zpyUciVP(h5k~d58T)?H?aVM5UDw4Lk6~CPPumW#W!2jj%1I=+Pl-_{n;HDMDKtm;B zgx|n=e^Frl=@?&t0I-h82%S#I@z2A=pzI+}ik<%P)6!D;I#M=+{uUUn6WXV`$Wq+; zl3#Eg)1DtSUn{i&UorNNuV47b_r?@4vGT%a8{dSF7?vE?=Wt6S1E1;*mH+iW7Qa@< z&XxgCkXEzCMj=;LnY+~6lTqoCmmEjh@PYM&xb37L*CRe-w_EKKv&?Txf}u<K>{85p znliCyM0N-I_XiD!HN&8g!Edmie+BxG&IXsXzdbH*J0cGIK<A56zaw|IHj-%kA9p6K z*)%0`=9S%pt;1~%ngD8U#ZL65g}A)caSg+No#OdgrrPcV9+#oInv`yIjEA9XJWTo8 z4>1H1UBt2Shi7Xz9jZ`3>{c-^+XM8SCuLu|vK@b;(^z@pQSp3I@sZ``J;4Rg=&O}E zDrrxIbpUAPCuze-Tuy#Ni7J8yC|iot7mjzl#GI6Cv+F4%WPwK~ZCZ`e%g*OGoNV)| zRL=<Ow_+kP)CS6NtPBL1kP}w~@#AZ%*RI@>cyv}1*8G6F1nx$pcoIJdtPNYQkX<t` zS+Yo=xd+0*Zz#|QPPxe^B~22rl|<DLC{&E?*bDH2er5!Y*R+>qTK{BF`|eja#N262 za`tt_69>bVVY@3$KMh_93SLiIbaWYcX|#xFfc=g>+eH=>{cU_tc)3)#ZrLj(NMF0O z$X&ZmLhEbnJ<gB~=brpdQLU(Jej>``khGJfCga@d5+J%<;)GIDliSv{0A^|VJHU5! zJ~9Q4ZWI*~UYf>des+`d#EvE1y3tZ(a+OLd-v@3nN5-O8(KnwyxXy!tM&g7YTkT`s z?WYbB<hmq<9T!fM)W9)J^fY$xu*pbvgL!#b$=b}wDFOK@hT6oR(Zl`l=j!kuXj%N4 z=q}otn10^fgj=`%HvhpenT=KXXB2tHPTJV7+bf*U>0O^fl4)1axt!5T7gfG{8rUJp z;z>4XT!gsar1*-R?-)1DX~~0yXiEl$JU$o(JF~n1*k<fw5jhVxRl7vt@v^GmUm&35 zrbtvC^VPYo(bD#inW@=J&>vCXwi+S3EzAYNRjKt13G%VBP2%mOnZYIHU-#>R3GpQ` z?qlIGlNzv>Se!>Hq`r3T=~Kb%_!2~dL;i~h%Er`eCjyr#RH5Mz3cANpxYK~|W}`K} zAr_6cDIvmU$AXJn^=xRmoUXuxb=gN<Si}BY<)%^+fCKH&GhElIHXm;2NkuKBvAb&E z?nb-cG06VKt)9}1rL^wpUV&`J)(W>D@Mygk-qmx{2G2KPm<~($d6*x*>r&<uEb{ml z#W%Vnw?LOvtR<^#57ST;i)>i7qiv6Vn4r7PSCm4u+3G(oMmP&4Frv8vuu>LyUE44w zlN;5E?MgW>UR`bE!uc#8d(0}0?UK9}O0Hl(+nMj;JiU+rq3xe7e8g~aYan3;IN^1F zZ=&{=|L@OR<Img0o%%n#zqX8D<1U-<@psaO6F0CPQr&78BKFRgDjzOyz2`*G#UBLF zyUEQpI3*v{Oap)K$V7G%GMI<#<(t$pau;O14)N`l<nkKR&DItv**b}$vkrolfe#%f zgk!m8ko%k-OWOHxzUDuf(HfbKh9^+6&f1~s8i4tCgP_jQf`W#)tAZt0YPDTmec92> zZL<=YK_%{wg{E84K-HMxpz;$E)uabc45U~D*%@9M;}G%_^%xAbCtybw2h_btOC_zZ zEiks3=j>0x0tyPZM8B#f^2yx1CUy@Fj5Z^rU+5eBw0J`vxJDh4Zf6xa8_dLthw5JV za#$ZIG^BENy1mvn=zUIj995KBOvdnG?y2X`&+B=)Yq|Ti!ppxg%d8BQd^H7287$ze zM%e<(+3|pRMoEKWJi=52rG$;nxlXAX^l>|*s(b40?0uoaxuZ&g!kLeqaHF}6bo&lZ z<+QT1YJv*0BgS=-nbw6cjB`vF75IDZr%};1uv&UrtER1BP&~@Yh?&mbGyujq=6DF* z`HYc*yWd2r7ES5O5*a*IE*cZmjXViH(rsX6n8SeUhYcp1g~f<`A6l}_m|R_2W<}|~ zQtYz}8N!S7BI~sCF4M?3{KCM4%<KY64Bv%T-HO<mc@B@udNZAH#L#=oCF3m$&uoes z;X^7|5Q~?s#fAXrf6vzcGQhlC>WDP29xbY}v-<pU{B}p}3q6iF-M77HCJl0vxmXS8 z5^ud|Xd^mYY~taDSpf<BEADW|=IA?4DM}<QS%dge@0;00!6>{3G{m2Gi9Yu8^SM4m z5p#nlk}|lWQLIiq*YOveV8#ryStRN$sgh{A-0QM`lK9n<t+BY8<;o9>FBrCG$bxRn z{$XBQ?3*bm<Sj$dp+o^hH)=(t9y%(Hz5l}%P1n4tRWsTzX0fyJLb=r0Jl2PkgPRc9 zJClFaN-rNjH7-)93xk#zEezBYn=8L>_zW)bU~ng1mrRq{rx`AsWPUvPG*z0$)YWI4 z=WWTh&gO{`V1=_!f93)R{SGKwS{+VJ{QtF2wPQ)+0`QbncINSK(8oA9k^W#zS@_)v zdP)C@WtR}75~_dZ@%sz=b|c{J>UjTCR7r*ZxGj#ESBDGdhf2H;F2P}vj=bxH{zfGE zJTAXV%-~W{#=4Hb)g8;38CeZh@FX(>7nhbPb@}~X?T-6%{}=w1Z@E`^1A|le#jd|M z5>WunvnFx*b7>09Y{8p@MZ-Kn{W2jYFINsyaLC(1J^TdVc{j2~67w3EYb-|0&-ixE zyf{~YkI~YfZVwE9OfT20XBD_xby7iu-c}?h>B{yUUOABe6!HLt$=1bVc&Wbb(l5%U zP%YEkjq+fJ7H;%U@-pmRwH=T6)x49mFZq-JK4=G;I_zYu^6+zbRo?6#`W)L(Bj@(_ z+2CdL)m`>Ni}rY@8rY%p_4U)!kOBKEnP3v49q<cBn3^`h9=dt0<F)|IT=Kxl(a-DI z`ESI_k!OV1?0gn}gJ!-P244qxdoRxwNtiDpy{2%il#9=A2Cg`4@~m05X;p;xJ#dzQ zJfy`XU!!!-gW(0>@UTh~JpP6Bj1>iO7B6wnF}HS@o)e~i0Vtao4IFr9gMWCt8jCd5 zt?>iIRVc!<cmdPfi*n|6PaF^J-ruxsHS?>^5nFg56&#fWDZCn0ep0!Io7`Y>f7rq_ zn~4G(0e^XyE%hK&^X!)B(j=xiorJ(#O`T(EB%i2NOgXsu%i@Mk9hkrE8Q~Kfk*gN* z?i&#LUiTjmeA_06e&fA}Xzi9ny^{fC6=1by0<?zi(@{}vpI;H?Iy2k`SZA4fttI<= zTf9sK`a41wS<9y|yge1+xQ1A#Qk>?}4+8?)R#xAMYLr7f!PegRN}XNhxXM1p36vIQ zd9O3?kb7x?2r&~Z9y03Wh)&n?gfE&Fvplri5w-z4u~K1reDJ$rjn;E=^Wo3r+Kd=q zsJ?@F#e%iNm@=$w-d2<B<NE~~#Or)(I-4bX^Kp<|rl^VBe34RacqQ-vLjxFKuSZzg zdb!Ts9vGE<jm!NNsgMmB{&*^bpy6(QuU?PW>#u;@Y#g~McF8PbqlV4K)ytz7m1I}r zpz{7PZRX|VRj$@R&VPxG%x-BsIP?Bq7yiltv~s3n76<(1<%?)*=@O;~!5+yjwXj_p zTHz3hyQwM1P8(Sic#o2}(CDDMDSB*vHJ~5DKKE-9<hi4IO#<4*JcP67J^<z4`K9Lt z0q>Y5#t1xkbbqlm{q+ZC=53-XiWP9n`_O-hrJ&=<qWXuj&XY@-ugj>$-1`{l-Gf#x zsuV2M*+d0$D11wx#x#XxC^Aw``)JluRE9(;3x<;{VIj4IPz;Pvb+OB%T~uI*N4lt~ z$HW+^Y0ruj9NvlY+>sYKa<DE`l!(+Caa*_y^GE8bu$w7=0c@2g%xtjT_%U<gR;1Ax ze)O+%vfA!uS=-{6Xu9+jWSi};^s2KmEH4%~N5peK6z}~ebIb3~_ECS9j+=VITE|b{ zhD;v|@_*kbo4lAA<4HQ^%-}a#p8Jhw*GGezc)K_{jaub`PHt2;haTI`v-Ps#+A^?h zSd0v*@iZU;cpSz5GRp+1vag`H!mYGs%~!+54C?+877q8Q(rk*hpsUkw>i|?tT0va( z97c#-i4~xfx>(z(s5)vWJF64V7m=e|F;3)VNO$XNxEoSQ%8@~3<<gNRp7ZV&2KmEr zjhgg*K=z6`zjwRFqYUS(4yqU3(Ud#{ef=AEY;Q%@Ym~*XTWA3lIW&g+C6YxrlzY3t zgWLHjJ+*)XOJfcNq}-wDZ5%P=0q<aRKIwld@2JIjbAOq@{jV=ROk>7{Im(#*)t;RC z`<`elsypW5-4}Ele&sF*arsB0ZTttLbt?6FF8;#rUwtI;kx3xqX*B*`yaSPLcM50` z?#E}qBYS6Y^mipsnq}c7*n9Po2IFA~RO{4sk=y;lQ;soZ50Z-&37OE2RNtxnx9>P3 zvFP^bX_=5kr&TkST5XOil@J2GY@I7>SJ=jilqMD9ds)}Lkh;UcIOf0Etka#tI{0s^ z?A`;9_1hQ8qx*{E8%8bG_%PGnEw(Z8UQHy3O63F|+|1%H0gK1kMwn7XIIZ7WoIG-U z-Em?n8Up|5=2E1}RRXsceAkFCj_myT2~vzXE|8^m7RK49K&Z-CuJF1xvQtEGiUrk7 zVm<|m5r(f2p)A&}kR?ka_TS>Vd+M)piap@$gRt<|F7)!1;|poj8QkXWIDE|92t zWvnHJ42T_YU#OB7e}(z#uXW$un&}~dr9hGV=PQoQD~zA6TVQ*pBaseeIeU(I&@is5 zB%g2a!J)ydzC?x^aw3r?1f4fxUY!ag!TjfI&pl6%60Roh15x}7i5>3=<^JAio*p`A zSr9}4s#t{wr38%h<+;#c7cv7*f1WGMg6A*;F5-2@xSzmLnh@mhd)GlNj=K!(@cYN% z*MA$b!{9{iK<*N<LuCWV!-S}ac*!BSVX0zNGC?8*y8nHNmGggAVV{Ed&yxsKIub$V z1Vmr9w(jJwNAE_(f}8sapEUV^DEVH)NiNdbc#t7Dke+!lCg_051rF#VKiYwL92W(n z-BJ+K=Cx3NsuK_zj@XCDwadRPVsW~Y$zx*s?Y$3icqC)ENYJJ1d^rIxAZofgVC)TR zg!m^{cqOXDXB+He#j-Cj?Cba`O3}vlF$U@152Hmf#VSnL!c+--F?<j6PR1~*ozY~C zdIm^gB>K|_^H-_JKl33`l0$y9T_kWKc27?#o$F^J-YS%Mh}EvucJ*9z!~sMowDYKE z)+ZtCnNPxQ!5Q=;kgk}$Tg130blU}%gC)36Gb*%<8CGs8$Ta2L&B$<+aPKOeSDXRl z#Sp}4?G@owD)x)@^RdjB-4?9OVc-7~Es*(nocRBu<q9TDLO%W9$u%g7{1@CXsVjsq zx^snQ40Z!H4)YGcQaFVdgrvAUzMt?n^iIa_Q5OKE2e)GB?CFO=kTE~lv(>LUQ;^^@ z^^(*%O=Tz%vXpoN7;vLEv0^>47|G!~dJ3>JodIfk957~|{SQo46dj=oW!Ato<nAFj z4kE42jZkxmPAu>opXuivr_v%Wh%{tCcU5^{E{PB$G^iv$1S(&Kn)Enn1Nw2v2|c#* zfl5@|2d0S&ge_E<>aLYMgdJFQ@<StTafP@dFHL?T`Wd#FL1~8(+4xhQ0qHU+YFeys zuTKig!qwq_Ei?B1vGT$?Gkpv6P)HP&WGBtA`2ML!UU>=yDQXIe7GWyW#~s@E%>erp zBpn?c2<t^EGC9>tcSiug7PXFEWN+c~ggiEqS<J{<xvz_zYThbEwbuz25)G6>t>5H; z8~5;GFC(UEH6#PBYQapeuvmqzhMp?fnCEgpEyuCTps-qn?m}4-61+eyBcn^3REMQC ze&u=E7!o}|ZE=V`MND?&@*S#7<$qJXAX%LRsWReioIs645bQ6!uxWFYw+J1X;Q2Xb zgcuzInHOdowmjr8qF!@4xCkAIU4Vsh;Z~M_Nu@x>*Pi?~eIaLG_P8Vm?gy-gXXh?V z59mKmnv4@!Qo!;v<E%pQAb>s7Ma3IH+)`-0zliehxB(32*BFc%%K<aym?=z_^9UL0 zFO}ao2s4iV6|ADeUlxK4O!~M3kmYDn0M?{BhCC#L1vk;T*MD9-5Qqz#|EbJNUEgIU zDFRi{`$Uyigwg*B(kyOr#Zwk?SgN<N(x2_nt@dQ;swXxGE>-%Mg4mLJ{wJhly^Qx9 zmm_E87G!4tr_HePe3o+qk2-H^aCY5eCM%UK2l8#GUYh)AiOmM)Dru}>BXKczR!dl% z7T+$Mw^&#NtgZWw@m<;<_L05_r(ooPcNQo2+LJcpy5!#I=}_L!fe}JF>JH9-XE?LN z)_h@<Mm8Th)D<xEB(F@<#n^gtV&`lh<U6TdnH97T1cBGBC^a)oB(x<WrR*=7AF66- zo|M9PB+C}S*nxYcuZ{7ru8BWZmDd>gW>UO?ysT&5-C7Z#Dkf~0*U(fPQBC4i5unKS z+8_i&nGeCYICLv&qi&OFl8T$~3xWBVVDxcfYQkpc=qfVaAkvbYA72&RdiQc#*5xVE z=GffsXQe(~??}k=yPwDW<39Xb-N<jq(xyb$i<MIHRv;S<$dimg?ZSnZhzIb%U9ORl z11}3LRl<y1i95qA1YqM>ayMH>(I<?uG#h&ttZUllt3H>Im}7iC?cULZB@K$$-*PD~ z>=x)|tXZ^+!OJqtUs~Z*yuX*+Xpj-iP7cuzoZDN1RtDj~E=eKds1eAZ%iQtHK!D-} z<uKa(pD9IAr%-VuyA?6X`k-MGY6wi09A<^&RP&9$>$Q=xFQJ4w6uN?<&S$0~c_RZ) zB1yC|aRKNTcR0_gLjQj@MBJs}{o7N=405j;>Es95ht*$!zk22tc=j4LM6?V1gW%<V z_Dvix*=|*`+2Nlk1qJz@=c={`EJFV10zI;S@hUzTU=L^iAusL&p2T~QQ4iuLv2Zhw z2w}2l`OZc9#Bi?{Oy#loWwq~c037qDRz~-9NIzHH_2-cA?0m?l-?O_7OhfG^aBS1S zPSL}){|IrWL{Kk5VH||;$J%<@lI{p4{WViU^|~h?AwD_?`F8awOdrKVe4&T>)8fXr z)~NZ%mf<|8az2jv27@V;b#GH;9PonMFt9&zQ{0iKp(jS;7jnfW`N#jyU5D@0V=w0Z z2wmyChdyZ+?GiL)%Y5-DzNe{u4Igx`SbAFc>k<X3#YV1aB$BM1+yWj#_ZU|1(QWY# z(e3BJ-E<Gf?=yEG5g(LSKyUwF?q<?3o8Jv{O~A6V5id$!wayZRk2pK3LS~;C<{O<r zKzzXa%g_m?2^|=3Q}3yXyl{<fZ#PmlQ(dge;X<)Hz2C2{AosXc5DcOG(Zn?qj6l{i zI?UbB5YjPkT&bm%by_)5j(hHm8RiFf1%!Zz*9<6?<UNp<mX|_8?EBS+m$c|*4Dl<> zUBNKi0^4>MXBD%0*{Cuw&kZejEX1=kjGNoZ$ufgjXw4*$oeuDZKm|-nh`bh@^MKw4 zFnqD%n;rEWL?#i$FTQY-^<8Kj9$eG3P#0CC*jgnF5l8t2o-LgX;JWFYPUXOk5BDr3 zLpcmpa5RpP+f8_3Fk8Z*+FvucKT#;_*Q_~g48=Q%ojO!KkNAi>0v@H_2n7!shF>Vl zi+BU}p=vr}PhJw!;x*30@Cy%z(I_XS1VP9RMz;qLp-53Tw%JSMUKWqKsnKV6<iMu1 z-5;_+I}Bw`$!Mvj2C{#f?ZRk9!K*2hxM&25k!6YqP{rko!o#nelTb^!5LZ|HaiF^F zuBo`9r4;GBlO`Sr4PqxK@XB%>6kf`54N1ysq{tE@x!a_^)<eu=n$pIeIAeK{XO4K? z4Qp;jOD6)@^@hwbDD%eYL2Vydv|hryxS49P={XSrMi_VS-hl1BdGCl^kH>*6QHV?L zukcCE^^Gh~KLRy?*|Z_!D`*40BXA|_Mk^GX0xqEZZTnTx%KgoVEg%4w?CVQnZ6pqO zYpB=TWs<ImZF%cA=tT~nfp6*0vPvk5-+w=)>@kbcV72r&k4(q<>dJ`0_fE)k>c}Hd z)zK}G3W1oAMaIL(mxscb)k-4Q4J4YViAviYE#mHNGIGZ*m*(T}<Nkn)j#e-F2}-eF z24wSXQs%1mjnjqTzZ>8QAS7I7u%yT!x#BS9IZ{)XCuV^jGXeXIBSHEXtI@}+QzgnK z%s6ZMTYkegJ`?f7BnHqAGwU2|8w8&uDtHZ!9&M21ouZd_bjzt^Zi}_w#6Nk;1{=Tm z5ghv+)9@uKVb97uL=&hzS8I>LMft@fexy+4|I1&u6rY66)UU+>k}xdES22R-NhAqs zyRUSt&o2PuGj6shdibAR<GIC=M~vnnFG9|OCwW_f0i(w;q;5ZuTzGqx2JnC$Kd7Tm z-3aiS?~{$3B9uc8$yV3`zl-w!xBU=%-CSqio`1+FwE|Bo27s!>Pu~CSi0`kqziW>| zslRl(?kM`o?OyK$M*9bV=-|Y!Y(M$IyGClC{y(Vyw`NEjfA5kbuldHX>#XO{qg}Nv zeszb%&ze6xg{!gs^ndh14=&CdJUe{UOY6BZ1?7W=?3*1sCoe~>m^0tL#~(jqm#M@v z=|5Njf_gp1F$$Ro;B*21t1ashM>aAjIt3k=_jSWi%btwS6@++aRh-ROB@q$?oVwjw z#j(8HRf+VN`YcG7N75EdutMPUuPW=UMTlT~s%>ozY}%&mokbrdGl9oXuiLTb0dbL^ z!yV2N7({N_GUm5=WO)%u_w$2{#LlNK%MOppZdr225|grz)3$S(B&y#7%SVyq6dboK zoNswhA@v0lxkxzE`!1nfZVNq4{*H|$@up6xR?{Qe-gdxwuV7j*nK0Bn+ph9lR#bgL zZ+(<>#oIM4RM)hBp{<%g7#Q}M)2U%WcCl~>%`1rxq9$rZ|E9JS^BeN2djUhkC&Ib^ z`feOiFWw?Q8aM$rWWH)Tp@bRtjyd5NrEJZQK7QLh>bUq%!N)CsI87a>rFY>tWQLQP z+u9^>>LJhb<mgk-W$@e85;_rGurU3QV5~9p;$vaK0aNRBw{c|*H|_{wrL|a!gja@W z?}K8@kwDam3Pk}(2qFT}=wQi|%TWO*DxIpBKhh}8v)fK8S~@9VRNT$U{%EuVfD%YD zCX9!8%@YEH1oa>QgO*0K{}yaJ1$`NpHI@BJZXvHDvi<VrCl{e3xDdlY(N|CU0qnq} z6pPo(Ly76yi#-QDK+0BxCMcgc$qVEuQ!EWn%k8{xSEXbU_Cyc1nZX{uL|X`tC~C_= z2Sj}>)jq>M3Z}8E7J85dN8!8EmCku;d=OauQp8GQr_s}?!z9q3#^{YN1PI6OZdT$S zPc;{+vdu}_Ul(_AXihffc8O^yK_eqgpC%W7vN5%Ts3O?!0d4}pWK?rWi&50Tv8C_j zp*ETYa|K(rB~(7?vNb`}mn*;;{;0wUN8yp&GvXUG`iTSv{^@YSb-rq#n<6_KsN)r5 zO_(TR;7gW8O}mV@iK%y}L?g!V1Uo$Em=$?)-XG&2n@U(nXo&baN@I6vxr2a67$oXX zpryYosXv&JVS(eKwc~lXmpJo~%a$V*{4p<v8Hfq!1fkR2A+T~;z`Kx{VW0uQ>%u_v zo%O?(t;}&7QNUJKQkGUyn>k~?W>o82soi%8rL*C11}M|S&ngc{5(CvB71!J6Q&yh4 zzpPXz$6NOfaGLu^$?@v7l+dU?sck%Qe-~O@yS263wBGgHKae9*QKOxVHk<|S;r#n( z$FjoBu5DH;g`sAGs94@lLcpKWXFBttGh>BD@9~rlwjRo36Gl`zlFEkI{Aqa<*b>{> z#d!5{?IRlM5!DFV3wVJ6>6MMadvxn=aXyh}ka&>M_wac&NAdjwWV;1!^St<a9D2A% z+xLUJko-sq5d%$`Sufs*fia&#>fLmq*>vKX=M1UGYL}C+?sd-%pss)`_Dyrj5br5O z4r-pR>a>?lN8`bKPj?KwkRZALAd~Mpt+Zq>#He>SAEJ`|HNtRw->rrb==JzfLsNQ# zQOkV^qk4ld_sO(lRpf&g)8B-<sBUkeHyHhz2^nm~K<$bg4i%=uqlv0*JHHm<FC%kk z+Uua-;x0&DfzX9)?KYh650J>yNg<jsaChj({T<pY*|A_~5nx9TgmnSRX#VM#;W9y` ztZ&OZne+PN?uA1I@Ew9J27kVo`^1}6SG4^XmNi7@Dhb_42eIyw_ve2@!>i(D&_)Nb z@t0PVxJNbedVBJVzKe46j-@6dNU>0rrz@RhHQ*#4O%Aw|hN_zD9ki1_P-EAYHAQoi zO0|N?<btssZ=ynHdFb%KBWx)f;Eeclmx+t$M7OrOZioK~EGKgcmli1FcZ4+E$Y^$V z!9P-g97)GX!+H_y5a<#PeNSoR-CR5+p{s}I8gSwnHfMCS<SDV{$mNJn6L!5)%{s}_ z5&$7Y!3)nSXc%vz$~kbYCMYR^r9^S$vlAwu9T#E}&5y1zRo2M#!JV~#XgdTfnv<}s zCZ;qD&||IE_G)P(kHv^2n)!*Bb}rDQG%`q-739#OmJ!nOxQjYj__YK5<AEg4KyUho z{^-Xwk?%c%XGz}&AbyO?5If1v88Y;c4zT{aAMUF^MrDn;`(MDMzsQ2w?hjh{H0(xw zx#le<7xMv2*z1&%w$Y=5wH2!uXs5hFJn4M-AGqpQ%&-Yvnd-%$ZbcQxnh{MX#g3;V zbthd0Bi2$aZ5(xLbX$GYPUK*rLIJWSAqjX?>==9TyB-V8TX$FIs0+$taosdazV>W< z1YDY+Gl~E$Sm<r=M|ed&pdhCa>)Hmd3IhMx1<M^=W8ctJVQ_DBV1*j<P=ZlolXT!! z!Z9|EIc-=jNJj`{oIP|$W)KRD{m%QWEEEJBO9MJWal?05jqCHHKgqIxJJEDJRR4ai z37*LrXH4Kp$ic21asTkKerI#~IixWfWTadooABc*(px+|PVkb$IrrBoK6T7)y~Lv5 z=_c$l^jzV({u60rxJ;B(()-9Lbkvx->3tLGh7Fzo*@iPN@C*zJJUajt@ZT?q=S1LJ z7tEDzOew7nS)f1M*EgfS;u|BDKf#NomZ;3zP^Y2nML`<-naLZs<PzD<S;mF#VUm+0 zgX`i+t=9ZjUGK<vVe?Z{%gT0<ilAw-**!?hgZuB~Fjg^ajxp!9&sz3}Mb|5upRHUU zDjYyX?jgZ!7Cypi=)vl?1t`r2kMVuF+prk4$pOxM@{9ZsQger`XZIM51E(4?Q1rwN zO*<u=37$|Z!c<y#`B#f*i>w!=A4Fr@At!Ls5`7s4o$wj^sX2oK(ym~y#$%gVP`Wv> z@{$lrf7<^-f*WJ?QFM5Lx2<TGSyiPk&$H~t4JuPZRVOf+5bn?#eyy*0=WgQ3G0Ro) z2#^$cxQS^Rk9ur2E}1h%A;GLgj%9AzB21*mhKQ+h^-JxbwVra2i3$OpD=Q@s1sobB zDw+sB7uaGMT&_B_mi9x*E{t})wE%*hfXRL*74wU~x^GR`Hy92n9`k{BE`IfASJ%9o znw$)Nlx9YFT5*KNpeivfvD-^<h<Qq_S%W9poM6N@MhUH5`((}0k=5q><Uj2vg1}(b zbufE0RB)>Qt*<RLj?x80Ra$7aZ-}d=`_LBnj8eL5$Al<3V#o?Nq5%bPYEw)kUWQoo zJyy<9+hzAK**>+^w5@epxlcLG(y<f{<KwEpKM}!>Bi3T#i_awB@tPASK5iS3y<&q- zPcrT!dLT)N3YBxXC@N;JD$;Cd*tc?K4!OCNB%1dKQpRZ~>!Jnm75C(=TuxKK3c`-O z`Y9UA0SGN@DY=7bPs9IcfPf|6I<iy(;B0wk#zxB*%0XhJsq*RFZs0|wwW-DQ&J1A| zV^af^|C8KDPHs%LLdx7#Nz~{s|D#E|J?JuU5NG-`-?2b6GE}ySvFu$T=bMlv+qFMw z03|L9BTQO~*{ghB6O5_aVl4&H-e$)_1Mu!eW=3Jr)s6cPI|OvLxmsH4P8GMxGQL2@ z>b-Zkh0}sdbhNqS+oD}VQ9y^)Ay?wZ<J39b;5S(^G0xWIsm}!su@)r=(K@evl{v4O z>GLG*nSJC%8jUT}5|WwoJoqS<pJs+FRNp(-d)o^rA3}{YZEF!H4l-9Tnq3hPrT^jg zt9e^QqK)EJI2<U4c@UOw>o6lxqQUUl8l??5zjc2>En(2RItHZn2qHyZ!~S-nA#GTf z%TZ;Q-dt1Jt}n;F%@cPV#a7n4&Hkl_Ov89RXDH(!fg!Oih_T%s;1p2>NEI_?ehcA6 zT0(c@Z!jkV<ry5Nm+2dz`MK(*Pdh2}Ra1NwZ*UZL!J}i(L<J>Kt*1a?;ZjbIB=hb* zf|HO`Bz;BT>#S1yOM3QI(dCI7;j<#X5Jz`8N4@>SMY%1AQrB~Q;C(j<=rsla@q55P z=;bM}jC?OWu(UBd)BYkh2vfbLiRB|dr2J8rIiN@?eQ@d;U6iB4?5hjXJhX+8dYl}* z;Jt$KE4xuI_~h~scQtOL5}=JK9ZlA9fr$dCjpD2@)7lNDVPGq?zE05_SvbUg5_d6# zWNe8f*vd8K#kF61KUt}MT;j6y_fI_`uQ3lj@S}$>H#zB2xI<U#+{EjrJB8iU;GdHI za&Q(%3Cn#BGJN`rTcXBy9|z-FSb-#RinH^c8}EL5C#U&v#X19bz&0k`M6>*aBq#E6 z>YV(S>x2sYufp&Oy&(YJadv8CoT;t1SuZ2SBT;Ul!0Kvf_VsNU(lh8(Ki=fzSM|FP z@X|kAh9S4eI26@4ReIB-%+A3}f`aK<iI18D*Rw?W!QIDvjEOTaW_g{pC|U5WG{n6G zhpOuf8`WjVUN%dNWF`omVDH!JM5`-}+Ea^PS?M%Y!c*ksyxy-6msc2}cW3@bXltxV zd1;&pJsH^S5U&RvqDpZV3E~><iJXL<LFdkAFzjI>!+ID76>W)QM36BSV7>nMe`H98 zqFN}@>=bg8D__^a+WR%Wk;ki#8MTUUin^m6J{Qqc0wLPoJCfeMB^V#@4rcv_E!3;6 z7j8trW-^rbzh<pn4Z-M<gHH5t6!!&ChG}YMGb+vI@+P#UlkY&^NT0wmj~W{LY^j$m z-HM{p7EEb}x~+k#rJAw7{9+xBSbdBXF4=t5@z8r7bO6`__dGNhWhtAVws-^O#8ORk zQLoFRz`amrQX(^t|MN$eUdK*2C$SXb8=>PK2eSnF!j47cU<kDdCS2y1a+Z7ofXa7< z8EVt)3qj(H?Qwa&d^9@!F5YfXsQ0gn&BgzyVa6N8YM8y;8bYylmpcYd&WEmAPr_b6 zJ^BQSHHFnz-Y`u^6!pj8;)z&1L)G|g#=8maPqumJd(ajJ7eRO%MhHD7dxO}^#sI?@ zN0_{G6%=GH_m(UlmZ$m$VxKXF=cDDUW5IPdyiINRT@LrV$?A8y+zWxHMyEbI`vM}^ zJiEVi{_c<bta0H#EDNgoH5{q%I}zluuU8WGT6~^^Gc(Bs@M6`uns&3@1QWJbHOvVM ziHyZBTIXduy>FypBhyk>Q{}Rv+nFFQGB7w^>)Z<HfOE-a2I&Mg?R7gA$lKp9_<^V- zRH_CP8Y<5+$s94cImFnjiq3zbb?CZ?lZ`!S``jp^s-^IIN6n!VG6qFqWf=d{*~(7k zP|)kssRTtCsz8HCq{~&#;Lx1?l{yYNtK2M$TuDJ+uWpiDm;3tX$|)5CJ>GiuBnq#C z9Q;<E=i!mSN`ePIxLl1lhHnvi!<l)qa&K9i@L5<|Z0A~$Pyu9M+YzEwTq}4#)YnD7 zu)Ty_0{aU;c~9}b(Gxu9$e|Z#{s|}Naw{keE7n?z!*Q(=7)n1MN&r{g7ea_|!-<^D zF=s)^q3uABK%&>-y(&s9lP*FMnHsZ|S)a>oZFqtq=%3JYJY$JB63QU57U?Sy)Nm{_ zr-*JJVbdvLWoEna{aU^$$B7ArPFbh(8mnw*KFRGw0-~CggL`i2p2@r!xAIYg55SW# zBuItGwMQ-a>)vUZ?8l9_qor&01qOp!2s|fNlo|crXDw|_z8O|v)rf_w1t8(1?mTFb z=BB8M*Zehf-T$0Y^+-n4Mn(;97L7<5EJFjSF4bC)X*@BN7jBwG&(M{_Rv^%qUa?%t z!HALi!AAvDMavnJI=0h}@SDf^=jf9FDCqLzz04K1@wgXkKnQ%zfBqVKg}IoD=X^Se zM7&qcW8W{QGzn*U(jqtI0kK?uhRFDuo;QOjGL2q^bnnL`^+-ZLv#~YR-l`ukKY@+C zJEz`#WCVH|et|&)U$6=7l;=qHZ{M!Arv~<ng(@TOWg@DU;LK02RCD<IBz1Y15*qYU zV=1U19RSBPDb{r-HWgqaN}1KC6{^bTsuvr<TM`AvU>Wsl0vmM%-9IMZT0B89lvQJK z@P%)nM;I0SYB_`G0<B4G-=~ZA^ruj;Z&Ag6Z8T4xG{B;ff69bYhx#(#L|i)XjYb0P zDAkE}!iJAK+LVFF=fKo1|8o{}Wijjto*jvWK=cfN`cGBMR&5vjt^1!_iMZ;#=Yd<r z1DRb`ImCDzG5Yts**lLKul3^ufq=Q<&<tq_&ZEUr`EBNq!5IY}d{Yf=>%W@VLa@#X zk4uAKC97E`pwOS^9}RpT0<0II*9Wr4Q+i1YWn!fXNA24(Rd$LeWN}yyvXL!d-GO#Z zB8?JLZKjRU>E)-9@!<&|NOpgFspKl}Zc2M0><$u%x+$kZ|81hex8dVUYD{8OA@u(W z<?18;tND8jwfLjdVU#J$)DsKtU$T+;wPMZuk{_~f{hvrt#P2bpT16yYvyR`ptGb3S zWUrahq`}XvgKc5iOD}5d#Bd^f{m$KmOX}@zm7ypR{wEMVstMV+3s9ASQNW@+!8Wj? zIk~D7^y6ufp5}c@Z<yyAQc=09H79K#+&zufk3h)A<v&2#D=l8Etoo??9zP~PK9L*) z_YeY7&ZD<X?mT3>ZuH-90&`<YII>;&u9k6AcskXH>}i_pR*M;64cZ1;yA6o|`N&s= zId<(oE;?(_kVfH8;h_*<L;(6RZ`X#5JKDIf|Le+Aq>xYLII$EIu83KfMHh?0=}Nqw zSkq!ZL4MSM(DJnYzwtRcc6lKpu{E7hL_g<`LwX&4|1Ny!d}o>omL3!BgNK;q16cPF zIkKMw?u11C5L_H0ww)~8(`ISfB&4dl4f>9p7mWHq5lkze$*GE<q|^Rm(%F|K0@TTq zTl5!*xHcr(-%-UgA{~nnwRZ<<`W^&L@Rbd%5*7b%6#0MQ${&e*Abc>`@HdDRD9HZ- Dq`9&y diff --git a/packages/bgp_peer b/packages/bgp_peer index 1bb1006..ab8d268 100644 --- a/packages/bgp_peer +++ b/packages/bgp_peer @@ -1,4 +1,5 @@ -{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', +{'2023-01-23: added support for Arista Networks\ndownload_url': 'https://thl-cmk.hopto.org', + 'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': 'based on BGP Peer State Check by Thomas Wollner\n' '\n' 'Rewritten for CMK 2.0 by thl-cmk[at]outlook[dot]com\n' @@ -8,7 +9,6 @@ '2021-11-08: added helper functions from cisco_bgp_peer\n' '2021-11-14: merged with cisco_bgp_peer\n' '2022-04-18: merged with huawei_bgp_peer\n', - 'download_url': 'https://thl-cmk.hopto.org', 'files': {'agent_based': ['bgp_peer.py', 'inv_bgp_peer.py', 'utils/bgp_peer.py'], @@ -20,7 +20,7 @@ 'name': 'bgp_peer', 'num_files': 8, 'title': 'BGP Peer State Check', - 'version': '20220911.v1.8b', + 'version': '20230123.v1.9', 'version.min_required': '2.0.0', 'version.packaged': '2021.09.20', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/metrics/bgp_peer.py b/web/plugins/metrics/bgp_peer.py index 21c2c7f..57b58ff 100644 --- a/web/plugins/metrics/bgp_peer.py +++ b/web/plugins/metrics/bgp_peer.py @@ -222,4 +222,4 @@ perfometer_info.append({ 'metric': 'bgp_peer_fsmestablishedtime', 'half_value': 2592000.0, # ome month 'exponent': 2, -}) \ No newline at end of file +}) -- GitLab