From 9ee846662f8148bfbfa0bad4d0659a076ae83f4b Mon Sep 17 00:00:00 2001
From: Philipp Galichkin
Date: Thu, 29 Aug 2024 10:13:37 +0200
Subject: [PATCH] 24082024 dynamic logging (#6)
* Cleanup log.go
* rolling adaptive logging
* removed extra prints
* rearrange folder structure
* refactor log cmd, updated .gitignore
---------
Co-authored-by: Philipp Galichkin
---
.gitignore | 9 +-
.vscode/launch.json | 36 ----
.vscode/settings.json | 1 -
README.md | 10 +-
bin/osx/jtl-osx-x64 | Bin 9745986 -> 0 bytes
cmd/log.go | 158 ++++--------------
cmd/push.go | 16 +-
cmd/push_test.go | 12 +-
cmd/report.go | 6 +-
cmd/root.go | 4 +-
config.yaml | 1 -
example-config.yaml | 7 +-
internal/.DS_Store | Bin 0 -> 6148 bytes
{cmd/internal => internal}/config/config.go | 39 ++---
{cmd/internal => internal}/csv/csv.go | 145 ++++++++--------
{cmd/internal => internal}/csv/csv_test.go | 78 +++------
.../csv/csv_testdata/empty.csv | 0
.../csv/csv_testdata/not_empty.csv | 2 +-
{cmd => internal}/duration/duration.go | 21 ++-
{cmd => internal}/duration/duration_test.go | 21 +++
internal/log/log.go | 144 ++++++++++++++++
{cmd/internal => internal}/model/jira.go | 19 ++-
.../report/dailyReport.go | 12 +-
.../report/monthlyReport.go | 10 +-
.../report/monthlyReport_test.go | 8 +-
.../internal => internal}/report/printable.go | 0
.../report/weeklyReport.go | 0
{cmd/internal => internal}/rest/rest.go | 0
{cmd => internal}/util.go | 0
.../validation}/validation.go | 0
main.go | 4 +-
31 files changed, 389 insertions(+), 374 deletions(-)
delete mode 100644 .vscode/launch.json
delete mode 100644 .vscode/settings.json
delete mode 100755 bin/osx/jtl-osx-x64
create mode 100644 internal/.DS_Store
rename {cmd/internal => internal}/config/config.go (84%)
rename {cmd/internal => internal}/csv/csv.go (53%)
rename {cmd/internal => internal}/csv/csv_test.go (61%)
rename {cmd/internal => internal}/csv/csv_testdata/empty.csv (100%)
rename {cmd/internal => internal}/csv/csv_testdata/not_empty.csv (70%)
rename {cmd => internal}/duration/duration.go (84%)
rename {cmd => internal}/duration/duration_test.go (55%)
create mode 100644 internal/log/log.go
rename {cmd/internal => internal}/model/jira.go (67%)
rename {cmd/internal => internal}/report/dailyReport.go (86%)
rename {cmd/internal => internal}/report/monthlyReport.go (92%)
rename {cmd/internal => internal}/report/monthlyReport_test.go (94%)
rename {cmd/internal => internal}/report/printable.go (100%)
rename {cmd/internal => internal}/report/weeklyReport.go (100%)
rename {cmd/internal => internal}/rest/rest.go (100%)
rename {cmd => internal}/util.go (100%)
rename {validation => internal/validation}/validation.go (100%)
diff --git a/.gitignore b/.gitignore
index 72cffa6..e6b5a66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,11 @@
jtl
jtl.exe
jtl.log
-todo.txt
\ No newline at end of file
+todo.txt
+
+bin
+.idea
+.fleet
+.vscode
+
+.DS_Store
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index b4d059d..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
-
- {
- "name": "jtl log",
- "type": "go",
- "request": "launch",
- "mode": "auto",
- "program": "${workspaceFolder}",
- "env": {},
- "args": ["log", "TEST-01", "-t", "30m"]
- },
- {
- "name": "jtl push -p",
- "type": "go",
- "request": "launch",
- "mode": "auto",
- "program": "${workspaceFolder}",
- "env": {},
- "args": ["push","-p"]
- },
- {
- "name": "jtl report",
- "type": "go",
- "request": "launch",
- "mode": "auto",
- "program": "${workspaceFolder}",
- "env": {},
- "args": ["report"]
- }
- ]
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 9e26dfe..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/README.md b/README.md
index 97c9525..08cddb9 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ These are common Jtl commands used in various situations:
* log your work as you go to a local file (see: `jtl help log`),
* display summary report (see: `jtl help report`),
* finally, push all data from file to your company's remote server (see: `jtl help push`)
-
+
For better experience, it is recommended to add a valid configuration file `$HOME/.jtl/config.yaml`. Type 'jtl help push' for more details.
When you call any command, a programm is trying to locate a data file `$HOME/data/.csv` Thus, each month you'll have a new data file.
@@ -24,7 +24,7 @@ Once you get your executable, install/run it as you would usually install or run
### Build from source
-Install go >= 1.14.x
+Install Go on your machine. You can download it from [here](https://golang.org/dl/).
```
❯ git clone https://github.com/PhilGal/jtl.git
@@ -36,9 +36,7 @@ Running `go install` will put an executable into your `$GOPATH` directory. Make
```
❯ echo $GOPATH
-/usr/local/Cellar/go/1.14.1
+/usr/local/Cellar/go/{version}
❯ which jtl
-/usr/local/Cellar/go/1.14.1/bin/jtl
+/usr/local/Cellar/go/{version}/bin/jtl
```
-
-
diff --git a/bin/osx/jtl-osx-x64 b/bin/osx/jtl-osx-x64
deleted file mode 100755
index cc4b1e2599f7817f6a797ff8b6999a4af4f747d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 9745986
zcmeFa34B%6wfMi!9Wp=^tWl|;xfy`q1QrBRY;!U&sYPGq)wcFEBa`v+<(kA*P;g7m#PMGr|K*$I
zYtKJjxaX%c-UQBAG8Pm}9skv-J(I2SxAgp|tangRelD+_T2OHBv<3HeXFUTR4G?%!
zXXaX&c=vT@mzSXXwV>dhg?AOty|dt+d+#g0_DuW=7vySq#{~)geoPxZYr`&2&?-q^Mg6-q%
ztQNhTccGVD0vi(af>-bG!tb9?Zuz_AoOr>9g?CT8bJm>MR_=m=p76r&e^cW(X_S>N
z@8@b~LBXthi;B+<&%B~Q!^`Yv!ISrM!<#V|&H}S{{AOlZ@T^p&!AFb7?*RO0S?=bwS!h}SIq-m?`_-oe}dP8
z&I@_=EO2oD|@P-A?^Cb(Qyq}A11qEH8bS<&)%*!6t^y{B*SrvIdH@xC|?&*QA
z$Z_|F!lE@AUf>7at#re)YU$2zx3>#uEPla{9@FsZO1jIO3tqSVy=n548^`BQc5G*G
zt%j33+U90(jRxqv3tn#AKF9lju5W#Lk_#DBDk$HB(`|XvUzJMZ(+GJ6?t3Ra>b?1E
z)!m79VlOwLj=(8gyjJsn#LBfQh%iVkmSsA#kXue-Q_YIC>QwAU-o-ivxI~%x2Pop#qXxz|u`R;H?f$v*XWuhCZ|?kQ6XxDG2SJ`Scg{7_os{8U
znKu6(zT7iBCngW@1;4_-uAW<`mE1Rf*1ZdRufa(Lru<#TCH=(CZ?9F44RuS7r2hTy
z?-cku1^!Nfzf<7v6!<#@{x4CWGca*(K#v~+lk-0xNEIYRwm
z@^}^$bu{)<(IU$JPRjQ)qlc+ui9A!kLHzRg$9vpMJYefjOGCA8}b}OgE4&D$Mug~r#~#)(dqSu>bwQN
z3dgHxllSuKxvv^k;dnC|>g>Ek_}5u7qHVHQcz1ah?+OB{{kWl~?laV`JfAvJpuBGv
z@h)xLM>uAn3TCM!qf)~!R~CG)Q62FvuK7`eQMGZH+KJ~Lid>`KNUgglv~8zRl@jp&
ztKbmntD-_r!R00!7x=?BGx|Gl>Jly<9Q+=R!7uGp+1j)}=T_#O%3E8OpxQki3#Z)o
zmOSR0Su!?NdFpeFj^`V_W=(Ej@49SdwC9Z2ux_a`s*RcHW8HXP`5H9zdcnP{CJ63s
zJO#&e7ml&`xoH-QQ?3gquZ`2vUT`W>#;Vjo=Fx1W=7r-otaIb$bK&+i8@Jx*vm=H+
z9^kz=QLQOS$&JdrbYN~29=7#`hh<8&@8BL(W^}2~jJoUd3|f3NIJ3B8netTT#H5K#
zM!c$ej63H7T-;6fHwy>F{=FEHmZKd-OYbTPB%*%(HTche{0LBH^E#eI2=%F
zlrO=oB_LVZsAb7ht#wY*ETy`U`sCf4^w;GVT!f~n&@?+=%_~CpRKScnu;uQShuHTX
zqoIoRsZ>kJRIWdqz5Vo-_TXk4eAf%yfm0x_N3$HM2x^oo~ihd%g?4
zUU*mz5534u335{c56f&GrozM2pf5CTL5b#}7ao3wzRn8|i5Db$;Sn*JWG_6FKG+Kn
z``F(T>^or~o$ix6JS0|>+yt$+&{vcq-z{EW^>U@IYv!ALClZ)E4c#bF{z}Wv`nvQ%
zcqIL;qaTjG4@2JEw$+ixY-qFz9*7RO^?6@s=i@>b_cy1%d-fGecTb4U+PWjWmp|xP
zi#_VLPx?J2=G|q#boym6>4Uo7W93Ebt1W+B@@Q49|2yrS6>GoYA)&0%p2T2-(6_Pg
zk{WNJWjiXMtOas42OA)nw;Fjmc93J!vs;CP|P2yG!eI@)WurHQuqs3#Y=x!6lD
z_Br=@^Jo~kNl~6Q@jG&rs&B!5S6sj3XvL}Jt4he1O`5c?u-Eo^szbC-?ELe+wDWVW
zcD`=gZef6hoB5dFL%%praBKm;lK#uri5zdmu9FL!?n6#{x9Ki+cKItOd_C#owdqp^
zeVE9Z>VqZ~%6!aEy(Q2=bYlbc`>4N_`YZacSm&e7MVc;t=wh@bhz*7=(ywiWE?dsp
zw{`23TMp*A=pwv-_n@U0M_u$Vz%yH2&?V0X_9su;>p0Y0e
z((f+)ih=FO*JP~^j3ex^gdy|@UFz(zb9P%6x!NM_xZiHa5!&G3zeDS5@A!*dckJ*dZ9@}n
z*k-rkAZ>VsHZ-}~FoZTpo0q|tjR`8$l
zDwR;V+UQfc`aBh?P-Qj3!*{@?xy;CVXQGO397eoAeV+CtX`f`kb4FEDSx#1|T2j;U
zWM0-DY*~5#@^z7k);Q)w5`O0GDvFPjmCiVsu|RzVV^gv1^wX6sd1lnoleo6xUoKzQ
z1P#iRuPuxoheFa|bK?b(}a>cq6&@bEYwuuiT-=r@;Hc~}f#xQoj4Z4GS#G4465~?qz
z&d3-u8Xl?X(kAsb-NyKgy3mbkfqe`+=(IDBzU+YVRc3%kMUvIN7TrF7WdUu=rEQV9
z7S2JtZKq$i=%j6w6Vvds+Xn`yV!Lp^605<_I|5oFz;Je8==;Cv!>V^Y?wCzd-WahIaIYJH)BJ0K5bM{
z?!D9n=Y<;kK3Id@JEN@F+G5InDW>c{QP$Dvt{4e%ujVZ(tK~^+tgUQ4mp)43B~8S_
znzxvwn^}IheT?xx){yTOpW1DD)h@A>(x&wj)qADH2jo7D_<+deVQ8I83}6fW&}QNQ
zC5+dZ&rZfSX-~v2+l)W3g>PZXclD`V@gIxc!=Yb8YES#raKN%pzX8V!JZALITU2O+
z=YqDSA9hatbGiy8dsOt_T=<`$F1LLb{6~1yZuCa*kDAzAp_RM8+U=@S=qG*QF1uc#
zm-zp>?h>o+O{cr-ew#GKpVMFVR{zeAssEp2>esOY_$PQg=EB3_TT2W+sV;n4WAI7T
zix1^?>kPtHvbLcr4Ik!CC#D#Cu^_ele*hGDyH61pR&E5
ztbWU{b=RL9Q-AWOtpDTay()&@{}Je^Z~w91(zj1a?-Mcpw$?Z7Mc8BMo7gNF&q;qN
z@%9Y*ixzyAeC>a$bNb(szspwSS^oDg4yvkGT{t`XddS9G^i}METShmzY=sklbL8dY
z=ruovUe&I;MK7v9A-&Fszqn#^N?9>X(HrNlD{f)O-V9<-Za>}`H#zwwuI~QkF7L#`
zq(3%@DM;K#Vqy_=Q{E+RBe5`@PCXL0k(ij1U;H+SjXCeV;o;D8RxkQ~H~KF4&G@jV
zt~);H*K8X8(czn|<3%nVe~&b$t#XfzUv;&YSXpoMbntsMCSD@)D*fAkRa|)8YgSzN
zt1FGFGOn+1ozXWVH-lXADt7(j`Zt4de~);$6YqA#zjdsaI9G4&7y9UUxf4%!(d
za?l%J9hyt|9`Sjnyd7IM0v}&q<41kH;pgz@T=Elt7WsK~pJlWDD*1_-PmsQ-SN$Qj
z+Z(>Zk8{Mk*W{|Wu6Va$$4U)5R%+O>Qp1jw8g{HyzRUPi?xJ&&F0oR>j+HuNc)|03
z+Maw8{>=TLcl|E~Z%bc2!_|Aa!TA5*>1%nkcYVF@)9~kSR9~MvZ0YO0D~zi3T=Thl)7P$iv^LeRzg7
zI{CyR?p$tEt>wCdt2g^F!fx~b=k3G)puaxwEb{aFJ%5AtB-rQg_C(?X|DEIizw~ZT
zzV>P4;cwKQtYf{G*pshTF#hNI3RiFTWRTtFzuObbqlsPL_g^_4*Z#dq`ah-LpJY5<
z`5(RO+mfGs3j6yvs&7AIeU9kc;&P*E3)cf&z3H22xB2h-X6f4}k)JEiB0ulG^eN=$
zzcJp1e!r0$Jnz3%ztdE(*2`6(ytDTbsqgrJ0jRXjM`d%zu#WxYOj5l`G#-Xv==#+c&9TSOe22j
z1d|MF|3HNO1nhaR
z@GU8ulFZ*j7;<4~HK%ANzg1|pqj)_T=fu(raz2BM(9YQK>=OTRK}rzd^8VcRdZ
zp4_A2W^X#x$@-#{>hDXul{%V-GylrkkfJ^v&%?vEl_{(brmUCy;QrS7hl8xwIH(?c
zY$$aeVqU9&wGLZYE7Ov~x)RnpOjbty6@GQ(ZRpkJ?Nfj3ROPBR^0l!RBKthm9zjmx
zXUzDs+uFJK)Pa}`$lYAc=h8Hr|A=XZ^HdzsgjyvK3nOwQr2Xo
zRG0GoxnJnLFFRFT5_4~hYku_xd>+Xf6Zm|T=Z&&2CXhnfqMFwwjkOz*6f^o7&r0^|
zlwMC-SzhLXBLkw+sQl{Yn*N-pR55B
z*;@4u@;I|-?4CbcX{2AG_a>>hwmz)8aoU*zoPF_XYU1%lN9Efc(BQ_4RAsT>j82|4
ztAmp!+H#mP3#SV|6Io}GQ2m^TeME*D6HaH%hs}!?_|;0Aj_onCj>A7$PvF!c`J|p=
zXei%GsG}rVRW`F9rnJzK8KJr4Nkbkb&ouIEB~L5xww1Ep#IC15aMPesP-yx@b|})X
ztR`1zYRgPE&&nk;<9HwK;$~hv@~~b>Rezgzw|^lvdDu^_
z{!nc4;g5Q*2TANBwyoQ~t1F;|@`XlZvX>2bqli6MZT9!rPnL7g+E2DM_6MeeaHu!jjBS`G1}R0fc==)
z^y>}lg!U!tugzM7>@M3_`FvA&YMBheLH@}4U1;Jt$DW#vE2
z`ss${ebwj^@UGx;+SAlWjTRrmm+Y-f=b8q*6*f$Rx|RcPx(#zFvbP*~(_JuI64Ypc
zCvY8lvD@ho{i
zehf;M?5%+3T*7lL11ovw>Xw0gWFWtbW|j=_t+e}_$UqpI6QM5>o^fQ%88Xns+KXc7
z5~e?j(C-L8`_QMzo?YRotRc*&uk+6=?a1H?vtCoysmeY%)~{6sPsfiI7^Uz_`m}Ay
zzRG=+si4e8^0xwWFZcJcDH~74kC8q)HHbgJ<)MAzU;cr#H~B7WQJl3zyMNLxkKeR)
zCQKjV`0iqc!uUU0*9ufrz85IfX0o=tjDB(Y&ZX;Gy3Ro`AbVHw!vr8vPjF4w7smg%0_O&
ztTRy=7Cyf7>V7+zOK|y>O;6!r6TGak-*?(~$HccGGiiRct01V_(Z{KY{mqjBu|LNb
zJywFR=TA1rW~0}$FREOJk9DLB`ioyRnetg~}B`(ic!#eOx?|3}L4saU`CMofFU(o0BZoOCEAUG{B2)2Rif)!w}32OcY-
z9dXKAsjhnKrVOr?tHX14td7h%yt;8t+v=t{nU`fwnZz}d>n+;i16ThS2280yj;3*m
zFPNKbKDG}!<{^vatoampzT~~zha!u|u-8NVYWFb1f0%toy9I{GVlJ|n=2N?hZ8;i@
z9Bn1<%U-p6f-Q%Gkwf`5m~R)O+r_pVk+)X9Ph*Yg1jb3o>J8n2c>Ui#%nR
z3kGwEOc?NWvn@xI7ddJxLgpQvqwl!Ft$QLP%iu>g_?qPVF|>5@I`SiFLDF*JOD=i0
z$K=USthZ+@#<_hVy~hz-?xnrsX=@7gAA%Qg$!3T29ZR7J@RG~@{YQJf38SH-s}Xc3y8lp5rtvuce&MORPZhCSc!taC3`J|PnX)TCEp};8+>1I@Rc?90&4;~JCVIWl81BV1eUH(+T`_h!-}_HX&jG3
zH()JrU@4VQkM3zXSB#CF=h+$P9rC&z{)w%cVX7k&X3pr4x(*?G@zAf+rb+zF**se`
z5xY}XsM=*;+V}x`x8G5yj!c|+hc1_Z{pmxw0>h$vpS$JRD%S@X1x9?^USNyOma-G6
z_s*a?a>L9!t@7BPB+75F%O_EOgIzx9J$bguCjo1N(Wk8lSfY!L|ItW)(sT)HzME9&
ze!e^M)Rk_poj-w&&vm8mL*Lr)=LZLa4Svt|lVWegR&7o4O%dC51N&(e?JdIYWGq!j
z*uVHxZ?@;)Plrr7czwc@jA+@>gBb_b9Sj^;H;i%z(I+XJi#>G8?SN0y2R$+6;7?n1
znYhl*U2Z$(z-lC4zL8j20S*<=syW_QFK`8Z95&&gs{1WA^~k~gb-yk2O{i3=Z@qHy
zyZhOp2K`@*y{mK4LUMJb+x9MYe~~AUQ|ryh(ebF2;3xi}#9u_u#s6Y|acyq@B}Wx|
z2_i9lufRW>{~DIK4Zc7#eSZt_1R3YXGu{%LAA5O&D(b6HQ9omnxYhLk@K1ad84t3V
zr>co@eOaba>+{t$l&(?MzTy3LjEnJ=_|?@f;42_6vFAHD`0apq?(v_-Z*AU=mi75N
zy#4#{@DI3PhZp?1>-JW&;P4aGU1`@X<9DaNS=bAAecsHR+EV&(AMGd`q2}dCA9}a=
zK=@eqa;N=X#)n>L;9bleI;4H|#C?`!|YFo{CDwttd
z;|_;L_*6opBEb`R`L#<%9DEb8hadGD*fo9=`gE3gc663`cZfXruuIM5DpbB8wIda|
z$i_Fh19=g@@*>ijF3jE0GB9t4!()f0-SmvFzU*xD%(KoJp#OM046h@|j2F4|A(tD7
z>&~Pe85hbv7V$BC$YcpJ$(bA-v#=X7RuR8Z+L&p#@vz-S_a5|BL)Fe3mL`SF6NO)@
zLU2v~|j_
z25p=2mqAZX8F1P5DOs28nDX_@s;4Zv?5QbXFEp>%I3;P&RdZG+7S36@eEXEkFUy#7
z;I^x7J}~jBxm{^S%9QT3p`;C+yQyN+l&c3_J?Dp%+p&DdlrLU3c+Sg|dzo@wX_V_u
z8%o;Hx%(~{7rxb)H)>pbv$_gKe0pWwhtWZdlDPqlt1@r7d(Pv1US
zy;1m7{OLs#)y~32`BC2AlUUVW_Pr<88C3z|RK$387S$66uwqR+3+q)>=P&P>|1@*q
zUHM;k<$vAIPmIb9zulexs4M?bJOA3A`CHuif9=ZuYdin?p85aHo&QZ&{x|LXTYBdI
zxjTQSD}SeozBwLx-DcKG-=k@EVL#4#A&y-4#gMeAka+^$-(Y)$^-hf3y)Q^?%LVZ0
z`!3t*?*ArZ&)v2rEb+zQ`Juhna9)R*9{S3^Sn*1M)5)IHlQtZOzp?Tn=N_ffp0mYj
z{s0We7wS!3&V*N1bKW`N{r0bhx40(CT<+QMJ9rj&?mjUuU4@GA^N+>A5xP2m4t-{6
z`gX_1WR6YZW6~dvyr^faQu+c%ubyz>;ohJ2u-;GK4Uah4O9_F%<;Xu{^T6dM{(|&v
zU){w1Q2L{QQioFyR5k3q;fE(vfBEy1o6ZlPWcSPA$o;DuBJ-Xo1FlP8`7mkMxM`&Z)9#2hvAmLWaA$b7QU
zyntBbGI-L+JeYR?G7fDje4h1=46lGj=0}~o+_?7E&Su7u%L-LU#+BvxY!Tp>Db;=#
z_PR-8+{_=Fz|MhJk)bM@#~eWuW2guJ(D``aqxdn6vh|V
zelB_aYK;92$BdCZ*d*aeD)&_G%rkebLy4%Sgv3oGN{0DwpJsJ(I@rVa=C-_mT>vUhb?%al@mZJWcv(6(~Ae
z`b&n-dGLaR4^%I{_xfGk_UCvEKb`s}$J8hGI)jVxX`54@>=hI{o5tnH
z^*0#vYMJh(-X*SjTkU%Pv-NT2+ga-?I!Arhc~{;2QGl5DrP#R#xXU?o`>}Hc%&CY>
z==RusK%Q6HYR$_Rs_b96(?l2C?^oYTU(t1@Mps|)M(S^_3*B*@QMGV+&%WZ}^*#Fv
z=PbwJu6D?tUF>UDe9)m^qW15)+hfuW1z-NF+thK-+1qp-ZOV^n)6}!H>4RsxWl-Am
zix_#Z_|tuUgC4__&&vuEuTNo2Bedq*&cZ7{pCxuv<^trNAa~Xkq$NRH=0$QDFXjd>
z3Yo-l0@&yj;y8VYL2Ev_{G*E{Kd~Y!e|mR*;>@x6WlVDz{OSL?{HKStzVyI%XYsQW
zqx1p0n!K}W7A5RkSNy1F{W7I?yX#hI_z6jULa7Oy;|8r>d(Ju+LF)K1b(~E<6Z?yQ
z(9Lg8RZiBv^ErQyGe&a{-E*`+6}Io?eB&^Ef{d*iH>j+}4Q7^SrI96ha>yg=@T70P
zl?~YO&t~VD-y%+
z`gW?|kbKKHHSo}j%u^LYe~wHJ?E{whs}br+qn^ewo_c{<0?cw?dR1dbiSkrR%*zW5
zdG^{cB)`|>%qhE!;K3Zq=u*m5*kwv}y`IWayNsufeOfkrnG0WjcdMB
zW@BO~-PKm9!zm+p<;UcA+V(na)9s>cBWJv6`l)#QWm&tEQcXaw${=){YF-_R;I~U&
zIU6~$1)rL++plZvaiwiz>SW#0p-Vzb{lSJpWMZSNRSI4oGI;-nOP@qWGHpG2AXa~3
z>~{{b9btZ3bVsfrF%o{ADU|S8*4;rTRhSiuFb8q!VN3qpc{Y$o%dBnFrQWx}S>nHL
zA65DY@pH17hmkpgY1p4^=3!bMvd)5QffnMwHsQ0xjaXXy7Hdha#!vMpuue?;vnC^}
z8F?+HTqC$
zoQG9b^D<|4gz=m5xGSMyVSm0aso5jn@rnH0gR-u0>JYs~tX96`FWt;NAUvoWNB+e%
z&&qdrHkmtccB*D*1^ge%cW5T?3x|r|D)Dr)=1JZ+gUeE`q?c9I2JT_qXV?JkoE>>FMVt@*Q>@5%UV;IJw6)7o_BV7c67ZXH(}&Q
zY~5dE-2h|2Aht%}${ge{?R#2&kNC#2mM{QJIfolNXq~yhH_rR3E`(z;s`m%#IKVgwb7_pbN#QM;Ryf{*!B
zn6QU?2(sm0;d!>PY^@wfR?P;
zjLNzH-yZrI9l$SAj9&}D0p%zO166(V)jrtw=)2J^!
znKbH4OGXdi3-jREX8U|tXZ)$hl$S`1ZB1%jdT7b_3^_0UJvAy>uMPdjb=p?E!6|>C
zy{vEj2i`@G-M;)F^wx=^$=Xr@jl{oj-^F!>*M6=d)eo(?WQc%Nkej
zAhXu%QP+9l<9_-&Z@?O_G_fwDgtbpT=;(tE;zu^&TZwI!e%rDymdu5-p?My3NcUtx
zt2HHWO^lWROXftRuaP#%)$&EFEix9D^|CVVF@o@TsAcDbes5fY?2yL(vf7*sb)E2W
zv%=oQ*2%lYTR8*GtZ7DH2SY#f{XO;l!J#774xWbIe%dpbH8$I5UmS7@emiHtOMbFw
z)GNr$-SBfL{2T%=s~^b~Xn?(BILMsfSJtT)CcpS@H}qEPgooT7eZ8jUVHotk~+om%u;j6(3*tHHkHG
zk@VcGRMz!6JP^Bh$pEo$J$ZNvoo;`Hz65!eb=uUu%g-FXpLc2ZG}^rty_NF=Wv=uX
zJQChq1r6jI>pP-x_$NX~q0JEJDEWp!$9QlWihYnWL$MnPnPxN-`{2iRr9fZoKs4nI
zl@*^!92}ZSeKV==ICS;_Ut<1;Hc|%IhbD0ccHKt!Gs(hD@~$Lr0_}dU)~L!Pe>feO
z@a_0jj}HYP5UkVm%hXYd_Q!F8(}Woo9tcRh)l@&lVcwv_6Off$y0$pU&>lx@iU}9
z$pM!#-iweAnX^Uay8IoH)4RkLKr^?kK~~lrG%pIZ4u`%Y#n$_)rLLwDBh<{fi6*u%
zwoD`S6XU4Gj$CJoeHbxVuiJnByR`iZ{E6Ttp-tD|Bdd&1GT#ctXV~u1Yii%&-K{&5
z1gDrX@pc}^Za0>&wjCJ~zw7Cp-S)eYH4d^4alO6vTWqvrpC68i7w5#A(Q)WP0Q)HQ
zUqQWA-)_z23GDlT9eduD1J8=zcF&hbpj9(=dN4ZbM<3+8QU%XeLobmpksWOIb>Weu
zBkyuI$UDf90d!URRXOJ~0Ka5^Pciooh_RZCtHqy@{#jsk_3^-vKE59?B0P&Md5}%%
z<7GX#^j~SeR9R`@(TKf~c7EdvHoeFn!1f5-2>cWIz|O774Gs)RjLumz8pg*Jx}W@!
z?UU!(eG=bfj>S16u^D`YW|Q3fU>qy_Xr>NleW63YS(+c+^DjAlITI3|2+mK{_v~*4
z?q`78?iycO>lM1o8>iknWZ>@!-n!32KBT`(zF6e7_jRv%(6@vbVjg-SGA(*5-@Ne8
zgl2ifi}TUB@#x&9{@(SIuVDNqdH7DbP~IRF&A0o4O{|wH;9d4sh09cy&{{6>&DIJI
zWoDM8XO?^kO{HC@plg_RJL?r3`n;;gE8YI29=D>CvR_QbO3k#5^Rrpj%DY~R>#zR8
za8=ceUN7UD__eYhW+V1p*X#I9ZoX0f@9g>|HXw0_F!(#ZO%MG!3qBd((+oZ`wi8_B
zob`cjJitMG&j&vSkDtWg(P-o0&|`9-XZ&BK!0RzKui?3-H8lAybAgdD=m7R;-yn6J
z)`3B)wi9_sKv&Aqi!yXV6FacvS>oXWw-gxp$f(r&!1cBsk|ug+`I^F0{4UCs
zLd*5GzKc&Z;e*am7um2^pyT2P{2Usk2av@NI`ufgXZOS6OAMwTm9^*nDI>l^2Kfh*
zcQ86D{lj4T(G3YQmV_QI|4aP-1N2XfF{4rDyECM0hN;VEioZ4;x{JT2=}w>DE8WSv-l6+d4&D8l?iIbz
zeL8fzo%DYkAH^b4u#x{%C=iygvV
z)r7AUnKeRmZbk7&d}Z!A1}A;yqq1FYNtgQ^U=3Axcv;LACUT`J+byTc09_M
zphxT}HXU7~zq7~5c6>_c;`}-GG;xHquY14NM)W8=5u0@*d@b>0d1>c8!)=l2iJy&64jd_~)Gk|9$qjIu>WE9mHMGBWG+q1^HI4
zvGow%1&<~l^Dp=tK5UBL_Cp%MBNthWpo=o@5FW`H?N)r%Up?|sn_oj&Bcszj)t7>!
z(7iX`B?o&fzDo}E;Rhb!UDHR?h_MNz+i=%yFe{2|oR>sRuPU22qzj33IzFd!$^ceCKh{o{F|3TIW$b&La+%b7i2RvSFa2(q@^u+qV_#jz
zP|C+sF5QL^p!_QV>HvnW3m7u?t)tJDvSNc@K~KRAJ&mir06i6&Y>OEazhaGvcj_@Q
zJZkJ)R@21qDN0Od=RezJpi}rtQ;&&@m^;(50_-gswx{|Au>qtDe4&YZyxhioc#rWi
zGFN~tl(BFVyf)e6A!Ff-LftS7#?+BcCF2CLH`r+DF0iX>?4x#`e#C|_`8m&4qzPpt(g7OA2)vf`h{nXpSJ?@Y~$z2dOd5;@w1GXWen{{
zU;M1i@eo6mG4xxf=wpyO85=h02}VdF2=#rc?*YLi{$;)9@3mIeLHfG18mRi&Eg}7z(zqM+}AcLedI}rMU5s_<_i8A-W$#
zMgqXhL`KB!WaE2&%s75c>^S~1$_o5c%75HA{*El0U*zv~9A9^7uj6=lBwGcl?QS`CHEu_tbUT{)oui<-m9QTeD*3i)B3IA@=5V*)lyg
zz?OCO%k+6a{fyN&Y52C!B|eqNw$zj1YKMD^jjzgUm}xtUu`->qIVa!4jX=-F{0y
zy5kWRJn?U&U*`ORbFBUT@TqRylRa6z(RY~MPtrY~j*RJXWDfF|dP}$%T7bbcZ}Cweb2df{y=^MVhK1?Mr~
zjLu7Zv56RDGyS%}m$Bw}{7D&8wjw7Jp~0~_6_PPft3B>K&bU(cIL7Ar&@~2awa1{6
zchaf&(G!4k@D29lLd!VLdXRWq+|xHl-=Z&jn!YS<=gm=kjNNg&ZjMfXh6`=mD*f;Z
z@Eyk-a^aP^QT#fMcN03+41V%Ebo%#mXv1;Z@JgpOr!4f>`~&yEsSPVF+MheVcDGAb
zBwpj_Ci=T0Ws^
z>D6O+p=E5I7d0)tdOZJxYdpUVT0)EW3SZBO<||bxHg&_se(i5Frb^-7h%D#xZ3y%_
zSa?C`z=A+W^WtCwL+sk&??$=!|89Y
z8p7{aY5S1w>5`AIx38XWGm(uG$o$*%;WsRt)se$~!4tPhUzJ!b@|cJ`W~;=uRoJg=
zXt|m70*Qqxbj8A=jvEc5vTReo_U){By-H|q^lf{XeV7~qk(}~$zi1-zn~2>wfzF*U
z)S6*N-_WoNROoGKH1|#e&Z_w
z-3G!hxqIMUf~*b0<_aHAvlc}7=!~&9$yx(+v(jZ_9sBgEwy!il-C#9-ZNmtJ74c|k_o??gr={_2D7au>N>$~UdwUQ53N%%6@Y4k7Vcfms^g
zulApKm;CO04({`9+<)o9-H}iE{qG$y>svNnDf2Gpg%(Kc8K0OW}nO_JAPT_PTq~j=g%rQXEF#U|Q_t!h%Q(xo{`{t$vzWz>C
zF)Xx+vsgaKcQ<_!0}}7(_BUnzM{J|`Xt~tYNDTRV8yJJLzt;r5%+UrI2i%T5?DFr(
zyOZ?-;@_Eioxx{90mh3O7i3oYJdq1&lgAgV75T9Ge^2$-KW9{Bk5KJ5p_|!PsrDjh
z?Fht#~n&&Y3N
zd)qw7mfUlAr%zv4{__Km!Gh>g5U>Kw&cXtdRn
z5zHz8@2Ahv-lfuByM8}#y4pN~Hq(we&UuYMzO&aT7S4
zt-W3KJ+h*~Kg4S9UZH{1_Z!NCx4XVnX@|7)yoVan$uI3(%6?g0A8o5+ygWkMJXW>u
z<@s#&ZgREr<>^*CHGKz|3;hpSye@=J?z+3m+y!r1dzN`Q?x6;uRUL3+%V>OmzM^5v
zHk&@=@la36K}$}SI`+tx+w1`2b#zp4&wJ+E4f`K?=4AR0e|~byYb{zP4brd=HI810
z&2sC-+dsDSqEOa}-FxX7dLiq5h%eQOeY^Eq`fhxXJnBk8h6}-^l(-YVg8rs`Rq{z6
zxn>kL+^4Q3emJ#`^WM%@|6#lSfaqmX<{9;iEie-~h`b2rj4ge3--vdbrZ1ft@OW7QvWg2A3BEp4%7cweqBm+`!VXl4%S_Xon^h|31WFI
zv|D0g!fz)=C%lus?Jj68&l3CbU@K)`#UgwZ-JdZgeu8nxOq(yIldQRnLgG33w0HcS
z_8JA`Dp;6X8@UpDt5odVG)K-{^!-o!Kg@6Zw-hjA7{$dF~vivfwj)
z=A~AjIganhn3gB$YoH11!?HdAClk3-vQ|L8QBL4}0RNot8YizsuYdWWJtnu`9Y5o%
zB9ruu&iOzNzKQV3Js%=6mC6}0*sn1W`t3kKg}$&8`Jw-ovG-%p%HmJ=dWuwFpKW|Q
zOUrL}|19yH4=1uNa9m!ri8DPSBWbJstu#ANpEX%x@*A+&jSUiOgq{+!nGXN5Sz~(`
zd|%-#$4<_26#F8!M1F5g=Bk^}#};VVimc0-ZV^2X5m)^s_6S8rq7TS)GjwagX0;;I
zjgmf`u{GrdPA=mce1p&){JQ16Ru4$VM^rG1am&WZ32I(zZ`MF;mv8sGDv
zYe|22Fb*EvEHdY<{)v+&F=E!SM#k{{M#b-fdU~9pxJu*zJPy#l=G&PM#XeX3G&9tU
zzBEJY<`V7`xfgI}uWa*d?g8>-_6ar50H1q+I~Sg@hO23joz{P7sQG@L$C=UQa(H<&
zyebo3dKr^2_W%wzWP95!xG|
zz1wJCB%8W#1uoxmHBCI#8>QXEBV;ekCge)X&aGzjXTS=``JPfguo{6`LR(7$@r>~n
z)zpBG%xlD??<{$3NT`|fIIBswk&vS4DEk@5!^akA*$f>W8a4{ei68xCXiwbs0i#KH2LJrn-K_^Q
zLfeq7W605QWJ=1X()LvNd?2P>j-C19la^fH;>01BGy;}bhGtvKYe-Hg9rhRlnhHBqD1RMBABP+6=`W{!&5`H6i>qKHb
z!4aY9%3ryavs4Zu_i4m}l+p3r2K>Rz8EWbi@
zU4N7{TB7Tn$XS>)habYH2a(^VCy|*y=47=z4vh8Cq0H2>wls;eHOYURd}3oIM$?IH
zeT1>Z5e{kHtZc(zJtTP8j!vV7u3BTHx~w!DeHuXLE&S)qRe
zJfZrg$9u2$#Em&wBCFOs0rqbZzqd(@X7bD{#)d^EZ5$E@QO8;p6&$i7oZ(DA^91wT
zgS{QkIe4TA9%rflstofCYWB0-Fmu@06a1#P#O&mqXVz79KYzG^-ybhi
zJ32?kcg#i)zeQShi!rb0KRTxl`Gh#de=3~f>bvoXtN!q28;?KvH6HjvmTl8?NT~kY
z_iUR{?$`G0n!PIYN6P$R)|F#t)7BH-^QyD?J@|6;`swd|uVMA~YEQ2I-oJ50PhP#`
zwe>$dopH=qCfmm=>1XIW8lN(wHzHFK;}ie%Hd*Ut
zKTqXZ(+0kN652en!-fT^e^4(VVt!v=4bi+WX|i)%^ZK!J6!E7!LBS?P~1`IP5D(Z
zb|zP`{#^D}U!tbU*dctSicWkUKln;B`r{W=RVmN-iOJ+$ldG=Rd5bRAc^8KB)WYi}
zZ=Shu8+pIR^RBMEpVxT}d^+G}h3{8c*Gk^|&8+q0ox(H0G#l<0b>2$pd){n@01<%X7>foF=Xp%|{i8@{)PWTdayu`kymz0zl%D(VA_Jv=`
zUUTjfDSs*7@9QcbXO+kP>+-|ZOD82hIov9@g}mo;&FaGK3p)QM*7Ac}ZFr2TZI%3E
zg0(Aw?IrIwyI^~C-W=jZz}9Qr-;})gGULhH!Sk(MaIq~g
zy58X`S|hOVDF;#S>pWl4l{Z1>-Alhn-Yi*r{G{Y%y>Slp9^g5pD=%x^fm?(<)NseC
z==UWrKJpiVTgx*W=53i8r}G-vXK1<*eOMThyc2^9N0Rp$o@Ks{{8h5naFwJ57=zy_
zdpOOSYVvI5oAznF9^D5x`YC?c&z|Vk%M|Hv?LTWgW6igmxJq=g=kHNO@W;dWvg=AI
zpN+n!pzplrvPYeG&5?p{a1JJZP!oGVO4P_MT@BwVV`J#EL1h&PuK4g0OA3M~cr$X9
zJ&b0}VtLkE7zOF7P>wA*Ou(uFQqqher04r8`S{*Rxu18#%EBMc`mGDrhm>*C
z>o4;DxS92Z7+CGRzeBm7bi-O0zEv%J#Rcnl46J5(ztvnQ_R=jA|IYirQSQlZSlW*7
za>4r77+6Q-9UFg146J(I4^pnG8$~!9+kKHIH@pyOt10{SZg|@6
z&Tzq783V6E-m%FdPi|Nb@_ixYCU(QpeN-4bZb;t+p8w#2J73^{mqGs}@V*1QS)`BY
zF0XN+tnOQLU1dvb9HgIJNx9oe8%DV-SDvp+9vNQ|;uB}u
z@*B5w+wwIo-%3on<6k}8%lV=h{bY${%ADB;yQnK2n>>(xPSkfX^}WwG&7-jFJ2z`C
z;(LF=AG;kPHplsE^#(SdI97cl<;+vTRgJ(fm8uM<1DC$R>2q@N6U8sQ{%y_}z0i!-
zsgCC<8G?rzoqxqVIP%lf+7f56q3Iqh%XZ;j7S
z;P?G`f6wuG*h|d(yUaUYq;~7L3$YV7UyrkPrQ0js!Luqlu
zc4n}y4!HhGe#?zHK8dF$aF_4XXBI6Os=Sql{L35OQVFwD8JD$kuJv2n)x5pzfui1M
z8B_+64dZD!$uAulg)*rVb!Zp|gE
z=|dh`X!{eKl~BQ1=<+*MgHJ7AHI2B(pG&+wVi>o>Ux{HzJgb%QVjOeM2RkxCt;951
zZzpa+yrC63wBFAhnQSe`-^Wil7Pvlitc-S55@%vO)w-7bxQrE>*ApvwoP8*a`N;oN`@=@n
z?^q91FKdF**=Ha;3=a+!QTIgiWL;I`WAg^8{iafoXT=tV!NI7CAw(XgU%!?jO-fUFm_bUH}j!&J?Yrrn(UOxl9M6X4j
z3mHo(#!^qSpH;?QO=ZMS(NAe_BY7m|EOZzo=f@H6e*}9{cNOy@s!u5UeCA=ugFbUk
z0auu{Kb$Ebb2r7Tb8DQa=dhArt_E+O)4WQbWk9ScD(lf3Sk_RubO^kJP
zOt@(z^F`p_%w7;}SN3}?-&pvqbziTyLD!xA<92#HxIp9gHi2Kf8LhVI?AX^6dTmno
z{0Z$}Q&{jo)<$B|`nlwREK}ms%U3sSeC?T&;g^4Ya^tt(JsEEDbObraff)NjkvW+c
zaND~8JV;5heh(y^PFq+*CbW+1R~`RKj3+!WSj+GBjEP`(-v_5~3hN#+um$iZ{G!t9
zIb`j(jLUy`jg>#>wen{xHCtgbWG>NNCv#V|-+C5b0eM!x{9LFAegBTw{c*wCWbOg%
z0p6wFW4uPbQ}_AY->1wqx}2*7AEJV5FnOGBKHlZG
zKmvBT@s!(&y(BMZ6If^GT78fo-M4->q#5`!X7t!UB6Y&r1i$(MiJbaFH2qY7Q7
zJ)g_D7yiSk{H{d?XH%vw-oJh+bV}!})YQfM))(?Dve
zvG~CHT(c)F_L4_2mnbyNq(2iJw~=RS49$d22Q^Iby`=qd)pF*Q)Hj{_ppW&
zZZwg+LyWk?iPS&LFb-d_ByRnXB?s5by0@W5{NY6AU4|LH!&feeUq5uoE9?1vf@r3Z
za5$0m>GE43S1n0cpSk4F`rNvn_~ro9;aMqgoag0~RduujnV5+`Q$d@BKF;1^@ka#5
zVjEYHGk8?XZy@M=B6E41O(V3F=VJJ<89p?^hkfut(sDSrM(FI+89N`*3w(a}qj&g?
zlm2@6J?5Z29nZ;{NJK~M{hA`yvTkBMTLk;$QIU>ZWmHNWUB7cymArfGv#qqfVcuHs
zPviF%n!FFx6e~}C9y~8#zNBR1hIJX(f@M3Gtt;Dz-l224uE2k;uG}QxE2F*n60;_E
zM8&$a%zgZB4rg~JcqX@z*30v>&Rq6PSkKeFdC}HO*tbf5P=w7%M~<6VFBcg}UrEd-jsA4w
zmDp3xefoNmUSqh^+2bJnp75f1J9FM%`ZC^2DKGnD<(#EvY`E;rXvMD=nY4pd_
z>7PZWWPjH-)|32_@)?w$j_wShteksQihgazrfeX#wGsL?rGU>s;1YAC$=G5~^>@}V
z4@5t#e=`9;p`1Deu5<3t&uqMwL4!2l25F1nAofuB?m@m@NOA2Q`me-+vm
z0?P-i9{nP4C&5qQ?F4-npFvgU**tc}I?|uCvX)W&gh*f37}~yqoByxkH@nxrShR`{
z6(KX?kKF*hZs!cI!aq$sO}W$3Mw!1(Z+_rtDs3uMCI2GnMNOm+D7suNNIjKppCy=z
z-gw9>`LeM^chDYLHzE7-G|V?CQ{g$SpE<)`t@NCB>ecPVr_y$1LFOsw6Oul#8b5(O
znMY)e`trd3bwkjj>7I_~Ck76#%S2}19gAzqBcAqj
z;Dz~JPO0}#@P6H9YfZk;?r~`MoJ}(?e83MqlEEARbL8wX_aAQd`mW$izf~>ZB79#V
z^QYi>fNyd1BL|awmFyun#9r`SuTVZ)#kWP^`77{Sew%hF&$3@n+9*Dk+lF@Or{+($
zKUa?Imb@3N&5KvpjgxgT`zL6*7n$33D);C?UtHw|&a?62Cx|XLp{H9q%8r&Wo+@O$
zyyaV(H4Ek;7wES9wvNbe1$k&gwA9NyuQ@Cv>tmP`h=$?8LLYuLdYKO1*emu%iR^pZ
zHlbr;|3!a_^KQx7jLi*z6SvUDIgBqTlg4{4?>VP79CGj#eG+*U-+`D!k8yQS{Ik-2
zp$PujjE5Kx%UWOaa?YVMYf5;R`b55kKf`U=mh~_m+8{b4wkretN`yyT@|%B6Uhfs0
zo4873#?nup-ixq>Z+`f+Z9z%L)+8@;gmGD=H|{66+HJ%6-3V1y(#
zvs@XW{&Ekikm$&A(+DNWz0lBSQp~O?&&?#}pyLC1-mGI2v9seC%Zy
z*=r>(|Nb|T)q!SI$~WfaWi`@@24Ym3o
zC(SSPkTLv?X7t<5R=Si|AI6Us+NMI=y+Rv!oFnsU)Nv>Ez6q=*(o68+%V}p5c!$xk
zK0*VYv#}9p)It01qYj<-Pn^R|JwJm^dMy@sx#<)3_Mu<%RX+l)t=~^hs$Ru&llShL
z?c7Dqbzhff&GBCOFXW4detBlr0AMQDpJPv7jfp=B47mdMjjHeqp+4BUy%UKu6(;KQ
z8jy)yY3NZZIxS-pXKXI}1S0(`z6#G3d}JKkcD2N+kny|)g&n0oMdpyfk~;W{j>#Uh
z3&|T>=OfhV?%!L`!yvYy>?33tnH?-LGLUxlLoSdRvDxA$?SZ~e(TB)-Qn80^#6%9-
z?RMImh=1bl-^HejUNoXN8?O>u9Up2>)IQo8eI}VfoCH45CS8{Y+b6M94}Mb0DTCjD
zLbv5i4)&0wFE^^bwGCM#zr<3Sz%3oyEVyMb&X>KBnm;@{YoPXlqvMar8mQRyrPg}b
z?){Svu0b#7AHV~#Q4Zew&xSWNI~U&XR~S{3+<22e7H?S#E&D`c@qa7^|ArWPzlwd2
zrMH9c<1Ty+p)>UAjjlfjzX5_D=|b24u<;Nc&$sJuw(E67+~N0*Ug{SbivQAxZpt`a
z`d!hh`{%+7=qWrE9*3!K+k^7W)a%dp+f7#XkCKnE$tbW;B*j@i^cKsqZ#o#A)
z?>|J>&r$#9KBoR*G3&X#oTXo;eDn5U2aW5O9Q904@5$L_IgA0tPKEDL3*W>?DXJIS
zRYnXlrTSX%YP!ckrR#oO
z>XzTXW^J<6J&vVo)#JII>mxT|yS=8FwT0hTmO2u}
zj?veOK6&^q@^H&t^nvuXI-ZL@e;D95v5#I7D)9!h$|{U`HxaWH-?MaTUUcvSYa7NN
z-+6M{t-m`txV`NpzHt5Yfy*0KT)gY#kl((3a(ejG$%jZ9w+Zs
zV2$TDEsp_DaMI&_@gcD<(yuhhID;}J#8H}wqwpKv_2P3^Fiw;4SUKY`=?7(xkBl#t
zzq9!0M*K}@OmZt@h9>wy{d!(6C%)tPMsQ9e4z(|ib0EN3=6&QW@q+$FTRO5Nc1!#y
z!8zAdA;w=v_JH%d;5-3*rwhJ}u?{j8ILNqc0Qnk6(hlB5j<)hm%5I}gFY~;IIizCx
z@NMAsP=9~rN`6;26Ioa`b4W)7|0hC!=gT{t)FK?jKjV
zYUa$2D=0q!zCScGvtx)~={`@!eYa8Wb45ngwOk{(hI0u{j=gpI%=bCl+~K$MnaiQQ
z!|z$l;knNmm$64hzmDfyh&yjZ|NQ;nHFUA&4*m6el6-9?$VeEzMaIE9>_9U-5xXFL
zo{TSKug_-M6B&n}fiAUT7j!I!_RAXj8)%=zRq9y(CVff{I#nT8FK
zcJ0BAyn`KCPM&S({!r}5MC`~6?8s2;2)bWC6FagJJCcbVnTZ{F729zIvC?70OothL
z4sXLYWDi#J4SZrhc4P&xUKLnIeEo6qCK5kQAdZ?~Bp!Z+yxWk06eI2q_%^i#pGRUs
zdTa~dWX|jJE_+gnJvkuu1bNoBm-hbQ4rq^zi9IRCo_Me)VoRDx`w&?y)b_;F){LzX
zd*Y-m()NTkR>)zYZBHbR_T!LOEkosw4e`+*do8>2SAN@EXjE#xz8mp
zoV|;@bjK5j`|7h!GS2UKe!0(A*~(nWD`L0LQ@i8QH`(8P!W&fCuYN<4r)`UEFC_M-?L}cX{%5lnm)iCs-?kSL?~$@AXrIJ+
zHlXjD(T5cYzWQxRarF}C8H&E+Z|HL$_hK(ZFZN>Nd)f_O^=(h|v>U}@HxlCNwVY
zeGzcZ@E>FR7qRQaZFUwBXNmwz>;z+jWMVC$blO_L7)08iZqi?15Axu>)GKRKKCpeg
zfMPEiG?%fA)Gg<|Xj-`ZOTqC)8^_CHGSHY0Cbom-YjrDB=fPQrcs@7>eizb$e8GnbKy7Y7?%e-Qw%@F1~|XZGD7Nyz4PmONQLsmxb7KIwjb
zPeAwI)FrVl|94eYXQz+fXy&3n*M16m8*Wmeudn3yW#soDypPsq`}qAk#u=$~8`f!E
zro8lH5+9O&U-QB4eEC#!
zT?=TJ8{hHJVMRyTW7|dP|i@t1gxP6!9@|Vc^b+__?+u^GRCwxaiq&^HhMEka-ZA9-&BA9Z!+eV>`h
zt6;@y)he2q1ms1x&{csHYbG
zGc*5}bDeXY>-}8kI?0Y=d;=$5(9C>$_iEuU?f0#Puk>t^-(`U_)3@PEMf+mq3HlU%
zwtjuo)48smVV+J=)zj9S|47z6jdgLGolmpG#?OZ9Z3(v;yXqzN0;iX;WaCr3r0aeh
z_;J|>F1H$TI+&vlPf|9M}UhVUEu1;
zsAT^cr_M`Xy(1G0ZI;lU#g+Sb7E5Cz&)@^MJI$;K_I#(mV(gaBT-hd`$~kX_7%aFBfosL~
zKS{d*eh2uioSi4=SAFozG|fSRJ{#cI^Nw(;d3dUYelkAQxv0?CynX{WY)oefe*5>y
zSFt`6&k1M3N5p+z`oTZ%vzW^T+>>vs9M-+Ayz|!}7v0YG=_j?RIJ}>3XZv*2LU>a;
z$`5BVv>Bo8Zs6~w-=f_QF;@1+PXA5)YY`962&F2?rM(p#^LwYc{pM7J-&6Vho8I-~
z(8FIG{CTu~Gw{>D9-RJjSFa4|lPvq)&;MJ{w_g0;^8c3{nX9;~=l{>4MzbBeD>IG8
zaM-D*5u(o?k9e`De`XJ<=T}Hy8~4xa&koz4-0~!egq7~@tjzs6O)M0
zr}R-%J_R|bvr+tWL;sr1he}crc=+|Y^ZU2m*T2_&{WGj5s0Lk>KD3Yn4!%#-Oo`hy
zv#*O^WOtj((Layx(z>s`e-rg4i0j1J{~Q}*nkw-nq`U0eug(#hhmT3uNM8@*<3-M+ujzc?F>=lx*}@vF2x5v?W
z_*-uT$nmt#eP=E;8Jug{$5v%Na(W4U*S)&$6k3^7!!xWg*qn0tZL;f1#sp5U!x!EP
z>{$Ku6l+z>>P*pT@H{_yC-cqTz-0@}hNrKww&SS;{41UqdY`iaFJ0)ky<&`|)y-2h?
zb&|Q-OJ5@4ccpaJqv+0$DSSbt2W1ePVjsM-|f9OopZ&0
z!SDaud48w)#Emu&^#j0ug=^5|PLmh3e#r^14d(TIS#9+2``?`B!53#6LdTP6{vl?wY};zwO=p{#I7o@33|h)wuuB(JQ~?H+X0^%?^M5g5R1)*~J~~
zBcAEwNAZVOUvb_P@yN*fiak~G!9wNIw*~X+kKAZl-YOu+VPH{o*8ntI=KufYu4nUuIchz$~VhigOrYTt8a->Xa2Z>QBotyMN)?U+wya8ylr%HM^UT)W@
z?&JI?-qm%RXE2jkDYoc=vmfso;GWiwj#r?gE-h{{=QbajNY0V!HQIG-Y7{8ue2l!J
z@i*ohOeId)1jr??j`i#g|oP)?y2(@8YjOwB?BM=i+7+=fTylw>3*k
z0~;!h*=_x%%gk=&;&0;J1r2wWFTgg_yW&fI=Et!W8Ru$~-_!zsDDHG@3UL9(seY($
zN0AXR$&WyNdER3S&yY9w!tn}|$(!xqsNNJd1y-#*5}}^d0sG_rlzh
zT#Ruq#=R3k;upnccQ?3OS!kvmqmQrC$3^i<`?hAr6Aimmn{LzCcKG?#?t
z6qA)4^|$#$+N>`yyNBAM4YgT4)A>xy3}lYuFBDN9K-U+?1NMHxy)T$0fx?pm9cwqr
z*Q|#gdWb#zJ33TtrqOxoukEMXb`AYKj@+oCuSxWRZMPy|`@Ra@X@ArH32<8c*n~6n
z(68Fk@5lLWIvyR5vi10g|+VOlp6pogkFoDjJfcf-<%b(ad5jxPENuP+1l((ST
z6qC+aO&;+a{uA|L+m=;`*>7
zaDje2vtcA2I()j)@Yf7(R1fJ%8;>21PskRNj)Z>EZ-F+5-{RVivT)rah?(F$Y0XC`cHD*p(Q6qq4$X4p4Q&M0J=vyBLLoX&JDJt
z#mz5=(Hfx`n=j`*%i?i0JIKQi_DjYoh5;{xyfZYuNYXbyZ*dK^4DI5EE
zm-NRhY;tE^FR$$f)PfI?_n|mlyf*rn_Mudmyrq@M^jHUH1i*`X_#Gi0(l>!Ti!#%0
zb5a{B%O_t2?VwkB(GQ8mHD}V$NIUJ}Behebw_R;2r(`zm)|vdJtH8hgeQPu`hqe!(
zKMr#LPV&-Q!l6xbI?QA0LqC1kV+xmsz?J%<+yW7mA@X6e6g0Fa{*{q#t&tbhs&oH-N;`(mhpUb}y-)5@wt1ZESp0FbG)}&rbgAgt`}6pHUY0+L&45h)aCA#%YGPl2C>tFz^fA0k^xbggTamRBqswdEKBX_v
zpA%XADaEFg{8AhX8PutE$C=7hA8_kT<>~&=U+mga->~uiXUONGe~KR~_df<5Gz`Sb
zldKJ?j|tAjq{vt5b5CI}@Qj{Sjl}FedVcpQp7Z3S>hF8_dXjei@!$};U9p`WcvUvm
zuNJuVn6k$GGq=6$^9)Yd_~&pwUTCrMJ6nKs?DPLN-x_S6H
zjp57fo{H7PjM#%{ZH{BqD>%k@_hWYya&0wh(u2s1#mq75Y?*#+x-{~Gm}0`xZNu$u}
zr53`;eb9XYxV8Ai_tsfv+ADH^8V&vA0tz34CjVp*yQUx!EhjH-nqstl@IgPcy2TWB
zD#jvTPkUeA1>N-`ziVknxbWtwA9|9lOg!&YBt0rsYSQe(G)=N6M_gx~biI^0dXcq8
zwb6&Hkv*Lz#(*4Z|G^F50vLVFkM;)UYrfDSmUcY*+4FO}-?TC0TS%@UJIW-#kTFBP
z1#SJUt0O%9IWKFyFEB1zF5gn|*=@*9YY$bK@*iT`bXP^oBe$#GFMBw{dpAa~RV#=o
zRuWT;h}TTuLGhPtvcQ$m$GDaXTxlM&{YIurK40j%XOH}6%IWh@+8%A%m-!&u%U9~Hj4
zwSnu)HU>77h46Wx6}7V*xu<7_&R3<)Pw~t+o~a|AtNlwa)2^L=+G(YorSAO&Jj+>Z
z$XE6k@myJ0vK{#d-sG?SOOlw3;!_ohSDDP$be1GOWGTZZG`#Vcr#e^z+E_*1?mgg++1ndB-EC_&?`S-d!}h#I+G^$bR<3VltlR0c^nDAz6^pEaZu)NlCVsir
z_43#o+i0#yO&~v|{}#RD@T0f4^?Dc1R^BgFe}RLpXtRBW_VH_9^X4n5JxSn3W4(;`
z^j-6oM=qB3B!$>J8e!gh=4$T_z8UjAlW_@;YC}25TbV1vyLzwGg;@qn*^8D|_c^{v
zwv4*RrA?2Y9`Mnq$4|xV`SRPNW$=h#YkhGwJX1HuJW_@qRz`h+f-q+y0l$HK;cX_=
zR7>u7(cl-4Y$gu17I}2Q$||#)-&UWm!N(0UZqfA7^kt{-1kZ<%>xv1M+8Cld((AqSy3RbsUT3$`Ci&Pl=m)TEpxj{
z`a`E*B7cnMPE88jJfaQe?1F8G#*Ym)965l@-OT(iK?bOg>g$0+kFGyTUKw*be-ZZQ
zzM_L0bzSumWGDAyi^v9gDPVTXUd{t2Yrsi0x$%vRpBVOT`Bb+*8sJ<|WGUY(mFtOo
z%;$HI=fzXH{%vf1es`{4=UpFDe`GA*
zMF*Cq@CR)S2pRnk>^HVD8lO;l?=Q0C^CX*ZHLUNd!C@KwBNu$P^pqD5LdKMb0%N8{
zrE3p4@vej9NeNGi&&VdZb{sZmh_Q{1whLd{6O%9%KkDIr9JxOWUhe1l?chs!@x9O`
z_Wo;&j9K^cn8HnS@$sKvo?^g?nQNvesc})my_d!YH^oh~oISU%;U{&mPyUfO^DWyV
zcy?J=oNIHgWRLQd=8>1CuG-i`EyAmqyU={j7BOL)BPAa-k88?zP@JISr-M&-7~~Xo
znW>+U^6Nh4Ww(Jg_I#E)P4pGtq$$aq)`Az&ixU?qX)9EFIo`Kxf?;#Ilr^vh>Ko6Y
ze@6{xxX|aa!NJ>En3NW!1zA!-Lv#{7CJr&jIH$XuC;udgZ!ZBpI|ewXMm6`}n~Q#36``N}BWWJrRmM7iawDu*(VPuA9=!<9oM|KVj`Uso
z{&a@DC0!aG66r{@EV%}?`2^7|ntUYSI`4e1PU
zBAfnwKDwy$(S%12OS0m1UMx!UsC9wy%vY;uMw-QoD$Zj35hE*1LvCb{I#KT-d@`T>(}l#Mi8KR|HukmGT9M)XQt
z;I)P56ZvQdkj)e5^8kGoF7!W0-y5MRkFJlRZ|FbgtmTsvT)=-J|3y2-gX03)oqc7&
zrv96-HJGPXWUXw|0{Ha+{7NjMseii3SiA(TnXY%%;7bsA!R!%200q^|U!=bw;J|8#>=mY(FZ5#AhhJNjR
zz-032Un~7vNPjhE#V`ioJK1aE)!wt0O%H{|>&(&F!QCDXSJO_z=%CeEmUe)tx_56r
zj67L{+*ykJ`V_njeJUTd2sp*aEbVbS0ME9vUN?yBxQo2B#fuj?He|keWG!PkPOi`5
z#S>;oKUTa49Z&7=V&oe3-n3Wfdyu}Jz~U3V{QoOff#-(xb9>F+a~#9{LyO`6T&)-SoGN_LF9eJ*QK+O_v#)FF2%s?`BNkSNb<-
zqDRuut=>}|Ftrup9p`sR8@Qbo!XDAt5DTzJj=cztA-6VTmpnhUVWZ@rbaDwfN5`mB
zcbxmqywMgo>wUn%TmQYR@xl*U6Mcj69=nG+_r)f)6x`f>J@!wrIUOYL;jZhKcb$v}
zQV((N<(v1J%wOeWvqZ?PgI3>|z#8NpQ(m*=!83mPn8TURiZAr>Uj5>-GpgUX2l-V1
z9c)KdXe<+$vjJ#>{bNnrZLI}pi?Mq1s{W}@>f`Y}taICbhT7DZH)&7fco4V`kQ32F
zpOzL!*WbxG0!83@EjU_RjNIa$WZr|w)HY=0Zt_ZXTc7g6{nFUyhW?
zo*jQkXKfckd!y*vWz^HSKt0$=#G`(FS;?)5yL
zsl$g-oG~9+c_T7o|CM>0@W0Djk&&&?vv_@vGP1>N8=Nw4-y{
z_ZZe}$vYgkI5~qgrbk|3ZiCQibzX2&xP^1B-l^L$=)xYF6XJ)m6UO=HxuAsFXLXoxcxEAM%oz%-}0%w
z3bz)~R-C>zKqJ7hu`xZbH3a1om`?|oA&lp
zF>=D&{JdX&C^&leQG>9BRf@@!ol&6}QkiFWkd{>3#j_JE5pxR5{O#1#JLK89t?=~$
z*Unw{8|>V-c}I3`194T^w6fQZVbk`{HJM5DYY8^3>V~Nf>2E~qwE-L3=Vt91D6v5mxqN63lG46^iww%R72
zoPZa@uAK06peHZRvrm}ki?vTar5N!4U+fe3vQE0eu}|z8IQEH^;W_P-a3HsR;?B=m
zYODM0|qu{q$A??3kaymwyO5
z=6(2M*>=n~;PwAbJLa3<==Zf_p5fhG^6B<0`oB=V!ynR~xgx8N=f(3}d*;dO|G@SP
z^!Yp4GkX5_v}fK$eCBtyXMp!#v1iUL{Vnzka^QEdXOiR`{~_&}ATfap*)uD#V{_Rv
z^}qZL_6+#-+cSQVR?Hv-==3S_7yhp7S>A27+aE0F9%1q
zdM`1YuyR-3HRu~t=->);a2#JA-@hTq+7C9bt)Y(pQB_ZkYy3#b$Xdp(b>LQT=l!;O
z!pMtaeMT{t=AoF&KF3cVVRx5t_JtP*0^U#@2>8D(4s<7dztfEaC5Z#=8yni>UxUyZ
zL!5ppw_Y*ig~Wyy5ko#o?6{YBT`#^tK7AA%mWK?xKizG>GUU9t6r>FA2En6_}a=H>Bfhs;C`BTf!2DCO^{7p
z*!GiuCSOtO(IvzdpnJtoloNDp0{@~Bu6x(EV2?+}m`&ku(6QNE+_uu6M*6cy{UK)k
z1pOJrZ&&<4e!(Knw@?h^dEf6vzaG5pI>z?|eLGIyv?nbr9|fNQ{%EfX6fdo0Y(;@!
zQ_c+-W-DfA3SkU$tZvQNgl+h3R(svW{t~sKA-R?ET
z{VH>eKi9a1VkWY+uizhlD7St0`uiw)-}mnBe4Q_#Io6Jrp+IWGE)s>x&6;Pw)P=n4n?<%FC8bsy4rk-K|_o
zwXHoXHa5t0#Rd!D$%F95A$W2dal&5kJP2>*zkkife%7(IRv^A}Vy2GlSi^e@l?w{5
z?qitG
zSmkc;^84EOt-LFm$;EfEC(h@)@$}u(uYXAU{<^HbUC6#)!ddWt(0C=Z`McToJpX&z
z_g4`&``zvP;D5=!&xg;lV}m2&mFS<}#lDZT_WXym?|aB0{ax+*wQv6>`#$*JYTsMC
z99h?ftYMG0wdI!(6WKvbKXi`@#Jk7{HA=`*pL3MLq<2ac8}c;XKf$l!l+%HC05e*G1``$
zqdYq4t)ZL??*A>aRqJ4~n}g^=o8K2Tr`O>p2G7Qysw%=R~YyziWW}gE2zw5NFi+z1-jm|7Ec`5pS*vm!#9P?kw{IB7ja_3hq
z3!mu)r+$3>U@dkC{Z~A?lzGy;`0=6kR9m+epHa9kl^uf(BiqkE4_7m8+2I;{(CSpsw>FUaCZCA4lns5@
zmi@p|{g;SrX7GA|_Xp6!gQmdRvledLv0-$5jR|!2e^nBXhL+*Mp^V2xCvI}46R-M&1p0TdPzUsra4>6~CA7TvPXf=5bTU|Wp{3#2|
zTi<5>yR}xxzi7sPPx%86Q9na@0^WVmkpCGkSJb=jzo-7oPL}_syb`-N!{%!hw5=ky
za2xC4w6W@ApyW6TQ}PXYKlaCS~tA@8?R
zTU&J?g7`xP%oq7qse@f{`Z%{*g&ZToY2cgvo@87(UoUGRdIOpjozmGw?
zt>(sc+83ke^{md|%O023Q?<|LLf2=Tj-R$tuUu!i9tiJ;9}2!VZghT=-Vq+WKYxyj
z>I``MsZJ2PAw`B32^ozwK*Dp^4axy(2wx5
zmhaiPu2;b2
zB=$hO!I*n`q+g%gmG8nkp!S(-&4=La=XWFUBzOI=eiJS_o^bLuhv#oNW;5QHw%I1X
zZBJ43EqG@
ze+7C5x!;YhQBIBYsbUOXJVEvFu^_zB713-CG?Ati`1NiGW
zXPOl+5#1D@q$ceuV#~)U^MHa@1&p7ZL7)70Z*HmWyDGP=lUQ}_>@CQ=?_Qk$QOkcG4+xWGb
zIv^gut}ftwHSp02-MYc#-8@
zJ?rPEe)!1GLkHj?-m^TUXFVR0d{)0Dqy0QYeFK+=I2)Edg_>*j;$D!46j$-%W{7{F
zHSy2)T>cr+27KZ1;p`E7qg+t&O+nkcptag8zEPg+5Z|bMAK%2FJ-aUk`m<}F@Q`9a
zwacMB>``l%!Z)%@Ex*7!9=~*D@r!?cKa(}Tp1(g2-S5wb41njA#3uvTN)_%tKPsS=
zZvpqpx36aIBGmC}B%jaX%d>~DO}pK?B9j_iAAmh%itUP~{52PqV_HYvR{+={SwTB+6rVV_ZYC$Kh