From 41f2ae2dc56cd0ed7ed811f614689d2abe589160 Mon Sep 17 00:00:00 2001
From: Alex Kanitz <alexander.kanitz@unibas.ch>
Date: Sun, 10 Jul 2022 11:26:04 +0000
Subject: [PATCH] ci: add GitLab CI config

---
 .gitlab-ci.yml              |  32 ++++++++++++++++++++++++++++++++
 Dockerfile                  |   6 ++++--
 ascii_alignment_pileup.R    |   5 +++--
 tests/expected_output.md5   |   1 +
 tests/test.sh               |  29 +++++++++++++++++++++++++++++
 tests/test_files/test.fa.gz | Bin 0 -> 19877 bytes
 6 files changed, 69 insertions(+), 4 deletions(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 tests/expected_output.md5
 create mode 100755 tests/test.sh
 create mode 100644 tests/test_files/test.fa.gz

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..51ca7c9
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,32 @@
+default:
+  tags:
+    - shell
+
+workflow:
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "push"
+
+test:
+  rules:
+    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
+  script:
+    - export IMAGE="${DOCKER_ORG}/${DOCKER_REPO}:latest"
+    - docker build -t $IMAGE .
+    - docker run --rm $IMAGE tests/test.sh
+
+test_and_publish:
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+  script:
+    - export VERSION=$(grep 'version <-' ascii_alignment_pileup.R | cut -f2 -d'"')
+    - export IMAGE="${DOCKER_ORG}/${DOCKER_REPO}"
+    - |
+      docker build \
+      -t ${IMAGE}:${VERSION} \
+      --build-arg version=$VERSION \
+      .
+    - docker run --rm ${IMAGE}:${VERSION} tests/test.sh
+    - echo "${DOCKER_TOKEN}" | docker login -u "${DOCKER_USER}" --password-stdin
+    - docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest
+    - docker push ${IMAGE}:${VERSION}
+    - docker push ${IMAGE}:latest
diff --git a/Dockerfile b/Dockerfile
index e806df8..5d0eb0f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,12 +1,15 @@
 ##### BASE #####
 FROM rocker/r-ver:4.2.1
 
+##### BUILD ARGUMENTS #####
+ARG version=unknown
+
 ##### METADATA #####
 MAINTAINER zavolab-biozentrum@unibas.ch
 LABEL base.image="rocker/r-ver:4.2.1"
 LABEL version="1"
 LABEL software="ascii_alignment_pileup.R"
-LABEL software.version="1.0.1"
+LABEL software.version=$version
 LABEL software.description="Generates an ASCII-style pileup of read alignments in one or more BAM files against one or more regions specified in a BED file"
 LABEL software.website="https://git.scicore.unibas.ch/zavolan_group/tools/ascii-alignment-pileup"
 LABEL software.documentation="https://git.scicore.unibas.ch/zavolan_group/tools/ascii-alignment-pileup"
@@ -64,4 +67,3 @@ WORKDIR ${WORKDIR}
 RUN chown -R ${USER}:${GROUP} ${WORKDIR} \
   && chmod 700 ${WORKDIR}
 USER ${USER}
-
diff --git a/ascii_alignment_pileup.R b/ascii_alignment_pileup.R
index 802b871..daebf34 100755
--- a/ascii_alignment_pileup.R
+++ b/ascii_alignment_pileup.R
@@ -29,10 +29,11 @@ against one or more regions specified in a BED file.\n"
 author <- "Author: Alexander Kanitz"
 affiliation <- "Affiliation: Biozentrum, University of Basel"
 email <- "Email: alexander.kanitz@alumni.ethz.ch"
-version <- "Version: 1.0.2"
+version <- "1.1.0"
+version_formatted <- paste("Version:", version, sep=" ")
 requirements <- c("optparse", "rtracklayer", "GenomicAlignments", "tools")
 requirements_txt <- paste("Requires:", paste(requirements, collapse=", "), sep=" ")
-msg <- paste(description, author, affiliation, email, version, requirements_txt, sep="\n")
+msg <- paste(description, author, affiliation, email, version_formatted, requirements_txt, sep="\n")
 notes <- "Notes:
 - For the input queries, consider the `--maximum-region-width` parameter, which
   is provided for safety. While it is possible to increase it, wide regions may
diff --git a/tests/expected_output.md5 b/tests/expected_output.md5
new file mode 100644
index 0000000..3319e18
--- /dev/null
+++ b/tests/expected_output.md5
@@ -0,0 +1 @@
+6b5a66981bd83329219002897be393a6  test.test-mir.min.1.pileup.tab
diff --git a/tests/test.sh b/tests/test.sh
new file mode 100755
index 0000000..0ccc009
--- /dev/null
+++ b/tests/test.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+# Tear down test environment
+cleanup () {
+    rc=$?
+    rm "test.test-mir.min.1.pileup.tab"
+    cd $user_dir
+    echo "Exit status: $rc"
+}
+trap cleanup EXIT
+
+# Set up test environment
+set -eo pipefail  # ensures that script exits at first command that exits with non-zero status
+set -u  # ensures that script exits when unset variables are used
+set -x  # facilitates debugging by printing out executed commands
+user_dir=$PWD
+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+cd $script_dir
+
+ascii_alignment_pileup.R \
+  --verbose \
+  --reference="test_files/test.fa.gz" \
+  --annotations="test_files/test.gff" \
+  --output-directory="$PWD" \
+  "test_files/test.bed" \
+  "test_files/test.bam"
+
+# Check md5 sum of output file
+md5sum --check "expected_output.md5"
diff --git a/tests/test_files/test.fa.gz b/tests/test_files/test.fa.gz
new file mode 100644
index 0000000000000000000000000000000000000000..a0b4215d5cad3e0d702bb14fd619e44f02699d4b
GIT binary patch
literal 19877
zcmV(%K;pk2iwFb&00000{{{d;LjnMZO>A0AjwH(s+sB~{5L)m8+#7;mYj5lR@Pbly
z&+{8}PghlDWk%>rQu&Yh*MH}q|M}OyUsmovg+xdKBme|M0tkSR6kvp?5D`+uV}N9U
zi~tEz0Rkd};n!4ze-I!6DFnoeAi-dS7$QRmF(N<!A%Y5s@cW2BP!s?>0g8|UWB?FJ
z06_{7(yjs_3JMU6*iT;Uh6soNggb#DfKo&#A{gR+Q~u=(gx|o&Am5H&Pl#klAc?@P
z4G{?PF~p#Pv`xSOr2u?mlJt%k3U4YvgcuKuh%+`sh7=Ma_B<iNJ`hEp=#9m@tC0c1
zFV-ja9EpI4P*Aje1Tnw|00MVUSSR{T06_S-5CQ`>9wQ{Z@W}wc2mlKEPL$1JFOdX6
zN+c<8{R}F=3kQWrt<$9d5NjBOgG7=9;GwdoDl0Q9yQi}&v$H3=x^iY}rl$O2GP5eP
zrt<alWM|D(W>-~JPEAc!Rd(+MGbgL2b80GkDyQpJc2`YRW@k=MS7mii`J<|ws;=y+
z8ZU0TyDIzjR839SR75~_Ixn;+5rnw0Y0s{6UaSiM2QM~jC`h4D*f=C?Vo{6`2tKC(
zB!vwtM+<$MkW++Y1W8f^!2lv&hzv;BGNEwZ1R|gioqwW3TM_oQBs^>=Iy6WD3X;-R
z7CDKr6-XgK5*c{f)rl?>ARJ~PNl-|;af;$bREUgth>e>|b4Px-C`cjkYK*T0uL_|T
zyPS<a(G^hZl)bBiGOh?lL@4mqrwUiwpf?|Z@O^dh9N{_|5Gm=by(=XI7d~t$bj-MV
zt<ywpe&D&#Fv6Q+Y)%FP0sp66rUT5D4}_jvuf^S2cyAG;>_E|b6?q$QmBEu;;mF!A
zV%_G#CL&_}1@65O65l4hkGj2hwc2ZmTPXsfm*JBTPYiC^{VB38B?`EfZJ+zr#O({u
zoxlalwUS@qggcZ%tjWsk&d!<5>wG_NHfI4qVgRuVf#cr|!Cj9b1fJWgn+O7%5#fdd
z65d7FQQ`hg1<824@_+zI2K`qK0Pk|Ds%l(v{4!_e`Atn%WmipCPmfQinjj^&d8fEb
zdPGQkiU<+Vc@}awY-#`zpaP+5SRs0Q&rK{03}ORt9qx`vfe0O9U~EK0JUQxon-8u;
zghS89688L`C`E|Ron~Rkm#HD%ncFJmV+b+0Mf$~NT{t~>k#>b~t#nueh6iLs==ns^
zQT&yBcXXp5emja?qasA%#o1McCfbTCU^~7T0r#Sw?wOv-&g^=V)7_n2-9Di^d&WO?
zpHz1C%vAQwbY@NG%c{)D%*^VU8VCQ+je2~$%F3L|X&<bdH<Rhk=>FNAl{voLxL<cp
z_hjbGOis`2m;FIi?y;HP-<g@}yd~F6yA@YW&vb2np5B%8bXQm9R8MzJWlj4F_fy$9
zGnxG=bEd|rF;0&1b+T)^J7;@(S5@9m)%5F{U2l*7W>4B^-8OKIZPIn?oSMpf>AR+L
zwDXo$HT40G%$}cROm^2y=UYQpmJ?d8IS>vo>1vsqy0bZRvfp&oWQ{#(GtSs?V{dg%
zr=3vQnLe6hgLPGP<!roEZfs@dZfFv4w+?}j+s4y&BSnCc>4K~JmL6!E5QGQ?w`VgR
z4&i?+gA5TtUj<jlx8z^RLMUDYq^kjkX|{zgZjKNSLIYP^NxY!D)4?`S3~aR|s4Z~_
z$yHn=d%Ch;X66{ER<;ALGc%{g8Ix1fS=rN5vl*A2Id3z_fb!z3raPynW-h-RedVy7
znVgz8ljR(99L;8?6EAli^IfG4X1govRc`i7S4~eYC@u$1c6L|!!kyEdQ&}^e-LEQL
zcMc$TZ3?)jPG@FSO;1ft)@`FQpMm>Sb$4}jPxd9?E~F~kU+ZqCl~Mfb?93^riL;}#
zd;I_Oq?toyc1?9<RnBzf%=;GF(`j;1nVB`a(!78De?KqVpYQ*_&FY0#ZIPSooU6Q<
zUGX9^+h;Ao=-$-IagD0U^TBl2%<`LlIbL?o)K*S^qq4fYr`y-IN00POnGPCdZ){Tw
z2;*oZ7jhUNEs2(Z&~t0u4rV~E2*D(o*cZa)9OEuxBKm_+V{atqj+UDmcXJU5x0VnO
z$DkHhh$IxI8P_haVY~c<OgiysnnX|`_th}=a<5(3v4GsgLb6TXHg&&Sy6QhmU5(I9
zm==cvAt>;?TVoAKTNe#cAWJ1O(Njp23@3@uTWpNo4ld=5;ks(<;HAiJ)>Adz`EqJp
znrq4JzMk5+shl>;y&ji){N**rsoXa2X6!(9TcT(Xw5)Bh`%`wNujd}~6TrP8-dR_*
zCd*)EYO0<|zG04|)&xJ>%V`(P@mU5qTOj@A#lr4OQ`z0lLvK2#oavSQ_5JCp*FHEs
z)iYV?<y#kUwb??j#n4qMGhM@W*=>w9RWma++sD&(vusi0LQ^$U<2`Q%yEBY&e0O!`
zAY>*e>d@!%G(13`>Y_~x-0RJ8Vu_g$5a1Ls`8H$uxcL$G>#oMKn{!~moe|(;z)+<Q
zhW*(+@~3<Bbq||p`d$05|E_!d**NAznoquQ<9ORS(%sTwV!+zl&VDzJoUFY?*Sz)_
z7I!A+r*W*4yAN1qSD6oPiaaBzs&vqGxpTKeYASp3SKGLLKnCzuJppwLFjgVNR>>tU
zOJgmxxf;Di8v)SN`bQOlV?bAl7KmAKu%8zxM#yoXpscM*AeYg)$oe)sjpAvslVc}j
z!NO#i_&B@ugXOa)jlPg&3NReP<~BT)fD|d~c=q_Zwt8Moo0Z$-HAW&+Gvx%Go_1P(
zOlU*lbym)mIad)ElFpu9AMKIqJSLC^ah4A6yE)5me42xM`lANZSv?ySFQ;>fSoUsR
zmye?509p=$vr{YI((=wH)!}PBan*ZzjOv^d&abTL?3Z0W!7<t0Ik|BE#|ExRllyX}
zrzhXCu0Gb4OSsHqasknjCue(hWlq(+s`^E!4k((*7#Mfu^uoBVJ|aWuIb<c<;HnWM
zBME|{L`#blVA}*JzLkqCG+90051c|+#2!}5PNG2od@gc2T;lc|@x$Sb4=87xg?ibE
z&w|7{$oGVBG{vj_QEViG5~ufyEU}rs1^MJJxz>7OvSJ3rSg!nx>8Er4<jH2BAM;$x
zPj|VyO?AJjKPd7!tQWpl{~bdfNAvrGBD>I<BKLaq?-_Dtb-$y?x4vH#xvKLIhTL9p
zr8TR0r^<h!mA@CV#k%Szw9ae@OP7ds{K6@1DMP>ll`E4)y@0IgL_8BjSG%p;I!#X=
z6lvO)+H%x0IaQPI)VZ_fjNfNjLCO4#W-Hs=+1>SA-rA=*tIZNzeGJWPdH2g6=Vb`b
zFw>}V$7u}lbZYB(r|_+yc*OUGhj`pFWWuoGyTQnEZib7LrLF)$8|)_yu;Sqk%XX@P
z8xNj1>L&PNGiWi6c3!3k=P)m+xTxJa<!SntS8itCbn{q_$qKasyCnBxdf4T*1W4v8
zL<Gvcef2XF=UO;8rm^$J2*3i$j*{Ayc_o(=6rar1`=V#&jT!76gpAT61OR|8SF-xA
zNb4Ox{sU_D4;syJp5||)wLJaxX57Zl*9cA2>o-x)oXIv#Pq)~1B>oND`U_8AwDpUo
zzy85nGp4~G-m0{uw~E)n!dyKepEIJS>QA0-=gclUr^bA|a?F;p@>MVPPy6uRx@OKy
zch&M&MMTgc8{s)d__Lc{EbUZ;jB6Z_;wnp?x9yjW$ryq}5y8950&WkfKE(>3`u@UG
z04}#)C3**myk=xB`AO04hImWk84}`?;_yS|_lA}gL!S8o0qSvg<LV*Lv6k^mwg?vZ
zae<9zogN5ygt<zYY5orRxWwDD>+novb-j?@0$^%a8&bH@%M{#=e-Qy;E^l6b0;08v
zxbgYQjvh?F3W%-gNr$W9v-bi<!G_{~W1V%W6Yqlb7Z`#&hH)Ljj&?5p#?9WECzXrb
z4VgW;U%}JE!Br|GXlL|d2#Y?nvlx+Yv8BTaHl+PV?=|ju5ZfKt^$6TSZd~~xZ7z$r
zw2Q?6?DJom5%FAV_apwqmPgeJ`2i0%qJ>Lq3{MB;+KlZ%vb%Jyi})Ha)|!@lEbn+L
zo3*=r`3VJ68ZclNY#SknIAMwFU&{V;f*;`Y^A#S5`+{LV2Nb{5B#TBnxV9*DLwJYA
zPFW%8ZHxM*fRG6moehpp3rMhwArH%-N8UJ9hY}^@TX(j&l>4ZKL3BjCO#{OM<5|be
zuV1^vub1!z$atH++V*-9q0`2(w1DC^b*xf)+~{!RIw-xmIKOl87k_4k4$FsKuz`lH
z?BG8`9>(4SON+JEwt*F=*ycVavQ1+q50RPIw88DvJD!(*2*j;%1%v$Qly2dxyIEx`
zYX&{5vE?jB%br{qZ@H%`XTm<*(W><1hYMt=1<6U}nJE#@rlr%X$Z<)=TTr`CFZjf*
z)3TMrPmEbca3S<OiBGybcYymbldTLcAFiM-+&1`@!55y?>Kg?w+0li<M}9T{JQG^%
z`8^<Dfp;tYBE@Y?r1wgILSUotDWqV403_`bH*si>t9f%Rfvsx{QZM3Dq1RYAtSAPx
z4^`aY=o=+L;`>s4%cTxHuk*y!&dIpkVvq#z2*wA~A#qir%?oMgd*uFZ8x4_9t0?np
zYM0?hl%*4%PlDDKj|c2CH(O=Fduk~d`;mSH5(#Rbse5s>_bM3(EpJ~LXrKGqLCg(-
zr~75jRNmBPb{0Bw@HF#(eVt8`BuT1-_uL9$!3DSg!h#Fv{pD>w%p<#dUiMT~PE}-t
z|CoWIs^GA{(4n}F!Xw=BKJLsy@es{JABkku+aTZ8wq$_I?(RiFTR{`{>YQG?y}ON>
zqGx(`tao>YdTa5Q^)7nb5xw1wBtN~o-J_N5YNi);Xh(ajee;tDvPU89s(Yt*$JE{1
zBlwurc59l#WcMP=PU~PTI>DGmqg{1VUG}yX9rE*tY;WUeYvF8LTdj5x`p*`CT&#I9
za|n>T+TPZTBzt-q#mDXlIdGRlxr-?7*g&J2dXP`MySJyOSBaYp<7QUHgNSjl(haLu
z7A#LyqPRRc#(BL*rJt6R>2C0{<+x6;Xhp@drxKDfJOKwlD?4ygRY}^fs&E+J@~F&m
zza18ypkYsAGi7Ck6V@{y3!C49r;;x~U`E(^pfW4dag&}U4WkVubyEH&P8GL&NQbOS
zY3+HrI>8NrR^V0e*7gx_!0Y<}B9K=Bxj~7~VOxbA+5Nc)qte~Ieq#$L&ppedDsd86
zg@;F+xeE;~>Ws{VchEf}d9&jIt)eo^tK6X+&r{(SB@5;tPPvQ93U{|EkBUs3lOA54
zRe3TV#Qf<he(ZmGl{p4O_hJbILE1g43I`)##^YS0;hB~m>8}0#Z+3U_-s~>q_p0~)
zA-uBEU`aDhpLF2m#db2b-{L&2*gXvol~=wjc3$2r56{|`)Y|^}CW^J~m@+E7qT*pj
zlCWob<wq`gL}rv%g~dg7>{IR}*-9rfMjf!F@X5+@a#cnihQz=f9$8g&_Q?X6!W2^M
zrd?nN2ZX=U4&+^T4ITR_bW>%S6F6=qR+OWp;Yq2Afpu@<tfsqnZM)Gu7H)M0)_)oz
zQT;p_NCeZ{TH9^)%#7;%WHbr9^rPt^datCO?iopKXB*lc&CG1?bkEF?oye)j<4BrQ
zOsv)0Qt!fH_&MSNhkYLDN_A1Ve=037>4zs>19<z>!(I0^+uO6-tI?o+*gVbRF9VK<
z`0Ekd9|C-LC40=%KN;|u{qcz551pNvo$2YGHT_}0|6iBbtXArCe(ah?vnQ|gjCQp>
zGx*S?9|F98Tw>E}KjO-8R67&#d)cb$3`^;r74Gg?ZiVtda|8_n5n1j*EIX_p?oknV
zDAElxJ1_8bzRv^FryLhR(LH(lFg9+y7e=MSP#1B6P<{rG@Q944G|xa!iF))Kr2R2i
zyq&|-S4Ls+@`OPN_Y6Ln4PIVU`xRB?=}}&Jgo(Ky2bNWr*0ZWI>akz9x(hWFH@02o
zr6<Lc`Y0-|bLOgWQaE*pds<vY0M8b8j0x!&?5JxFsPK$BH(o>*u^iuZWmRRR`>WX8
zi_Pc7l_%)eiMbWwxmrO=3x#$EOUG)bH9Ippv*;<jm{Iz;VXUURLeB+FYP3CL(rN46
zyFDYVMw&-CYe%b@!TmDbD`AB0B_{TcG>bx}?(T>zkMhd$U7TR&1s&_@kyhP!6MiXn
zZST(RPWO)&Zl-s7W!n9x7fwg9H-_zhdf|>_x0(I*G|V%@fv-n9QvW5{@xoaj%YKJ?
zX1FsoXuCgC!{=$3kv%iqnHpy12=)2b|Nj1F_iayjVO{!hTUBO7BC>f^MAF0M;RXPS
zDi7EiGKOP@aPHQzO7U{31qCNYe^PaTyUV>GO^Y;LAFpO-5k0Ea>HhG9zl68-A9^g^
zJ*x_(EP#rEeiWW{f|F;Z|1?q2nU!AVRo5>TFxcVY2lc}<vHYahai*2!;bBLBx@Q#p
zK~x^zrlf#{&9l;_XE+UMp6L!pT6CqQ6T+gRBA{?QyeL;FjT~JOf*x%TVj(WJc@)xN
zxO--~Wo3D}`w=-;#1|)dww5CVtI#n$txl`B7AGR_IfYU2-4jiq!uf%+x==`}b4MZw
z&nkB=HJq47lx9ZTD;X-5c6&!pXWHB5-8;QfZ?BpP99(463!m^jF1Yq6lX(|H>SDH&
zw$~sgruVG-n%-%(R-@HY7^`Q_7`Hv$yVl(VyH-ovyNf+!M%&uK;lKPypRg?JV<vig
z2D95}T0O04?RHO(e%|x~wP~cq*S>0+7IZS==m?1EIVPmRI@V2GQU8P@q1S1Mp}KdU
z(Zw<u@g2=_`^u2s{jrYqXQu4tZMv;N#9EE^+1{tSx3MeYXX#$J87K?u)f|mXM+8>5
zdyf|Rf?K&g-K~`jN7@R-e|vfmI`I)UPVSi&yia$pWIZ%ZbhmzP_>fXsqsH`*<y36l
z-Q;I#iyteq4!-{Uy07i+Y4ys0(>fc;KX7+Lk@v2KRkS1S^8xSw2Y2`X!rk^bxxcvk
zpRjxW3w9g0`xkciZ*#`M?)j(hWOwar5>fYZ0WQ&drdMFzqeQ+?Tj`eAl8#Qu=dARL
z^k;E~MM->p;Z~J6oCu441VtsTK{O>yRN?p~yey+K%cC;$?(FE#?Oh_(YHn9*dS(pI
z<G*fg|CUsX8}6@5Z0+lJ(Vvp4e{St_iRrYG9Zj!&rXrTTc76-0)lzu=lzuas?lual
zKYq1ljcKnvhkl9Q_8)EAj&^2w->D*>etKaZZ1+64QWcSjkV`jAa+?mD`)hNrLgGJR
zwyM1B_&rD|N?}OLh^xA;+0;GUE4`xfl(ML-Ct^f+W#65<UIn<|#i=YwrXD?SlCJG}
z)w})7(7IpH!n4}e+5yR<?KQnKEooPcKZy>u=^-yn@3w3Y$2YxCtr@N6_T&(CF<EW*
z?rOTX?R;b~6Vo(sNrFM2>#FG6+uNhvmT7Q^??}&iLKUuN|DW&tC+ch4TC4to&hWu4
zT<pXSqCT3&?y9$~yZ4OF-LtzoE`N8rubx<qcBY@HJFbNpCiZH@h@?ggM=z^imG&G`
z=9xI$%JFDq6(UhY6;TV3%QK_GD?B|cioVs;XJONv4v_RZ9=75_9|6fcBQrkIGa-kt
z#70!WFVN8884l@Z>CZ#~vaLK~I`dkc>482$JSrnREc~no)XsS#RfMN|Wu%waDFNp>
zNDnu6r<XlFGM(1WyD%9Z>6M9}6B@oE;$*h;a6f}*1vZHrhLD~RUr%=T@~Si{j67RU
zrDxSa_{gYZMhe4Q6po2B&NBT}&y4VEk4|^AGWT%z$TJ5fCWXo$-(TIDsSNHfKbW33
zxq#f2hHbTuOF5<ZzDd>`BxoGBpP6CwLYHU48--`&4V5UbPluqv-`(A#s_Z!gG6Md$
zsMs><sII7rs%{Jce1SdT=Hq1X;J-Q@8Gb&aGK#7p%qzm(Q-8i998sY%uYUuP0q0Lf
z+0}9$Ue124D))f4`Ic`G;or`-%H&4pr}<=tQwV=fBQ&LoN-WprkKL}qd*OA?0(Yi^
zczBhEdt^eYRfIWmd%EXQ=AMBn6-Yev5uBR}EzGhaszG*`)4OR=omOv;deoQ!b<K>e
zwO*-PAHUSyYB&|Bj_dPi9qLr8cTKxZ!LoZMLSgCb(e5$p(*Tbisk^7`?21Q>v^3qT
znbv5J*<|NNVaGWg!*9?8fv(W~SsoA^<&MpuGHQ25Ycu<~K<6`Gl2RoNCeUszPD~go
zJBn(12NXZFnC^6cD)eu+=I_Q}K{uUO-Izg}M0YgRap8v$3~fUc!t`_W&eMfw`!!{4
z@2It{S*`txr`q1@q3vnS;G%h75gz4L9_9dQPvUpfc?k>EHp1iBT(5HcR9;5IAodBG
z6uio#s!~g#*b<g(RGF1ztYbA5^Vgt@+r4#Yv=@bEr={Mu)y~kJw%xP+YP{nCzzvIO
zb_XlN*mieocDh^d9)ai%@NJ*%LDRhhGi&pzp&oW57PEltNp#-x+0bf{Q5GOo>=~JG
z(H_{8PJQ#pgy%*pPb+wyYkWan$aI+Og#SyAVD!)6s5aKCe!6{LN%OZ&;z;1HShZKu
zOt+^0IY?k%Mf2MwLA`1}1?&Dl1uOMx&v_v3u>W_x+G_pnl+fu`+8!Hezk2nzZvM*E
zer*!h3q7;5L;o}8+sdk|RG>;LuV}$C>0darI1QMbaMDTvs?O+(G=uM;BD~V7PB#s|
zHGpp;s=O+lLKW_hPK_%69K~6fH9s~uv&!F(=5dx$NqJ^Bjm$mDZ*12?n&*6QKV;{X
z!C{8Y#V%-)-WFq~cHdp19O&)Vl?o&Krg7*fcJ)p#<;ae9AnT6C(P~<#39Y4L9OvR(
z6+Cl+c_`qa%(^wQ-XH2_MoavrBUYnpl!JgA^->|4`jv~*qN`!m>XUwvoVR<Xw}oyw
z)3!U)wERe->vcw(WW@5bc{rqSA?uk(Fdpqnk^}-(JVh?kGlJmrHCkCk#kX{wc#j4S
zIEhL;02~C?Wvjql?U_YV2CG+u=OySUu)cdZ1q}^pQ5ZQeH%4Kgz`)=z2H_d2mU?&E
zjtraLUXaCpZnW0%mXLgN+@@N#z1uD7a;?sOf&RmS7>rt?FJh<Z?9$!{h3*}K*pugQ
zB+Oj?(t@$9wU}v{N-<h~|9;{Dk0U;(cY6(g-VvLpPn|OOz!jZfU^q!D*^vu7lBQd`
zjd|?~aboWI>1KMQ9mzyb))4nKK+lCAn(6K7flS(-o}SfiTeryX=LhV=QK$wh4UEYU
zHq_lcvexu8#iYM>>!jwPY<Jv5N%-<~CZn9VTy%V#?+U+5W=3Q>HW*L*Db7$Tlo_Y2
zL2Ply34cD*(}l4QgoR^c%F4?R9#Q34^hjpaRdVj(=~3auTq%ERpRIo%bh^&bqO=Bt
zr<bRP-Rr9|&bvjm?U_GTSDI~#oZ^{j_wSb?o;5F{XeLRT0P|JLRh3y`b#oZ73}H2l
zPwc{(5N|f!<-4+Q?C6294EteSWx$z4!AL}0zla-NrgP|1HaV((RD_3qz7W%UHL{xv
zHX!U@?sf<c^NVzTAP+x$pl22u{*4^@1seK?F~*>AMQf-YSJ<uJFBF%>S}IM;AkN@_
z|1i1$e8A}r?gP4^wPSx&gMW01_UjTokBoL_{M1T2p}3+vGO!ozEBtm>J=ed?>Fv&p
z*1*%0kF6diOOQ90NYX3K;EcdRY^&b0yk0%I^Qn!fhv$veN<Da~ZMsiM{01gyTI%->
zE$Lz)XmYxH4N_jj+r6O0hl!s+7@Xl?X1mu~yZf%}Oz#$|1GF6BB5C)`x8cK%rMfNa
z$;!^ebQD1tp>sFbS(O$Ql>tQvuaNa-NTy>)3{+t<az&IIw!R2=FGzE*!XxB&U{&SR
ziWy9na>HzX00GL~GcYnlCYAjWLFpb9kyRE18eUa*{#TP?#=+MR{u2z#h|~_-h1vAA
zi${2PMdr>?-MiD<y=p@lMl#&pk$P}w9<R@csnI}ltY*3`gC-+#LXe#5%t5a{`*<HH
zi?kp`RVF7(H-5k$hX<Zo5ELC3o^I|%vWR^706q|QJ0hwg9Jy-xBAVS|?a`?W)4S?v
zRQBE@k3KZiGf*8=d(@Y2j?2~C1I%b?7u9^!nl%K$ovzH#)7EZomm<m&D#0_{%Q4K5
zVmZHh|M|gW=PIXXQF*6VlzZH)4hMDOudX`(a8!9<Ey3?l7_4{4X0epQE&Zdh_mBJO
zH5hBRMN=*P#ZX~?y-)kbx%_($nEi}%A&>Mo&ZYlx7;l_Q?`Ye0r*~I>`inWt?w()g
z6Ya&To$1lqFQv3S5CzkHjoW`nrT0~y<%T!i%da~o&o>8!iy63ZnR)tUY?H+3kbiqv
z|6yV6TTUmX+fT0UFH_Hc(fi+0`gO}$Wwl0gF!@|3q{|t)Qg#u@R*MN_?YlhPAI&!o
zEmq|xOlM(!clXMp<&i@3#Et9U^SZG`c#5260a}LLX!*NXD~*U(ApaN5mKgRCJq83h
zrFa?N@`veJ6u^HnJ=U7hX!wC1jsDnyAHRZ);amwc?NF@zWqCf(b4X`ry8j>@duHIf
zsWWpt&+0GI`EwxO(8&IvPNWxu7A3vwAZfQ}E*fg5Z8bfkE9?gTQ0VQAB^_!W%+lJ{
zwlzCS$31iYu#=-DBn~ofHzV(M3?l9-v2E#WNz{0hnTJLp-C9~(`ZRkm32;h1!qkM2
zd#sd)du4<Ns*y)ExUZ>$rD<u81(C><Eooco5rV+BwsFBqCmL{Xb&HjmsH^FfrpIWN
zLR{GA?@`mqg;8H(u88gyJiV&*L)Z3ht34R|cxA0ls^;63^*qj68majMa`<U2x6AI%
zcJG?HS1mE_WH{!}z;rbAoHc1%t)6a~v@^43mXlTu_q5%3T1ms0vWD#=8?<%ob6Rx%
znI1h*g({cgmJQ7MQ!y5Q0PKSvk+%3^&M1g9;BH6(pH;(&VP0`2$$EV~nG_UN<!O=p
zR8}!7+dVUH&PUSlolY-2a}BfHjgIEPKpI8)4*`m;zbYbeHP+2oar4Rw|JrpB`kjiq
zg2-JJ<&0{K%8UrNpx!Kx@}M)UPzdt`caJD0MMkBAfGxfzuB&CEE+s@&L|o||MGr!F
zl~=i?mvhOyBFf_`FkQYvV?ruC17r7C1K-HAm@mMYPy8<jhH@}b=^lnl?&16Ay1=cA
zzbo9!nbBBq2yR$zitf3JD8z7j*rMWYRs>ET2zW!I0!st<-LW)yl{?tZBl(WwNy9;1
zmEq;s3*d!<9w5kWFPs}pQz(n0VBI~CY*5y*UROoX<A%KEuq*}_e;dV_H{gL{AO55>
zfBhpF<>6`Pm8i<V@#`7k<?ddHa8cI}jp`ri;bAN~KZBG*uyFJz{4>-7wF!f;WmHw>
zxqeyvT=j5gIvxfBc6YizOUNUZ!|T^6?sW#s?#`(2-_8N8z2rFR?bXa~Yc-cxA83V_
z9Z>7^&}%fK-Co4*?d`?nI2t?+)1O<vyCcFXoKo4{BkL8~?tX*Et1>e(J)8-AnrX@O
zG)Um*Pk<jm>iz)#2dF&LnDvwx<UQ_UWyELciK~n=vMMq?qRJvNv*=o+F{~=jX>)UN
zAQL<>7ez#dMMPqaij1rZ&%g`A6t9e6)<Ae<d~*iwaSwRwBbWgc;RFNEI9H2be*kt3
z%krvBu4e`pKZy_Ffq%&(A~G`4@1=I<aPOa$6x^8}d1T<Z>@y>|p6SM=s%uH`NLnDm
z{dsvZaFb?aMn*(NghkyvoT!M%jP!_)hKYy@-#2z`=hHcDc6J6`I593|WMmRRBe)kH
znRn6|k!hLX<b})#UUU7<8R_@>%4=N6^vKAx@b`kuinytNSDIvGdU{mk9Rc^o(@q2O
zjL6E!h)ixuR5FCjouyQndDKQ4lO2+P9=@}?bDZ1IojXI{P-T>7WV)vnZ<$e%nHe5`
zhovOuu4El&@FXI4yH8B2P+Y|k6&{fuo|&<4tibM8cvVz|d3aR><I)pCC4#qeuW<LM
z%3Hw5VG(H&RS_IaQuV$62k-7tS((A8my`aCmw0BqSH9+Ulzyi{E%W-jJ)$ZtBdQhy
z@B%omz2Ui4cea<iu)96IyJNg+-W}TJo8I1HD%WG*KnoQSkrr&V%A?_<=t;@r|1+L3
zt0L|%JS~DgI~F{5_?FZ$UFq%>SzZw=gh*q@V$RD*n$NSs1DmBkKVVf=dRC-IhCQr^
z+b`1Zx&sX3pqaa~lDOkWH&mr3Lk03wDzA4&;mP2-sEW*rstR*pfrn?|Z%^=Ol9tPh
zfwqNa5|LSDq-1A!gL^<DpU)L*J;H91nzPc~D$l-imIB6(`CEy!4{?Ox&q^<IFOLUP
z6F`+!fpwtVJ;UqV*zBXqaJz7G8=}%Zq2@fCJ}YXJfT*Ln%d(0zQtr?wCq3i%ri-*P
zBWV=Ksw%gt@~EVRHIom{%JQ2yOO|)mLY|+=(7P)=9X{F%IPP(b4M5?3isiz6PRF~-
zNky@*<1%)579$tR%QL*n-i?A{|LMk!xAZ^@+^DLmbT7BWPm<x-lEOWmQ8nL{O+R)&
zUtgKQhC(<6_sl)2k|zCfPxpe%PC%t+S*B;@!{g!gDkwY!*bfeKuo1$ujN+`^ZvaKO
zC(lj_caL}L@wL1}78b<}=R?09{t;;9Px{4Ldsf!+U{}@Ibc&@}emZA)WrEftJ?qT`
z&#-X!C|@mn%xKlLjP&BKTulpUVI*wrrai;b$${P7HzxLVH|cBDQfFjkRZ@IMMKZ90
zpuy5|s>I|@rsw&Bv+MzQkE%c>udJ%7sJqnpF4NtW@+>R*qKOju?id!_qXN)599cI!
zf<Ygih3geb-`Nh8XP--taOVFNHLr1Z>fN&M{HiLdiVj)#q=q^}UYOruJCaxN|KfzB
zH*Ld{MIPy1%!w=aO2mCGO;kDVzqn?~q$#)jBB^nl<+Qt(dq!5V(tdW;wPRK}fy3P0
ztDkEG^%81kp|~_KVAwRYlGKL3qcL3Iw?lxQzJW>1%3bx|sPAnXH7wLjcWb)`*}Ps$
za8!OP_xkH3`_{A6H0wNd5RU}QAQ1`h(R<mMAWr5>s1U5!$K+IHIN|Y)!Z7`Qb+;O|
zYP#q6@c$Cj=U**SJe!CP)PD=={b**b)=p91z3%%-lI-hO^33apb9ek9Rb{XQ@JOD3
z)hK6B{rRNNQ^AsP&l3dRG(dX6Z-^pn!_R(8ejth`;Z?b3_%M`;@d29Y-es}zP>fTx
zM%`nBQRqc1?Jn)H&1Ao?=2kaW=I(B5J%50@XIa=ieIo>W8oi*=weU*F1_~Fh`KJ4z
z=1%ib7)>Rq87VWe$4&2@-;74P+XtTYx{+y>8(wYdsd`){DX^+;=bn2Blt*yNtnjeF
z5F8Y_{?hV2(E^#XDk^aNm8UxoAuXbg7us?aQ@y;L0s}IjJjy-O%fl_J{DQbUm54i$
zuMT2)_)jw>fY0#aeBhy;fX&OC*|+ZD<<0?lWt!*5;$ru!tSSgyuE;~bUhhXM%(HIr
zNB9vFtYrUiax!Fr4z8$-a;vPY8$93-NM^W~C#IszbcSTV(F)~huza5W1^NSm&O9{U
z?})j(Q*N1uq~ajR8KAD`zuY|mdgX=hA*(FI&#B?X{8dlr&nTzzN#MG3c<$x#W;j3|
zXGNw%>17q)hr?o~r&mGLm|ryTEYHB|pZDWVy;7Cubxy?l;{dOqxQlb(I02GXxV)mO
zvcUIg<#m^kYx4|z?p|4OG;kg~raC%uyxfzd{7iMEVTRm2t8<m-1zh7u3)ao6>IyBd
zlD2#G#HXcqav4~TH~lbMGl*b!TQ~neH0NLymDD?G({-qSg3+q)9lPn>*ZtG<NnO*{
zO~4^--bqlEx)-AyK7$3<tJ1i{Pkn~Ft|*`{Gbjq4zbYY-g97DN(&4cvKTPNK^<INU
zE26T>(~>oD72n$co)ndkR9BKxI)x`sVRpbhmLGq9`d9BnM0llV7W_q(8x?Du9u)w-
z8($jXQ7rt*C|HlG^stD^D{C?$s;<TXa|fk6J!yG&B;73?lRt1e>rw{Y(402%Z}&qk
zlC{)QmY3JT92z+!+Bldn@!Q9tZmq3$mXYs5FY5l|Y5d#Bp}DEOYrNp!^1gQFr!{?$
zsijZdw?Fc}{w41p?wV(0{CV7kA>ks}FQ$XP^1iM&9WCGv#D=Sxb;<PS%Hg+0nZ{-E
zT|2`Xis$A%D`YgliqCgF(|@m>J=erR#k+R>rvaw%gT8C0?FX5qA8Q1x-hVg1NbgZ0
z#>GPmpLc8jw=tsMm9uy0=G9<?YT|ijmS@ph;6ch@h|Pr?phmiTlAQfYN63=nmM+~?
z`A50I0M*M@4hNUjVwiN}<Le&7gMZ!zOc(v()@k+9pm+AsY3W4G>)L|rLMn6cN0cA)
zN^cFCUs`!!x~#)NMUze5ugtrGaB1Q0m2O^6S&H4evXIQ(z3RF|y`V|5s<;n^5M6$a
ztW_BmS9rsGWfh*ns-o?q#>iP3b-yVS+U2<r%qdiN_Zc!^&v=Ht(~wL0<lZutGu^|z
zUR}*uM3vj)%s|7W*Gd$yOH~;j^*B)X>vHlZl7rn~&C2WUKvc3S{VJpKFm$}HO)n_9
zGEb4LqdtC!zVuADszA*I6Y%z4H=h&unodFM>7L~gZt3@&q7fN?F9^*&=>yM^v@3nT
z|E*#PTzhVzl_bA2OONth2Bl4}{ktRf$F<noJl%vTBkxyhdJIu^zE;$KJ;(INzc~1R
zMpw~M=`AUPaTxm?cKz4CD5M~*aU|XSAI~wp(QO<UM#|~w*_G^1ODs<9XV80(aXFfz
zyZbJlr&Y$WyTDBf>Hw^xdU_mfeB5V+RaPDso}d!<IOQQJ3DT)(Dh_y+8~7L#v0tYj
zo)TK}JP#pZPl@mdx2%E~@$~d!3`0>IMX)!ju2{N#!+ySy_QhvUhhc>BM^W`-5i>o?
z3iXeA6fzi${k#cY<w*;UCzeOIh^T}%x|ymh8TyD;+dbEX)C^>mG}bK~n~YYGBz?*i
z7TB{rz8v49wV#naTJ4Ib5d7dG>G~@6cTkRG&qCTixQKyd+TE)IW@y@&;o+Y<HZ6Lf
zK9@tQ)ic+Oe9r}1j*DG3GETmu!Ye$=Z@NxpPtWuX)slEzp9bo~t|3A*>N#k6a{{)z
zM+_8OQL%InZali>xE4J<%k!NU|D`m&tsS=Ky_rnsLu+<B==KNH07W&|l0kfsy^fW0
z=<lDN{HC!3e>rA9b@y%?%pXIQ=9%zzH6!7d?tLB&in`^T&j72|&^0La!Y<9hyMu_d
zdh+}#)<o|yXf(mmOTfwhbR%k7J(3+PJ1=EF$E2j?Us$eqdijQDUeCSdA;)vsoI!bJ
zMvwiSD+^4TGdbg|)qIQNBJNDL<~`nXr=@0vO-sXUh2HI3UYso#b$Rgj&h&0;Opids
zNZqsDtsX>`O0Nn?a)#JbH(6p^&8pH07MBr6bWRDPdxksLtx;ctDdqL(9_%iy<}9|K
z<+G*UVZcJ07~r@19In9V&*Qr1G;MbDkleSsSz9zoNeuaTdxSLKz53=*DGio581q>W
z0O?*Co?a1OtusvzL#wCPW|%jHWmh_D)N+XyhIhr4(DEt+6mHK<Yju@fV_)VdTkm1N
zI@ea)VV{<Iw(295fP!#0Mc-sO(g?&7$;PuH9@B@ntfDG_Ur`=$INmGWJnQMLFph@~
zj|qYmIa{Wa%PNh50QgfY;_&a0_!V`;VkTV>I47;{ejotATD<dsopDw-#9CDFoU-)8
zoaLEF>fhzUcv#7QRfY6sj*OS(m0Vk|dWA)JrB{}tTGgHXU9f}iSHWONyVk7Yk`}Ki
zS{%Zvk~$F7QuJm)j~BFQR8j{rF)OQ#`vUuymAETtxALlrI{CTWy*!+v#~jayKT#>J
zMx%C#V@mnSJc7mzoyl1ZM=haAT_sjmDpJHmmV4SGdjNRvvta9Q(8_(}p&^gRdqSGK
zJ41saDhqcQJpK78ilQz&A}TGtvaW9vF(2aV7EKm}TTyET+Jkvu@q)ecaIZK7in$}Q
zuBc~RxmSc6Pqljgn0JA2L)R69<;V+BkhpHZRn{d-v#K0}NWKlvrbi^qin3%zWZ}#9
zN(O`<k6$N}@qwt1S!os2hF%HR0_SoQ0!9n-hDz9%Axt_;A!kS(j~yl5zlt1UBkyKd
z-A^4`0I8B*Rps;v;mG;N9kC(=Ve9lPPmd~WS>-IXtBBL<C~-GGThqIsm5+|3fX;%7
zxmRHRFuD-Wv2>pNGxxi*%<<S`wy8i(s6q-uz98Zkr;t~~7E7N!8C4cup63KWHLXlP
z3Ap^?bzY?tQJLl87G7DD`r+rgB%GZ6313dq3*b>%dGquy@^ZRa;m-k7WZsLJnT2IL
z&0!H>9q56FF3+rjr3i$jy2jd!uyaf&J0#C;kD^O{fNb`}rj}k+7M@YC)8T$;C{O7k
zaCkUzB0LIjj&Y(4BC3cxT39=0eG>}YE8~vVvQCEM_G0nJ9C`dn5>+B@1fP4@=gyC+
zd_}WYp!m5{Y&s1Gr}Jc3Wf7HG&&mCCPv?7gH1$e+i0PS0Z$bseMOtsGD&j&!f;v3W
zDEWwTtB5M3h=)TwPK?b6uga(YLg1CByIVXfX+&KNi+Cbxp*coHWqKTCfc$d8S;a+t
z$8PDxp|Bte!-+>_ctGP}(C3a443dphm0n3(IM*>VpD}|#0%?E=hL3to$EV^(MO84m
z@ie`Q-|Q;Co0oM4(jc={glCwS-_u&1K*7z$8d}^42-gf;>fLRpsi?2<_(Ya~wGOX>
zWXU+andI*76_=52FSv8Du9@GxPJ-q{X<)f{SLx+`1TVBVcaoYWKwIINnFdYz8tQ|T
za`WmlGlOj6w1l{qmuK0RJqaN%0Qs92kl;m5KOEiPF2Lbs_#|DgIxVq^6jK1C%yN&i
z#D|Q+K`Z*JJ0BJK_sPh+t6l4x#{NS=HZ9aA62bAIgH9i{$5Y{cTd4Q%<0EM0-v4Oj
zzIlK&a}R?8hvIFw_lZYvJcG2LweId29RYIUEuAJ$KbzN0y!+T$`|ak|v7twXZeLOT
zONKUO{@CAkZtN~v{WlxBxWfhmPIq@dPXIU456(q8ofhup0UpOqXkKRoAqs>S-t{*N
ztw3QFSyhC!^t62S1;_v>l7((k{<1f)@L*9v%Ok(!<tC&fNLZ?tbE6i)EX=Wac-{KG
zed3f!Q8-LIsm?O|A_<B?9^sqrf8log!tL<90Xkt39*$^m_%0cMn!&Y#YDPv0k4P_f
zi>NHp#hE9fsxl90q%&0%LuUcZ-0^#cA5ZJ$T#y@3QdJpLiVo==mEmdO6eEO5Kk>=)
z92J!p%sf3P(y}~^!nP9EeAEMSl>iy{tHaT0vZ^XcbT>|;;+-5^xu;*pQ6<2lqP()A
z%)^WC^9uBL)7?Gl;%XtD6>L(a)vGUyvi*8}D!8^uUQ0rt7j(VR4uid_-YI3Kd%-{8
z5{Swujx@{567LkES^#j0YTaqpV{4F7NUW9|R(jm$U|4=Kz-@2BKH$X5&E1)=>V+Wc
z^b)coJuAqy9;Doe@Ct^Tunk_p|0;fGL338cs;KZ{Ki4UH&f@UHMHNns@^rXzccued
zq~EmO@EdO9Rd)-+qbe`<z<GGMSGjrI0&{BW2uW~nD-rW=5`i@Dxk*M-{_4#)5;6F{
zp8_zujieycj1Um^GY4p=)zg2>0auJl($cm)|F8wj8GjjNc$Nyf<VQ<i_}D)j0l2N{
z-=T~oOy7;G^O{+OU#|%TNrEUVZo7q7Rd^IrtE(#gb%KPmhX@;SFeq;k;MuMMibr{r
zdGUA}{|a}h|NeH)m}Wc(DcLYh^gjfkf6V>*>+c|Swr%fgs1{Dt`?T|Gh=Ha3qz$!J
zvOi{*pF4w;gvYpNc4zjPZ+m-X|8(7GyJvbPsxr=OP7H?)yA5tp5%kPaXICCoSrwj@
z=~-0~l+LtYXOv|`c}9?Lf|rx;ydsN!@O&JU!=hS(WSxXneuY7LWmeIvNI3P(dSa#J
z*}$&qtV$|eKjtLdFS4@ry|OaQ<LK24e5L{6=$_P)RQ6d=Tj^DqX%Nz1>F-q)wRgMv
zW<UN2>kWpqZyr$pQPk%{v;DsWbz@pc_srab<4&u7=n>t0wR_UJw%2yF%^Zr}?)kLy
zW{%mZLQIKfSgLw#M+})`e$9Uj|5*(Ne~J}Cw?&mxUe;~?=ZY&&Pyq2GJiO48BaH1`
zm`Hi8|D@Pkd-Py>6<l7}4*<deT}f{(9L8%(bx)W8`ev>CdR19JuTK6!L$^AUsx~u<
z$33tMD93^lJ^`T2H~{&=mqdh@o5Mz4P(;M=$n*a^uL|`U@GdGXyo&5!&b4%BXk7WX
ztQq}Q>E)5>o?#Dtrx#=xHGII!yjnY=oSverstEI{C~Pw~U-+~*kIFNRCOzbl7rUzr
z9tbkUZ!cm5XWB7^G`KySOJw)K)Z6&8@1ocBzE?n_JQr$uSb0)J&<h1jx)yAffmdbF
z4ClwWnrCK3kj8-RP$tJuzxgCpUQri?i?(h5EJjh4$aGQZ@paclco2NO3UVAM=HcOy
z%zilUQe{Rwwk|w*hlon^h^VBu{fLz~rk~;rw_QeHxUH<rG>?nq#K8<t&*V>c&#25p
z^qCAyiSRH#5smf%Kj$SC0rw?YSRNmg4LeBZCF%Nx)GcYmd<9AB^9?W-N!x4FORveB
z4%BM(NJCNHQqN8^|8}mUXH5O906GhY7{w#iJFvWva0N_M8RT|?SY93U5tfB(y`22&
zmqyK##!%02FV-rm5)m}2Dj8_tUPK{x^TNEC;ZU@9kA6hCGl_&_`q=Jm+r@Lfi{+&6
zS$Fg-9!Tm@FP;nSv>J!Qn~^9<!=vGDuuPA7r+bI#-?+}&`qCT^!5cpPpmg`nF1Kx`
zr-$*4TDuf@W?Jk7Hx_I6p2@^e!<*678re?2qn+tx*w)N(I>Ur3o@Cg&E3H;N#uNT#
zhPAia-rfwr$ql;BD0fefdz55`>Bjc~M|*VsX}XkV7~Hg%!I7h6csbO{^rBR8PZT3h
z?le#giKephp7B$Vji4`%FFY%=JoEg$mkr1ScD#5*UbE8lH=Iv@A05z*1!#9xwyQr+
zL(`u+2#d_!>mSSc0M@SqY%vwgvU_L$T^Z>nQ>w>)W(aEkv(fJ`_~L3>=8W;lBkk^J
z0O3Cv{H$r;@R`wGtBqZ!R!Ul)F7bwsZ$D4a)rBn}+)UeS_wJTwR(-Yo&6x6IchVu&
z64oO<t!{GLu~&6eNL<ZZgyMv|_AB4a0cxnIyo!3BWPNYwRLa;O(w<lZ(u#Nv>U1U$
zfWc6zG7}=3p6>*+MIl{K^;4v?>?=JSW-D&SQYHFy2Gt=X-gyS1(knAq^5Ip*Bd7ui
ztS}H|QrU*1IeLOU!n6FzF!Ta5{w8o_egqjkD+rcPK}xTPvH;?s1_T1h0QX1thym(^
zGYqP`O-q>|X~=b=E0_}X_~Yr`E{}@LxaO=RR!}D%x_$uH9ivQC6=T3F!_zL@K)m@Q
zC}|z4szT!^IJD!|-0DE^F*xogmZOKG)L$obxd)1{xf7Z|(M}k={OA$oCp%{a!cA1V
zTTvVzBSF^8;0-IoeZ_yXjAmSoXwU!Ge`u*0=+2pe9R-QptHP}^oJMq~!90$!jkq60
z0*~^#IZd8!j^ueQ@O~b*tfNRW3&7!iPMWBQu*wq(anaLn9CsDHyqJsQtY63RVUU^-
z>v8KBVySPm0qcw=U@Wb610r{&Rcrc2bG5Yl9N*2vT1jg4Xw)`mL4}*ah}*lkR1rO>
zV22KwT}>O%4HGec5PxaR8{O1JCb*uL+;nZomq)$4qHeJjs@hQ{xD_g@ye!Xr;l~r_
z&6&#b@+2_gFi1j4rF(r3AULW5*IL3AyL)|O98PYJ%J4$Sy`w#v>AxR{^+)OIU3&sk
zpV0NAxb+)ate0nhO#cQ)@h_ok5Zz|>u@$Y|^F{8$#Ep7B`LBPau8-xqf5(lx(`)J<
zsZ0IR@P9~M+QwN<>zFnD=fD4B=hC0Y9;rI|`Fc;&u2`>#z-8Q;*3#0h-o~ce>SJ4_
zY01<WLnSpmW70@BLAKRuIRs|6dRL-A;U^!2fx?{ThX)TmgtJz2kDav}We}D0p)lQ3
z+xs5XInpw#v^CwWk;Wu7y@mhttG@?IF|v7jddB{7wA$73XtD<jd3FKaaI?&ST^p{?
z|LCUM-)=h1pFzWIL>c|kvjmGDdUjeX^-f=*Fq*a2*NeETZSl7A-_JjO?R38bAf}Hp
z{JBv5{r>Z}Ph+tE7}%_j)&FNxBK<(zbX!<!{q0Jef6u-i?Xti)d?Rq&Q!3t=<i~BZ
zav4nX9?CU6ZGRg&Av*un&<V#)8L%^wrtN>sYrf-v6&EEuKZQxzR=cZ~w9G%2a3T+_
zRJgBoZ6%|gp58J3PBVRN6ZCEO^xJZWzNpJ+*PuuA^=tIvv|b%=F;_@35@?u48E)>O
zmZoXsntn$0OIMF{z3V<a%*cjDf|0s0Z_~=rLm25j8R5-=pV7$r>ZCbWd+TiIbLPk9
znbS8!W>=y|bcr8L<1u+w%<rI->(xqoH)ME{JnMYO_x%m(ki;yHrr6`TbJ!zRdIYqF
zyDjl_xK>jL?sd!GJ(0$Sd%VYYTuZNpPnLSQ7A?4@)k<SDen^ZcxlubkePQuyr;%oq
zRUVF6^xt3G_e{I_F44ax+^>w?H=pjKf!<=u_zayGBgXffmSk*r@;B8qfo{}uvkP9|
zw03$&L$~>bBz21<)5EuSFL(jXKU!&;rk$JVqSqAC>e03aYz=iF^%dhSnfhjK?@LY0
zDkK8XZg71}+9d~%@#fvQg&ID9Y^N5F$JrKSB8^9q4P8M{iX7S1Rq7=p{x;<>RcKAS
z>fZMBOr3ah-5VEnMAIRgYkTyK#J`D+*U7AvG@6}WK8(i?(6iLr8tW!>?Bf!2YiqRJ
z{$}AU)~4>gM~y8a&vo0wf?Z?XH@l1oBRb3tNoh11O>2A9-P3dX`+{SOK&g9A19J53
z`nQrax|7GK$KMmnM`JgYo!vtslHLN|-WxX0kV~B1-9|=kwQf+y?oq*geBrg_Tyz-C
zXieH3dVol@+$X)Zrdyc$4OzQueXAKwS^q%k^Mlg+A5tQHvDm==IO7hduZGwEY0ljl
z`wu@FolKuEZdZrVe|mG(b_W6n*}X@#@6#CdgVWI%XM4wfI&`O@@;;nC{XcMew_4Wf
ze!u?fHv$7;;8siP+;}^>c^0VomzuOghT0ZGqb?k3to4$ydc|D)p}0{?V!G6@K1UbT
zY_&Y{rm-c$-bjE=P4mcyX>{1t&hU)f9qsPUbayvg`TM<lG&n~_(h_~QO`~n@)N)iL
z!@J#Y&-I8C>(xjm>IKHdf#|s#(>v3RJEeDqNIYsy+Xuax-M3;9VYoy(IGtJi^i12T
z)dad74*JFs(2~Z}6Mm`zNh8_8-PTIn?iMlj+Wr1y!-JKQ?G4LoXyOAhf^pD}q&MSR
za|oi-m<Ms9VJ4k6xD2Wgfq9&MMPTi7FRN=wz&GRR8F4NA=Mnua0f-HE^5O4#_L%f{
zQ~r2Wi5Zme`|lFo=8FygUBZ9S;W05-bH_%j-hZ_2|5pV+O$Fc2ePBQK1N0{05dNPP
z{9xvl?F$VY>-VdEuORjT$dmBOEGsWaIuy+C@Mk~@Pp|8}VYp8@4z#ed5S*0{M(+#&
z?(Y7&EoUX3Afo9p?MgedbEA6HhbE@aP~6?Uw|W;mC8JGN>ISsH`7Stax6k0EMba4c
zXwa)9nm=39Gv$63#)N=WZ#Q<M>FI4X56td{jOnXL=#8C+Tzgu3|EBG0Bu3?09&<x3
zx#!%xNm(OM8PKlVTD0j>x%7Up`K#s{U8h@;mj2;`6)VvA3BuEdo~fHjA;fZRciY1!
z?{OywGOhq_dWCORYd19fdoJ+qF5UB5Ff^4R4d~#S)g{wzTd^HTH#4Bsc^u8EXQf3k
zJi1A;%On~e3EQLBygkCQD9yBZmX4aHd7FbRoMO*RkBFc5nbRZnbnhHIpB@v{(DqOq
z>|IZZ5|c9!`{6Epn|6Pqa|<$N$*ioXL&B6=tKHGs<E@60TPOEVbGEPrONFtTZSC&Z
zj?}#%%C9GTy03mX%-*f;o<?ZivEJ2c$O;sUuM&j)TlKacL(RQi8>$uD1=|8Df1J=R
z`(mhsxo>bo>fxHqYiCDuRcrgoIzf_<@T})<QH#sWij}%sy)(>}0ax~tfn?M&!`4K~
zRIirqNQw{jw73B<LPp4gM0{ktRzt<OnieJShzq;BE!);FI^z-p>)<smKBx(w+iK~a
zw*7*GNal^;t^<bB!y_D&+D6}bUSQZcV00haE2&$2HUZZz%q_q5+~E=+KwTFQ&J3_S
zW8G?S*PYx9Q%!ZgP_7Fx=Dnri0pxWcYS^heriFjLks}KVvfHxKsK2QJm%0vq(D%=}
zVLuqR@M_t+CwC2~t)>NOd3B$5$0YUqqCzoWLX-`6L_F^30@QYou~{XtK}fO3;Azi)
zZ~>Pfx;-{~PTszMrLRWa$FJ&;ZtsqkX&7xgt=`!Mm{N{z<Lrg{J2va8vfb&n#$ux0
zoj%9sLZmh|I>~qYfL`xvZQ!4NzZPbxSAsv*?W<oN-X84INIyRHo)J&eo9U}9zmb4D
zBYQ;rGo{WCaSP&}X|~Gzgf<yb;u{Kh$4c-A{ldim<&f={M4lcU7q5SC@zR_KKCSKT
zX`7P<c4l{a)YEf9dt<lX<4~}kG>MMAy4`Gn?I#)R=!%tTZC{N$Gc)~a3=Lkip6Rm@
zjfOEJP+Ui9^|THRQJ$l+h-orCt)Y3K)nGDcSV`LkyFo?VLLeZhvOLgYUwD#Q;t`Pt
zhhCmM{IZl=8ukf^v%A$T+m|o2tv;F@&TKANUqqZHmQ4%z2<=EXng$^B4!L2qdXbg5
zHf<EQ9NP4gd$fYAdP>*un&B^P#UuRsi@BgUt)%a>1j%u0rQ4{vmvXaPr%6oj070ac
zIC@CtQIC<(gy#@;TWHqX=zII^r2|=7ds}IwMcsLd+sQ}2Qqj*wH|_28{@Ljq_58Qu
zc3aSHr(b!=v9-iDpU1=gY;sL6rO|%lD<OgZTPd1<2yXT-rD)&w?jBu+q`ZLhU{IY&
zxClm%QPxnOG<m-@t<g^32z>SOz%Oao9rLl!3?qAMPo#BL`e@gVdeKbpV~>tVo|hqj
zoj<ga#!iZA7;ym2C4w1t81f)>*Q$49(jE<uFn!h7_MUVz;zCh(t+c&2e5^GuNowar
znA_DCPnJhNBMxDlyh3gT<UFYLso!Ate(`T*t<}ZXnK|66!3MP&DA7x>dK8@j(c${Y
z4OFA7Qnn*2cjoGlv6lMi#a-%h-a)^AuKG%X8SP4^-ORl~&-H4l_gQRrw~6|5OQu%_
zNa_|lXD>uU^?&uy0cqY>I_k0y{Ot;|m1ACMZ=RjRT~d#>O`4}Z@7xmEht>C>j)=?J
z7CNH!?iprVD`|$vuj5l^zPjUX|7fNSBhPY;bTRMU8;XY!cUjX!$Tf`)qqd}z0$B`V
zr@srZoaOGQ4c)&5ZGT54X}X&pn!8wh#@-6MVD}`z)*Z&K-gSFa0<lA=gF7N0?@~_;
zpF%*I<NLooz0w+od+rZ$#fJ3KyVHVBP+v7UGg8~$4VG3jg79y^0_bNc{aXm{(~@lZ
zZtI=&i+gWZ99rowCuxKwM1K?1GqC(4LFoejt~A}U*(Q<f&kOYL1hs>j(c9!F`|kt=
z4h16o;L!eXsM`L^%s|EZQq+~-&s2d0%FZnOCP6ZLml}<9KP|P?Si-wC&DHKjExZLb
zdTX1sBw>Ub?rN{7pN~Up>BL^j#qLv2K4$FxM#h5H10a&Lce2w!HWC!XFG0?<T#xOa
za#f?f__g;>Y?JOqn=mYfeEc^lbA@I%eVc>`K3tTMac?xN{e6@v#B%Q`LXa=}B8z?b
zyO+0UrbkOs&pt@DByqOnj<x!t0DAS2oMdpy@KYe?$iUVbb`iw!?+fz?hbVP_m2DIH
zP2JnLAVxhxD%MVO!F&1>_w+mT;!_#-SSg6d{zS$>WTbdGX4sI5_u|#BkRaga6A^S^
zQQZWC5!NQu41FR3{La%5e$_>-Jq_U=WB*SLVW#P~+&jueL$L1wu=nTB_1h7lh$w!d
z^t5){`sD}p0Qv~iIt1C8qsLhvy&8>4r{q5#YWD*9-SUN&+H)+ZHIhlqS|+$JyJT7#
z>b$-^tG&#jm5eG>98;5zMtx6>CVoFAw)wl3?Jf;D_g7#~*b-#UrF&gBNLMYHrgvKc
z<W5Tx=Rn!IJKCMm!kA8X>vW9$Df33#-N0xyhub=?g-EX5mfb=G^-+v)Ud_5vcVA1<
zP-~84V8#`0C*b+M`M!HJ6K2hq343j&o*6EPD5*v}8bRT`sMTK->up*8=sK-FivEQ!
zlB|}cMw;yA;a4}j_EBt2Xl?fCbpP;79Qkw`X<{^cLc5?Gv|Lz?G~zs_`#`DPg<g?E
z#oFA~43>;b7VqwjSle#{d~kxRt0x6?LwIQJJclr(FJBOE)vMud_b;D*QnY#`o15Z8
z>>bXT%2+_}cVyjnInkfrg?bCJsc2XHK=(VZ_ikei6dWyEoG{WoQn&g%OCt5pU6i$H
zN!SM@ki>Gk35bN&QST2_+_l}+in>!nLJ<dl<m%mq@1Hdq<K6>Xdy&#cKyRps!w>JW
zwD8c}n>9&H(tu6jmfreU_3~t#StDWZMW1c<1TeJ$%qz8eNtV(|vhBO@n%))~-Kv*p
zv={hSqnSQvxNF_g9!BQ$b}sVkc$1Y@dm7q(a!b<89Q15SWatan!cRkfUD3_hhDy(s
z?%|+!-}O;rJKgE05bn-07y!kd!={B}`QtoXmnVCAw7n}sg+$ccmUaQNEtI>NA)4SW
z#NlG_YSYVm&frmBfhb0;vo&o`?@rHX+TPxu-tC@a%>*&My}jG5xy;&!O2-C>)J?s;
zOV}0gcb97==5k*QY~y4!dZlL1Oixd14><02cQ1w_u;|(x{_mk16=<;<*cF5a%Bel~
z-tG<WW)X48SrV^!+ac&RdA)nIvMY$RIJAaPH@(x_4R!p+&yd12TKlCHXIS)0wYZ1h
zhWe$YnZen-#?l@=-H;4|XQ#KX?0_~R3GT>tR!B@YT%&iib4%vRu!SPuTNb@`r^F%l
z47sseI+IH8bgvLV?=Gyhc6L|O)A!CTh=<W?(e!jd0-01AL%UkC;q*H*_T#e&y!5_D
z-&^msX6)*GS$Bzd2U(#(EW0{2<*v3ya81kMzr;7wJ&Qd8*>ifO-LXT*&y#azuU5a6
zIO^$D@84q9jxpGg^g+m(`+oz60Gxy$98Iq+5osE%N0GaSDCRERc8}N+qg}13cXy}z
zEQ`I*MJa4Yq;)|fK;!LL?_L{v?-GUf=oUnx%famJ(@ad7#x2{!4LRnar-fQ5P2-BY
z5?^C?+oUC^G<?GJKqs#>bjt6{j(SJkZDQ>YdM%id`en52xS8g86XciOHs%!d)u+P?
z_on(!HzAYDN}V(_wkuK@?>AJDht&Gca*pCc-rcs9rZqD|m;u0U16D4D0Dk+9VMaF4
z<+y&}$yeLEGq)=T#6fAgJJO7e1~%eQ4-rau4~gnK`Uyg#rmh0@pkHcc_`6r<k8oM6
zL;%&y7%2tOfhDS*VfSonb&zm-7migkV>4P2?1XsuIf$oU)jG#tsPC58+<Dx^?1jsu
zYTXaLO><uXh9)Q=w&C>jes}8ba$hFC)VsUA)&wQ(>k>JU4o-{4Z-3Jl-MzKiHV*25
z-5}S(?`%u=OS&SNR5CVqL!l8U?Rx~R0O&mYc*wprvWMZf!K?@8fr+CNi?q@s@-*Gn
zClt)9)>hJt5N!6)Q@&ozBRTDHAFXGvJ_ZKrV|P9y=LP=WUTgLKadQ6C<b8GBf0(=t
zLn)ugbsG)=pT$ye{#ZD*BiZ($hJW%eeNCA9Zwu$oQ)gaEC3^AoeNP8<WqB~N(Xz^)
zLGz~5rdKgS#hqCN84v@lZT0lXD3LHr5f=NZaJbmxM@Bn3A!XYB534*&22$<-03VA8
c1ONa4009360763o02=@U00000000000EPJ3a{vGU

literal 0
HcmV?d00001

-- 
GitLab