From 2d4b137827759a8c77a904ef841e4f65537a316d Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Mon, 18 Apr 2022 10:27:13 +0200
Subject: [PATCH] update project

---
 agent_based/bgp_peer.py         |   3 +++
 agent_based/utils/bgp_peer.py   |  13 ++++++++++---
 bgp_peer.mkp                    | Bin 9990 -> 10089 bytes
 web/plugins/metrics/bgp_peer.py |   2 ++
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/agent_based/bgp_peer.py b/agent_based/bgp_peer.py
index 36d776f..a4bf779 100644
--- a/agent_based/bgp_peer.py
+++ b/agent_based/bgp_peer.py
@@ -132,6 +132,9 @@ def check_bgp_peer(item, params, section: Dict[str, BgpPeer]) -> CheckResult:
 
         yield Result(state=State(neighborstate.get(str(peer.peer_state))), notice=f'Peer state: {peer.peer_statestr}')
 
+    if peer.peer_unavail_reason != 0:  # huawei peer unavailable state
+        yield Result(state=State.CRIT, notice=F'Peer unavailable reason: {peer.peer_unavail_reason_str}')
+
     acceptedprefixes = peer.accepted_prefixes
     prefixadminlimit = peer.prefix_admin_limit
     prefixthreshold = peer.prefix_threshold
diff --git a/agent_based/utils/bgp_peer.py b/agent_based/utils/bgp_peer.py
index 751acbf..f48d764 100644
--- a/agent_based/utils/bgp_peer.py
+++ b/agent_based/utils/bgp_peer.py
@@ -9,8 +9,11 @@
 #
 # include file, will be used with bgp_peer, inv_bgp_peer, cisco_bgp_peer, inv_cisco_bgp_peer
 #
+# 2022-04-17: added peer_unavail_reason/peer_unavail_reason_str for huawei bgp peers
+#
+
 import re
-from typing import List, Tuple, Optional,Dict
+from typing import List, Tuple, Optional, Dict
 from dataclasses import dataclass
 
 
@@ -27,6 +30,8 @@ class BgpPeer:
     prefix_threshold: Optional[int]
     prefix_clear_threshold: Optional[int]
     accepted_prefixes: Optional[int]
+    peer_unavail_reason: Optional[int]
+    peer_unavail_reason_str: Optional[str]
 
 
 def sec2hr(seconds):
@@ -184,6 +189,8 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]:
         prefix_threshold=None,
         prefix_clear_threshold=None,
         accepted_prefixes=None,
+        peer_unavail_reason=0,
+        peer_unavail_reason_str='',
     )
 
     for key, value in [
@@ -194,7 +201,7 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]:
     ]:
         try:
             bgp_peer.metric_rate.append((key, int(value)))
-        except ValueError:
+        except (ValueError, TypeError):
             pass
 
     for key, value in [
@@ -203,7 +210,7 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]:
     ]:
         try:
             bgp_peer.metric_count.append((key, int(value)))
-        except ValueError:
+        except (ValueError, TypeError):
             pass
 
     return {remote_addr: bgp_peer}
