From a6990804ed791afb5fae41a0a567090db9434178 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Wed, 7 Jun 2023 10:51:59 +0200
Subject: [PATCH] update project

---
 agent_based/curl.py     |    1 +
 curl-0.1.9-20230607.mkp |  Bin 0 -> 26332 bytes
 curl.mkp                |  Bin 26529 -> 26332 bytes
 gui/metrics/curl.py     |  210 +++++++
 gui/wato/curl.py        | 1330 +++++++++++++++++++++++++++++++++++++++
 packages/curl           |    9 +-
 6 files changed, 1545 insertions(+), 5 deletions(-)
 create mode 100644 curl-0.1.9-20230607.mkp
 create mode 100644 gui/metrics/curl.py
 create mode 100644 gui/wato/curl.py

diff --git a/agent_based/curl.py b/agent_based/curl.py
index d556342..34030d6 100644
--- a/agent_based/curl.py
+++ b/agent_based/curl.py
@@ -28,6 +28,7 @@
 # 2022-04-26: made http(s) URLs clickable
 # 2022-05-15: added workaround for raise ValueError("Cannot render negative timespan")
 # 2022-05-17: fixed wrong import path for  _TIME_UNITS and _gen_timespan_chunks
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
 #
 
 # Example output from agent:
diff --git a/curl-0.1.9-20230607.mkp b/curl-0.1.9-20230607.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..554db2d6b2669da4a6a773151f2804ddb3f6d211
GIT binary patch
literal 26332
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
Z|6_mtPZX%{4*UsK+xb-qLI)D!e*hfFujBv#

literal 0
HcmV?d00001