diff --git a/bgp_peer.mkp b/bgp_peer.mkp
index 60157fe0307a7c1b816c097bd33c8256351fab56..c86dfbe013fcdbc381fe5fed85a3c79c87c4e48f 100644
GIT binary patch
literal 10089
zcmZXZRZtuX&}MOWclY4#?he7-Ed+OW85le`2~HT?-Q6w0-3jh8!0fGmtG2dw`>7xL
zwY%$_k1_!XX`9N_3I<|j?`H01YwN+r&B@L6U-7d0aIy1Sv48*O26Y*H>9NtCcKU8A
z2EY8Zf@vnzF+S~5HqhHiEGgYx&8o}!WLn)nNVgfzP_#&qP08@K+{D}bpm#esZDR{c
zF^n=TUy0k(Cw`iaX4Qe01Sk*dz~5~_67u}xE8?P5p9VyF5_0a<3EuGrCwZO<7MNY{
zcB!{5d3WwK%=+$7u^kKp!!kG)6noqubZ6;D?CFL?hOl;~a~Ey=-xzp8eMKQ|2Mld{
z+_ytFLo;-$E@OM$wk@R7xi@}f{t3gVu&mxEqd|j%VIMEY5vFbw4OPQxf+9a}ZxMZ-
z$7}8PHi2s#Mc0U;Z*27>tXb8I(<;4yZn{0_ycleekY^sx3k;fS2DiY&t_#x_C@-07
z#_eo>PPF2Vgzr{MO!-Y*T75TJ&u0B;SWpyxDNzdtPr8ES6<r&bS3YKF*&;cTwmerH
zVG>KWoTIr`hCc|ChZeRzteSW6-?e^sen98lpHjHhbld2$Du3YC!bo^Ame?LzBhIAR
zU}HW#(QRB9wkt}DBwis0{CgEe;KYgwbl8jQ#Qo{Y8og{LN@L^Q7$#J5S(FujG8QQO
zUZd4dvpu)fUr2-5yzl#9=B3pwaH4bwRO>GDDy63o?FBry7K^bpd8E(NeIVx$wR@^t
zOJS?zOuZ_)KV$LWaNHtSJC|yvB2tWa7+7Y>{M*1Z1@Eedew*vDz`KQ*1YkdAzz+>x
z5n-YFzC(9<7GtdyWVKpHuv$OQo|M=^^*~$LTlW9zty+RKM*-$O703`mH{W+IeZd{C
zeH%g-fA1jzIS}9B_dXsAk-QT~0sqEAc_{0{#Tle+w~66tCt`=o7D5noWz&5*t&+dM
zU}mFsG@Q`S%L9eyCCPt1ct4ZG-$P~L5;0gkh}P+e+Tpa$n=((D{e{_c#w6ZhMLkhi
zGK63=+%V;GmrfC<2oxild&k+NDvTwmu7G4U>$k3AJxHsVf8zzkx5Lb9)w@LfaE4JB
zQFcu`;RJ}O9)hGU{bC5>XBl*@gFK(LRYLX@`j#O(G>#=N#?z3kq0gch-%#^LP@voD
zCEyeB_qJv18)TyvLJYogIeSg_PF%nF{KXp#sSBJET<^M%5Tg*SAE70Jm8!cH+xW1|
z0uIF!Zep%-=Unyn=gS{}Ir0i=6jyjS>=Kx|lQ)I#-58GZNA`FPJFqG1$J{1HUHT=#
zfn3ujzAD*L-BBF_HkfE}LYhLsc-d6G#Htp#N_P45qPb(N`HMq&P0ttTh^WJlYa@5F
zh^YHD0>@I*#0HG0)A9D4T{}vu2FHAh?(}CCbuyA_Px5*0_0WX`LS6MgL2|{;O`JFm
zxh@e83aoSqmGH6>+?3`0&GlQqccqtCk!2DP<|E;uXL6y{9Zo0jgMG%<xR000b_f)q
z@;^KRK9*j=-+a8DzJQNT@9s`7-c~|so8YTiMh94EY_@~;0v+bswGI&`Xq%;W{d_(A
z-*NGT-)<i+&mQaM37*~_-YyRR0eZyyY!oi`Pw(CyUOqNTRD5nf@AlvS4clD+XdO)o
z4Tdh6y@_u;2XP56vYS8pqy@$#i!obs!2LyCW1BLObMR6oqApj8;iHd3yJkd=@uOOW
zH(rwwoQ_RIOdsYB`QhJNjcP8y7V&y(KRM=y14Eno+VexB!#!nVz*P1YksrNp&p%#z
zNN<LJ-YjR;k%1Ve+V8Da&d>_0etus#C+eJJVC;aZ3PL%U{$8bOS;Niy=RrG(<#B4^
zv4hN<>%j%b-S;X`s-v>j+7Fq(r?=Fh_!O!j!FG{b56eTB8je-1*x8aC8eR?7RM(N6
zcGyD>zly5GU~3TQhE-|x<A?WK7rDYUF_Z=L^Oe2tyd0O|9?yJX|L?%%{4QLK64va1
z=P4w%BZ9|U?-v%hh%HQ$lr8}&7%6u#C%pb_S#WA+NUN9r=9CeXpt^Wxp@X1^v`Tsb
zt}kK==9h@itF9$V?9r=rF)-Ap&o1OjT-57!PQ_2u&r$>&ykRNh(<zv%N<%RQYu62u
z+{MGrH~rNu)InBnCYNgFoeDB~`z!Z`FZZ<4Qf<BT3s4-}m&MFcH6gZo?cJ$cu)v%l
z5_5)C-avt5h~Khx)u|2EEd#KA#D{M7boPph1;YM#G^}VGjFeswxVrmk?TrZLz%Ub>
z&04wOOpehS#BrS^ZH`S5Wp~q@c-P-1I?ngh)~MaVqG~4(iyX~VaWXcKb?j5P8jO6b
zAN*T7a~8J~>DW)(pc_0=f|%VtJVc+I6+#oT6i5EbxdU#18`0tj{n^vij&Lt8dYc@k
z3A1%?gIDI}>gR!s$*6@VzXnEJF~8G718GGRY$M(n|DpKSf34`-M!)8e(?VJ^XBCca
za#Vu+Ym|Y<j2T!eP|!;Fkobj)w!Ke&rj;DJROfry*fdLMxB0GKOn)NPI1U`C)axns
z7YE)j?V_r$wyTNpaas{NXkKYX&d;uuQJaPRn^4Zix?X`Ig`nRkEa)B|XYqHMXWBIm
zG$i<?Cq$04G4#XyXV-ct7iwQ$!rgJwbX_<IImPbFBfd>+t7U2xhAUB&^2CfHs`HG6
z;TtRGk9(g{eLqEH&t;z6xFHfSCeBHwK-|zuiY?E&dBu{{v5(tJ!3nS1Se3aV1ID1!
zIl|EY15-?|RH7zxvLRBS!I9naR*lO3D_~NiO+xuysXyI4AIiL@w-Rwy1{CaxpKA(2
zyz9!q<ne^Uv#Sd@`$C8mI*;<WBv7vh^^JdC`I7Y7p)>h-?Htx`t7t`Zl)V%lyC=j6
zZ=-NnvVI<+!N~|A>@PoRvr(K;1~*%(E$cL8I4BiaB>TLCnY~LM@EzuGba3S+)6A$1
zs3Th+O5f&C6f;+Q-7!DrZ$qUde5pg-ECk)@>cZC$K^;Cg7&AoX;~6%dD)XZul$?8t
z1TP6EItoR|2?t*$4Ga8kpE7V1bS0lWROx-sJo4a$dN}@Lao$R=N{}f*b@GU}bXb~4
zPG!EcT$JdII8|F=yvQvwrOm^K=w5Cx<T$x>?H;yvHQ$cdw5B?GnOPh9nz(1|Xa8&5
z>7o&n4xn(mq=j_Bp$m5tD-%f0oxM@y{zA~^k;e8rom<w=ZE3snd#Yd9I@A@VWh>DX
z?30pnl4aoVsd_P^5{+urW=a|v)1nV26RA2w^x9r@esvyvN71W~;!DMCQ0X3N(VCWM
z)6<s76=uydYLKZ%IU5Vf>mEQsW(3pWNgJ=7EfcHh8ENLf$Mc=mq1!Ezrrw|tcq40(
zO#w&_^8()COd0`a3he(;k#)?|&ybxPv-QZFZCVD0@}roxqirG*dC?lEj@D0xLvI!J
z;(a0GGN4178FvSrtzbMHOf8*fG_OSPk^_Iw7A}?AlzzQPa<{pgpxOU=O{*#<BP4C}
zsn~<X@`FP0U$E;HJ&Ms`@^F2z0Er)W<j4qX)N=N`qxeAWCeu9iLIIVvQ?D6E`5r*B
zJzoE}Qs6K2`XGF>6kgQqXM;A_D#j-nii+$&w;%sv*@-;h<P(Da04OEaDJ6<Ya{VwV
zTqY-=F@^~ZOqBB%c4Absn152?t;X5uh|420lP$v!aKfw)EjKmu!O}?8tc<*VsU2b@
zQ=>E{)vHnd%rR}2uPZ0zMmj|~5;SJ`E$DsOMqVN=b9sdATIF(g1p2${0j);HkB-rT
zYPA8<X(9wofRw-Wd_HWwZVlUF!t%F>i-{WQDsv*~m+lm`-B4<`&r~b4=n_dDF59Z1
zCpRb-)@G6odH-A!u;6Tiw~|z{O<ai?u$ZT2mP}L&_K#D8E7fp7pFAE%S!eYSGoUQ0
z#4PdP>rTqtY<4X@D&ml?s=CfV$}tG#SK=<uabN;Og(*2*IfP2w`H4D55GQ(UtjEM#
zZ!Y=~5cUy$M{mKm7#j%UN-NJJQapA@!C}@bb-H$OVAq5n&tN=Q)4asAiNskMk*Ts-
z87ZcZT%RRHI~+V4cJMh>+us8Yz@KYoWT=#>h-2a=<ry+$SWB7`FIAhMo<Z64m@X6#
z!kzn|wJ+_8)yUpyn!^4I%E^cn60%vb+<&|FBkOvGUp1pR65b7leeo8Rm{2W0A4j)J
z_Q~-q!&v??2xLw#`_R_Qf4QQW9Z0|r(+RG}fJP<-Y!#R5_I?Ay5;3x=aYq9P16jY(
z@eoY;R1PngMyXc!F|`z2(v~h7ZyL=D^lEc@?$t$()4#_Z+d3HIVYb-%+hJfD+|Qr&
zx1W=H39s`O)(|7s+fDZ<W>vIz&Y9U(VVES^zm{vI^ad^>CuNE!OHC07t~v#^LVoQX
z-6Q5he4jAM9w65~fjwp?H&}OFH`h|ZpAbe-$e0YZ|GKb&?>Kmu_knh@Wi0HPV<#dE
z)1a)2tiM}256_~pL}c(6`FwOUSX!8NR3F$_^U}tt-S__4)sU_Z?#SAk+|+mF>plJ1
z){v*RaSgz9ngjc~x=S#;3%|#QPV;vN8JW9>cp9%zcA&c)J^|%H>t9R6of3G4iW=-q
zH`DKi8qSm5p4H#)+>RpXU4=)tb?&bn7~>-mcSoZ_OLuBS8CYBkF3Am}Sr!S=gO|vf
zT$?}ShF}tT9^i)rX*>~FqH^>C0)ET4TO2gwhrNcOdmqShc3Fr_j@o^n(a*WeBK}@)
zYOo8Je$2RpHqTU#fFM@pwoMlqVVA?XmW2vxI0jcAK@~R?<rf>2FtU%~+51gW$C*6x
zAcp4;G(_(x_*r~2Xb+o#v&`02?+TjUN6L_)@u?knf6lrO6E9*8X;1fN=vS-n^|Ik>
z@}>WxQbUI~Icn}*S#fbYA(*B#B8jo7<5&(W;Bq`GbvjL3p>w$FolcB_{AG87B~iS8
z72cSePj3I+tXq@qEN6x)UEScAX?xFIQJqA0jg%JhG+~lF0ZWapyQis0iS$Hc!aI_h
z(kqtkT`Wq2i+}R=+^Pj&$JARL(&35d=m`%Z+c&>_AJnoWaq3emtcJz^?YNoQ_T53;
zNkrC|mDZcD&xN^i=xl1j`AFZy;PZ3Db_C`tMJ=&P0kYd{UVtczbZ$a1PY5LgMK*bQ
zA8NE7s|EYt?cz5kR`WLVQ=G#o?(z0gU4{l%Ddzbo3rRbis!D+U&CcP6-sWuPNCf$<
zFu#34_)mSPZ4k|`kgd-oIR}0l0O|tH+HC*VSN4Tm|JBK(!><&JCSylPFBdJF_H3bd
zztVyNA=le`AsqJ*-?#S9^MUh#5B)j_e=TJ6(_?UguenA<R%K<*i^XbmIODzv&-K1H
zYcO?DN@4P<$b*kfC}pEcuypC28dz3&N0{LE7pG;WHVf4`#RJ(X-53Bh7MaaO6wakV
z80|<feF*s}Hor3ol)I-&V=VglfW|c|jo40stB|l}sfkc!OVV!}yJ*P#Q7=`EQW-or
zgAnH8>do0u(2G#(XCgG7UxB3>yO=c1VmT`ATk@C^4f|KyOHOJP$60n$Rch}{kL27U
zL5RmA2PIO8^>ST^=${2hy*t)lQ0sdAqL7wh(lBqPY32R`zFN+H4He4sjm;ZI&@$Az
zKx+0G2Gf;61NX_1|5VV&{*CvAS0i-fE=zYGJr&>FT$`7>K<g}nSKWrk-6s)Uzj7Ap
zSqXN_wJ<@YJ-*IfD22Yqt9g^+5XGLEtqC*dkP&{0m@UxUPKA*9at6A4fo?19O3NrO
z-svnmZ2Oe0CY7#<)Hq&Eo3XmX?iNZP_g|2ERX`K`3Hf`c@}KfJRy)Hd32Dwam+C&R
ze24`B7!|cd>E1fwfsh<9<<Z7QD)5a!tw+v77eHmjs9-gg=#uv-#bJ_;gzPwmx})+(
z%62mLzZEF=Ob}YVv_H8xyt{i}Tr~G}Mct=P*7XPyQ7>p+HO#KB8nX~h80-gg98?p?
z9V!rN93vqHPDO%kGI0sXcS)YH9(u8Cgyb4$In-x8w87$WS*SX@oOR=T2qMO_*V<on
zu#@@HO2!v-ksJJU(hL`ctR96k0xSt9#b=a6XP4vbS;avi=x>h1xA`}Hm{II>u0MWB
znr1fl={rNf3Hk~vj6xXQp26=iqz)p=e|$|{Ct&9sAYdvOd|!>8k&wOKJ}`AyQ7ZnV
z`%wYmm|&R;l-#GyWAD=zID3JHWiB(3KP?sptMQ1}&n*};JIMd-_@TPFS7z9Igna-;
z`rmfUo^&8sTE@fYj&h~s*DQzfLbt4=wrS2nCL?HL0UIzw@<ifG=T&IJVFF}Nstsj1
zTL=-xXqY0Vz?Q!_Jcy7^Y5oe)jM&n!G!G0%EREOb-RU^UAuNr`wZ#D7$RKvSAm=9t
zZ-m<D%l%*)hm4n2P1DB;Ct?HlWn@l*Q~ak6hs!h<=xb*@B8r()R6a3ZYzw8hgeo{-
zlK%?u!Uc$WMh2Qy)+{hMD66fBIc%jp>G@+EoptJUruZeqihqv{$6;YHD_j0vwql7P
zA1&@GX1Kp0Qno19VBCXHA1bK}XD|Y-BgHqKOBe78*FztwMDK!Ls!t~jH)za=7+i8p
zoa23fF8ZV&(To2T80#fB&hg-O<BtMJDuG(=R1+XL`BAt&`U~WcRE+N~Vz$jkdmid5
z?!6)QP#4EqRRi7P0VflQ7BK>b>}xS?`!q`oq8Q9r;7hY>;7mS1Bao^b!d~K3bg1O~
zEzkyM5uI4G#K2)95KkPNDJkpw)LN3*2xEN&@~nEhc*m#usT^Gv8f|lfd=W&n4}JPG
z;(WvIh*e*tUyKB1cUw(9FXA|Ye5dmWhH4Iz{x(ifSLIx%so|`zHVXX(4t#}5VPK;S
zY%s6?)<y)(L9|33y&6EsK>Vhexw@9=qEv+`ntM`FC(meKXY?-t9-0hw3}r+w+}Q76
z0tP3@ac||j`t$si4_E#uYS+rx3}3?K)h96L)e#$!`=ZzSdV^!Q&FO_NujxPU=bI=I
z)~~g?+A7zGpV2mcXo`bDe3!MT-1_4`60DnSvk;g}k}D48s)~hbR2&(-sVCHB27*!q
zBO{GHzQ|#7qG-2e{aL}k+Fk8CXVK0@Wb@F55=_K0wIs4F^)h!RQ?z5#jZ~7(j#RSC
zM9O&w#Pt%=Y<!<`%}Ko1K49YANOm{}qqoCy;!q}svBQzF1cniMo~hDr+i3LJj>)~U
z0j9G+rk$Zhx`O+IJjz1WiwFxbu!bL;dSDop#v;e3I5!-I<m2hs9#a_DYO>s_BNOVH
zj8ReP8nG-H=EHRsK6CXi2BSQnii>DH^_^qlf9hY?`BPKPH?N6{A=c1TTm8(T1sg{b
z(D?j*cZz^K{-N3RmG%mr=F-a*r&G!X<{eF<fi+^~CFxKe97h#GAE37yYN<%%0zx=6
zTtOH{j1!*0DAGj9ROG({g~9DwcTYtPjOOjHR|slOEC4vZw!cnCV#H`|=q9QsJ^aH`
z)?}_jy_+ZWYcH+q=klRR-VsF}{Ryr*EO-O<Zn06HRSgO(=Nh@fGZ>4%NOt~Ks(XXJ
z7W~tx5Vq8olIb(L83W!@7KCtpTKn#}|9eT^;r={W`OgPDQ+}vt^+NjFwt^QR;Mf+(
zT$>_Zp>GQ2_B%V!aj}pCVINv%Za&7C#G`hvf<lVWl`;Ux>qaf7gKf?}Bf;C;zfd1h
z<Pb}PkegVDv&1+pq@3xMmKB1*kVHP@`0s}Uj{*2SqF1~gRO}Y>)mK&AhfCuoU(KRy
z@L4oIXG$Cz-*5a(VuI7*4s8F5)ueH%ar388V+oo}0u@2_$9(%i9gO^G5yemEg>eya
zPfF25=y)mC>-NvBr^pj!1Y7k;pGfLJn{hsd{e^*jjAVDYZ{_{ZZqbR*81?reqRD`T
zmd*ij=1=sS_A?`Ho%`leCV(XV<%XgAq>)nfOYhzmxawP}&Q({V?e2jYS9HKq@6hn^
z)Obd28{BBZFe?y0LdXYJ@!c!qioJ|3!e&>h*rq7)J}%0(LC@J|xKXZawYGJi&cxsa
zy-zMxf^`p?-{)2&G<v^)l+~27j9GaVS=hn~+F?V?zm`5oJ3JQ)Wzzt)7{TL9N^Anl
zCJm_Kp9ww8VKG8Ib_IYNdd?`(qd$r3<~JIk60kSMsP(d2<VrDg8j|l*X9W;d3?@yJ
zEyb4DLWa!Ido1%|yvX^QFd6d0F(@QlNcdonHpJ4V_^?`V%H@l``T8<@X*F#)RcWgs
zhM<P#*<pr&9AsyDgHje3H)HM9baD~f(IYaHej$~jPM~PVUhrOk=3!Zl5CkQ|r6vGV
zyX6xsctg!PwYPAId?Gb-I2ZEqHYNJ;iPQh?1F?`N3YqaII^nv$rmj)LN5+!<!LEd~
zJ8^c%HZ3JQ{4RGsb)t=`x0yXc0j{F2N5$%dCG7zYrN*EZaS`@JO-5Nm5}6|~{i|%k
zjp(PaDBrp`JCYrmRK$<4Z?MbbrdGzPugQEiE|e$rc6{g%GYA9q_(CoRhsQKuKG57*
z&9)b=iE<RV<i-5U<+M26j28aH#J#b&Pg^Wn?fG>lN^Uj7-(>VIhEX!%L1~=4e8G%-
z(YEIa3&WOH$Yeg(>}EQ6e|bC1jbDv2aNQ3GPpL@!$Da!HAJo;z;0?3Q<M#mAloi2v
z?8;NY1C)G|;7{PLZLY_qXvo}jvW5*SesFz<#TV0216?_*1b`=%wr085&rX(;k!f|%
zv&&n?U9j%*$RXus&*L=@c?=gffA~=Bpt1$<5Qr05Mc}dB%e0@ZqOrD8OMRGstuCct
z<Q#;?WZ+Gc!S(+PmGtRN+dG`MFfex+cgY@dNkz<A2m=lc@r(LIF2@@SH9C$tU)FIK
zK1FFP(Ax9ekMhj?j+Z4;pwsL|*$m`JJbFOGkET2f*OH0)F@Pz!gl216nUCON{}sug
zl*{#^zE9ed1hQ!J%SXFf#2HFW)WXX<I^3+=eZ6|c4*Vdlp9giy-JP<JaNttXhMx>|
zhfr7e!ZwQ08oJt1=BhkD(Yg)u`+r}S|Le&7zwJ_J$$uG!`O;(h;{7$`>OutE0y$|@
z<mSBj*=_S!B^$AU1(`X!xUK^Cb&&_{Y+XMF{?7oU`gW%?O2Ye1(-*EPFknxE1PUB-
zwr2J$S2$P(BsmtrCpF&Vgt45$eEu(mnmp&A_2pXnxj@KBXO1vA{5yRIf*t=tO)k7h
znl6WBwntW$AA@y+NnKxbdpEk6Z}Nw*#t@AtVKc1;nv{>tA0q#+-e%&Oy~bAZna*HK
z%v&Lf4<i_m<t#M&6E#Nz-`nZeLTw%I@qiEh)3Saxgs!c7+1LN1x(0OR>U`exZ@Y71
zYkNJQN@9$Sarg1BNV&|BQlYDT0{I6k&8bV*<od*#8>{rw;WrNKhDdZVv-h<2ZYQrm
zofRuRpCF~Ss!V+>&Gt`F_tXBCF372S)ui8MHV7rI%%JVO+{Krzi9z(HwL(YIwE}T@
z<y@V@FT?Mar#&NcRh_N6j*=XmF|`Y&wMLw+zQE4FTqFRlIQ{UcW=`3;f;z))@Zp0}
zfNgdVf9oOktH5leS5ASr(5IFsjVd5VEcG!_tY9o4E&?0=BP+MkDD=$b%(hcC7v4`l
zmEg|e@-ctfgZ7FAjhiV}?mwTRSDHld)>ry&aTPM$sDVGDW0my}1Q;b}uJKG=5hl&m
z>4vHAmbzVi+;aHF3;Q4pZz4(Z;Y7?u2TCa7sbZ4vGcs;y39~gWXLpNBA9{_k>}lhZ
zNO(hGdK@@xo)pq7wp=D0SA#nbS84XG4cm8SI=}`_uD7-N(`(uSS)iu`%HT??p#fK*
zs~<jJY)Wj~wu81>je)<pmutnPJyHVVNIdCuajGw7AMuuc_?;ob%u$I__SwO{!rxqy
zr0S2ihmq0m`INH;YquiercemJ+-Edm|2e+*_KcBVVmM+`5EBRVSWJ(w(!KS82)V=w
zpc9aPPlC4QPw$vS=Nw#+VH{2k_#eO$LE%Z?Znxa@gYqn^7e|1R7j>241-YAnIjt|S
zGe0(c6iB9!B(lju3oYu4Raz48{;H{j_+1Zr3FQS^o06kgN`_s!ptRZ5O5p2n?f(UU
zISMe$j#b+LP>wG`?%Y#_uVZpVH&hd~mKiJV@9ZcmChX3O3L6`W+eQGAHlnkZhz_TG
zU7S}|0++d7vLcO|xAwz6Q*AH=lfrx?(ENmd9{rXw|Kme^G*nRV^q~N@A^{AE-BRy?
zKo~b696LgcdtA>mEyk(cetTWXJoP<R2Ue45!LN7Pi^sYF^Ru--Rb1;55l24)JJr%c
zmMb@+mJvUR<Z&s885H;QhFjg;Esgt78fvz9R+nAboxkbhwYF3tY^>486O+Fc42;Wl
zrf~X&Ne}iGB-vS#V4BYw<D<O{@Vm}~OL_LRLk8J;0r2Y1vUVn`4!gyee}6?P_enG+
zf|m3*aCKy9#@8@nL;7rp=@s<nEYwWYCwv5(Ntw{eyh?@%j+(&yz<qAJLA{!Jj_h}x
z)f58PpV11Y?uOxsz0o@eC3rOpe+mLWtts|W6RoIrP=YjSyg|%epKLwc@yWpk>br!?
zc-nSRZbVz{bX}D|MY0k6w~CsK8EKZhP0y-Z`=1bf7o3oqZ@bHL5cLX;`@Vz!a^M{i
zFN@D>T0b$!$_ZrT9&)wkva;s=gbd-5!}WV^@-e;VP*^$1B@KHZI=vK*^((7K%8LAQ
zWzBT7T7U-=jDk@Al4Frw8t)%kBRQ5UJw)_8+~NhtF;X)^q-&iy9ZcMT92vUn!M;bC
zo|=eC%TL$x<ybhW(+Z;v2IgvO?uyeU1Fg7zxnRJLp2gs%!7<skf%*?{54lg@x7iHV
zR^fK_ewa4KUE<fIz89`3%A@!VQ!%owjn*KOLz4eYM{Sf=NA{uSSlKg{>ArWiB=_j8
zu-c1BVY1DY;^uxOlYYNzv0De{?XZ2N-Ru?fT!dPp_O^|FW?oyljfs=TuQ{%}HO-x(
z+=EeV7ZK_D@ox1W3qgFt*4`X9$5S2aD^d-`{&b;7JQS@o@Aw+B?=(>a&kPAuTP6(>
zyyjL+Bp5HduKlA;H+D2J$`|3f3GVT3pN*)G8N6TAv>9@lZ~NkQNr~<*lE8Z?jC`Wk
zq(*71*$;opDuy@qik8lriR+a_eUx2V+4VeGt^IWV;&w#`1R!<<Ogr&5<>tilj8{^r
zmhW-TbKFc!dDM!`Ocwaa*_)q1@7GI2q+CT7tzS%v>lc|HGou^+7V7c+s>3pmvwft}
zCSg<qdeYv_-mFoYb8_}QAJx`XH8s)S+VmyOb=<FX$<;}taR6?Me#fgTE7-3~)gH8r
zFVB@`MyhfN@3Qdwi}xcQpIzU9FI)eP{IyzZb@)qF!WyY?&FUySuGCs}BbNhjtTd57
zcQe&UCk*HsC>c~&x4rftv)P+yi6^H?mlWfjN1r;z{7JU`a->x)WT&fBwfrA#1-x)$
zce5vmGe+2TgphGlUb|sLiR7UMH*1f`R*P2>(*ho>U8|qGP_q95;7VTOp&U*ru^L5u
z-=(xXP^Qy+zBpwrbPXR-AvIL8_&cuB$4;o2<ixmV3(6sjo-%Ezqto|bOeM#`!9p|1
z7nC3H>3s)f6|eYn8~hARmMUL8x0NN#P#dWU`C};VOX=5JL-Urd%{Aw`Pbd2o%N{6c
zT0?u)F+xq@o)|@piz(o%+hUctHhX(?_Nd<CR;RxP?_G>8agu;05qk+@-w=h-utnqb
zUqYWO`6tQ6I@4ffttm2nby>Tq5Fi9g4Y0pL%)m`-ks~~C-ggyOW?T-0|Mo3|izHS{
z(Vd>Q8%qOA`@$7vVoWRP_Tx3eHB-a?6NHev*y)(xEg4Wdi~`eOw%1Ozz0s%Q5+c+o
zx?$wfIhT^RO_-WTF%Il5fASoTY4%|KYZLF6a@yX>Js_EqgXT;?qWSaB1PE8DY=Mju
zmoTES8+2Y$)Jhkx3QMi+yQ>}l=J&M#1S#7sNlob&wxqVZ+LVnTVRs<}E$DV->;oSG
zcZv_4)HfpdYx=n3pM==s;z*?^+i%XP)2OHjyWK<W1#xV7gkfX`Or2gFpzN^`5b>M;
zQ9#CrNyD_;QgcOhWC=4(-S4k&%!+C;*s5)RZOU3&*2qOkiZq#RYLOzC1c-;>CoBJ>
zyU#?++A_HTv<i0tzl?DYnbb@S!<)@=q{;%#s5N}7FD{hpcDvSs7r!*r*^{<^etyu^
zK^ZIo4~|UsGWB`mbrW>p92T3Mu{Qz&zcG+A^YX-9;!DQl3loI<M{9qTCm;3ttFI&s
z*)U!$v!{-k%*>)9Y|gJ7pfbiPZAK;0COu(%8as{r;3&p?DihcAEeV}vjgB;0yO;3n
zbqgl)Au{VoeC7}A3u7e7FT7nq4YsCaN#BQj{DP3$^EFQeU<hB*<v|w1<9vrxb5LY5
zu7r}>QppqX*_UN$ra8?N<ABv^%tyq!%=*TvNpv2ei_E9H32~dyaVGKCo69s6%Rd^L
zzpJH>@n?Q=nf1yqSIqBoMc?6L{4oAvmu+vQiy*?E?ru#n9?<6?k~)y8d{7Q(Y0PPM
zLeXN~aOWdJ;xW%P%Y8I80lSoChgKXGK)PEty<5||HZ~cwm_(aTx5w++5DB6@HkAL2
z{_YfexU)M0rh7!{$;Z`hQx2Uq#3cr>$8zol;Y@u&Y+hX|%6?|3U#8H1N`52(ViITP
zT$XCji+SDHZMz_TT6;dzUYT7hOLzL2jhT7*43oJuqfHzw5b;uiS^>gGNom{cT>+8F
zCRA?s3fBVef~n`VjchM!VCN26pj``I#a4}p5{RCE1sEXd))?!MXMe?TK&*<=JUu4(
zW<`io6Q{7BOvaqjVChV)p(~L05&!Yr=<3@Aewrc_5k$TeRM?s=417oV{3m#$?;6VK
zCVcU*zZXW0yD7M4xWP^6N>04jc<%nP{%CCmZ5(~T(=n42GzV<k??7?>c}M=EkWjT7
z(KUk5yFCuMke1!mZr-J<&}_}BtcYLzMo{D0!twi6sm(953uTQMa`%ZaBEAR&6ox)I
zHD9lfF&53!kpfP?e1nM;&^w#`*5%XevV*k0;;o$Uv>+9ekM26AvD=-YsV!NXLCqy`
zaNZnTH|<W(!Kda+ZD|eD4Pv>CXww&Rqi8A1q}T@)8qo*V{Ji!3*iP?&kF{?M1T;Dj
zF^Z-n7$}PJ*^ylF@|B_Qb2hrne*$P(IsYgABezkQS1YMZ(-N+#yr1xOa!~7T5EshG
wf52FwfY`~&)c{DEeB2{Ft9n@q|Bn*+e`)3a!<i4}B?uxTr<w%R4HVS>0tiO_z5oCK

literal 9990
zcmZ{pMOYjR(4_If-Q6{~I|Ks3Ex5Zo4DJpgXmHoy?yiHo%itDVg2U|h?`8M$_o)tj
zt?H-WqKHF86jGHlgMpY?yBNDzTDq}vad2_|H#}@WPBuO>Hb;9GsLOyL_f3Ju-FLrN
zT<^S%A|94SY}WCZtLA?qF)6M}W?c@}_hlktc&w86{J0ge>cDsP+Ri#x<7=^TPkt!u
zT@1OIy37EDsjHvg_=w|Wio2kBNQ^j8f}Tf9VJ+v*=Yt9lA?F^Q9~7OU0QtT}L6^W&
z58-X6Yrx9Oo^YyWPCHiO9j{P@*HwOrf8&-W7Y2>}SoLJb$Eek`#nrVkK1J=;p^yPx
zAYov8R^<3UT7%|lV3@83xeB#&rnhNui_=zyiY{S&zHxp7_Y4g%sU69h{n-C5WLu<u
z(x=_U{88-TBUrW%pcQr$tND79vm<Mid=or97~SLj#^Qc~PF+p!;&<3};ph$U7&>JD
zhx>4#6-C4am^CpP)FY|&J!rQX^(SLOU3n*l&ksE+36Pa{ZC+jh^UyMdbHAFqU$KXX
zH)(PVq?xU!5~vK`PG7opAL6~M{pswX(!V*yciHwE@7DP}%FvDRK9~DTJ1GH{M<v-(
zWNS0Uq3L9g3+a-hlkPP0<eso!0@JB5%A8pFIlz*s`SA{#swxhCipUwGM_xo6ytr2v
zkBomCxQBp%=TqPpD0Mx8IpT+sCk-AR)|Z#nJD53mx&>=BmwR4q)AGm#Nz)@-g)SPX
z4lfKXn^m{_1!G{d-y&5zl&Ss}CLeLr+e?%>TlX^bb1Cj?Au!_j^&C{&9W65vYHR9+
z8eJ;<0yQM48GSM1zR4-6)!=t<f6E*^4^^MSv6~>ibYxspu-^p1iW;D>hIEN?JeGZ2
z0};YDK7$C}`e-g7Gl`cDtq@_y*5b^d>IaK^h~JHF<j2!4isIw-zzOkzBP+YB40rcf
zmi$m$zXcH#G6H2&*Ug)qEH^u12Dj?-9}`Kh+Pw;{Yy@my*w$q7+J@iJz#7vf=sPVJ
zKsDv2B+Ym1!mLPZi@O`sOb^On9$7>)J(0^&(;Gx=v^?~Ji`=g?7rE$#*}}odTD=Lh
zEI4Qh=$~}c`SkvL%!Ai;khh1n3P|qNfMgA%Pj=qw_NgAS9R?10cJ5=>T_$_Tf#v)p
zvxXFK_uqPT?ks<DKMqY#+?Ssdw(Na~+rHfHJZiZ%dmX_0iL{$f0$dP6KSmQAp2`jR
zkjjl*ge|HpTHjFfd5FaWw_(sEJ97Lu^=0-P57{!J(lXrfqnZxE@z05(;VgWvum~GF
zaRYAK)%~H~NbX^0<N}x|1#XX&90QA*9Pr#JQ-TWK&C$97#T0ca;D%LF5zJL<>naio
zk!XH!IDpf7H}}h}oCx4NkcQJVSNl6Cq9m*b8JhQn#Bp>05Uf?=Y5G=)7t=UB_`Sfk
z6KR2>AyK3ZAM>N%pCiQ9vP*3sqPj^Vk{qo7fC1CV3&@$9_nUoMN3*WVnAHl@r-XKS
z{CvJkU-U}9xH;s1{JeR8zd5{XgUC6dcx(O))0Q6V9$9#r%XcjvLrVsnhV|b*p1zN;
ztDfDQ9PoqE`y`FmstzVoisMio|32i9H8u_1PaY6lgGuw6n!HY|%L!!p%n3;44q!%z
zon~#ug7Y=<+IK-E9}u)iK?Ll8o9QiK^dZqbav^^<#Qi(ddkJKoS_*`=K{*AUUoa6M
zZv1e$>=B7G$k!88|E9M$zc)UeLhaTQ6rNk~&P5&D$&SfBY4U;Cl;GNK-wx!h=h=^c
zH%9cRrfx@oM<vhoWW9EgXi!yjy?B+=<F|^k8?@02>T%|#7Dhzd#GKlqy<p|a+t8$j
zV4oS`Htqh^;8UoZwjt<-)ZaHiZeDsGS}47$#Il<5u<|RSj-K@Ppb!jm7J8@Mf`Lr*
zQEa7_q+LTtDajtK`Z6=g`2$e+mlzjRKg`wkjI&9!+1=ntfn<nUTXly^IjNN{$Gwv_
zmhS{B@xkPcB_doGMLVUJb1YowzV94kuwcw54cdqQ5!jvm9C}ya^)$3-?*da)2`Ils
zHt4Q{^#I%<hy3IKu7cYDH_m|1oy(yFw$FRgK=izI<vwd+hv8r8QH!?22i{{pweb*h
zs6$gGi&te&q*{&DEc-g;HCcN8GWWzXe|U<XuRW-ITMlEloVd4h1AKfax7l$BMfkG!
zlZFy)0;sBrS~m@~tBf_P#ukj9LECYY_XjDfb2<s0%p|0^mAydiHqva8hkUd=!I{<7
z3lrHPM$?$KU9=6U@8oF$6^HlfU^s^vrV55tXGF{`^nN+>NxGJrx}oMi(A7fNzxu)D
zlIgSPolyIJng-2)fns3}gME--f_5PFXBm<3;{f=r0d7Q>9U|i62SmDxe;yHs`HJK*
znc|u{*mFEC_%0Az#4!Qh>G+IIFjtMozIf&f?)!G$fbgE?;iaD(pQqb3|M~@gtzT0t
z?@rf&>!5VuyYH&4pJb2=v;|yS`k(byn&8yRnum<_!`U{4tqIHwEI8dz6Z1b5q9(BM
z2&&8;o|UNCoLHR7iLr&s>T#E!tiKaka5Gqf9jhX1>!Ox$c_mvUYsEzuxPNpmF?UAG
zz@7=pY{aM`H7LD$vA{oCF}=?TAdM5ZX)AEdc314`xp|~$;@X%b11d)5p8Ln$P<0#1
zhhw%9(HDOO?iOVi^`eO%Sh3LD4;<_YPrS@MVD}P2M-!uRlBrYQc#_DD85S(ohtMh&
zNc)M0z6rVSF=QO|hs6YQ=T+M&mVl!-cn<!Aa`g<}4L+Az=o_L;DUi7OYUEqbl6iwm
zPfRjl3po5*@_XGvZiH*p*#lth;cu*9YqWN}Wsk-5Eb0I^ol<o^Kc&8-Q2TzYF+NJh
zgqRefnJqV?LRC3x*|cD`{IT?<uF`22htZ_L0lKV$xD9~uc$;uzza#4QSbLglNh+du
zpXHtAzoG?o^_~n8o+O3Po;7QP&7HuV_I9oeBbUJ;qmabAtxY3QTch)iemV|+vDXoh
z$Hito{3G|{=l8D{i^h@&+HnyiqCc%xmdkM$4|o%4wB>2ybZhoYzHl);l~B>)cQW~g
zf_X*5D)O<IJi~L4wGn+-YlgzvaUNNMD5vxCT}G~WCQt1wMVo&mA$!lBivEJzpea%~
zFH~g;^-WlDk}kefc9qfr0*CusrA}^GosMYrRT(U!Z+6RiJh!QDp<1A~#D_s<Y#8ed
z4T6y$SWUt)<a9A6S{+n$f~qBs9AC1P=_A(nB6wD&L$?xp$gn<jy9w=|M^Aycv(*7l
zk#98T+t|kGIks_;qk-PD#Yy`B4?j9)0|I-*b5WVLAllDXEFPmyNi3Z&>!aS(9P$_=
zAc;;HA0*3~(c=MbPs|wu!epyo|7z023Ougr14Swfy+Yk)$|s{|yAuk=WYxik_YJ;O
zxVRsbM0Y(A>5MkF{$IjV!8W_&qz3<d5DmEt7f;~)u4O{dW1{ZQco>_{M`+&>!}ZM~
z(wd(#+mEwvLQ8b}yFr~~I&t;+cLEXgAl`h6&Ru*gLe@+*kpH_)(0g=>@84~o_7S>r
z6ij0iS0>ldT@q|{zW6Xz6PhenW)j{KTpeq;Aw(Mtzu5&aY7AV<D_(hKdu6Vh2d#tB
zcm3b*+)+01Y4UCSm~(iQR=x77XlI=k!ZHDo*yA){;N9`LCd=<->`nnYVp2PT;a1Ix
z=9wSqnkg&3j)z@w*%gylkq%Y?oqo-gKjbmNDXro2gOJ2mJ1d&X8e1spwh3E1Z`Abc
zNIf@HZKdP2;J0=BXlS}+P9u`z)dDH?V8ZNIGn6jG?-cWG$=gY2&ANxa^&1i(BCDg1
zQ!YK%Mg2sef$@SS{|*xtS3{P4vc(kFyecjdbjs4!oRiPtt@jdKIrdR&3mOhXyW|Zm
zTOjWSv7M<SXuwP`?N?&P_hW}dY^D`2I|c^}wkNo;pA0E4-)mZ%<YKC(k~ABmOp{=1
z`9P6U9jJm_on*d?-X4}N145X*M}r4B?1SM4D~U))gsSUz()zlmP=_dniE&P$p27%Q
zt~bBlUqybb1`8R|9hoSjuUlrcf9jKi>S<?(u1?fyVXsK~>-I;~j)M(koG|^Gt+T6m
zb+l31d=%3j<#k;TyCwwy?C-V}ul-d3B$Ak(^fJv}z$=ab1FI5OL@a?YzCA5Bew<0g
zFz0h<_gf!hOK#1C#u+Qy(m%%%+$jT@b4oW!5&ACFfVlmn*0JfFNh*7C0kRCQw=iW{
zZrBZE2Sk?otvHW{DEp%e&Euhi1wKC~A^5W{+1y>5qkF<;hmf$E(LUApe5|8;Kn}#~
z6&7#+>DvDI_?Q`h7P%e_I=_dAAH0Z@Babhx>~%_kh06;m)M`Z${JlOA$_^7XBPXG!
z6dsD8>4iIK-q)cGzjv{h9GUqqGj7HP!FC><U-yv+pEc+Ek%P0}{??3YZ{PC)n{3|<
zZzV5%f^PAjqz2iC{<~HVDcQw+geUxMo*zk@yE0D3wk4IKyu`(=0^FoTek&uQOyW81
zpM+l5!^Y&bE%nEmptWqfPcl(q*Bhv<jJt#fFP4OuzxoV*QCfvD58tGAct9ZSjnAUJ
zrct8TP!@_LSOm0CXG$8;9}EUJ6C23=?;&KK2hto}yO$F)RsqxenV0EA0riGD$?%KE
z42!PwjP;QSqNOfip0H4-Opf(*l**>#x9St9qK3kpBAsFeHW040_XJh6!9Qzs7{M@i
zl)i+Ue&I%!@m!=qM*AG#OU4KmW0drT!BFUkF)Pe#c-ixwGG7K1|H$J)=JFKycXdQd
zmMT+r&~giTQ+~o|k|HyL+kTlmcW%2Yw-@?XYjVL-YKFS(DOY(NXqBs>Q`jlPn?Q{d
zrkU#zl;z~SbyV)N@QBQPGV-Xy61C+Xt~_J$ESB#+lqH4Cq{wGD14faPWdhg>{HcwS
zsj?PDdt1*&{POch1IT_E6Vw?bTw@@t&#GMGzs!m>m(DnhBogp;od-t&B$?tZqBX4e
zy`5RcZO_Yl5AZInTC8jleg1+54YX-d_M`g_$T{~`<O#8f$6Qz8JCQK}C(y(7*Frp&
zjJQeuKVrxzSC{F>a4+4cTx@5*<t|86ku5M$#}v(YHE-cQv%7a<H`l)!)zcV(jvY8S
z?vVTSH4hh!SB>i(X37*@&kU$HiM*M2==8WT^gEyer=+r2W=WxUJpbuFryjn6g08Qh
z9$i0H&joYC0%9RMJJ+k{eZC)UBd^Z;b!9nUr8a#fno&O#m9V%`HP~j<yQe`$mF>0B
z+N^Y&7j7-Xk(#H<B*n6DJb5>Y{n~Lpoj?VOkb#e<3&4l|w``jbvAh0-6ll`Xq$A99
zrTr-`Vao}VmM8?5^>tS*1@RHgIR3wR(UH&v=k{cZ7mIZvEO}w*O@s_^i-pZi?eZBh
zv)eYJ7JDUp7_=fLE-pEOBUBLsJZUrgFx|#CkTUQ#bxx(1Bi||FIk$7uw@2Tko?v*e
zh#$0xa$PApO!<X#HTM)e&o0r-gX@IYbQBrrYKlB6AOFm_;eC=BiF2&7u8v74GmA;+
zOFYiH5|3a5R?rgBKG3#+V${pkkmuh&S#*))LiUZt0B>gM#O5eb@9zV$^)hqhPe<lN
zUL`$5{Ul0ktVHf5|1$rim46WKZ!ZYRVYfD<uhDtVWu4<=%ze`a{nT&CuGx3mt&5Ys
z<QcO|vxLyVu^&vlDu7-vtQz|2IkNb~TWyxVS|2omJts%W5-l~ZlMMb+MX!-3t=&qt
zDM1G2v{Dd}Y(WY;3QIng6H%ax6U`Ii{N4KeoW|n&`$cz!pzR*E=qM4x@!QL9#7HB`
zgW-lEa49~x2;d+h*;Yns@h)!(S%EbY@-6!Noc2?w^mdL_(AUHx+;JgMVWDxk%PvYI
zR<-R=q{Lss!n&+Z>Z{6F39RZSV|(9_8obStJIV#k{_&;ynp#hsP0ER6Nepvi88i2}
zi3Z`_=G^q5gdZ2J%@|8`{C)`PTZ4F6vtzI)xRH9FzdoDt%mFk0B$R?xb+YFnUXpOk
zS7|bFJtw_=Z&bk*NtzR`M>PZ>8wg)8bx<SF_~puR%EmI;T0w?nTnZX--HmjsqZgnk
zCLS2zuf73>-tROy+0~--bRKl6=m{vJ5)^z*n7m~#w=T8GE9R*voU)n3S-w0)96?9)
zi<tB$W8_CBIA|K0G?tfXPM?t?b&F((z!H9KFX<+~<T*_?d1Ja@VZRCHxh4Cj@5S{L
znyT6~Q^3gSkr%h~yW>yO2LPz{BPR4cK~ZKZ$K7TqW1dlr#}f>%JEy2@fQ*)V5X!*7
zm<1zv0txOz<zb{Rf5_ZM`Dcn8(wosWz*@JoVso0Ut^owp*e`(pW=hR^7_!jFbsrff
zJZ4BB;o;S(pSLcYn}n$qvg;+JJr^idc&J_KIYW2jsp3KNaR$@>fnQISW)B*$8Sg8>
zZj0nv!Ysbntw{;%RR_w5b>2mizp+Rfqi7sZ8Dia`z>@jrg_`lu2e;HNZg+m8`_r0T
zMyyw0^KI*wHvjb4>rSr9_M=#&u5{Y+O0b?_XrUCs!2U<jEhDb8@P_yxN_&2oy-Jb_
z_5^A*JcWV?V1rKC{hZxixb%^obHltc5)LDZX#5yKT3#EdV<KcBg!%Dg*M4qrj!ko$
zHnCZt2j;5uiWF8q1or=q_6oieB=o29uVJzFHe?F|4yX4D?<vLYeL8^b)^XF9r!dCp
zksKY?bN|llt_Xckc_fu>(7v&6%ZS&dG({S{GJ%~KAWo$VY%TR$_*)foe0Do|J3l^|
z_KGS21)}c#+Mv0MFX_`53TLeQJf5*ATHj?jrFJ_7zTW%wdj#kO8J#+@#RHJ9iGr>+
zXNLhM&oLQ`*NYJ0QSsn@wY9ZY%|`gLwy8ryY;=r6V|kW!t<HYQ9_F3U9Yz3t%wvQm
z2DC+HY&=#gTb4SpCY5Vsn0+kUH!Ke3h5Gd7RXolWf!=ds^(=s>n>v(0Jf@*3v1N%z
zzGKdJD;CWZxvv>1a$;YwxL$101Hz?xH`6E(iJ}rmU(8zl=2pA_E<IxS#umYBa1_jM
z(CqkJW%AwQfggFf1Bd*$jfs`OGpDeX-HbRWCcG56E;bTn!GAc)mreBJk!6C^)LI!Z
z*-ia7KqS<9H;dXd_utKW#P^6Tk6onlRI6GQFTQ#sTzP83mh8>GuVqu;6LJ^$Jb#{y
zY-eIcO5#H;T&CTvc8F$@s+tPR`0d!8=6hB=D`y0*SA1O@%-~FxRY?C)v!jF}%^fyR
zy9Nb=ZkAYpZ90j0Ez&9ShwUBv(RX?vs58B`!HBG%zoJSYZ)sbrs^xP1Gx-sX-~G!|
z{5L*|n#a!dtb?@O!kmJAsrcBKHzHIjs*fzvq}PX(vfD=3Lr_qzPH*Q@DVt}7g5h8F
zbjMhE;@9b9@y~iDNbw@eanQwM*M|_~;E8cU=`+pI;q|k4^=#pZ;<<H`V($3~<L`6+
zwHl-3HAjB;i(}SeiKH>=uvBDHAzB;Hk-?A(P3R1G>ym$AI3iW;o4<X_^V}S^?2!Dg
zMzUB^8?G>UMGC_cM&0>B^H=C>0V*_W+aE>KCTP#(<^d*>a%ZU4SK($CW_i0w1^x2B
zoqe#m(*t0bZ$wstQf=oB2{!L!r^HN8hs?vo$^b6!iA0#1Uk~=e<p~SReZ8B%F*rYO
z_1tp+Xz3fe_g>SFz4BOyQsL1y&>}CAm{v2!WC3voBChy7nb12!eio=M!MWhwdEK9d
z%V>{sx6aWF=IP0WdL?w0YH*b{ar3bnEAnO|PiW3Nh6dE7ZgCkkFcfVqOv~AiM~pyY
ztFk2+VGd(ju>~Ef40HbAVU?&e86A1*?+AH5^7s=X3Ey?n>_@DkzHHWE3ZHA`ge#yl
zq3fi+3}IuL;1F=*{Ac@ZlcQHgCAGm{98fqc5<5;zZmfHY$V=g>yQ5l|yovfDA_iJ}
z_`0IYyUbVxn7qO90=%h6-Ye#*u#Ye}2@@q5mBfMm*b!djqsN?6S0LMB*0QNEo>nS3
z>8#tu+&hQ?m9-%az9cFrGucwg#I1Sk*4)~Z)K37`wh4h=W0<KZ$SYl)fVZorwQ|{G
z*BOg=X)8)xlds51<uh?%;bO>H=|>jq7WCH%i)Vy|2n%>y31Ajb^AsAt1}3MVzu+)$
z@~~_?fU(TB!r;J^%pRzhPq!A2Jw6IWn3=hJ(ng7$EXiG&jE00>PTeGhj4*3%L%Hzm
zx@?LZV+FE4t59EGTDC$o9S@zvBW_@6MZ&0nA{&Aq5BmjO!hkyXtvy!v9a95=0=aq|
zyG1^YN(^<{)NOUi>coGPW|t--`d*t|XIAjEbv+`rChzh)`X9!}YTNgXh?s=Jn>V6;
zo$k)UK64A|Bf@`&w<JfG5=})FXi5Jx_cOxg&GsxBV<onm;ctHSE(D9KGD78jMZXeN
z+*b&jhJvv|%&je}mbxthl(VxXuw{-ZMPJg_5+M3a{Bgore^!*ni_Jo)zgUz}PO9el
zfsD0<SsKoFCf2c=vztpwCMYLeok*N4K+?=r=2&1xp_yVQycxXH>#E-N9~61*xHKO?
z)s!l;WxXQ_f45>-wp|i+WBDjU0*J)#!=OL`rA!mY#~NWtlC+u8*tHNj-Q?}k-G=h$
z3&&s}+$AL@_>@qO`>>7orHTwu=tHl*G{6y3V7$m!4#EX#9?Cuv)r0cZL{cVMQ(ND7
z_=bkq&~D*d2Y;r$vJ&lr0CmW|<}TRR^vg6i4{l(hwLV%BB0zjsk%IABUetD1S*$ep
z8}a=N`WuT!`K@@?#iDYoXB1jt9ITACHsR?AN%{2SX0^(-dks=B+Yky<Eypz<LgXzX
zW!(*O?2b99$y<4@{c9QALC864@c$Pv|BHO*XMTD=){hKS_j&!;$?aXNI1ulXO^OM5
zI;5-Gp~cyXe0NqZXTR_B1bl#@Kz)5X=c~8*JH_u!$3f@VpFF2h+gR0CXAwaQaBFQW
zvyYv#Fu$W5w>Wkxw$_lNk`VO+n@-`IRE>g&Iwm_FNz7fp##$CcWq96!#EUS+EhJ=p
z%^SZDvV<1@n8Sqmq=Mt)F*4HCON@IB<X6x(SJP?awKyoFb4HbeP5bgPUeSVlY6Yn3
zDtBtBr!Q1_NoEDDyYKCpf6LyG9Xcn8_o+7wdpjqY3JNv=|K0R=S<zB@;(Poj=jgnB
zboIFbtm>0yW7u6D(Jzxak}H^vjD!84r9O4)npk04bD?fTInrmxY8Z&bVh@xy1oK3S
zR@!s20D3LfG-p{584cDn!M?Yxtjjz`4s0fkCSvfz>eZWQ8f{%^|5a4pn;OgoZHuty
zo1W!fBJ$nONCxuu4(0eOZ3!Wfi(@?)t&U<f^|@9$J3=yWW{HQ7J+pQW<y5IwuVD^F
z9I^K|c~11wL-AUPY&(le2NafA1GH9PX+E|`2dwiBqS4el<G-bLm!*KxbX%@7+}&+?
zz1pajba$@F`1UG}u?s5vBg7&793j1ZNb>7Y#2ePRn3jhIl3`^9vyj&xj~QK~6Ngjv
z+lj$D^bwp@ui~0{RL)~u7iilD?aA+XYKCZ1y5D$Tt6K2%QFK}@|6(%;L}WW>Ecxl*
zH~pyzR;M6UuF8R>d$kOR$RX0fFevJB$HTRj$`r6QSm|roW(i?F|AC~_%R)zKNv7(d
zjaK)dx5xSFd7iuK7_~fBV1D_Rn-)+}e!yw1PB$=dZlJ<xxR)MCegijn-{H%bXbiPe
zi{lgVa}wl=?Q}A>0I>8k34TBY<(H?%JBa1iWpndn@iAQs{=Id*fX890P9%g>strpU
z!F@qh{jJhfxOj9Hl{dGI4L3I*b8(sw^n6FEz2CK0`^+_@QyfQvy>6`WB;?ut#N~Jk
z=w#`b{>2l66UZj`BB5(Pl4wUDUg?+iezOAaE@<qHV@QT<DiM5nh17OjD~_Xmzpt72
zaiR=h&o2}H7R>XWA&_Z3_kO^I>YZq@Dl;)D&>KC-n@*MeFn`RK+?G}}%3D@aV^W)C
z{aacrCStRRUG~(xO6<#vv(C~dBo}mj(Bte*avJ%Lq1?AK^Z^+tSae5FCU}Bibmsa(
zAS&$;<6d{=LG!C@`!;Hy+XXL*<K2Lf(UDZTx4Wa3lGQ4n!dyeqbg&T-M*Q28M;+})
zwZ;>24aPgw&oU9NoW#MJXvc&7!PY=LGyN{>`kEbswUt^%2YYR_)+PmPZlMSLUrBKu
zRHiO~-{DchB(p<2o_);*c&N|ge9m)kCER-kfrG5QvGB?c(pCm*HoHX_%lV=5ed3Kj
zD-Y5)aehcskFBFe1@>7G(M1ucm?#-2j{^moNf^;cJzhre|24hw#sB599@OfYW6ya1
zv6hJMoEI)@=&Bp?vo~S~p%}O3cFNHEQ;K}AaLSBw2iZTN#<P;C>yx!7E=I*)M|GEA
zB~{((r%Oh3$Dyl6c9K9G%Y%wOQ+DYOzK)%s8HJJGAAMdaH~NOKZQxJgT=MlGkgJfg
z$`)ir>Sp6}^#n3<54jp}T3z>i4Tr#6;&{JR0S)i}r`Tadm5@QbxE2C<m)3tz53|1_
zP@QZLW`Y~VMKyil9^sMGxc}4(`NbO%$$1rHe}<SBrys{zH7cU}%;k<l59x<D92BQF
z&m@p>kc;h{aVl@ybd9u8FQj)ufZOWI-7%S9%#=2D6bQSO=czx$S)`bBllnt4gcDeG
zWzz#UfqoEk5|f|d`sqP$JdftZwA9sK{FDBHauQoc&V9;$#*^;n#0YH^0$UH)8EM@R
zTry|Es_P&DOaN{EuMyU~SU320A!Ka@92Ng$yW@+zyD#g*0!K<f%MPCbh0#*_rxzIR
z{P+jaN_Z#MBR*QVxT*6WMC(;p<W+tlZ91$=Gw88+>q+mwXT8^AZwN%NUg9wIwz9um
z6}pe0&znV5*a+-~1;O&=mGa{V{xHMn)|*lYf1G4%)>x=%{+?-5Hrz)r&d+hQj`lR<
z$7AOW=5M6cHF;PnEg#;T4_Q2GCaRZvzewG3FmyPMnA%fYR=&XBSf@DL;LM)iva=$e
zr7RES$c(6x=(A^JpX}J<A@SP43kxV@h#tB{{My+Wsn^5;GAIqyE#a}KIDVK{Qmc?w
z@J?qpWU+0jd{u}scOwuHt!Ub=5mr#*^aL4sdhIx!mc^8J+N;aOmhk#MHS2b#0Vn!o
z<dMqhI_;24DXTjHSIK)dIzJe++6@Yq`)dyYcXCbjG1^)L6wZXrW)xkDw3ba1#|86b
z@}`I5OQEUf$bWiyv2S}iz3mq%_8%=3iy4!tT|KHdzr=_rznt8-aV5A-b5<4Uwt##5
z3(MJY#?Kos+^KET&Ouc7x9BGl;Y}SJGEbFRW6KP@=F*vg7xB~NvrtWXNhW;aNl<7s
za9@E3%3_T2ze0T6JibkG`K7mm;Hda`>8|;OPfWUpFP$=?Vl>kFC1uZme;Lm_bpoYn
z2@xd(|MHO4HP~r%rS{CEjNfhPD{_q()lhdTIMTCGmJHl=_<`;N@YeHFV|{!H%Bea-
zZFpfkQ4-t53Cg{PIdQBMMYcqKEXQ(M3A4{6uzOWT`1MS%{lRg36*RVd6?D)>TR$f9
z{^DLRuHd6ez6=#>YdeESlCrUP@UiXp6k;?Z8NJ`}27LtQ?l?~-mi?SPyAX3})W1P&
z`SaKmSKVkF@%joU92b<We&?EM?jO{7n0=&?*IyY^*6ftUz@FH^(hw?9O(4J?{q#sM
zKK(XypHg#F_6FCn4q<j{!f>N;Uiu(ypsFEN;MJujrxmKLRph|3poh(lKuBdkYb2Id
zx3z#h-oH{$)AkhgSkj_RvZa<LMmJ!dCv>*ci0{Mo_rS*1VfYepG(&{F<l@>j_p^4R
z6xZ27dr7uvRVjr1hsBN}rJwOPN<Yd(W}owvZ(QtOGJ@|B?t#>;Q*2Oz^{O6c$l9i$
zkxHV`7x2H+Ta6K}AtfsnA3zkhw9$Oo&mW0dsN5M&Rpavd_Dv+uwk2OnQ#+`Uinc5;
zy+q52KbT&*5%d+}LIty2`Mndz+%%HX&~@*&%Dz|Rsz$E+QEC}<H%||PJl6Wi$#Thh
z1wY@^jG*hwNI+E)gRIWw*j4xyh;ya3>(p)k9>I!28e?41mv|D9Ilffb_sFGXIYLus
zm37G;pKWb73MyX}f3sfOv)Kr0gbkQWCN8j@es^qExk#7?eAE?TysA_DvELF0$?uhD
zeZJS_up3g8k(Ft)9rR3tS@#H(l;@raBYIs?e=FQVK4&5EP52v@G=MN*>Uy6C^}Z+Y
zuxt>wlqK`P(E{Ke5yzYKo%^R3gBe4Wh5U$&=EO4oXp;1mid`sz@wY<+N;kTBcm22=
zJ?+tjHeN&WO`TVe_cf_c{?|BA>V$Uq52u=pftle-baV&$gGjP5nZ8ruq@g7FgR;n$
z&dg>zWVJ7wuDpbZ{KlO|Sx<%rZ%(BdeX4iLLECy)Li*#|o=z!@xSV<(BS&qUuqa<U
z9O?ATm$t}9eVQKJ6gwnYxTUqP6AFF4P!}gnQlSdukKRo{vp#t+UVw2|Hc}>T8;lC?
zsc^WPa(^Iq0?>`9w=Vl3Yl9!rU8`NmiEMeR4c572rbF?0R2?E&!N*d|TJvRFY71|c
z+Ris>h;UAyrw8=t3~oc3t?+%e`K(?g^VMnl9_^ZpaxKHhk!mW4%Ac5y_g}UwxB$fx
zlm1i1>_DpdIB&|&u}l~YzA4tj3SujF5!d&;rwgYxXYrucFc}+=-~}*pn}B`Km<;gQ
zvO|HMi!LnIMZ#ebO2Qy)?{~akLt}0L6#Z$`5je$SQsv@L-?m<O-EpfWq8&4>(OZoD
z5L)4NqI6q?PQVH6F?=+Qy5UH`!>nJ;vowlCesTu;rDr-f_2Qt(kZ8P~hK&fbNoG!B
z{IJdDEV35Tj)Cjz%79AFpv6`4_a#lstE;DpH%paV-TyZ<H#%ah)bC$I_&NRysze}G
zEqgy1;}Z%PaKkm&C5YBcd%+0z8J3=C_Cmf~%Tzt%p6VkF5knN^q^$K>$}q9#^MV%#
zC8-jEpP&nZhDuntF;k*gJfCm1Zmh(&>*3TQe7V}U`itH~b6Pg9InJ27%=3&Z%-dK7
zmgYyNW9TVv0rlx>&Q}(VIv8$gZ&%hK|M|aE<bQct{vS5^pM{`_I|y{d*X16l8z`v%
E10Q?H#{d8T

diff --git a/web/plugins/metrics/bgp_peer.py b/web/plugins/metrics/bgp_peer.py
index 60648ce..d6cee6e 100644
--- a/web/plugins/metrics/bgp_peer.py
+++ b/web/plugins/metrics/bgp_peer.py
@@ -88,6 +88,8 @@ metric_info['bgp_peer_suppressedprefixes'] = {
 }
 
 
+
+
 ######################################################################################################################
 #
 # how to graph perdata for bgp peer
-- 
GitLab