diff --git a/curl.mkp b/curl.mkp
index 8a38d4db2aaadcc599b9392c916fd4727df5c172..554db2d6b2669da4a6a773151f2804ddb3f6d211 100644
GIT binary patch
literal 26332
zcmZ^qLyRyCuw~n}-Tk#~+qP}nwr$(CZQHhO^ZhR~%b8WBmX+L8s&dc8kAi@p74bI)
z`ZIEIw5Fk_WuWDtVWekdqGzRNqqVWJ2e|3^(>r2Mr0?cCtD6taWt-4NLh5yqvrXqo
zEj4Su0E0Wv*#XYwCS};a8J^vQW1h12`_fYRG@MAq<>J5FaXMyNB5qYqlq{)KtWZAr
zP#d_@eP0TiTO9@a36cA}^Q`N8==vQU6|HM)Xl>{Kooj1tUG*FD?E3=C^FZPH$NbUt
zmy;J3$`of8SkIszvy^o^Mr$?7mNaYrc`_YA7wEwa8AxY#M9_-?x};j9V-(YX9V2Lm
z<`odvBAOS+$9T5+V#Jy?UB~mcZMUp`xm3^ljq<LG6AVKjd`$^cO5N+QF%4Uk!4=t~
zl?JMI&6^%(Jt@^`<ccipuxyHE?u(%0qp<o^r*RzGW;_1dvUJ(_xWhRjJ1?J(-XKL5
zXbPOiF^$~?*VS#-#a4hml6%yo*F*msR>O3p9}E%wy?;CEVyly9&+eLW6t~gqhg+YQ
zb76uJ-RoTC4D(r3l&J&w%Io?2O*Qbd@-#M}BixhgmBipQs1G-XNQGu!<iT!0U!zpb
z_28X0B0ztD?0`JhWM1DHY0{anRTIkdR>hS$HhVHW(z`$G{%g*N4@_9F!~kb>8r|D3
z-zh!R3c8uYmQn9<Ot?9Ao5GZLFA;lNw4T$bfwAogkvf{ltX0r=x3fXqo=2#N2w&9S
z_gH&Y5cC}LjE=p$|Iy$DOZOp8y<h)+Tc+o4-P?ZP6XJ^l(!iw;#L>;O=Q2irz>w80
zi}J((#3Q!e)V9;sV;d)z3c5K<{Y+|o<JG#Vbv4l4*hTQYXyONZY7OEXg^{zXBsL<v
z?!VkHQV_awk*0wg5CdsePw4My>Q9kvzQBOP;1IDtn+G!M4nYtvBOZvfUE+m2eVC6O
zyjHcQ%k4m`CdPJqKJ`3BS)Jm5;Od{egXtaO@sE%=Uu}0d1^~;RMjKQ}Gwc2<+Ps6S
z%TBxb#o*o$F=ZdQkrEmR`anGvBxcVTZ>G=}YxiZFNMDH!u1BF*sLSb)|EJe|`1W&l
znFNjE3x7ynhia*K4JbrCf9=Mt@2>y2=B?G!?xk&~;tXEs?aqm=xPfgo-~6u8E*UW?
zvpcUQ1N0P8_T2t<3{Q4WV81J_&+F&A?#n&@&*cvd^p{WWPfP2{rsTP=P3tPF?sJcA
z;qOxWuL@q>r{P!4uBo&1*MKDI)9sc|ph2sAB<CyTrAcxUV^B|brm|G&p@F)BhNccH
z=Sxn(lM!pS;}2w~q_fb`R!M4B>YPNlCsQ-<_)ED3#2`@>s9&FkL=*Cxw+h-N-xsi?
zol-DPMg>HmSUF*uNL~a2;v663Ux}Z-ht6Ml(C@%yx$is@>JRbFP^albO+RukTMGP5
zNr9KXM1j}2NbzNXZqQ{x-x>=%`OzF%lG@Bs-s=K+YgFL<*3@4c_WMr!-_P#WOpMyc
z9}RDyfj8Bc-rvor)~}nB()1tc^h;^>-|i-9_uU)YXOA7nU-VBbv4=p1$lYI<uc~h!
zXWZb5)SRBnj}~hexXHX;T}}NgJ|}_5SiT?ZI(P47_YheNs{7Ldc84#><8N8e+%?&n
zn~>RH>}eXZ9r0en77JykQ0IyNNma5uL<pi0a4J<~!L*k=Z#~R-af_^7&C*`A0<h$V
zPzeZ28096tfH(o1`uT2%E>4&BK@e|!i>(}0)9Mi8(mvWIG3xQ9WO-BZB!3A7Id?f+
z{b>pCPv%&YNAyls{v!m?Lb(e5e!Ri3Hnc`crzrZpqMbn3=NM)Y?b%$Jko>AQfPW|B
zH;@3#V7jm9F5h;6vi-0e#{D|%!5GXl!^<L+mZ0EDxy(`YP61m`=X_noRw*PF6a%eq
zMDIDfCN_jS6Pa@<V!<My%*$%V^o}@P2d{n+_E?{23lj4x1Y$@h?>xeg55>itXNVh8
z^B3wHB7HvjD6XKeBsI11H9bF8ARJFOVGehGOe9d_?uCsc!Gbp{^k6zCMu#kWr@&1r
zQ8Z+~=Ln6~h&zyEI`-&p3Y#F-h%XUpddzEpeLa~{I?{5h!Bs$tfsiwctDzWO#XOs1
zc)U1|8-GTR0H_;!=3#q8d}w*XwX|$boe;t`r+P@|e2;72;5I-;7;kd47@KB?@oRf5
zZm0nJ@Gsnv{<+Rqy;2e0!m-w#V=!6x7Qyg@$`Y)AkejG&6QFUNY7<~kUk%z36$C7z
z4)J{XhM_`!IUtM1cKEhOzns2^NWO8WCbHH1Fv@An=SsAu_YntB>@#SJjEZAYDhED+
zBXonqPzMAq{QGKNg7}-g_RMGP(UC5-unk}E&vc8B6t3w)$g7WL0o3&tVD(oW1S^dG
z)TK;>p!p^OCwA_w-zK&%?>ZmPKM**9J1j~0p@o_4KSKM^<kbs6?pTKT_lP24_Mg8N
zPDs&NW0%8)(c>uuR#JI=m0Q%#9a?%8|E9N<j9GtA5OBid#7Z`T(zhXazWwjt_oKM`
zBY}B&o*{P!xgtb$pM~6t-Bl?flQM$&C-O`J^oQEp01uIRs}h<pg|tb;m=IfTcppMW
z%GD+mVP?1lVfp%LGv(Tul&I{%K${fui)qsn=(+s1f+I0CTlK=`<2I7W!dN6V09^0}
zCJNfJraSHFOB_D4RObj~dEtnPY{t&}0m4=!L4plEr+*=LnZ0Zl8c^qp3}xt<<I_|I
z;|d{$Mf*h!FzjjB?QOKM)>X8+yn}mU+BJb{1b0b$4oFtpwyu0nNWPD|*dsQrM|*7o
zOOg9my!H-<_R1LOM3%xj1Mr=nx3XVw$~P`{UpfGA<PLR&kbM$ixOY9~Al+o$e5EH7
za{R6eYzgq1EhSjYS%4BCMgS+lzB%@)biVoIXL=H3hv!l6$USP=97<vFbqkylPOpGk
zu^nZh;X?CaWR+M#i|yQZc`-9ec2@qbE1Jl`9{X`b@&EW$9HLx&g+Yz^2`*ng8SEwt
zpvb?ymz9M}uu_m<{PJb1{M*RxzqER4+N^$3J-5#LjEv5B4S!(4kXWLzUL$*GZC9T?
zd+@S6i|7$**en~9p4Yk(cMSP#n{*d**bTR;XD@g9Ky&w+3rZx6(#p*PT&MEv>RQ~t
z_yIQGjhVKpm(2X+$K6L?QPQhC&;G^Ytw22d1GsCrE9Cr=&3kT={X497OTcrLbFHHd
zM>E0dJ`#pb`m!e0s)ALD#CF{e$h?79KWd^&R$HDMB7hSe0EwBLOvcrAP`Zf;N;Own
zA-SrpUfu_R`!qZX0{)!9ctM_f)8AtOq@~=eGb*Yd$l^p+jyBkdhve#fGdiQ{a%%7K
zLJ1!KHYtHEZyu`E2EPa4lqOG>JO{L{D~F>u*d?r-2S|JMqgQX1Vq})@RH)AH;%yvf
z02&ml_W&4~k0N`U$Z#{d7U@Q4=1)H-&@E^JbpDB|ze<Y0o0$guR}>?L5uPCRpO|xi
zc4+-;gCSW3REV&nFtEz=Vs`Z5?%uWk8{!l}-@E55y(5(4<pY=#32=LSF|D?mK6Ssf
zdcQswE+%RgX@3{1iDH=3mn6Ip!I}iCuTz&j6`ZMjDQY*03^6lR;V<dzU!%-AvS=i0
z@7StrTsjk0hXTmbnO7t)JI-&o3=p>h#Il{jKe%@e(0gw?<~;U)F=lwN;im1ph{12n
zQWMg99KO?I=$*6YrBl5BGy|!&UyUTz-y;r|c2W8`u;>d19QL6WKQBcZn)&W!rxp%!
z<zVf=q{8nvP5O5CTW@CrQh)+;=%`urVXx9=&!M}z0(1ep+}bk$2Sn(dwPETp&IrPs
z)ylz=i&N&>(#5ZtkpTlnmn!<>hV%)y@`v!!Y1Y$#UX{nb3Xj~FC&akO$Q&cxXqqJa
zFL>;vrz6WnsT2f6Z6ADP!#rOFc2or5eo3`JQwL5WwS?4n#zB;mt}X_?Gu&Er9O(UK
zVN8eoyIWsXG5n$CK|(mc<>$4jpiWEuIS#w=<oezXXK5Wl1gJdmyZUP{*5}Pd1Vm^b
zo-QsHF0shsXt(~gvN)6p6C1ISIz@u`o2=<Col85Qk<RkSv!Em0>!C>RaA||AnSVZs
z4hkL+@j-g;#FYm;A?AzPOR)+r5NlRy@A}DB6Z8>suXh!q;tg>|D6j2F2A4mG(MtE7
zaUJx;qIRf{;6dt-vH{W<DX0Po-?{|j0CNU^UD9$rlers*TMOg)=sHkFqj2XG_Rcv=
z*n+E)7%66>13G+i?{e{&&KS3}EK@Y-!zkuYuDrc*JX*8peV0`asX#ObBZ93Uc1;A%
zX9^+12LT`3Ukd!XQhikCTiDJi11Y7?4i;llthzgyhbjaU=2|StPM<A`Y;FL!Al~?;
z^#_7LLf(Wyfd+qWOoyNbW~!70jmKBZzyhz`*A=AY6Sef;p5snnAFdh`AE+YxqUD-6
zT4iNuaC7i*qY)>d3b1QZBKVIAoc6H3B!r_KOq+=V(wnXT)pi=KOHIoDZ9w+u$3o;g
zT5^;_iC=|zPe=<G5(V6a+nEc52q2E7Udlw;#@EA}oDp-O2xW8--9?51#&NY%7vzIq
z0h?tH6QorNi1Q$8!>g#qReMNgB{ANd-@hwMFk1)W6_aP;0;n!LPjPS;GAUx2WLFxG
zH(-cz!--21OL^iQ02_|fuS5ez^`-4xnvo)NoIUJLP~74APCdt#EAXNakI4ko4}i#|
zbkb<a$=B1aDU0KXNz>Ahddi~{T;(%EJPOBwY4`}yNF47JzV^ngsv9TV*AtPYV^HVG
z>dFrCZ}M<_louDQf_uYM+vDu8>xl<r2{*<ve~=MKOf(Fu!^%Q&2A<6=%uea+$a1Hx
z(%E1dvw+5}KmCsJz&?rZ8e)=E5?5pCIjquhISy5bA@O|{frLDNJ^aKb`t-LMB%VY1
z%Ao0bO7BfY4u;$H?h<UKe`#+iY{RCdIvelDXiqSLp)2dhr`$p?Ywrq?ks&J!0>sAQ
zSRY2LV1gqbI0jXpD<*bc_5g)D7oX}hcod<pLu4i=>~O-!C7(-!7Pl0J#K=INPGVXd
z5^6lwZ`N5*cvL1gfX{Q>fX$v+_<P~~>Ec3&ls7LHV9*zEft28KKI{~dWw&P6?K<<C
z%%a$*S)c7L%sxfIFB7#nVo5<Q<4K%j^t;?slN@%k-ZW%GpqCLj({$j%fE13j${P_h
zg3*!eGtqMViFV4SA=>566)yq{<#HiUD6+;^@=nN5MeRhudxG1k-<*5`J81N~3_Xbo
zN6GQQ0O>k9J~Dkh`y!v?xeKuaudr>T;r$j8)If?Wp1V8J6p%tW0dC3sb;evWAh1Ii
za>53rV0jp^5r0@WhR?W65DtD}>i56YDcnrQzmPT(8L0D*P-=xN3pvs%xv(bb5R%ss
zGXQWne?~H@r)(je*dyN+Y-4ro+SpnsP8TauqQcNluw+*r?qPH38NWeFERc6^$TUi~
z%G=`(Fk?Ouall49!qouoVJ9SEv&>DnxQW#j6!)XCmG;L6TIIpLB&R$2_*&OS)-FKx
zxRB=VGynH)SEgMFn|iOruSSrXuMbC$4;Dn)#MAzBVL_2*7j29zecwTY1ZSWzMipog
zukQ>$SmTPzM$Ku4YG^TGIThBfyhh|HZ?pp)0Xh}p%(Gg`4DtX~$UWDJT>qd=7gxC-
zqgp|_zAIn>#iBR>J``LM@o~*GN31-4W3Ez6E$4~pdEU}3)QjmkhvpNRriw=HhQEHp
zI*;2mV}IXbiK)rCoCMnPtAnbU8em6Gj(*!VMra^iHLoya9{@ME3wn_um+2wvT7b3p
z+t+FDc`KnS;Rvy7bDV-4K%!_UyX;<3%~h5)Dv*NsG?U?;{4Q$l4&Hr{!TDjh*yR#{
zodiJc^aodmnkYr8@h{yGUKzCjVc>jABAI4G9e^MQ{n$#!hIOy=O+5uNNw~xe#@?C!
z$d!&EY;Y^5v;zAh&@o5%9A~o@mY>JFbvfr&yS_FtN!(Fj7DGAu5Vl0ywSjPsuY}?1
z%kJ6b%3hJv6)w9MPaP{G6SICB{^9C$)wa|;>!Q(`KsI365OY%=&Qd*~K`d)lcSHtp
z4NIRE9{TNaQ}hshYE!h9f3>$6L!iFvJqxbXh|ku-Kw(`*(~>us6nHb%ujy|-orv$d
zgB)N!f)mo){tBivcQ(&>_1<<S6;ZzF9hF*IMEl`8g#z3=0?8ZZpHmW$<_{Z$Fw|r<
z4snqU;S&2&rHOuB$CJ=@rceFMtL_=FvI-Q|bNQ6r6h42;GQQR|j@8hqvkXHVMVF!Q
z48%S4D(?Gx@9wLT>)v$bw*vt=!^^_wXin=CUI~Gwykm6Mmm{-8AfS`nk+L3d3Na=l
z6}7b<#2Y!-xZjKkdmzRt<dR12%b%gbnx8n=KnX*q@r5IrnwJ<S;&CKp^25*u6o16q
zG&Mti#@QnN!ZFkpQ06IC+j=gGf)i{qbyPgonK+Zh5Gxm8#$NbFN|E8$vC`kJRnobf
zH6zH|ISr!T!azuGx&ud#gS2-u1eGhxQSZ}+R`(9)GbZ|JL8`G2vivZ0_h`y-DZ;G`
zw}nD}qXhF_l$d&k{<UCi1==3(G5(=x&VSp3^}HLO3jKM$VD=J8s2o(DE^oY?$ykVr
zVzu&io9M-Ey7R^JezUmWf&99yyYBk4PS>$)h+RPa^yMkJt642Hr~(|wUwIo*8aMMX
zL&EomQVEd{oeh4CWpMLJDA&D8OIM5&R;yTbSAhJ{f!yc9kAvd}Mv0<Y3hj9AH2;1Y
zlaVFO3W{=^A7PcaNG3S22bVYGUhb|gi&r&mDH(xvGceo^so0(_!Ob)Ny83CnA)8Lq
z8nUjTgqP_BMS_VUFT$Q7)!nwPS6Nk;UVyAV$lhyO!Q-K=p36#8`KSvi+TIZWEdgN^
zn~j%L&7a=ERW_U&C`|;r)<hJc2n^*s1=di)`;-C@j7%^THG7r0b>u9jl2LRHd6O_x
zE1n~pE<Yu&P~*BP_!8(%I*D`~);`y+_|QnUP--{#E-9Kl?d5arOWYF7%GsUMen=ts
z{+c)#@Is&YdsfbZ4IuniWB`WkH8vJD2J1i~>skU0Ww5+_d7$0Z8^QNVbd~kg9XN??
zYhn&NyiI}C+d#VESGG;TPauwJ*&@&f+s)tyH;G)S90y-Yyto1e%;Mw3nU6O;dSuu4
z^Ez)n(E`!8NIcQC<xi6ST3_6CXK`oNo#4B=&-Xbmh!2wc-BaqjH@pP-eXgU;&8rDg
zA!}jE=Ug);t09G$`im%IjuI-Tnb8>7Ywc`&*TZb8H4lABWF0z4UdjVu@pf#NOB-R=
zW-%t5gS5OB7|{Z7qAfs!)!0Me!e1h7p>Phft0V3z_zi|{JVx7(LId(M#M6)nrr$m@
zdNG!C@H-GTBq~diGcu4bgQ^AYmg?W=++rTAT}#0KPwxK8h&LJ)d6GK)Vo3Z6?gDi#
z<4T>A5ejTd4{kgL$qnLI(nH|Zl_GCUpoVzzj>nBLbv8<-+q)iCq&NuQO}BXTK}Bmj
z!n~=l);u>Aje?#yb5m7apdFp_>1U)zjs{{^46Z?<jktAUpmD-0sG88r3FtJ1)@Z1{
z75mFQJX8G$0RQ`y{FQ_WQhT>%KH`z}?oI=kNM9SJKJMe?SobYZh)EV_`Wy+aMn+c!
zD*yneCGize4y(9UCz~ZW?+K$7P?@MG*rdw%g;|&7L<1a^htIZ@vP-Wgooy{Ke0<37
z?H)bkkm@n<2(L_St^cH;Ml3*6Ak>D{fp!Pd@K3s+TO!>iDM_bjWi|H-Z>7+mvyDLt
zD=pD@;aC8Qa`Q!y+J(9|@(n$dpS50a8aypz!sT349_*)m+KNI}lmu1>u54v=q?@W?
zlzm7^jUNJ<LtF0ksPZ9b$W}ji3;y{$K_Cdgw9A*n;hXLSf8+>XH3z>5Y1vt>W#|lG
znX&w6r;fGih_Sp45BnOD%3#5eE#f9X`~vYj8ouIR_)6EL{Kp+EpRN>OzSxAgBONRY
zE!aoTw4`X$R>qqp26uD7qkGUnvFH7|DLiJJI$_MRP<lwv3T`%t4|+oG!s3o>gQ{ip
z6VhQl&vEU>=hMY9<egMZl(gHR_}X|NlASJuNa=>Kf@~<}pZ_l(FtMecM)cP8y%e_m
zIHp1k)<)vdu)`rgNRb2^CE0v7x7HnV=S<J+D{*Jd`W=dDULKT4QY6%xrz@woV%rLf
ze|0tshC~OXSdrM|{9}B8b>3s5W}H8Y4C%z=vZ~<)Typ&KcO+8eEb`}Q=HlTFV@S2{
z4OG+;_xPTu#O-Og3Gaj5sMhw+eh6y!S&)hAhn;AjlA(@v?O|Zf_Q+ctbq`V%Mig#B
zT<5a@Va^!2+?55Ej?o6skN>|FiDSl1eF}C7%lZ|Us7k~5p<_3+4!FW8VNWV%sO#GH
z<4tpw5;Lsq@|@<%q3Sc1YS$lrCnj=pjEVSrMbm&*0`+3SfClPt6t5t(ny8jdf;doT
z18B_pPoYY?IG5feam;@=l*$ZURHh!DU8lRFQ01El%c0~|FlciGeFo{de80+AE|H~j
z%YF$HUmAUXu}7?3FEggJ7Oj)rG`By85=GdLLYz^yQTV?4zp1}~ThrIf(ns-<;kZQ{
zf8R1ua`2WS->*M{0VOWtTS@p!BEFPt^mk8P2}t1`xaU$W)r$DUcxWz0IPYgM>#Nwp
zeyw6S*gzHL2$V4>x@2{HNW}qomi&+Eh?EBIXTiQ&KUg8U+24fvo7z!l6F67=i7EuS
zf+Eqi8HoBgfMZ@{VqxH9UPF0ruDf@*Wo_l1CK~nu&N0wer0h=b4+{~8vt|0yw=5e+
zmDXiXae_)`#UH7{NA{|?4+j?2OQlEaQk>x`VU2$ja1>bhf^{>Wck6v~KHT3oM=deG
zTLYh+9#Gl&yQJS83?f~;**6pse>Q`#Sy0>Ru1d{fyJ#{ddQaFHLeDSjr+ZzGil(`a
zJi}S=TV)5^K(TJF?0GZW_FWlr`4qb9o@4oSgh9hCD#?YZZv*DC13(;!!A{T_ooCyC
zv$aj+N_5u@_*&l?&d%l4To+=gCzjWxKus{lbm$kCf_msYA|X1iojH_5vtwI}_|#g2
zXWhJjlgrqg3=RC^IBfN)kDueI%RPAVSF+k{jV4TEUGfLdN047l_87%x8JeF3w72B%
zh)q4#tFfD=8?Y%Qunx^p_ih+`@U6)OM4Gyxc~_(+jhPAhxse1<uds6KT;l5&KSBoZ
z%zX)}rAw35V9wmqP?4F#1lHc!O;E;&ne&vv34j7~1+K^j4Se-(TG&0g{uI6`3IHS+
zNd7CLY>>CP+?;?!Qw9$oOJZaL#$swJ02k4bhTQYyk01)6iL=a<o#U&A1A-AZ)@2MT
z)HAs<(F=VYCJ+f*&vsj;vX!LxlPSE10l+wZ!#c+))&zTk0U*6L=DVgjDD$a*>-8Ew
zo1C_roSZV4O@l;i=Be?@I7Eiy;xNv!wYi9`8k%$T(v+UjM4%)eI%tAOU*doPVp0H$
zhlCX3_t6&cQ-O+P>PWG#`P48(nTbHdJrrr@NT6DZ`p0$faQD%JmsIZXQ*ka(^Fb8<
zhEXHO61ewu7%Q4)qG>S)Qc+-jBqRvD&$9i+ed$2z1>4l0126~D#9{lbXg7h8b<*A%
zurta@A-)r9D(if)lv30*)MboKUYe9m9LSVbWPQ=q^bQixUF=0cD1gG{9uxlAO6hR^
zzRzNhu~qCMvcocfOvh$$i_`f!XK@NwQ<EYqOlVmDGF-9#SkdKA2^_D1mJ-vhJB!-V
zWbb?|xOo`}twWBGILsh+N*bupN-?Q~Ag#?ZnTxOu<Ph%@6Oj9j&ty9`M2#Infm@(A
z7CVvg$R$re=W!YNifm^<=m_Wh8DpOWz`JaX`FZbhakQlK>RJks*Un4mvd#mj)6j_i
zHD*Ck_kF(tQeKt%UIiN~q*~E>a%4j)xoZ@oW|rxKSaJ50GMGAfcu^<|XjRqs>5NcW
zF7C?vR}P2VYRRXn_wV`ZyZWkNxs2p0!B<?dVB*RTZzJE@YBM8%qg%k91HKierq#3}
zmsv)(l<_<K8!|$*j92z0b<`l1<L%HGJnFnF4iY((E!Sk^fq4lJsT4m1F7HEgs|>po
z^lSdf-&t;KSOv5?lx><>{Ikr~+bE?8c`;Ot>jTu9LuvScfl=3^O1tA?&^JTJ^w&_s
zK-TVsPC(T@ecugMb%!#ivgC1XM3s*91X$@|P1fhZ9lDs=_UGX))tkymzR79*XzW>S
zQ*M2;)H3$6u=Teld8Z|P8C}m&-zCX{nUd=85$|DS18YqaOlj#sqU^p&S)N<ElRnw{
zT;0{5v`y^xSx$3d&udS>hG*#o!Z~M|8NWJvdHVGD>Gsv-tIJ!P`~S7Q4`F5`ehtfW
z&lJ;t+j>_fk9=>ty*^uhGk@PSyrz_&X<2>=cN?jH9yNPq-*Z=4T6S%%o>zUqnd_ci
zubF=zTHe2Br+%jwc?q5#>=wS&cBjt2zWfSzbwW^AF}>&NjE+a@#BVdFvnLsC#)zxe
z&gT+Y5p=lGv)SKRUTd}}b(48%vd1yYbbPteEAV4|WBc_N-Lu@5XeC?yEa$!>^>9rR
z_I#)xVdwlfLayL$3T~e!qo%XxQMo&5W{Rg9W(+Sw!H=dOYA9l!;Wno+>1&ASaSIF~
zo%EfD8EL{<o?O@xq<S?;gl5`l;1aE8HE`^@BFDZkJ@Gj(E7PU9G#PVM;uAs<y7P4X
zo0IJ6M%_lzDM!MTJpMR&_x%}uCDr`2PJg`MgC**B6Y?}516yU+kQe}PKT*Q2DU3oR
z&JNpaL!8PqY>q<4z;^j|%+j!K(aF!_z`C(x1=y&FwbA7HZ4az$Hm;l+Po8CKX(1$=
zoH>xw!rKEZ!Onaxy{_afaMQ8hG4K6%&i=DgWPBGUl~Xyf_QdDo-8$i`a5S}W7sQ@<
ztBpQL4&mxzPBhM@yZ2FEbUm<Hhjd~^;WBXz&Vp?vLVNL1V(#Fgi%T?lqA$#chPhlh
z58j-}I}N3<YM@0JkqGbs96d0EL<(+x@seY)F8<IH&wT1KzIVe1+>s~5@*(57Y`NX&
z!!1+*p$P~EHuKpBRd8`RGEQhRoW214wn22Yxamy2BUZ@#qF8CcoEYy&0{v=veo<mg
zvnfFbQQF@zd_L;k$Y;E;8ni&s>|{G1;}LR<;tlC1nv;sQi5$42$MW-@Dc?L(&;F{M
z{8WkF#CyvJHB%_t!vPCwloG=-J`tyBnuh%xB`4p{Q}%E7`$JzpN6Jl%OFYWjD>>8b
z9-_3Ifd)ua@J}D_>BUiG?Addqws7PUrQ9h6&c&%YxV|@&p!+f~NL$O`sr6zSSs?x>
z+#nVuS@~R2aL|mCZ^zBiKjL5==1o=ZtkbjqNcp5786^uKzk|C5FUiGV6w2<h+2;eS
zjW<9^C$nbg%8q7SAE`PWR$1G`Q|IUy1dSMAqCp@;0unHEcBfN8dQ3yTvC{QWcIG2r
z3fqV1KoFCz*cZm1s?VkS_iIGS*B_P#hpF}5a-`M{s_@V@PjG-|BJuUK35p`zt|Ipg
z|9Keo^xZLjo1@6qR_kzl2zxNR6XGLeJ>(<jD>R?LX9K(t;mjBwf#1=S^5p-spQB8~
ztB&YL=Ivg%APY9EL_>+WrMjnztjH`CkXEEZpR4043yapS4|l=OrAJ`Ea3U=x=2Y7M
z#%v8jCuH|4;I3O3FVF@nrjZU<a<BgdKq9?<|Da1=ngGYV7T$5#-<94*aM`rNsb4my
zfUS$?$e;8~V-$Ht{B9<BInC&nb0}y_g4ydPZtPzGal)*?*||(e4f4VR4xLe6R@{e`
z*e}4Z&Y1N)Ce`Tbz@qt8cXBZTL$199X1=|5C0EqOM@0DfvfbD7ShFFTU_0slZ7aTe
zraO5!D(TQ-e6_{^sKCu7Mno6jN}o9b1bf*(px?QOru`$0<IiZ9<cSmlH-Y5E8N4O+
z7yy^)Rs-hOEsGovRbXE<ax!EEwCZ3uhsKetX@w4!oc8-GLrw@Gz}y2R#oUirUTHec
zjly_)J&<@i`W-myBlZo$0&Bg>f%_X(9lO1$<jWKPGXtjCdRfsT(~c=?Qn_gnMC^7w
zTA+MW%l2KEDz<OkId`=%EB_EHqaXLd=~|E>S}{RR+k%g&iIIZeA*~P`%ZP1bz3*K7
z%=}%~@@rdhp9T*(Z+($u-=*chsrv%IgZJan2;L5w!@n`dg;gC9H9*Zf)pv8N_e24!
zKgk{}T{&<EV@^`+;w;>y>HqlP@aEu4`x+3Oo-6caStc5;1$}$=_Njq+z4-~^XfIy@
zfltr~Yt;b$@Ukn~yV`y2?77_vg@}m?Dg_fSvm`Vm|Ew9X5XR8$=B7u{#+!kx-$i(|
zgN-x*_KFU#!W~yuVaVVi>2x5=ulkSm3B_C+nUR75338J+d27E%&{C%^E_BZL=UHHI
zeWmeN$OUEkHiKpo+?Us32(h)LZC1o}q@3IqAp|-SS%xCP7`tzz47VR)9&dQE$mEbA
zsf#MV*-ANS*IvB$q>p|08n)eHxqs3$3i<`Sb!qSi>wf7I6(=B4m!QQ0o9dnnF4?>K
zZ$gVgbO5EIM965ts@K(C6IRx$!`-iV=YF0q5#4<MzhzE>MMl!NDO$0!Or^exp(v(w
zK+KaGl}cls0zuP-z)jn^El!v54?Sic1M#el2pmORzF7bl!XOo7f%q%OW>tx8+d)aN
zpq|77PFhp|_17fprKRc-qfnweqh9xie>+_~5t_ZNR=;1~zqV&}8sbKj+G86~e$WoD
z4fpG)%gt~>@s%Ra;8Vs1Rm*7W>Z`6bTuEjKIf-nSEpe*4qoHMKA4&XkDb#~z)jWaF
zi0pvK{mZhX482XCQ^JFn1}L)~zA^wI!A-aZq)iEZ9KKCy)3(wSlErRx*kZqx2GFMW
z$yCT74@)uj(L)*$cSg{gF3mUcvkBJr)lggMSqi@hW<u`yAGE!9I9uvCv8E3ZFHat-
z7lbbyve3Lzv>THkg!Am8v%?f6IWG!ceeuOuh|N~1B9mym$`S!dw$kL4>sheTv=}&6
znA?R+_j~Vfca#NHdiu8qMOff;aC2nUi4mbq%hC8ahCvjk(75bKBqdEyXtKrhV8D!G
z=3@qBZ4W~gxel|60FPV?LCPYt_eXc?Wm`SBzoX-d{|@JVy{yCe6~%9fEm;y)(qtph
zCr)W@@+htrG~-ng!x`){#K;R*bF%-oa3^DF*t%Aywx$flnx<jVgpD|rVk_)$7IU}~
z%wO>cr|!(~8Op)RZXvZ|MbGeLu5H4enby3iV!2|K#g|W|#e*lgE_!nwrA7tvgacri
zat-kJJ+z*{)=T$jl48ncN*R0w>&Q{yz~nRJ3APkVfIyzGHp{j?Dsu{Dhj)@E^JU;`
zbp8rvh+YzkYvY*BKEhnGHA7!L0H0mv7s}g|_LS+5wQg>=3T0fwdXV-010XiNVB5)S
zCLK;<bSv-DRW{s}%9M*5mxdAiGq9`n$(JN**gsI9>Q$8*(~exyvXH_e6?;ixVX_R4
z37+X$ixE2evmO2>wm%zqyUbgA9Toi;KIY3BC=H(SRr%bu))6~jc`CmIP?xU!B{SHb
zOwb_?s%7i%1fFw!JaBl4r??nZUElI=+lPsL{`qaaWV*<-LtVr|jTCV10C_0r<z*3D
zDGa80^Zn{EvmEK|m~UD|wmWj?7+aLPPCX;(<Q-{&8}#Dl$ujV!0_Ndu%2twO_RR5!
zkvsMpH;*L?;1q(E=|v`^7vWY4xx(Z!m7gZ*7ig|ja@pKyJQBF68Y4t|=FG54e;_73
znS*d?KY%U&`e2xFVo5Uy7SNMI0ElH7UuU6Q!ghvwY0PJ}ej1@6i8V(E^}$93Tiy{;
z{iM$pB;<r>#8aXF?j$0K;P6zM?9ylZ_`T5MJ^w<;lcvh-j6x7=2}F{8Cl%4($%QyH
zz>9F%%zooFDj=C}_IBAqQPO2vWOx<l>gc6V7oL5G8~JRyxWSeQRM9g`&ZY=Cy>|<y
zkgp)U<6}U-6$YlCMYw`FCfIp~Fl5*VaW1@>&<H1pU!>lD8zku$UY2VaRV*21r#NAo
z1XQzdc*#x}!C8?lAz?7!1ofJ@AbCKb!ZYG7;=QZr@4C4DnQow>JQZ-#2{AyWxym4^
z?K1ZAkTWVE#a?s{@|+X2fYS4BKvGEFDIwNuO`2#;r*=si3a$iE9c5ro)d76vuQY9r
zVuOi=s7PeW8G$vC>%b7WoN1koqV;w2T?%9P-{wZ;k>x&>Ep!))Q!Zw%T?+!lXwKk~
z$ybml+O5c1QCtlw{}m~hz&lQU!<DU<+dZH;JJYYhsAW3M5Zr?jN=^7^CdjPS%=S!^
z)c}RI>_>f0w}%CDnPQnRA>Hyq+kZPFj{QephDT-rBhg>EC;XvrLLa?Y#sHu|iy=OK
z;4f)7@9+L;Sdoe=S`MNp>=``f^K+N)Lfs0-wl=ybnza@Qm4L;HWN^c1G+VGKm;d0*
zuUhkkE)Jz!V#)%Wo<qB$;KbaH{?RFIXGuSNpOB{(qfRG34s5XDJ@T9iuXtuHca1Y?
zj3YU&1@}3~Dc66HwG89K?`SwjMWh{2fz1Wg>G4B(GA%#`YC7b_nuo30QC&|&n0X@N
z-MH0@WnL10s?)zfe*qmG0<6&I0l+>84FOXS<wHfI4pFlv5DUQ?z~M+TP`f0c@F-`;
zfYcadi(0*-2*;z|4O~~M3sn4`wI#Gk&kM#`U=0zl@i^Rm_n(TY%;=ac_nR-T`W@5q
z_OOLm$pc_1lTltjn=3nvn6q##zlA-UPj28Z$CN9so)kZa9J5Ujea&}ZCQFj2&L88g
zx(YyZEbAJ#F>eYS!N&}^o2#d>`;=OxkaE)Apk)#=oz*(Vvu-J47S9RZrApgFBgPeB
z&Dsir51ma}&c(RYAVxU-B!C{7#+2OaAg!sxhJDB5{PG<x{8>6?90~aNTuY*;_{SO<
zfHu{26_xlnJbgb@|GG_5hr=apnKf3Se~`GOapt~z9@IYtc>FKBI)%}+#Z3~_;*2?(
z)azl!6T*~zK<^-Aqj5|tOf6Q~LCxqhE#P9oELMvgYuoJI;_7}vuXFi4FaByV)SzM~
zetR>}snE;ZY`eTM(3TUq%%5vPc&x7LiPbz6+RBkWLl?I6V9H5X`kT2oO-VWM(fPvC
z=~YOS*!j>*ONTa~%6;``a>&0M1tYo;J-zWwXq>f|AKa60W_BFGyG!kcUR&fh>O^(R
z{h63!CH36OBHYT7jOx;}?3l0v0E$tj_gif#DQBDGD1$Yoj2P;mqGIv=Z6+c=@xvc)
zgA*V)l(yW7!YwccKcQ?cKQeXL<HFeF+A~Hlbv&l=*y42}P?j%u|FN_y_XTe4cK7c5
zH}rcudx6IjBI5ZVW8$&caTb3{WEKvPCzYP25<HB1l$e=%S?rQJ@`&TD6%)z!NezVx
z{!&xsueU{0b3G}WieSK`-sg@x1zAH#?L{8jWx5u}<&JC~{|ddFzv7_w^#1rctf2t^
zi7vN74)e_|lSf`s$kDKLFw@{i#kJ#!F7-jWZ<8Xdfve7FWC+;_3Fc@joF&~!D4o_x
ztqTd(54|<0MsOq5H=Mdp!V!GA<8%*^aQSn>F8tbwD61e;4*H%mwF$<f3v;LkFdBb~
zz93-Vym6Wz>KmU-esWQ%=iK1gDHzbbMA_sj;UlB7Bo>zl!v0w_MCV;F3;g`1>DM5A
zLIjCQ*}qBMtG-O#wxnXM+FnqCjT#4?nG9)^ie*N*DsWIgh)DvBZi0?idn^!u<`ky}
zgh~PN^9&<x-a=QYVYkA+A!G<#r;!LNmf&<l%BD?2N3yOw_bzoHtdH5|zDLR0bS7()
zU{-XoL(YT3G){GKY>s)UawO0>-7p-su<D~*_pRWMr(9HQuAKgzx+u*236m)7@&{V&
z#tH)snB4&TaCT@eowO{RYr+5NQ&-JNNMU)u=vgrN{K5Ql=OHao;<~s^ucmsX^xCPZ
zLX1WzPaqdcS4k7Y4mc3nfwJ1Dv7&WKV}L5dUpPe$10&WK@ckYiS$MxLj@tI>W>5pJ
zV?s%}E9qF0)+v$Um(=%6^V^O6t%(w|%sf61zV#UOp{cE~m3r{knA{ycFZssP099on
z`yx`*9tyLyG9FFVh46wYp=cD@jvLa!aM7upxV{*@zu-IL^v3r<B*<SANzeNi{NDEy
z6Qj$A`sdcu*71P#_l7<4H=-`tA7rb`YIvs^xBrJ#SReQ!5uTxfjFA1itwLEm@<b9K
zu;3ulO^G<DG7PaYlwCQVp}nMdpw`gZE@KzknBss^Fpb09I*a>tdtiqc&cMAK&QNG*
zA0qd6Bjf9?^=1|Au{Rc-*Ff=6DpFmP@8B%vaUD`Y-^O@d0%Z`U!VnEQ=P%{4=Mg`2
z4WX>QX3k55Ucx@__0Oo=P+c#(9>w3~eGbi<A(MkB%~FC21l%~rhf=Hb)qP1`q1?I<
zcvZbzbi}+7OD-SR*TbLDOpB<n(!GK*l+w$o^X<a?-S^L31;qA%006mI1qUzZ79TI0
zo1^j!o2dHi31m@Oeitqh$YM4B+~S@$U(iuuT<VQBA4(YqCPlr<02~pu0>JKNbL@vN
z;tb=`>rkiC?J&?=#*hILR}KB)8U&1iJM+E{_*e<UbQ`S#6c`yu90Y0YOxzql%CxFh
zY<4R({0Kgd58rx??;1ZZJ5n($PcDu(&vs2IpWPvfk^9NJ6oyPn;neu<7zB*<yZ+CC
zPHFLa{XgF4EN-4SU-*(2W^TFtktl5=D4d$LY^O^d_L62tHf{ko0naEN!x#tU6pcw@
z$tzlkQCda#`LH4+S}PQJY={BU4%R0}N~;N`!DW<Ft@^iA&kX%fav{Oea)?4#BD27u
zuD9Uf7MQWqZgnx`9kd6Mi}&06URNg4yUge^=JiO%32Y~-PW`ChS4SED-fs?T{&iya
zA@9xYEfkz9@AdNDOQ*}%$1Ug-Cem^Xa%1c#sK?LbDBtutV=f=grF6Dc<Hs0&^pSV#
z!ZF7RyA?rAE$M-1lzMYsSI2{e=M_?~JiDUlYCfms17p{`ISMD>PjvH0!3OmzxHiml
z2_nelca{?o25mvU?4w!*a|^Sud!{#v77J=Ti;wgO7rb}Mm%KCt>dE^dUA+~>Q&pW^
z#uF|M|0YU8*jE%WURS|ULM8{HmD17xAkYjM+^ypl_a;ekI8Wn71BpSkgSXrh^ipT3
zyv@8Ix#Sw$o8=t#GfsGSL!^6{v%D9H+NwaGrFa#%=)mTwpt^Q-?#ku;4Cj}7bF^Oe
z=kID)LidbA6aLi~m#}|X>cgE26G~Q9sGyP0{i!~150A?#E<+r?gZW+*sFqG}%5b}s
zGx;_ofcqv)Gapk?S9-7>>q;}2S~G;h{=Kr9MyfXb{$-r(pzNrJNQR97Yz0#N48Ph*
zxvhqO_N$ReOAtljiZv6#nMm|&=^i=SEiYU=X99H+Siz`k_uGisW+e)Qzf-gpM!mhe
zX=itbW1~p-sKXfV2H9c_yJ7%|&2CxAL<i<wBJn7OS1wwzjC5Fbh>wEv_lU5PjbgyO
zUe^q_?$;1_VNAgWgMwB?*X^K~{hbyF(<}k7!ZhY&2K~X1v#x|QBQd2Y;_Ce=Lp_=V
zU8C{xMFV`Cl|b8z7Kl(11&{)*J*p#~-}@&F-<O{mR^M;?y2bbVVa#cM(n`Xpo-Swy
z)=)__m{qGt^!2x~?d!w&OfLUIi*orKDbSy+RnnxOBnrDevmctjYUr#6)c(1UrDYuH
za*K<Xm%A4JGE*U7_RD<l0=zvgG{*AhVfzfs?X3!Z&E675Is&&kpQCrL(OKGh_|ft{
z(6X)qwF-Mk&DoZ9>=C<pHU4~@P$-)Kfv`79(L5f6G_%HnUBkfqF>0eP4+oE2&<miE
za)0MjGVH=pj4fcX#LsAU2YvO!|Dl|L5gEYP?o$y`^{Pv`g{26qKC!1Sxw0*{R!otk
zBGZ2f0LJMnOT6<DVKtenAL^^V@9p7d!u3fe3BCGHH7wBXb88;%iVfpGIe`YiEibZ%
zTc14%1TbcmSGFX}OIm|<I#PNh@8_@>IY7?F;+eh(gjTF2V<7QJsn!_2D{ej%i;5?L
zO6#usU5eu4VYgg<eN{sel7L=Te4*b9>paNMNw!eUMn`3(I2PG%v(96ufMG0{o*SlO
zuaoCxdu#LjxEo>tDA`<K4}IbTP%2~G;(N0P*MWy=q%XpYLo=j+--rP?bid)}y~)ZZ
z3GA~D10@^Pz%1iKTuva$kLKc92Rha2IR)iGChaa;j>7RbGLLlODUjFFui-o8sxqZf
zR}hZBhW}zx1GFHV(x<C4I6WvquzV~Qd;VO64IRmGm3<-)G`5f}0#)$@zE~vhLuJ1P
z8%g;URzV(i^h%Eqky|tqwd;RkGO+R^jRUV%_2mAMocT4C|H-lcZE1RSrSkq=4PC80
z_1WEj7?h|o=9$$DFYF%%4M-Et;hn-n(Bq=Ytp$9fub=R2^+5KJzxo^eT!uXG@grgz
zL?z&F1HSdR_*gnmCjni5tpR>*Wax$toJ-ZT-p4njGRK{2a?ge9;AhRi)p89+%LK6V
z5p@-DBPq!*cc86JCNw;SUs2pj<g9p<1?IyAh<E+8zn%5OwNR2}RbFRuFH7Ny8<wVO
z3JlKgPx|_+G?Dx*&kAiV0&s~wTZEOjkmWdCmSs<X9O#=4;GPpEFPBg#YQ|_ue7H&F
zMACXRcMK1hwiwMk4I0Vty!^|PWy9iNN?XEHpv)t_?o>{<oO46@!~rkhj1DxK$G2)>
zo1i!`x2I)f$SIN|U9)Yz$-i`#xuUfu-);ZB;l~D0{@Rx&O-2u>g*5-b&In^dKSJyL
z@Pd_=TGwqBGtUzn*W4|0N_e}-mQ|ngIJ-38d{2RsgXdtIz+!LrDDr@sv;xoR!uV6O
zy3sC3*8N}d=5@iPR(b4M#$`tp@pB+Y*#oplj04-+>g%Zg<jZ!xq_F)r9Rr`g!BhD9
zQJ5y8w8|0Z=rhY#;+t^Tc_UPJ4>$YF2u(>rqWncL+8itmiXfy>cKII+49p0S-oYDU
zZRY>R(-ME6w@+h^)dbqelwEveuDnxr&w?n}+E}HKWTH()CFIVs(4QgL+2D6)N~865
zl0Hbz`et;uyq^|c>JT@2RBvQPefDK8>HlJO^7gmy$=r?H$l2L&pmtF_P>R7))gAfz
zVO;5rb|MZ0{2v`Ak?Izhcvqv?$h^45y7-XaU2nH~`m%3v_1UOJ?CsdUP44PihD}x^
zi#?@0s3`jyO<AV1iORS%Kyt|Ue1kKop$1>%Y_~T~*61>J-BvkVZ>dwP$Bf}$k`KUb
z1YJTH-#t<}&tU}DFn5?g6hQ2miqKW!<MEn>YcP1O+Wq8U3|a?Ah^*F_P+`Cl0+j7L
zrBbY3TR-YslRPeNgL>~@?jwuHude$Dzwg{HRiwwn$ao5{=LD{eV&BFi(R(;n9|AI-
zwM4`bNlYl49>eLa-lU8MS)t8b40>zYVEfTY1M#I2s~jq)sCXistAcrYsvW$O>2YV{
zUy;S4M551@W*_Lh#^esDQj-e4U+Ulka0pU$YB;2e?E$wwGj%<Mqtr2pcozs+7*yJ7
zRCYI6|EeS!eYLm~39I)m2eT}iMmP=qMlM~7@tzCI|N8prtKrxjQ;un(#xz4l9@5wC
zmZAa&LYK<!Nf<1+Q3986)wG1hGPQ&ON2I*InIshtkQAtSkWDM9bF*2I?jWclN-O&}
zr{2X-;)6>*4e`<vjx3f-NIn8rx)5AE1lOJ?_s<F2qD8L6JFw1seR2@dtzEL(gnTd^
zlGo&0T%k^Z6XIQr_rv?KEuh6kAFgy&EEQP3NJtDh3i`{sc*WV8s{wXozVwXUE<5YY
zexZ0sqtwmt-{LkRHRB$)_O}vAHW9$7O*ZF6_K|2X!P&Zbo*9n17W0B2TEoBx0=&fj
zp`Ii3syD1kV_SMz=guUd#F!$}*{=FkwehoCWtscJ<<Ty#MTIlHIcKyeV><NaDkp@5
zU9h$^IeT6FhHwJdF}B#T47bN#;%q}U<Y-#hU6UQgb&u%$@N<LLx~MEzc=!;+5ZRRn
zH0K0jW;u-_OZEyBU156|&n_s}w$_WHKDZv)|HK#~>o6lWtss6*`0|#cN2@L)4o!|Y
z>og6Cg@Z346JYA~ls9}D`9v7`3EfSsBXEBHve5`Hamhu6@rzx~tLg<z&H}A)QOQj{
zaZ&w1S?kDnU_=K_fau<H87G;uL^kq*ap)|!is1^?klg{-*qnsL+b$ml$oJIX$FwTy
zLT#Wm-9oNpeg9i2z8I`u_ZZkcWN<ScU+;5(#gK!UsN$j_H+}K6|NDPixl-P>XS!^z
zgXlKEJ>G4stigSDbKhO7d;NDmF|hAl|0fT;S36W>cm4-0^GlcWN3m;zA@O(jm6q$5
z_2-7~JN|K3W7AvmE{A<p_q(@u*!1WH1r>yjq4SqIb9<E4|9|s@=fMXbYrw2=b)0wi
zkf7R>7j(ac3&o#VAb-eZy0?R+gd!vhMbQ8XKQqZx56RjHYn?r;O`Z8?9obg`>7I*L
zD|vDZ`FU{>9b3;*Cl|I&<6mK1IN)x)p_Zt8Ayf<_f9V~!>OE~@RD;^U7_VV6+g0g0
zVYAnwo&HB7dHa!kQiRYpma-=c;~DJ#+^$Eqp&`t}{ViDz1b<4R68o?Eo-)`-;7<)M
zbJ{5uQE`g6;(8>Ap`F?ge<Nx69rzG06JNbfL)8G29fcn1RjMpfX0etTV7SAX8S_|Z
z*IU`A{M8<YZD7{xH`qnE^(jarBkIFqI_^f~ixDHjLt+%@AqBk`@9H@3?-v%c(_0E#
zjT1(0s!!UErcFsQ0~Jv-weIS4Pnp9u@P)?W=(XGhyyT-R9HX$e&+B3xv5K`?Ofrwx
z?5LPG_2zI*aE51#%Nvv^<qZ#6oycTqj|)weGmxA}#f(@>nBucjRqZpX7%x)YRkvVn
zS*?#4-<1@sBnlj7YHZd^p|X@1nx3$g06V2vT6zseiUzElG`Rv8rBfu>+&u8R&<MAi
zW1=;W{<TMKB9TnCG`D8((If7)=Tk5-KLwVqK7o?}AEGmt7@npH>Cbv&4${?eP&ez3
zs?wxuw;}S`HMlR9_Y`VqwKP(UG4d-No-(&Xhjdff1$)j`pgg6dOAuPkxl@~2Gir_#
zC{WCE6eHZp?@M>!FuUk(nZlAe<7x;LgIPeJ61DB>gG8b$hnik!NkOYvCwDms=A{+c
z)fDH9Wiz0~)K0gf+=Uh>5XM=rNpGa;$)b0DlrYN>^vxe4W#%SR5|f2=k+UZi*gRhh
zl<5|SW_wz}Fu%y+>t3qtI{A=;F3C`}nNQHB+Zvq!&vJ5-T#2BRO%%Ku4wo7f?~TKu
z#57l;Xvr{C;eePQQks2>4o$)8*%806ha?9Mq@_4lSx_j`J8CrRpBHYNfY)w{^Q8Gh
zkIHz;;&E-A&_#(^T)MDNQ{T~}$WXa0tgzJZgG#5{q|dedX3!}oiI67_HV5OxFgY&A
z{%2>@67NrUjtJ7Kw2IHKC~}z)jSK~ia^IP;-;WZvyXFsMRj@5KOpZl?Is@i*_c@TN
z2~COuo3Jh*463e^Mro&aISh01HA;~gt4He0kR=rte*I4$_w-hY8?Rx!smZo$vTaPZ
zZQHi(nyFT{Jx#Xlnru&8)oNw#`R(()&)$FGd%e&7@x*!h^+RqVyYlZ&C)tL=UmprI
zz_X%4`1W;R^e*}&XGmUo*zHp`%U<8e$!u&mF4qTh<LATf!|JLZ-Rt$n%jinY`{VLQ
z*Z9Zl#q61>+1v6W45zOcCVPEKz1dVVbTA8Y&1&l2A6YY;n{Tl9kN;)u!}MhC-?1MG
zax~dS;YMVC+UC?n4(?s_&<|$kp?tUH0F`n4U_H!y<9hfd>Ms*y%%9977xV(M$bNHs
z^Pf&xZR8HXHc9Ci4hvT_ztbYB>>1^~A!Iu|E1Xbaq@>eKi_O<x$wl1i@d`_u=)<A!
zFWC(8Cib7|`$c8^I<cDnf?yVr!oRCV{MKl7O`{gKgYiMV_aq5%V(iZc(GL86L-VLX
z8nl6Uu*E9DHqQT}1chOoPCYesIy?8<+h#{sY5kQantzD&n<}rR>$h>L&C<*u_{q#j
zE<QwZP9!E61FbE2?fgicRAZ5Kc~tt>%%6N%q5=fMZ%>5wCf)@1q(KJHSNotg@F)1c
zV;+~}1F?qZyowVi?9cO`)Q(ge;DiFS>`wS)<$DM!KfD8n5|eNbAGTejc3AMC36=ty
zv?}Whh9eqio@eaAGd0Cs{g%d_8~Ip)IdEgj^TIIp1<@CpTEg2m0!uh1T5#iQeSO8k
zX$}}Uj-c{co#iSbY`lC{TMjOU5cQeRI_zhNzKW61Go3L)UJnI_!8(5yXWUewI2(u0
z_8HQmSf@GpOW~n{RqxX|*coKA(&1Lj3t_4C@etl1;Ci)*xbX*L^rBK{s+ioPehV$#
zQCh&%-HHSzJ|o&m5tI=V_*Y`V5RLo+DzE2kA!L|nP^>`NnmCIpMH%-qaxqUKo9iqV
zk{r^kIh7Z$N}UfATd;YKNL;T@iS-4&#79;NBY7vJU)gj}v^-g*d{pF_oBp7AQx{d&
z{YC|=V+=5hU<<nkJ1uQaYe|FlMgN9K)nKR3RkBgR#G&+1U%kymDk9d!2@3V=OaS-3
zKWB1Dk`nmz1@2dJEbh8M7Tj+oqFKHn$qj1!3?sFoc-Rgsl^A&uLx@(~e!Jr@CE+?`
z<T-M*t%?ZPw}^DY9?sz`9rL-My2Bqob!}cmv&u^9av5EU*4rE6WMgq#JH-x@7xE~1
zno3J`<;~PVoR2H(5Duo0SxdexCbK^4@cN3&xr2J9=$8)o^QxyH6;1Ov^2GpWFPnQf
zIGnP~VZ|Ka73<bsg*2mO77~3qjgW?G1!dWYh`$pGglT9$zf5?$p9M(Gwb};gGNWF9
z>!gaUN8*=w-Q?hSDNT$~r_D+s^5xF|->1%iL${-@iC32-Djez?KFZdNG4YNA?d|h{
zV!a7FP45>Arcxzz_1-vZVrvPjn%1{ip0hw5?KUSG6hL`Iy;KpRd~f)ayij)MZ&ADq
z8|chCChcb0BbBi{(C!_xhbDLd_XjSF2H*=}L<2l`g1p913vw|#O1P|kFegD-kXQMD
zP6dfZ<}>{?!sY`w2Bh&A3b@dquT~dqd!%1UU#a1u=>PU(A{t$X)iT)|SaJ+=2JdP2
zy2*$tO3abSuhDG<o;ves%6p4*%59lp+E|=sVOvyXLsEGDGk~AuMn_<q)EI5AQ7htP
zB}yHKsIZA#5Jh{ncU3sklADB?DCqpf)WlBj-zEm@wSsZ?-y{ZIKfKVLudnj}5i%&i
zbvuhAG?F|B(F%CBAzrLaja;>K?pR*ttu4$d-3Ah$Qc!ZE&ox+RZysKlNmZ_pjy-P@
zMTlHyKI>CC&Ua=?fiQE_K-VxCa}h!Z!AhqPSAh3J%fDekzf(ZI)ZM-XEd=m;iv6*A
zN*DYIe>VMh9I}6Nc>8G|o|b`P8dcH%(_fryeV!ZDfDD~r9S)GpverU2dZQd01@Cb<
zDZkV<`r0qt=9H=(8iGGhqxVyi46r(_8fgm*Nodos<6>RSajCeq3Zug9u*R?7s;AIa
z0MOo?Wz79XdH5~aL|bLw&mvV0Uh)62g77VgFh+QgfVcZ#*E{rsxEZ<!H5{L0|7NV>
zYW1n<nv7)+Rj9E1#X4dx_&U716UOhPOf}`U9%K4S5rRBR`1LCQH2|J~PqanvI-;F5
zm$UPFF2wlu*S>@ijPZzk)ks{1fM|PHlmDSl@mTc1l9&fi=FjtiVBq-C5yPcBtz1Ak
zmm40*0ESn?F={@2J{*6urGDV?e5ai|fFdjsAMf_93**>F{7t9(K>4V?V9-RUq=>{c
zlUfir2F1Gc2&$JBrZ5UcQ%dV|Io|o9N?|04B(`S(w$dYPlfrGCLnOgq^{cpk1lej>
zr(3C3u&BAm#M||^keH9-EC5}H%Z!YwAmDF-<4XVX_NLC}`TtH=x?qe5^IwzQBa3{#
zU{egIv$O1MZ+jl{wH_%H>q5|DOFbF(#8zOwSj&*lpR~>~3s#jWQf}hcjQc_n5WBGn
zD0r!D9#oF|85OviMOdo~I%A%Q=<+}eVJ{eM+%b;xVr?*#<>E9tg+ADIZbqCzS+f*?
zihlD!ZPd`uVa}8(Gx#Qd+eNK?nj-<7!A4?U#}(jUoOoU3sLEf9z4R}64B0b$ayCV|
zBIVqcP1TeTcM_nuw%%ri`z==0)ouM&(@a?m-sWIx^Km2j<)3kkv#PX)jLT*pnNTA+
zIa5>jtXEcJJ2W5I@<;P0=hFaNnV=^PfRXEutT^t+tqUi*h2Do(LU8G^c7^&0(6q_*
zG9{`QV!u4CMnt$EpQP?Un5GuLgLzy$?#=a3$%=_WTi{>Ki2Kz_a5U`c20{w2;e|xf
z8>X^AsJKev%0}|HS_(aq-bf+en})b9wgIVtlz*^BN*DWtF~dOh$Q^A%GR6#nTm*7x
z0h#lo<604YWv^<8Ew<4L|7<Cllm1X9uZ?MOb$<Gx^wA^$6h6^OHUq121s-65jqW2k
zLP_OjFEln?b#1oq*#ReEpX7pIDi@>sGzjV|f03I`HVjp+_6Cjc8GXJi<ALf0##;CP
zUacLuAVb&K;$wJ5e!I!cl@WuC5F+0&L)t!L?A`r<2-7sCWfjS!VsCNeaoSrIHo0)%
zC1)*5bwW&Qh~2XA@0lsjpF`iVFBymp{``2owmdwm!nRdkS`q>e$MyWc1^eonIi*gT
zsrg${vwNEx`H}n1eV!;#?y@77OdL`D1sxrgYyp_qqV<52923$N1sFY8LyD5tdSQ=d
z8%3O0goG<<bO7m4;MP$j+P5VC{1^y|=OOU^7jST@sSZj$_vFl0D3xdil6WH<b=8SO
z!M~jm7-To*T%X63JOVD>nXlYbzK{)$%}?k+|7*$L%xOpafcJZdHmnt)%QM+Bk*7a5
z5446kn*nFXwk|@Iu2K9@#{hvSb?I}W{ijmm1BKF7bVqHUsEdsNv#U%-iNHohd4-}_
zGOOr<DpAHtQZlE4R9P#Ov@K!YN%Hr|4Z%nzPP9H^^6SL&x#EfXl7xJb`N@Wq9>P|=
z(kX?v>%lbIUDlwPBVA&lEq_&5J;xgg5>4i}ia2MYTwa#OLG}sXz?xO_U=w>n#Po@<
zkLxHBzd8jRWRZ0LBGG<f!rh>rcuKNardpIOXKd4cf}@OMJEHp^N?6`P(B_Sjt7VKB
zVlpl5CdM95@@>hE?VA0eDVARZ&In8*kU<7nN|Mn>y7NQ_z|t>qBRDUJ^K$s710L%3
z(qupms<VSALSoJM<>}lJDov$VyMLm>B?q9ex9utM5*Wn7WsL7b?Wqk#tE0dWFXc9a
z#wAa7WqvRP8jR`kC~}`m=sGsBI~9jMjrZTR61lyKSd|={!!zMycYGinD#*tZf>eO{
zNfcFzQ%!`zm1nf$D_9_prN@MfC@rJJ<kl|cHRH;83@|d?-?E;?t|Su7VS{&T9QLj-
zhWNxY&nlu1)e+ALMEORGyX&Bwdv?55G$0AJa`)E0UP_wzw1--|dvPBk%nI}s_U$c9
zEoK1-!SR%?$zD=icSny2BEH0Qbp0{x&i<OTGoiUGd#EVvYYr^Gw`~%gx}N}#;|A^v
z_ENs|QEf0c@7ARojK*s<I8A&ycl>nMvLstLQW4=xaP25!WQ<5Er(<&%(hP6dXW6gL
z;+SCmgbZYKZOr5x+c!Q;Cdu=0Oa;p6v)tKr-A<HGs)}b6V+g1tkO2YhN1RIDLoN&@
z@$wsq$RLDeFY`<MHnj;9r9I0)U~QM}#*zoF6qbE4^t65NpjPj4^e-Nj;NcnA;}o!>
zzbdBbLUh#Jc5Aaq9BiUsD`4A3S4gsk16eVrB{EVmaVK|KEp6EqIsbgpMZ%ng0J<&H
zP)bcse^|-8oK++0WZ^)7L?XknW?V`Crbt7Kr@3jvX$uzon}L71EHoV|g&%EK>D>sa
zbQteGOWbjv(}xtP8DJ`M7F^3+(#}2ZitnSijK6%*D6r?-yfhuVM2ytC9g$N07U&$i
zK6l~Fr^3LZ1dTgVFHa<8frUvYo@T~INi3hwRd~WlP##X}lu{WR;W47f8w3B0=G;0u
z!L1F*Z0|KPF%OYB*s+?-ao#>9VoBUe4u&eLVIm1jFYEnxfvoOd{Ntux`j`yA>>b;|
zlg^?fx|@5%>|Nt1J&Conl7A}I&x|scJ!B3^h4@iAe@~wJ>XoC~1~hU9rYLHn5%4F|
zcnys>1=o2&&*S%N8bD__oVg!04sEBFM5Niy<M(y`zN3|3*6Ab-%^(@3jI%hMG5$_k
z*Sy>>@7+^=w`6Ze5~#S9_4B3I(dZSG5+%=`7RT0z16zOD5)HJTNTSPRQs!J=zra@h
zCg=459M!D{_bhg7oCUO3ZdAX-kO3#mE0nK!))O(e_xyC?mTt$Ipbsa;^G?q0C*}m~
zbM)tyT)E!0f)$E>@C*}M>`Zfz1(y#o!rv52bg1>We<_S;)`LKVE&#wzc$#2AwdxS1
zt@%cUvqb1b;?rCni=VTD2iI9UjLwCah^NycODk2fIn%Zq7o97V>HOi9UycHR1VX{+
zFTsAjU5QB+b$XgFY}V*&iIdZm<!Zqiw7BvUHZwgyKOtAzb#>aLwUCipb=S$m+0-T`
zBhoYpm*cz~gRT{l4CC(3IHbaddb|cH*Pm1FDg!7cVO|c@zmO9N>rV7;;n%PD(Me7u
zev$f~TI^Kne5Ov{(h=i~Z<z|X{TlA~pr76`k`S8~G%PJi)5M3aUq`>u)qR?(42CE1
zjsX>pp&A~Udh9Pk#kFVidLKz}<wgD;IC<QG;xsgb+&R336wd+o_es8=9m0O?_D2c^
z$<?B-+r#HMSdZ3k9{hPf-RdF}NNM|vDk1VEj{P?nbXs^H;q?ThF6DAfnKCr}31Mjc
z^0gnfAIa?{;HH`Rup414boRqv=NMeMgfRi_)9F8aV}@IjW5{0Ge1lUz7<-2dNqj36
zTu{Qk3>1t06!JEOpO3WVRNPx`qJk)~82&iuF^j^Dk6gHcFAV6W;&#2N5z#ATu_dA*
z2Y0v-m7EffyQt0K{D!Kr_nxg7Fb@Zqu*&Iu9F6+<B(uZG<o2Pu%G_c!Vz3Vq?=X!(
zmX5?J415jyAhVE_X^dswl&(R2jG<wH658>bSP#!C+GJPG!2+}EfJ*UfJ~{-mrN4F|
zJvvwOS+}k;vO&#Aso^FgOny~5uo0qSvh}UWAoCL~B3APtkZA1$Wk>%dtD8r2?5??0
z(q^8WJbS}RQL%eZ=jDr3S3CV$qP0uM2Niot^h=p;qsUHXM-;0rT#!Z7QoIcpfNqnG
z&CIHPB^%CV61`-Z7@7D*<*vfjkaOLzlLA(%%y%*7hFfTR1OgOr2odZp<+G_Fbx`oy
zpFZ@8e?^4bQUMdC%7!uBvDMAE4cz*z4^erK<X>wS=Vhjdd!!LJ#A3b~)abk3>@{Z@
zjH_Y5nLC|0PA`+1Ru&YI=ZF54IZQY5BwKuq&HImFh<Ftn;A8-XP;w?LB5Tby<6s~z
zO+A7c<y85JYpApu;!w4hxB2nzU3QOE0uR>9<ps2uD(ZQ~>|W$r?soE=LE_h^4ap>)
z<htiUDr2{Y$GdlGa$PaBlIq7|Rt$pidV4JkF~q{2Os%dQIK}Y9@oU4QjVrBwQ>E37
z^!OguI4EH}YNTT|rEfW<x2@MmL=ikFdd$IkSC-|c3!Y-1{ywy~eo5_7oH1gJzebh#
zH`hgS3jqm+eY)3lrldz1d(MgR26vfd4XzyLT&#`<vtdvu6-To*7l#m<jMi5Y+@iB(
z>GAB<QJlhZjO%>6XbON9)wQxSO@4_AFJ?mNkfU!mzumL_5S%ziFH(a)f;212Vb$QE
zZ?dCjU7YMxwS%)LrSH<Br<W8n!MMWoH89$Udl96jhIMgkf1R2bP5DMd9MwehQxSRe
zZ^}0f1!ZC!b<`=yp32iq4TMVmbY42iHCu5MzEo(kP2uyHLXq?QgjR#j-N6}~lD67Z
ze9xAypSprIohp!Iw-WUmf+SzAS>msj-b+6=y4>!U@Xh-ye0@v&?A_h%!F?6iX>@V`
zJmsLjE5@`EYUHJ1RMok3=bIbFy&Y`T30!e3`{W{#Hq1;R47aOG({l_!t8}xdx!*t7
z@F>Yz@06_e+tW9O1h>UBi8Bz3w6urw2jnz$Db!!q!0XwZnR7O7e+q?Ck7c8u8nwvl
z%B<ON%9f=a&m*pUI^K|Q?2|i+mw8W)I=5Sq_9?J}<Q18aOm`3(9NetSy!6U^ysnUI
z1mhtHJiud3wa^Lc+||Izd)nG_^2ba`Xx7s#*gqsZXY;=9H3m9eKi!&B?VG1y+;A)Z
zYWrZ6l!q*=J-=#g#xQHOLOY4dgp*KNVHl&SV&=r37N_5i+on0)4+e#^s^T2VawZhV
z;#@bZ%Y0`jFNsr=Xp3h@*BARsKu0D*FN^9s+%OG-VXL<p{E{2>*jSH!;T@tiqWj2J
zv0(`jtHCl6irjDVRLGvt!kN%=&iZ1D_kPamXN%V}$%+IA0l@=W#e)1^%PZSPU}b9M
zv|6)b%yE%1NGHSQh@XP>XSMKSuOm<3cR{Hrz`$FxTc8=6r$m9Qok1N4aJxo>kH*MV
z%N%QwYeA+jYe=VB{3^x*Wy+R(tJ|_0Hd+2<d@D>$xcN?zwwvGHAR=WoyH&S@?YFUy
z*qPdtV4zJx;KCadYDWAS&hv%z1rv=g#Rj4Jog6-Q7ab&X%X%H=0jIxlDqD=V?A*c4
z&SiPnqGAe#%+J^g7SxUz83VOUM@*ShA67O!tgG^KM5WDtn>3LC4OIiY#0VfM+k#E_
zuUe|B)+|osc8ofBqWnj-41PKKD&34#__~YF_kq~%UIXB?ZI!%HfT|^3eb17t$n4J~
zKAZfL@`j~tz_~QEZ?xE}bQ@vK&72mMy?;8g=}U4{n9h#)FSLX7u=abb7~JI=SMr!J
zUtUNfa`ie9@AUR~6RI#w$Qg`z`NZjVyN4fnv%yB3>0gG#FCDb%UNoBBQhb>cFt%Oi
z;pYrs2-Tt-^h+l`X)m3=vv{?AyqbBN1NF%=XjCAF|3a@DDh<oFPZeu?6;Xv}%Z{{3
zm(j0od4npz%?pojjFcCj=}^nkEX=<U%fL~gv`WJw+(vMN&S5%CN&6@adCySas;;!R
z6C^d6b8kfa9Lk{I(32!iMAf9kmj|^DZ_OElf0w;=5>_KqRf%zuAyr}N=Olf1BRHHY
zC{F9}_&Fq0a7o;x%9_W2WT0E6n~&ufBfC&IK%b$Gp%`?PZmgjvD3o!_1%gAI58|jk
z+E2@TlyD1G%lJ0s4iQR%@Wf8Eofv(9X6@S|h|m9nJUk1{g?fygO0UelxPtb0W)#cW
zda#n!6dERLCveVug1026R9KTrylEe{1VlV22nS)2QRKL1CzLgh%qCbMwEj8Q!!7WS
z#d2y&T^ut1J6hs&?{$;1HH`f(4fPujDi5ayMqcf!>kDon@pO;278mmwOZ(H!QkSQ;
zw^Tp56KE~iKyl3YQu8TSKs<>`@VUM_bnmTzh&-Ku*4jW*Y(#L1+jyq6yR9<7&jJl+
zm9(j+Bvsh{visd3G56aYg-!tb)$zjYL_tAGB-O>Cv?q#gBpS@Cbiyr7ELH}V=ae_i
zaFNXL0hIS2o0jzT%)aIoW-gdc&OS<0@W$ud!aeAWWBwk~I|F}k6Wu5=^V@g5Kh)&H
z$GIIifdpMBQRT-~(WMPhCw5>1Em*1|ZD$Txiat}g1blUWM(d)A<-yjn#q;y%PoLlr
zYpHuB!@a0ogkdKcWfdP@tz?*jt!BOJ3CDYykbplD*+Hp^N{4j)>^Mze@YUX1H%GS)
z!KEAb#AI##!`AN_TNR&i=9pr}@@jVB8L`<P1<Fc7zYdZa)VLZCWL<#IY3+lJ4xG{^
z*H>3@K1-cEXuGCb_Ind2@Ooor=c{gz=V#IIGf{wgB<|hgp+y~0cqR-}cw|316Kw5O
zVRuI={0h_9?SRd|PZHn?e)E(C4?VO@<JH^dTzBBm*DZ3VVc{=4Ykp^^#Jgw=-+<A8
z*tdePw7k^q_jgM5i(uR(#^2~HAtssDHQAh=h;{k%in_LosJL(oabt*d@fH?Qmg>oS
za(gb8v4q68O%bR)z)NyOsVYYUYp7#jx4$Yk<xFZtNrbVZ9|4N<HtXFe``$()SXDA`
zqC^OZ)ZifMhTL0u!QX>A%^ZVAuXzFB&0_dl@BSD-39Hd$Eks{BEr(d;gC83)hKRdx
zD_?mFspt31Xdvu%FZkuva#e9cQyt;`SbJK1WeQU(o<K6PC1sb41C920DK%?Il2YYR
zm+i}KS)<AtV0Q%{gNr4&;Jv9EP0wz%t(Ht4I2gn{L6}d^((=RA{gQ>a+h8-9Z@s2}
zf;D>o*|(yY&myu5tM*ZDmHtN+%^Wh*Qk;6zZEmW#0YUu&6UTRkba=DyU|?%o@RKXF
z)%ou1+~@Jz8|q2oG8ioU@$uH}8??hO9Ly^mEGR52Al&!w;U4ty`M&!6{P}#<_VO7C
zyPRF&yM3uyEiOZd;cfqBf9OkRwht4)mU+(6MM>d4dRXMN$y_J;+tww%s{|Oi$w^mU
zF#0BM->$35RNG|Ppccw?GTx&0;t;thZ%U0_N0((krCP$ARguKQ7U-2gBZ=5p+T}^b
zauJa&Jn&cRzW5%pA$3HC?PBlGY>Zxzq4OXn9`j*nJEL$tT5rNAL6Q{+^9^cd;Q;&1
znODo~`|K*20^6za!oy$0eVMI|K$L$`_00y<3U)*qn`Y-K!~8YGYd1FlBOtc7zEqc1
zG=lEqAib^QmxfsDo};q#J!t2@2z?<bfdLI5N0&rHo7tl)Ht_R-jhYI2=JZfV#F>Pc
zq^|y-Zpvr3Z+kN5Px?daGvIB%zBV?udYS1$LW4k@kGx!v4XQ)c%Ebz`wiQX${b&0v
zsPyAGR=2Tgot6ZnpgpWWUN4y;JGrG02}@QOp`1A<J7BiVQ24$IA(`nSOy}I>{=gPp
z3mKSf;e=1BOEC<dE;&sl|KKdsVkP-*o`iaNG`k=)^1@J4pZ?hL)H>iU5x>hFg2MGe
zM3y(@Xl=xwCf8^cN*h!qf~Bk_^=HA8pl_LQ>d49VtqdygT4Wct7Ar(eT%TLS2BwH5
zVPYlKOlSQ47?W4UlEcLkMPvKa{^4C$p;t;ULE*7rdqcjeA)2fa;K)yvAzVP_wn1}J
z!;`1Heo``f?w>^)W`g?=P^L#Y`=?2ZjMMl4o5Ou7pQ)Y^KdWBPpf@ef_1WkfrPgHf
zmHMHjnaR8Ca8Kut?d3`}q;g}Q8RPWImssuhW{KqjiKHYs%?zZ==IMnfiveuy0Q}b1
zQfy<VcdO@Rawq-BMKx0V0p>Xi;7kroSG{;#aN>%y>F>pS&V0Pt@8Mn%3h57#MD}HN
z&4+R?re)tM37VJ|!4-}ATHi73EX(!P9`z@E-6aw24*knYMwt)uZEyDMdaI~0f9YwT
z3~FASJG2LE$5;4dF%BhiMRhY~&{m<bOi{_P_%O6F6d`Jx%~vmKc5pJ_k|z6+`Y&2Q
z-bkZd;oi0(&6fS3ps0lIQKSi;VbP6>p9vLr;JH<b@_=OIx*Nf2JL;dB*YhimqpQVm
z#m}piGHDe$wZPto3A1O4FamlDIqNXKVG8;S?eoz$s8-S6O~t>_Lk4H{XksV#;O$|!
z@$@jRa?5#kHO@OeWNhAvNM0_wZIaY>gPg#?l@x!{+E1@{pwwsHsaVVRdGdXIMj1Eg
zdNb$c3=_Huy+HVM17)0*29<0rGw;+r6d&TydPYSSH%ZyJW4h3kw`ofss<mk1O~esf
zYD2LiST#Q8k_fxFLAf988|j^sJ~hCy)F7b?Bfso35cs-wBv9=<fc4~p|GsvOQB%vz
z5}SZXnP{A_j_OET&Wq7&gP!H0vGj>^Si^fy4}(em$+=7lwDqBnas_gaQactBn{eoA
zCNCa_v|e4n?Ql#3ud0QAjO+XDI2xNJ+p{#OGV0TDy=!g^(pyg1i?!*cNhTf<f1D^q
zxhAD;6<CKE=(Rvo@0cCXm)2rfXy%v8O;Rp$ZX4;e3Zkz+neja#!qe0lr!yJAt;x}O
zy;;56$fL#0M)?eiyBW*ek{-;x9rn3Nf5P0~8ti;+{rRZDpE+Clbuoud$T&c(H!p!h
z^u28~3@Rgzmzk8Onm<WiGMv7}mTPRl;n$X>_4oZ!cp1ReNSei#XZ*KS!l1Ym*@3Od
zjIbxCf<|`x!AwSYratfEjIah2)`V9R&ouU<SgB5t@S0~tv*%?KP|XA=Ue*a0AbKiB
z#rgTr580iLCRx?Nvcz7K$6Ea>tsU1z6~N0yKs`Vb5yTSwSJ_>*ZCa{A9VVL%aqQr4
z_)1L*Pb#JaR=-KS^Ak-@ft(MWEo{Jnh<u|uCdfh6JuUMv<tL8&xGtJ&QIv6121#`S
zjsfmk6Ibi$58pqrB}1v|2ndf6mIfQ5s=6iKP{J^Ud5f>>gW{)gC?3jk*BQ611JF%=
zn94NIC<V}Y#)CZu0?y1l0`lY&MAq;$CRab>BXB`zVORo=ZgaVCipmt%lTiFL!n&l_
z!DB_?&t>z(xZ=$_+q|w=?WY3%R|Oex@+-W^YiseeF0rxjZk#X;QTQfH_qDO{SA8DJ
z|5)sP@itm&nXb-+J%8l)>dcS50?eIf+Q?#DI3S}mYSX#lHmdK<1R1|?Tg?*g#4Y`D
z=%^21yHc-({cOMa{ji0hK0}4Iq}s6Cs}F_hqJG|voVS{bm*K~At+z{LoLEP-hIwoa
ze-+RmQqHP29szsNl!{*C`1LbxDKl2jxUQE(qE}Dxklwzfy6Px!nf^j|toq=51tiVO
zRp$S$kX*+8n$OPIvOH<gHrPc`m~(q6@r?f~!R(vDEVEA%OhN@*gwz2`-j}J$MNcaZ
zmFsMkr&_jylo%r(=2<`707On0;^begDu{lbc4Iye$k~CnztoV`Za&ICYDa=B-s2tA
z@v@K+MrV$y)&O7Tk964^9dMYTj%DST58293_{&~pQQqqJCY`{HN`_uv?Vv<RO}At^
zcigcH2_g~VRo(hY&K<R`KbUU**}y-tJCtYI$}uQ)>F;b=Qyc48HRE6%lMDis$=;>e
zFf;tl<S@_gi&0!qf{x|N@ANO~>h4!w3AZ<m+IE4lW~h}hoG=ND*b63}%kTVd<q$CC
zNY`FGcYH%`h0FUFqa~0gX!9XqE+BG8<Z3Wi=!PEvteb1YoZ5mM>#tuLB~X%-BbOlx
zkQFtD!%g?_+}35KNM!6Wx?hC>q}QzlMAfusjl>wWB$n8Gw@R6QKiJV%o8AxPu-6kz
zi~;b+%2ymr42G?V9IK6M&I{F?{W!0c9kT9{lQf(#%0+QEjrCYDHqYNggup_?Om49v
zv#->Q%8%88<PQ!tpvNwzboCYbkjah4J8H^QX2MTGQcW?3T4>dCJF#<U`-6&WkV030
z(qKnEZ1Fl$U!fJZIFODI__k!Y)+o?Gb2*y6nT$_tXlMPfw4JpOUftDv>}3a2o&FE{
zslA-iFrfYuc3)ZLw{6Mo?)QHD;DKKdZz<zH0o-0}^-<pX``xka;VAI{vn}A5GBE2^
zEH{;BC&#~cbnvt#wk4kuVon@kFsb4NTR4ARUkNV9<%(lj>|*`<ZefvamCOf2THXzP
z>AOlYnT8vx#4mAl8Yw}UA%!BS2cK8LGp^}^f1O&6!sPL$%{Q%yUx_Oh{@k6UinNR-
z7;(kV75<ildyy~yO!v!H9H}@RkvJ(7Z&B6GCR6<Dsgxr?IW@fBen3V=iJS$X!)@*2
zyS+qeL|iEY`7CD##bg8{(LO#w3TDWN+z9pp9BMXTcz_vuU683TMwF7mY0N_!oQa}*
zYO@lcH62L5v#MgjF}Mg*xBurXq?$3vv24NgM{llXSl%nGSB1}u$3;;Z<#Ge_t39hV
z#TZM+$JiBIVlZoNgFw#L$7xvwPW*Whx<`mWqTjTI&O*MHuvlD(t+L19H_oR3NaxM>
zJH#Bm5*9oYdahJqxb+wFf0)aIhLQTqlR=(;O~g^Azr&Y}DI;ZD?pAK*@B7Dh`R2L#
zE+J<Bfpqm{MGL8u^UOG3@32<-6wLGhXyRAdV)h)nFJq2=7UP?zk2-tm{B8QpQZVN~
zJ--^*9Z307b2p+>OHtF3O<VLJHsj=TQTO}x76Y$l!KP^?9RA^po`+^8Z2nYHtwCX5
za9f}FB9kd=shMmMPm<@De9-aG?-^UG43w$Dq08`<29o?1{tCIW9z=*!mPi-)!OYR%
z`TCm{0qAu*2gM#YiHaK9#Wwa*+-;nKbGe)8F3QWgp@-sgYhoCfGUr3ScAA`yr^?Sc
z9!PrH)r?A_L-u(<2iWU$VR<+nZRB)Yte&+D*?&VN{~L0_;8FjjWIr$?IQe{cP85qY
zo*n+-*N}<OX8K(4pmBlEJa^_Mu>(_aaEDc;BKO8+E1_R7%o?fUfQ%b47E=&kh!)WM
Z|6_mtPZX%{4*UsK+xb-qLI)D!e*hfFujBv#

literal 26529
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
Y%k%QQJTK47^YqXE53WzgCjeLi0L6&gRsaA1

diff --git a/gui/metrics/curl.py b/gui/metrics/curl.py
new file mode 100644
index 0000000..bf186c5
--- /dev/null
+++ b/gui/metrics/curl.py
@@ -0,0 +1,210 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2022-02-15
+#
+# Metrics file for the curl plugin
+#
+# 2022-02-15: rewritten form cmk 2.0, based on the work by doc[at]snowheaven[dot]de
+# 2022-02-20: added num_connects, num_redirects, size_download, size_header and speed_download
+# 2022-03-13: moved cert time left graph to the end of graphs
+# 2022-05-17: added scalars to cert_time_left
+
+from cmk.gui.i18n import _
+
+from cmk.gui.plugins.metrics.utils import (
+    metric_info,
+    graph_info,
+    perfometer_info,
+)
+
+metric_info['time_namelookup'] = {
+    'title': _('Time name lookup'),
+    'unit': 's',
+    'color': '11/a',
+}
+metric_info['time_connect'] = {
+    'title': _('Time connect'),
+    'unit': 's',
+    'color': '21/a',
+}
+metric_info['time_appconnect'] = {
+    'title': _('Time app connect'),
+    'unit': 's',
+    'color': '31/b',
+}
+metric_info['time_pretransfer'] = {
+    'title': _('Time pre transfer'),
+    'unit': 's',
+    'color': '41/c',
+}
+metric_info['time_starttransfer'] = {
+    'title': _('Time start transfer'),
+    'unit': 's',
+    'color': '13/b',
+}
+metric_info['time_total'] = {
+    'title': _('Time Total'),
+    'unit': 's',
+    'color': '25/a',
+}
+metric_info['time_redirect'] = {
+    'title': _('Time redirect'),
+    'unit': 's',
+    'color': '33/b',
+}
+
+metric_info['num_connects'] = {
+    'title': _('# of connects'),
+    'unit': 'count',
+    'color': '14/a',
+}
+metric_info['num_redirects'] = {
+    'title': _('# of redirects'),
+    'unit': 'count',
+    'color': '24/b',
+}
+metric_info['num_headers'] = {
+    'title': _('# of headers'),
+    'unit': 'count',
+    'color': '34/b',
+}
+
+metric_info['size_download'] = {
+    'title': _('Size download'),
+    'unit': 'bytes',
+    'color': '15/b',
+}
+metric_info['size_upload'] = {
+    'title': _('Size upload'),
+    'unit': 'bytes',
+    'color': '25/b',
+}
+
+metric_info['size_header'] = {
+    'title': _('Size header'),
+    'unit': 'bytes',
+    'color': '35/b',
+}
+metric_info['size_request'] = {
+    'title': _('Size request'),
+    'unit': 'bytes',
+    'color': '14/b',
+}
+
+metric_info['speed_download'] = {
+    'title': _('Speed download'),
+    'unit': 'bytes/s',
+    'color': '23/a',
+}
+metric_info['speed_upload'] = {
+    'title': _('Speed upload'),
+    'unit': 'bytes/s',
+    'color': '13/a',
+}
+
+metric_info['cert_time_left'] = {
+    'title': _('Certificate Time left'),
+    'unit': 's',
+    'color': '33/b',
+}
+
+graph_info['curl_times_total'] = {
+    'title': _('Times total'),
+    'metrics': [
+        ('time_total', 'area'),
+    ],
+    'scalars': [
+        ('time_total:crit', _('crit')),
+        ('time_total:warn', _('warn')),
+    ],
+}
+graph_info['curl_times'] = {
+    'title': _('Times'),
+    'metrics': [
+        ('time_redirect', 'line'),
+        ('time_starttransfer', 'line'),
+        ('time_pretransfer', 'line'),
+        ('time_appconnect', 'line'),
+        ('time_connect', 'line'),
+        ('time_namelookup', 'line'),
+    ],
+    'optional_metrics': [
+        'time_redirect',
+        'time_starttransfer',
+        'time_pretransfer',
+        'time_appconnect',
+        'time_connect',
+        'time_namelookup',
+    ],
+}
+graph_info['curl_speed'] = {
+    'title': _('Speed'),
+    'metrics': [
+        ('speed_upload', '-area'),
+        ('speed_download', 'area'),
+    ],
+    'optional_metrics': [
+        'speed_download',
+        'speed_upload',
+    ],
+}
+graph_info['curl_size_download'] = {
+    'title': _('Size download/upload'),
+    'metrics': [
+        ('size_upload', '-area'),
+        ('size_download', 'area'),
+    ],
+    'optional_metrics': [
+        'size_upload',
+        'size_download',
+    ],
+}
+graph_info['curl_size_header'] = {
+    'title': _('Size header/request'),
+    'metrics': [
+        ('size_request', '-area'),
+        ('size_header', 'area'),
+    ],
+    'optional_metrics': [
+        'size_request',
+        'size_header',
+    ],
+}
+graph_info['curl_counts'] = {
+    'title': _('Counts'),
+    'metrics': [
+        ('num_redirects', '-line'),
+        ('num_connects', 'line'),
+        ('num_headers', 'line'),
+
+    ],
+    'optional_metrics': [
+        'num_connects',
+        'num_redirects',
+        'num_headers',
+    ],
+}
+graph_info['curl_cert_time'] = {
+    'title': _('Certificate time left'),
+    'metrics': [
+        ('cert_time_left', 'area'),
+    ],
+    'scalars': [
+        ('cert_time_left:crit', _('crit')),
+        ('cert_time_left:warn', _('warn')),
+    ],
+}
+
+perfometer_info.append(
+    {
+        'type': 'logarithmic',
+        'metric': 'time_total',
+        'half_value': 5.0,  # 5 seconds -> bar half full
+        'exponent': 2.0,  # every double of 5 == 10% of bar more full
+    },
+)
diff --git a/gui/wato/curl.py b/gui/wato/curl.py
new file mode 100644
index 0000000..c55f0a5
--- /dev/null
+++ b/gui/wato/curl.py
@@ -0,0 +1,1330 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2022-02-15
+#
+# WATO file for curl plugin (bakery and check)
+#
+# 2022-02-19: moved global options under "Default settings"
+#             added per url settings
+#             added proxy settings (--proxy, --proxy-user, --proxy-digest, --proxy-basic, --proxy-ntlm, --proxy-anyauth)
+#             added follow redirects (--location)
+#             added don't verify certificates (--insecure)
+# 2022-02-21: added tls/ssl version (--tlsv1.3, --tlsv1.2, --tlsv1.1, --tlsv1.0, --tlsv1,  --sslv3, --sslv2)
+#             added http version (--http2, --http1.1, --http1.0)
+#             added header only (--head)
+#             added user authentication (--user, --basic, --digest, --ntlm, --ntlm-wb, --negotiate, --anyauth)
+#             added to proxy authentication (--proxy-negotiate)
+# 2022-02-22: added option for cURL check plugin
+# 2022-02-24: changed forbidden_chars from '<>| ' to '"<>#%{}|\^~[]` ' + "'"
+# 2022-02-25: added plugin interval and timeout options
+#             added noproxy option to default settings
+# 2022-02-26: added proxy protocol (--socks4, --socks4a, --socks4a, --socks5-hostname)
+# 2022-02-27: added expected_strings option to default settings
+# 2022-02-28: added expected_strings option to url settings
+#             added state_item_not_found option
+# 2022-03-01: added options --limit-rate, --max-filesize, --max-time, --speed-limit, --speed-time, --connect-timeout
+#             added options --user-agent, --compressed, --no-alpn, --no-npn, --tcp-fastopen, --tcp-nodelay,
+#             added options --cert-status
+# 2022-03-02: added options --referer -header and api_key_header (header from password store)
+# 2022-03-05: added option --dump-header, state_header_str_not_found
+# 2022-03-06: added option --verbose, --stderr cert_time_left
+#             fixed upper/lower levels
+# 2022-03-10: optimized generation of upper/lower limit
+#             added transform for ms to s -> no need in th agent to change the value any more
+# 2022-03-11: added check to avoid duplicate service names in url list
+#             added --location-trust, --max-redirs
+#             reworked redirect (--location, --location-trust, --max-redirs)
+#             reworked cert verify (-insecure, --cert-status, --ssl-no-revok)
+#             reworked advanced_settings (--no-alpn, --no-npn, --tcp-fastopen, -tcp-nodelay)
+#             removed get_session_data. moved to curl default options
+# 2022-03-12: added --cacert
+#             added max_age
+# 2022-03-13: added post data
+#             made some entries fordable (Default options/Per URL settings, CA Cert)
+#             changed url and service_name to curl_service tuple
+#             changed headers to list of tuple
+# 2022-03-15: added regex pattern match for bakery
+# 2022-03-18: added regex pattern match for check
+# 2022-03-19: added options --dns-interface, -dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
+#             reworked ip_address_resolution section
+#             added options --ftp-account, --ftp-alternative-to-user, --ftp-create-dirs, --ftp-method
+#             added options --ftp-pasv, --disable-epsv, --ftp-pret, --ftp-skip-pasv-ip
+#             added options --ftp-port, --disable-eprt
+#             added options --ftp-ssl-control, --ftp-ssl-ccc, --ftp-ssl-ccc-mode
+# 2022-03-21: moved  --connect-timeout, --limit-rate, --max-filesize, --max-time, --speed-limit, --speed-time
+#             to "limits" sub Directory
+# 2022-03-22: added curl_error_code_to_ignore and http_error_code_to_ignore options
+# 2022-03-24: added options --hostpubmd5, --hostpubsha256, --pubkey
+# 2022-03-24: added options --key --passs
+#             reworked user_auth section
+# 2022-03-25: added options --compressed-ssh, --list-only, --use-ascii
+#             added options --path-as-is, --ssl-allow-beast, --no-buffer, --no-keepalive, --no-sessionid
+# 2022-03-28: added options --mail-auth, --mail-from, --mail-rcpt, --mail-rcpt-allowfails, --crlf, --upload-file (SMTP)
+# 2022-04-10: added options to deploy cURL executable, no separate rules for curl and curl executable anymore
+#             windows/linux summarized under on option, no separate WATO rules per OS necessary anymore
+# 2022-04-26: added check option clickable_url
+#             clarified option 'Don\'t verify certificate/pub key', 'Don\'t stop at verify errors (certificate/pub key)'
+#
+
+import ipaddress
+from cmk.gui.i18n import _
+from cmk.gui.exceptions import MKUserError
+from cmk.gui.valuespec import (
+    Dictionary,
+    ListOf,
+    CascadingDropdown,
+    TextUnicode,
+    FixedValue,
+    Integer,
+    Tuple,
+    DropdownChoice,
+    MonitoringState,
+    ListOfStrings,
+    TextInput,
+    Checkbox,
+    Transform,
+    CAorCAChain,
+    Optional,
+    Foldable,
+    Age,
+    # Url,
+    UploadOrPasteTextFile,
+    Alternative,
+)
+from cmk.gui.plugins.wato.utils import (
+    rulespec_registry,
+    HostRulespec,
+    RulespecGroupCheckParametersOperatingSystem,
+    CheckParameterRulespecWithItem,
+)
+from cmk.gui.plugins.wato.utils import (
+    PasswordFromStore,
+)
+
+from cmk.gui.cee.plugins.wato.agent_bakery.rulespecs.utils import (
+    RulespecGroupMonitoringAgentsAgentPlugins,
+)
+
+bakery_plugin_version = '20220426.v0.0.8'
+
+# unsafe characters https://www.tutorialspoint.com/html/html_url_encoding.htm
+forbidden_chars = '"<>#%{}|\^~[]` \''
+
+_limits_transform = [
+    ('time_namelookup', 'Time name lookup', 'ms', ),
+    ('time_connect', 'Time connect', 'ms', ),
+    ('time_appconnect', 'Time app connect', 'ms', ),
+    ('time_pretransfer', 'Time pre transfer', 'ms', ),
+    ('time_redirect', 'Time redirect', 'ms', ),
+    ('time_starttransfer', 'Time start transfer', 'ms', ),
+    ('time_total', 'Time Total', 'ms', ),
+]
+
+_limits_no_transform = [
+    ('cert_time_left', 'Certificate life time', 'Day(s)', ),
+    ('num_connects', '# of connects', 'count', ),
+    ('num_redirects', '# of redirects', 'count', ),
+    ('num_headers', '# of headers', 'count', ),
+    ('size_download', 'Size download', 'bytes', ),
+    ('size_upload', 'Size upload', 'bytes', ),
+    ('size_header', 'Size header', 'bytes', ),
+    ('size_request', 'Size request', 'bytes', ),
+    ('speed_download', 'Speed download', 'bytes/s', ),
+    ('speed_upload', 'Speed upload', 'bytes/s', ),
+]
+
+_curl_check_elements = [
+    ('clickable_url',
+     FixedValue(
+         True,
+         title=_('Render clickable URLs for HTTP/HTTPS (see Inline help)'),
+         totext=_(''),
+         help=_('Needs "Escape HTML in service output" rule or in Global settings enabled to work.')
+     )),
+    ('state_item_not_found',
+     MonitoringState(
+         default_value=1,
+         title=_('State on item not found'),
+         help=_('Monitoring state if the item is not found in the agent data. Default is UNKNOWN.')
+     )),
+    ('state_http_result_not_200',
+     MonitoringState(
+         default_value=1,
+         title=_('State on HTTP result not OK'),
+         help=_('Monitoring state if the HTTP return code is not in 2xx or 3xx. Default is WARN.')
+     )),
+    ('http_error_code_to_ignore',
+     ListOfStrings(
+         title=_('HTTP error codes to ignore'),
+         allow_empty=False,
+         orientation='horizontal',
+         valuespec=Integer(size=3, minvalue=0, maxvalue=999),
+     )),
+    ('state_curl_result_not_0',
+     MonitoringState(
+         default_value=1,
+         title=_('State on cURL exit code not OK'),
+         help=_('Monitoring state if the exit code is not 0. Default is WARN.')
+     )),
+    ('curl_error_code_to_ignore',
+     ListOfStrings(
+         title=_('cURL error codes to ignore'),
+         allow_empty=False,
+         orientation='horizontal',
+         valuespec=Integer(size=3, minvalue=0, maxvalue=999),
+     )),
+    ('state_verify_sll_not_0',
+     MonitoringState(
+         default_value=1,
+         title=_('State on SSL verify not OK'),
+         help=_('Monitoring state if the SSL verify code is not 0. Default is WARN.')
+     )),
+    ('state_expected_str_not_found',
+     MonitoringState(
+         default_value=1,
+         title=_('State on expected string not found'),
+         help=_('Monitoring state if one expected string is not found in the cURL output. Default is WARN.')
+     )),
+    ('state_header_str_not_found',
+     MonitoringState(
+         default_value=1,
+         title=_('State on expected header not found'),
+         help=_('Monitoring state if one expected header string is not found in the cURL output. Default is WARN.')
+     )),
+    ('state_for_regex',
+     Tuple(
+         title=_('State for regex pattern match'),
+         elements=[
+             MonitoringState(
+                 default_value=0,
+                 title=_('State on regex pattern match'),
+             ),
+             MonitoringState(
+                 default_value=1,
+                 title=_('State on regex pattern don\'t match'),
+             ),
+             MonitoringState(
+                 default_value=0,
+                 title=_('State on regex pattern match info missing'),
+             ),
+         ],
+     )),
+    ('show_additional_info',
+     Tuple(
+         title=_('Show additional info'),
+         help=_('Shows RAW data from cURL in the service details.'),
+         elements=[
+             Checkbox('Request headers'),
+             Checkbox('Response headers'),
+             Checkbox('(TLS/SSL) session info'),
+             Checkbox('RAW data'),
+         ],
+     )),
+    ('max_age',
+     Tuple(
+         title=_('Maximum age'),
+         elements=[
+             Age(
+                 title=_('Warning at'),
+                 help=_('Warn, if the age of the page is older than this'),
+                 default_value=3600 * 24,
+             ),
+             Age(
+                 title=_('Critical at'),
+                 help=_('Critical, if the age of the page is older than this'),
+                 default_value=3600 * 24 * 4,
+             ),
+             MonitoringState(
+                 default_value=0,
+                 title=_('State if not available'),
+                 help=_(
+                     'Monitoring state if the "Last-Modified" header is not available in the agent data. Default is OK.'
+                 )
+             ),
+         ]
+     )),
+]
+
+
+def _get_tuple_upper(_unit: str) -> Tuple:
+    return Tuple(
+        title=_('Upper limits'),
+        orientation='horizontal',
+        elements=[
+            Integer(title=_('Warning at'), minvalue=0, unit=_(_unit), size=10),
+            Integer(title=_('Critical at'), minvalue=0, unit=_(_unit), size=10),
+        ],
+    )
+
+
+def _get_tuple_lower(_unit):
+    return Tuple(
+        title=_('Lower limits'),
+        orientation='horizontal',
+        elements=[
+            Integer(title=_('Warning below'), minvalue=0, unit=_(_unit), size=10),
+            Integer(title=_('Critical below'), minvalue=0, unit=_(_unit), size=10),
+        ],
+    )
+
+
+for key, label, unit in _limits_transform:
+    _curl_check_elements.append(
+        (key,
+         Dictionary(
+             title=_(label),
+             elements=[
+                 ('upper',
+                  Transform(
+                      _get_tuple_upper(unit),
+                      # run after read from rules.mk before show in wato
+                      forth=lambda elems: (int((elems[0] * 1000)), int((elems[1] * 1000))),
+                      # run before write to rule.mk after input in wato
+                      back=lambda elems: (float((elems[0] / 1000)), float((elems[1] / 1000))),
+                  )),
+                 ('lower',
+                  Transform(
+                      _get_tuple_lower(unit),
+                      forth=lambda elems: (int((elems[0] * 1000)), int((elems[1] * 1000))),
+                      back=lambda elems: (float((elems[0] / 1000)), float((elems[1] / 1000))),
+                  )),
+             ],
+         ))
+    )
+
+for key, label, unit in _limits_no_transform:
+    _curl_check_elements.append(
+        (key,
+         Dictionary(
+             title=_(label),
+             elements=[
+                 ('upper', _get_tuple_upper(unit)),
+                 ('lower', _get_tuple_lower(unit)),
+             ],
+         ))
+    )
+
+
+def _valuespec_curl():
+    return Dictionary(
+        elements=_curl_check_elements,
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='curl',
+        group=RulespecGroupCheckParametersOperatingSystem,
+        parameter_valuespec=_valuespec_curl,
+        title=lambda: _('cURL'),
+        match_type='dict',
+        item_spec=lambda: TextUnicode(title=_('cURL service name'), ),
+    ))
+
+# #########################################################################################################
+#
+# cURL bakery options
+#
+# #########################################################################################################
+
+_option_curl_service = ('curl_service',
+                        Tuple(
+                            elements=[
+                                TextUnicode(
+                                    title=_('Service name'),
+                                    help=_('Name for the discovered service, for example www.example.com'),
+                                    allow_empty=False,
+                                    placeholder='your.service.name',
+                                    forbidden_chars=forbidden_chars,
+                                ),
+                                TextUnicode(  # ToDo: change to URL?
+                                    title=_('URL to check'),
+                                    help=_('URL to check with cURL, for example https://www.example.com'),
+                                    allow_empty=False,
+                                    size=90,
+                                    placeholder='https://www.example.com',
+                                    # forbidden_chars=forbidden_chars,
+                                ),
+                            ],
+                            orientation='horizontal',
+                        ))
+
+
+def _transform_forth_verify_remote_host(params):
+    if type(params) == tuple:
+        if len(params) == 4:  # added 2022-03-23
+            params = (params[0], params[1], params[2], params[3], None, None, None)
+    return params
+
+
+_option_verify_remote_host = ('cert_verify',
+                              Transform(
+                                  Tuple(
+                                      title='Configure verification of remote host (certificate/pub key)',
+                                      elements=[
+                                          # Checkbox('Don\'t verify certificate/pub key'),
+                                          Checkbox('Don\'t stop at verify errors (certificate/pub key)'),
+                                          Checkbox('Use OCSP to check certificate status'),
+                                          Checkbox('Disable cert revocation checks (WinSSL)'),
+                                          Optional(Foldable(CAorCAChain()), label='Certificate to verify against', ),
+                                          Optional(TextUnicode(size=40, minlen=32, maxlen=32, regex='[0-9a-fA-F]', ),
+                                                   label='Expected MD5 hash of pub key'),
+                                          Optional(TextUnicode(size=60, allow_empty=False),
+                                                   label='Expected SHA256 hash of pub key'),
+                                          Optional(Foldable(UploadOrPasteTextFile(title='Public key'), ),
+                                                   label='Expected public key'),
+                                      ]
+                                  ),
+                                  forth=_transform_forth_verify_remote_host
+                              ))
+
+_option_redirects = ('redirects',
+                     Tuple(
+                         title='Configure redirects',
+                         elements=[
+                             Checkbox('Follow redirects'),
+                             Checkbox('Use authentication on redirects'),
+                             Optional(Integer(minvalue=-1, default_value=10), label='Max. redirects', sameline=True)
+                         ]
+                     ))
+
+_option_regex_response = ('regex_response',
+                          Tuple(
+                              title=_('Regular expression to expect in content'),
+                              elements=[
+                                  TextUnicode(
+                                      label=_('Regular expression'),
+                                      placeholder=_('If empty regex search will be disabled')
+                                  ),
+                                  Checkbox('Case insensitive'),
+                                  Checkbox('Multiline string matching'),
+                              ]
+                          ))
+
+_option_advanced_settings = ('advanced_settings',
+                             Tuple(
+                                 title='Advanced settings',
+                                 elements=[
+                                     Checkbox('Allow SSL beast security flaw to improve interoperability'),
+                                     Checkbox('Convert LF to CRLF in upload'),
+                                     Checkbox('Disable Application Layer Protocol Negotiation (ALPN)'),
+                                     Checkbox('Disable buffering of the output stream'),
+                                     Checkbox('Disable Next Protocol Negotiation (NPN)'),
+                                     Checkbox('Disable SSL session-ID reusing'),
+                                     Checkbox('Disable TCP keep alive on the connection'),
+                                     Checkbox('Do not squash .. sequences in URL path'),
+                                     Checkbox('Use TCP fast open option'),
+                                     Checkbox('Use TCP no delay option'),
+                                 ]
+                             ))
+
+_options_get_header_only = ('get_header_only',
+                            FixedValue(
+                                '--head',
+                                title=_('Get header only'),
+                                totext=_('Only headers will be downloaded'),
+                                help=_('cURL will will only download headers. Implements the "--head" option'),
+                            ))
+_url_get_header_only = ('get_header_only',
+                        DropdownChoice(
+                            title=_('Get Header only'),
+                            choices=[
+                                ('--head', _('Get header only')),
+                                ('', _('Get the hole document')),
+                            ],
+                        ))
+
+_option_auth_user = ('user_auth',
+                     _('Username/Password'),
+                     Tuple(
+                         title=_('Configure user authentication'),
+                         help=_(
+                             'The password entered here is stored in plain text within the monitored host. '
+                             'This is needed because the agent plugin needs to have access to the unencrypted '
+                             'password to authenticate with the server.'
+                         ),
+                         elements=[
+                             TextUnicode(
+                                 title=_('Username'),
+                                 allow_empty=False,
+                                 forbidden_chars=forbidden_chars,
+                                 placeholder='username',
+                             ),
+                             PasswordFromStore(
+                                 title=_('Password of the user'),
+                                 allow_empty=False,
+                             ),
+                             DropdownChoice(
+                                 title=_('Authentication method'),
+                                 choices=[
+                                     ('', _('Use cURL default')),
+                                     ('--basic', _('Basic authentication')),
+                                     ('--digest', _('Digest authentication')),
+                                     ('--ntlm', _('NTLM authentication')),
+                                     ('--ntlm-wb', _('NTLM authentication with winbind')),
+                                     ('--negotiate', _('HTTP Negotiate (SPNEGO) authentication')),
+                                     ('--anyauth', _('Any authentication')),
+                                 ]),
+                         ],
+                     ))
+_option_auth_priv_key = ('priv_key_auth',
+                         _('Private/public key'),
+                         Tuple(
+                             elements=[
+                                 TextUnicode(
+                                     title=_('Username'),
+                                     allow_empty=False,
+                                     forbidden_chars=forbidden_chars,
+                                     placeholder='username',
+                                 ),
+                                 PasswordFromStore(
+                                     title=_('Pass phrase'),
+                                     allow_empty=False,
+                                 ),
+                                 Foldable(UploadOrPasteTextFile(title='Private key', file_title='Private key (PEM)'),
+                                          title='Private key'),
+                             ]
+                         ))
+_option_auth = ('user_auth',
+                CascadingDropdown(
+                    title=_('Configure authentication'),
+                    sorted=False,
+                    choices=[
+                        _option_auth_user,
+                        _option_auth_priv_key,
+                        (None, _('No authentication')),
+                    ],
+                ))
+
+_option_proxy_server = ('proxy_server',
+                        Tuple(
+                            title=_('Proxy server'),
+                            show_titles=False,
+                            elements=[
+                                DropdownChoice(
+                                    title=_('Protocol'),
+                                    choices=[
+                                        ('--proxy', _('HTTP')),
+                                        ('--socks4', _('SOCKS4')),
+                                        ('--socks4a', _('SOCKS4a')),
+                                        ('--socks5', _('SOCKS5')),
+                                        ('--socks5-hostname', _('SOCKS5 hostname')),
+                                    ]),
+                                TextUnicode(
+                                    label=_('Server'),
+                                    help=_('Name or IP-address of the proxy server.'),
+                                    allow_empty=False,
+                                    size=40,
+                                    placeholder='your.proxy.server',
+                                    forbidden_chars=forbidden_chars,
+                                ),
+                                Integer(
+                                    label=_('Port'),
+                                    default_value=3128,
+                                    minvalue=1,
+                                    maxvalue=65565,
+                                ),
+                            ],
+                            orientation='horizontal',
+                        ))
+
+_option_proxy_auth = ('proxy_auth',
+                      Tuple(
+                          title=_('Proxy authentication'),
+                          help=_(
+                              'The password entered here is stored in plain text within the monitored host. '
+                              'This is needed because the agent plugin needs to have access to the unencrypted '
+                              'password to authenticate with the proxy.'
+                          ),
+                          elements=[
+                              TextUnicode(
+                                  title=_('Proxy username'),
+                                  allow_empty=False,
+                                  forbidden_chars=forbidden_chars,
+                                  placeholder='proxyusername',
+                              ),
+                              PasswordFromStore(
+                                  title=_('Password of the user'),
+                                  allow_empty=False,
+                              ),
+                              DropdownChoice(
+                                  title=_('Authentication method'),
+                                  choices=[
+                                      ('--proxy-basic', _('Basic authentication')),
+                                      ('--proxy-digest', _('Digest authentication')),
+                                      ('--proxy-ntlm', _('NTLM authentication')),
+                                      ('--proxy-negotiate', _('HTTP Negotiate (SPNEGO) authentication')),
+                                      ('--proxy-anyauth', _('Any authentication')),
+                                      ('--socks5-basic', _('SOCKS5 basic authentication')),
+                                  ]),
+                          ],
+                      ))
+
+_options_proxy = ('http_proxy',
+                  Alternative(
+                      title=_('Configure proxy server'),
+                      elements=[
+                          Dictionary(
+                              title='Use proxy',
+                              elements=[
+                                  _option_proxy_server,
+                                  _option_proxy_auth,
+                              ],
+                              required_keys=['proxy_server'],
+                          ),
+                          FixedValue('--noproxy', title=_('Don\'t use any proxy'), totext=_('')),
+                          FixedValue(None, title=_('Don\'t configure an proxy (use system settings)'), totext=_('')),
+                      ],
+                  ))
+
+_option_tls_ssl_version = ('tls_ssl_version',
+                           DropdownChoice(
+                               title=_('Use TLS/SSL version'),
+                               choices=[
+                                   ('', _('cURL default')),
+                                   ('--ssl', _('Try TLS/SSL')),
+                                   ('--ssl-reqd', _('Require TLS/SSL')),
+                                   ('--tlsv1.3', _('Use TLS 1.3')),
+                                   ('--tlsv1.2', _('Use TLS 1.2')),
+                                   ('--tlsv1.1', _('Use TLS 1.1')),
+                                   ('--tlsv1.0', _('Use TLS 1.0')),
+                                   ('--tlsv1', _('Use TLS1.0 or greater')),
+                                   ('--sslv3', _('Use SSLv3')),
+                                   ('--sslv2', _('Use SSLv2')),
+                               ]),)
+
+_option_http_version = ('http_version',
+                        DropdownChoice(
+                            title=_('Use HTTP version'),
+                            choices=[
+                                ('', _('cURL preferred version')),
+                                ('--http2', _('Use HTTP/2')),
+                                ('--http1.1', _('Use HTTP 1.1')),
+                                ('--http1.0', _('Use HTTP 1.0')),
+                            ]),)
+
+
+def _transform_forth_address_resolution(params):
+    if not type(params) == dict:
+        if params == '':
+            params = None
+        params = {'dns_resolve_names': params}
+    return params
+
+
+def _validate_ipaddress(pattern, varprefix):
+    if pattern:
+        try:
+            ipaddress.ip_address(pattern)
+        except ValueError:
+            raise MKUserError(varprefix, _(f'{pattern} is not a valid IP address'))
+
+
+_option_address_resolution = ('ip_address_resolution',
+                              Transform(
+                                  Foldable(
+                                      Dictionary(
+                                          title=_('DNS options'),
+                                          elements=[
+                                              ('dns_resolve_names', DropdownChoice(
+                                                  title=_('Resolve names'),
+                                                  choices=[
+                                                      (None, _('IPv4/IPv6')),
+                                                      ('--ipv4', _('IPv4 only')),
+                                                      ('--ipv6', _('IPv6 only')),
+                                                  ])),
+                                              ('dns_source_interface', TextUnicode(
+                                                  title=_('Source interface'),
+                                                  regex='[0-9a-zA-Z]',
+                                                  size=15,
+                                              )),
+                                              ('dns_source_ipv4', TextUnicode(
+                                                  title=_('IPv4 source address'),
+                                                  validate=_validate_ipaddress,
+                                                  size=15,
+                                              )),
+                                              ('dns_source_ipv6', TextUnicode(
+                                                  title=_('IPv6 source address'),
+                                                  validate=_validate_ipaddress,
+                                                  size=42
+                                              )),
+                                              ('dns_servers', ListOfStrings(
+                                                  title=_('DNS servers'),
+                                                  valuespec=TextInput(validate=_validate_ipaddress, size=42),
+                                                  orientation='horizontal',
+
+                                              )),
+                                          ],
+                                      ),
+                                      forth=_transform_forth_address_resolution
+                                  ),
+                                  title=_('Set DNS options'),
+                              ))
+
+_option_ftp_settings = ('ftp_settings',
+                        Foldable(
+                            Dictionary(
+                                title=_('FTP/SCP/SFTP options'),
+                                elements=[
+                                    ('ftp_account', TextUnicode(title=_('Account data string')),),
+                                    ('ftp_alternate_to_user', TextUnicode(title=_('String to replace USER command'))),
+                                    ('ftp_create_dirs', FixedValue(
+                                        True,
+                                        title=_('Create remote dir(s)'),
+                                        totext=_('enabled')
+                                    )),
+                                    ('ftp_change_cwd_method', DropdownChoice(
+                                        title=_('Change working directory method'),
+                                        choices=[
+                                            ('multicwd', 'one CD for each directory'),
+                                            ('nocdw', 'No CD. Use full path in SIZE, RETR, STOR etc.'),
+                                            ('singlecwd', 'use one CD with full path')
+                                        ]
+                                    )),
+                                    ('ftp_mode',
+                                     CascadingDropdown(
+                                         title=_('Passive/Actrive mode'),
+                                         sorted=False,
+                                         choices=[
+                                             ('ftp_pass',
+                                              _('FTP passive mode'),
+                                              Tuple(
+                                                  elements=[
+                                                      Checkbox(label=_('Don\'t send EPSV command')),
+                                                      Checkbox(label=_('Send PRET before PASV')),
+                                                      Checkbox(
+                                                          label=_('Use remote IP form control channel for data chanel'))
+                                                  ]
+                                              )),
+                                             ('ftp_active',
+                                              _('FTP active mode'),
+                                              Tuple(
+                                                  elements=[
+                                                      Checkbox(label=_('Don\'t send EPRT command')),
+                                                      TextUnicode(
+                                                          label=_('Address to use'),
+                                                          help=_(
+                                                              'Can be the interface name ie "eth0", a exact ip address, a '
+                                                              'hostname/FQDN or "-" to use the same address used for the '
+                                                              'control connection'
+                                                          ),
+                                                          default_value='-',
+                                                          regex='[0-9a-zA-Z\\.:\\-_]',
+                                                      ),
+                                                  ]
+                                              ))
+                                         ]
+                                     )),
+                                    ('ftp_ssl_control',
+                                     Tuple(
+                                         title=_('Require SSL/TLS for FTP login'),
+                                         elements=[
+                                             Checkbox(label=_('Send CCC after authenticating')),
+                                             DropdownChoice(
+                                                 label=_('Set CCC mode'),
+                                                 choices=[
+                                                     ('active', 'Active'),
+                                                     ('passive', 'Passive'),
+                                                 ]
+                                             )
+                                         ]
+                                     )),
+                                    ('compressed_ssh', FixedValue(
+                                        True,
+                                        title=_('Enable ssh compression'),
+                                        totext=_('enabled'),
+                                    )),
+                                    ('list_only', FixedValue(
+                                        True,
+                                        title=_('Enable list only'),
+                                        totext=_('enabled'),
+                                    )),
+                                    ('use_ascii', FixedValue(
+                                        True,
+                                        title=_('Enable ASCII transfer'),
+                                        totext=_('enabled'),
+                                    )),
+                                ],
+                            ),
+                            title=_('Set FTP/SCP/SFTP options'),
+                        ))
+
+_option_expected_strings = ('expected_strings',
+                            ListOfStrings(
+                                title=_('Strings to expect in response'),
+                                # orientation='horizontal',
+                                allow_empty=False,
+                                valuespec=TextInput(allow_empty=False, regex='[a-zA-Z0-9\.]'),
+                            ))
+_url_expected_strings = ('expected_strings',
+                         Alternative(
+                             title=_('Override strings to expect in response'),
+                             elements=[
+                                 _option_expected_strings[1],
+                                 FixedValue(None, title=_('Don\'t expect any strings in the response'), totext=_('')),
+                             ],
+                         ))
+
+_option_header_strings = ('header_strings',
+                          ListOfStrings(
+                              title=_('Strings to expect in header'),
+                              # orientation='horizontal',
+                              allow_empty=False,
+                              valuespec=TextInput(allow_empty=False, regex='[a-zA-Z0-9\\.]'),
+                          ))
+_url_header_strings = ('header_strings',
+                       Alternative(
+                           title=_('Override strings to expect in header'),
+                           elements=[
+                               _option_expected_strings[1],
+                               FixedValue(None, title=_('Don\'t expect any strings in the header'), totext=_('')),
+                           ],
+                       ))
+
+_option_request_headers = ('request_headers',
+                           ListOf(
+                               Tuple(
+                                   title=_('Set headers'),
+                                   orientation='horizontal',
+                                   elements=[
+                                       TextUnicode(
+                                           label=_('Header'),
+                                           allow_empty=False,
+                                           placeholder='X-your-header',
+                                           regex='[a-zA-Z0-9_\\-]',
+                                           # size=30,
+                                       ),
+                                       TextUnicode(
+                                           label=_('Value'),
+                                           # allow_empty=False,
+                                           placeholder='value of header',
+                                           # regex='[a-zA-Z0-9_ :;.,=<>#\\-@\\+\\*\'/\\?!\\(\\)\\{\\}\\[\\]\\$\\&~\\^%|"`\\]',
+                                           size=50,
+                                           empty_text=';'
+                                       ),
+                                   ]
+                               ),
+                               allow_empty=False,
+                               title=_('Set headers'),
+                               add_label=_('Add header'),
+                               movable=True,
+                           ))
+_url_request_headers = ('request_headers',
+                        Alternative(
+                            title=_('Override default headers'),
+                            elements=[
+                                _option_request_headers[1],
+                                FixedValue(None, title=_('Don\'t configure request headers'), totext=_(''))
+                            ]
+                        ))
+
+_option_mail_settings = ('mail_settings',
+                         Foldable(
+                             Dictionary(
+                                 title=_('SMTP settings'),
+                                 elements=[
+                                     ('mail_from', TextUnicode(
+                                         title=_('Mail from address'),
+                                         allow_empty=False,
+                                     )),
+                                     ('mail_rcpt', ListOfStrings(
+                                         title=_('Mail to address'),
+                                         allow_empty=False,
+                                         max_entries=5,
+                                     )),
+                                     ('mail_auth', TextUnicode(
+                                         title=_('Mail originator address'),
+                                     )),
+                                     # ('oauth2_header', TextUnicode(
+                                     #      title=_('Oauth2 token'),
+                                     #  )),
+                                     ('request', TextUnicode(
+                                         title=_('REQUEST command'),
+                                         help=_('Send this command instead of LIST (POP3/IMAP) or HELP/VRFY (SMTP).')
+                                     )),
+                                     _option_request_headers,
+                                     ('message', UploadOrPasteTextFile(
+                                         title=_('Message to send'),
+                                     )),
+                                     ('mail_rpct_allowfail', FixedValue(
+                                         True,
+                                         title=_('Allow some mail to addresses to fail'),
+                                         totext=_('enabled')
+                                     ))
+                                 ]
+                             ),
+                             title=_('Set SMTP options'),
+                         ))
+
+_option_api_key_header = ('api_key_header',
+                          Tuple(
+                              title=_('Set API key header'),
+                              help=_(
+                                  'The password entered here is stored in plain text within the monitored host. '
+                                  'This is needed because the agent plugin needs to have access to the unencrypted '
+                                  'password to authenticate with the server.'
+                              ),
+                              elements=[
+                                  TextUnicode(
+                                      title=_('API Key header'),
+                                      allow_empty=False,
+                                      forbidden_chars='|"',
+                                      placeholder='X-API-Key: ',
+                                  ),
+                                  PasswordFromStore(
+                                      title=_('API Key'),
+                                      allow_empty=False,
+                                  ),
+                              ],
+                          ))
+_url_api_key_header = ('api_key_header',
+                       Alternative(
+                           title=_('Set API key header'),
+                           elements=[
+                               _option_api_key_header[1],
+                               FixedValue(None, title=_('Don\'t configure an API key header'), totext=_('')),
+                           ],
+                       ))
+
+_option_limit_rate = ('limit_rate',
+                      Tuple(
+                          title=_('Maximum UP-/Download rate'),
+                          # show_titles=False,
+                          elements=[
+                              Integer(
+                                  label=_('Speed'),
+                                  # default_value=3128,
+                                  minvalue=1,
+                                  # maxvalue=65565,
+                              ),
+                              DropdownChoice(
+                                  default_value='M',
+                                  choices=[
+                                      ('B', _('Byte/s')),
+                                      ('K', _('KByte/s')),
+                                      ('M', _('MByte/s')),
+                                      ('G', _('GByte/s')),
+                                  ]),
+                          ],
+                          orientation='horizontal',
+                      ))
+_url_limit_rate = ('limit_rate',
+                   Alternative(
+                       title=_('Maximum UP-/Download rate'),
+                       elements=[
+                           _option_limit_rate[1],
+                           FixedValue(None, title=_('Don\'t configure a rate limit'), totext=_('')),
+                       ],
+                   ))
+
+_option_max_file_size = ('max_file_size',
+                         Tuple(
+                             title=_('Maximum file size'),
+                             # show_titles=False,
+                             elements=[
+                                 Integer(
+                                     label=_('Size'),
+                                     # default_value=3128,
+                                     minvalue=1,
+                                     # maxvalue=65565,
+                                 ),
+                                 DropdownChoice(
+                                     # title=_('Unit'),
+                                     choices=[
+                                         ('B', _('Byte')),
+                                         ('K', _('KByte')),
+                                         ('M', _('MByte')),
+                                         ('G', _('GByte')),
+                                     ]),
+                             ],
+                             orientation='horizontal',
+                         ))
+_url_max_file_size = ('max_file_size',
+                      Alternative(
+                          title=_('Maximum file size'),
+                          elements=[
+                              _option_max_file_size[1],
+                              FixedValue(None, title=_('Don\'t configure a file size limit'), totext=_('')),
+                          ],
+                      ))
+
+_option_max_time = ('max_time',
+                    Integer(
+                        title=_('Maximum transfer time'),
+                        default_value=10,
+                        minvalue=1,
+                        unit='s',
+                    ))
+_url_max_time = ('max_time',
+                 Alternative(
+                     title=_('Maximum transfer time'),
+                     elements=[
+                         _option_max_time[1],
+                         FixedValue(None, title=_('Don\'t configure a transfer time limit'), totext=_('')),
+                     ],
+                 ))
+
+_option_speed_limit = ('speed_limit',
+                       Tuple(
+                           title=_('Minimum speed'),
+                           # show_titles=False,
+                           elements=[
+                               Integer(
+                                   label=_('Speed'),
+                                   minvalue=1,
+                               ),
+                               DropdownChoice(
+                                   default_value=1024,
+                                   choices=[
+                                       (1, _('Byte/s')),
+                                       (1024, _('KByte/s')),
+                                       (1048576, _('MByte/s')),
+                                       (1073741824, _('GByte/s')),
+                                   ]),
+                           ],
+                           orientation='horizontal', ))
+_url_speed_limit = ('speed_limit',
+                    Alternative(
+                        title=_('Minimum speed'),
+                        elements=[
+                            _option_speed_limit[1],
+                            FixedValue(None, title=_('Don\'t configure a lower speed limit'), totext=_('')),
+                        ],
+                    ))
+
+_option_speed_time = ('speed_time',
+                      Integer(
+                          title=_('Minimum speed time'),
+                          default_value=30,
+                          minvalue=1,
+                          unit='s', ))
+_url_speed_time = ('speed_time',
+                   Alternative(
+                       title=_('Minimum speed time'),
+                       elements=[
+                           _option_speed_time[1],
+                           FixedValue(None, title=_('Don\'t configure a minimum speed time limit'), totext=_('')),
+                       ],
+                   ))
+
+_option_connect_timeout = ('connect_timeout',
+                           Integer(
+                               title=_('Maximum time to connect'),
+                               default_value=1,
+                               minvalue=1,
+                               unit='s', ))
+_url_connect_timeout = ('connect_timeout',
+                        Alternative(
+                            title=_('Maximum time to connect'),
+                            elements=[
+                                _option_connect_timeout[1],
+                                FixedValue(None, title=_('Don\'t configure a maximum time to connect'), totext=_('')),
+                            ],
+                        ))
+
+_option_limits = ('limits',
+                  Foldable(
+                      Dictionary(
+                          title=_('Limits'),
+                          elements=[
+                              _option_limit_rate,
+                              _option_max_file_size,
+                              _option_connect_timeout,
+                              _option_max_time,
+                              _option_speed_limit,
+                              _option_speed_time,
+                          ]
+                      ),
+                      title=_('Set connection limits')
+                  ))
+_url_limits = ('limits',
+               Foldable(
+                   Dictionary(
+                       title=_('Limits'),
+                       elements=[
+                           _url_limit_rate,
+                           _url_max_file_size,
+                           _url_connect_timeout,
+                           _url_max_time,
+                           _url_speed_limit,
+                           _url_speed_time,
+                       ]
+                   ),
+                   title=_('Override connection limits')
+               ))
+
+_option_user_agent = ('user_agent',
+                      TextUnicode(
+                          title=_('Set user agent'),
+                          allow_empty=False,
+                          placeholder='your user agent',
+                          # forbidden_chars=forbidden_chars,
+                          forbidden_chars='"|'
+                      ))
+_url_user_agent = ('user_agent',
+                   CascadingDropdown(
+                       title=_('Set user agent'),
+                       sorted=False,
+                       choices=[
+                           ('user_agent', _('Override default user agent'),
+                            _option_user_agent[1],),
+                           ('', _('Don\'t configure a user agent')),
+                       ],
+                   ))
+
+_option_referer = ('referer',
+                   TextUnicode(
+                       title=_('Set referer'),
+                       allow_empty=False,
+                       placeholder='http://your.referer.url/',
+                       # forbidden_chars=forbidden_chars,
+                       forbidden_chars='|" ',
+                   ))
+_url_referer = ('referer',
+                Alternative(
+                    title=_('Override default referer'),
+                    elements=[
+                        _option_referer[1],
+                        FixedValue(None, title=_('Don\'t configure a referer'), totext=_(''))
+                    ]
+                ))
+
+_options_compressed = ('compressed',
+                       FixedValue(
+                           '--compressed',
+                           title=_('Request compressed response'),
+                           totext=_('Request compressed response enabled'),
+                       ))
+_url_compressed = ('compressed',
+                   DropdownChoice(
+                       title=_('Request compressed response'),
+                       choices=[
+                           ('--compressed', _('Request compressed response')),
+                           ('', _('Don\'t Request compressed response')),
+                       ],
+                   ))
+
+_option_post = ('post_binary',
+                Tuple(
+                    title=_('Send HTTP POST data'),
+                    elements=[
+                        TextUnicode(
+                            label=_('Content-Type'),
+                            allow_empty=False,
+                            forbidden_chars=forbidden_chars,
+                            default_value='text/html'
+                        ),
+                        UploadOrPasteTextFile(
+                            # title=_('HTTP POST data'),
+                            allow_empty=False,
+                            default_value=_(
+                                'This posts data exactly as specified with no extra processing whatsoever.\n\n'
+                                'To disable HTTP POST data in per URL settings leave this empty.'
+                            ),
+                        ),
+                    ]
+                ))
+
+_option_url_settings = ('url_settings',
+                        Foldable(
+                            Dictionary(
+                                title=_('Per URL settings'),
+                                elements=[
+                                    _option_verify_remote_host,
+                                    _options_proxy,
+                                    _option_redirects,
+                                    _option_auth,
+                                    _url_get_header_only,
+                                    _option_regex_response,
+                                    _url_compressed,
+                                    _option_post,
+                                    _url_api_key_header,
+                                    _url_referer,
+                                    _url_request_headers,
+                                    _url_user_agent,
+                                    _url_header_strings,
+                                    _url_expected_strings,
+                                    _url_limits,
+                                    _option_address_resolution,
+                                    _option_ftp_settings,
+                                    _option_mail_settings,
+                                    _option_tls_ssl_version,
+                                    _option_http_version,
+                                    _option_advanced_settings,
+                                ],
+                            ),
+                            title=_('Override default settings'),
+                        ))
+
+
+def _validate_service_names(pattern, varprefix):
+    service_names = []
+
+    for url in pattern:
+        service_names.append(url['curl_service'][0])
+    duplicates = [service_name for service_name in service_names if service_names.count(service_name) > 1]
+    duplicates = list(set(duplicates))
+    if duplicates:
+        raise MKUserError(
+            varprefix,
+            _(f'There are duplicate service names. Please check the following service names: {", ".join(duplicates)}')
+        )
+
+
+def _option_url_transform_curl_service(params):
+    # transform form separate dict entries to tuple
+    # added in version 20220314.v0.1.0
+    # {'url': 'https://excample.com', 'service_name': 'example'}
+    # {'curl_service': ('example', 'https://eaxample.com')}
+    if type(params) == dict:
+        try:
+            url = params['url']
+            service_name = params['service_name']
+            params.pop('url'),
+            params.pop('service_name')
+            params.update({'curl_service': (service_name, url)})
+        except KeyError:
+            pass
+    return params
+
+
+_option_url = ('url_list',
+               Foldable(
+                   ListOf(
+                       Transform(
+                           Dictionary(
+                               elements=[
+                                   _option_curl_service,
+                                   _option_url_settings,
+                               ],
+                               required_keys=['curl_service', ],
+                           ),
+                           forth=_option_url_transform_curl_service
+                       ),
+                       add_label=_('Add URL'),
+                       movable=True,
+                       title=_('URLs to check'),
+                       allow_empty=False,
+                       validate=_validate_service_names,
+                   )))
+
+_option_default_settings = ('default_settings',
+                            Foldable(
+                                Dictionary(
+                                    title=_('Plugin settings'),
+                                    elements=[
+                                        _option_verify_remote_host,
+                                        _options_proxy,
+                                        _option_redirects,
+                                        _option_auth,
+                                        _options_get_header_only,
+                                        _option_regex_response,
+                                        _options_compressed,
+                                        _option_post,
+                                        _option_api_key_header,
+                                        _option_referer,
+                                        _option_request_headers,
+                                        _option_user_agent,
+                                        _option_header_strings,
+                                        _option_expected_strings,
+                                        _option_limits,
+                                        _option_address_resolution,
+                                        _option_ftp_settings,
+                                        _option_mail_settings,
+                                        _option_http_version,
+                                        _option_tls_ssl_version,
+                                        _option_advanced_settings,
+                                    ],
+                                ),
+                                title='Default setting',
+                            ))
+
+_option_plugin_interval = ('interval',
+                           Integer(
+                               title=_('Plugin run interval'),
+                               minvalue=1,
+                               unit=_('min'),
+                               # default_value=1,
+                               help=_(
+                                   'This is the interval at witch the plugin runs. If not set the plugin will '
+                                   'run with every cycle of the agent (By default every 1 minute).'
+                               ),
+                           ),)
+
+_option_plugin_timeout = ('timeout',
+                          Integer(
+                              title=_('Plugin timeout'),
+                              minvalue=1,
+                              unit=_('min'),
+                              # default_value=300,
+                              help=_(
+                                  'This is the maximum run time for the plugin. If not set the timeout for '
+                                  'the plugin is 1 minute by default.'
+                              ),
+                          ),)
+
+_option_curl_executable = ('curl_executable',
+                           DropdownChoice(
+                               title=_('cURL executable to use'),
+                               help=_(
+                                   'By default this plugin will use the system provided cURL executable. You can '
+                                   'decide to deploy a separate cURL executable. If you do so you need to install the '
+                                   'optional CMK package curl_executable<version>.mkp.'
+                               ),
+                               choices=[
+                                   (None, _('Use system provided cURL executable')),
+                                   ('64bit', _('Deploy 64bit cURL version')),
+                                   ('32bit', _('Deploy 32bit cURL version')),
+                               ]
+                           ))
+
+
+def _transform_forth_agent_config_curl(params):
+    # transform added 20220410 on removing os specific rules
+    if type(params) == tuple:
+        if params[0] in ['linux', 'windows', 'deploy']:
+            params = params[1]
+        else:
+            params = None
+    return params
+
+
+def _valuespec_agent_config_curl():
+    return Transform(
+        Alternative(
+            title=_('cURL'),
+            elements=[
+                Dictionary(
+                    title=_('Deploy cURL agent plugin'),
+                    elements=[
+                        _option_url,
+                        _option_plugin_interval,
+                        _option_plugin_timeout,
+                        _option_curl_executable,
+                        _option_default_settings,
+                    ],
+                    required_keys=['url_list'],
+                ),
+                FixedValue(
+                    None,
+                    title=_('Do not deploy the cURL agent plugin'),
+                    totext=_('The cURL agent plugin will not be deployed')
+                ),
+            ],
+        ),
+        forth=_transform_forth_agent_config_curl,
+    )
+
+
+rulespec_registry.register(
+    HostRulespec(
+        group=RulespecGroupMonitoringAgentsAgentPlugins,
+        name='agent_config:curl',
+        valuespec=_valuespec_agent_config_curl,
+    )
+)
diff --git a/packages/curl b/packages/curl
index 84453ca..24e5b6d 100644
--- a/packages/curl
+++ b/packages/curl
@@ -22,11 +22,10 @@
  'download_url': 'https://thl-cmk.hopto.org/gitlab/checkmk/vendor-independent/curl',
  'files': {'agent_based': ['curl.py'],
            'agents': ['bakery/curl.py', 'plugins/curl.sh', 'plugins/curl.ps1'],
-           'web': ['plugins/wato/curl.py', 'plugins/metrics/curl.py']},
+           'gui': ['metrics/curl.py', 'wato/curl.py']},
  'name': 'curl',
- 'num_files': 6,
  'title': 'cURL agent plugin',
- 'version': '20220515.v0.1.8c',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '0.1.9-20230607',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab