From 5d29a7ae0f3a4366cfcf90ba16ba77929c756ac0 Mon Sep 17 00:00:00 2001 From: Oluwatobi Date: Fri, 20 Feb 2026 19:06:08 +0000 Subject: [PATCH 1/3] adding article on github branching --- _pkgdown.yml | 1 + vignettes/data_table.Rmd | 4 +- vignettes/github_branches.Rmd | 67 +++++++++++++++++++++++++++++++ vignettes/package_development.Rmd | 4 +- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 vignettes/github_branches.Rmd diff --git a/_pkgdown.yml b/_pkgdown.yml index ae578ee54..169276c39 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -8,6 +8,7 @@ articles: contents: - project_structure - using_github + - github_branches - package_development - data_table diff --git a/vignettes/data_table.Rmd b/vignettes/data_table.Rmd index 092758d97..bacd2dcdf 100644 --- a/vignettes/data_table.Rmd +++ b/vignettes/data_table.Rmd @@ -1,8 +1,8 @@ --- -title: "04 Improve efficiency with `data.table`" +title: "05 Improve efficiency with `data.table`" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{04 Improve efficiency with `data.table`} + %\VignetteIndexEntry{05 Improve efficiency with `data.table`} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/github_branches.Rmd b/vignettes/github_branches.Rmd new file mode 100644 index 000000000..108d400fa --- /dev/null +++ b/vignettes/github_branches.Rmd @@ -0,0 +1,67 @@ +--- +title: "03 Github Branches" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{03 Github Branches} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +## Overview +This article provides a description of the Git branching workflow used to maintain the `createslf` package in line with NSS BI BYOC infrastructure. It explains how branches are structured, how code moves from one environment to another, and what protection rules apply. It is intended for all PHS analysts contributing to this project and serves as a reference for day‑to‑day Git usage. + +## Acronyms Reference +* BI – Business Intelligence (NSS) +* BYOC – Bring Your Own Code +* PR – Pull Request +* SLF – Source Linkage Files +* UAT – User Acceptance Testing + +## Branching Structure +The project uses a three‑tier protected branching model: + +`master` → `main-byoc` → `UAT` → `development` + +### Visual Workflow: + +```{r, echo=FALSE, out.width="85%"} +knitr::include_graphics("images/git_flow.png") +``` + +### Branching Workflow: +**master (production)** – Represents the code currently deployed in production +* Must be protected: No direct pushes and PRs must be approved by 1 SLF team member + 1 NSS BI member. +* Ensures: A stable, production environment and that all production code has been peer‑reviewed. + +**main-byoc (infrastructure integration)** – Acts as the integration layer between SLF R code and NSS BI BYOC-specific configurations +* Holds the BYOC artefacts including the wrapper and utility scripts. +* Owned primarily by NSS BI. + +**UAT (User Acceptance Testing)** – Used for end‑user testing after changes are validated in development +* PRs must be reviewed by one PHS member and one NSS BI member. +* Code here is deployed into the UAT environment. +* When UAT is successful, code moves to main-byoc → then to master. + +**development** – Represents the current state of code under active development +* PRs must be reviewed by one PHS member. +* All feature branches must be created from this branch. + +**Feature branches (working branches)** – Created when working on issues +* Always created from development +* After testing locally, raise a PR → merge into development + +### Workflow Summary +| Branch | Purpose | Approval Required | +|----------------------|--------------------------|-----------------------| +| `master` | Production Code | PHS + NSS BI | +| `main-byoc` | BYOC Integration | PHS + NSS BI | +| `UAT` | User Testing | PHS + NSS BI | +| `development` | Integration of Features | PHS | +| `feature` | Individual Work | N/A (Local Testing) | diff --git a/vignettes/package_development.Rmd b/vignettes/package_development.Rmd index 594f57561..e2520254a 100644 --- a/vignettes/package_development.Rmd +++ b/vignettes/package_development.Rmd @@ -1,8 +1,8 @@ --- -title: "03 Package Development" +title: "04 Package Development" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{03 Package Development} + %\VignetteIndexEntry{04 Package Development} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- From 03091af3b34b394f0485c7429f83772866976ffe Mon Sep 17 00:00:00 2001 From: Oluwatobi Date: Mon, 23 Feb 2026 10:47:40 +0000 Subject: [PATCH 2/3] add image to the git branching article --- vignettes/github_branches.Rmd | 12 ++++++------ vignettes/images/git_flow.png | Bin 0 -> 45333 bytes 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 vignettes/images/git_flow.png diff --git a/vignettes/github_branches.Rmd b/vignettes/github_branches.Rmd index 108d400fa..e8fd88df8 100644 --- a/vignettes/github_branches.Rmd +++ b/vignettes/github_branches.Rmd @@ -29,12 +29,6 @@ The project uses a three‑tier protected branching model: `master` → `main-byoc` → `UAT` → `development` -### Visual Workflow: - -```{r, echo=FALSE, out.width="85%"} -knitr::include_graphics("images/git_flow.png") -``` - ### Branching Workflow: **master (production)** – Represents the code currently deployed in production * Must be protected: No direct pushes and PRs must be approved by 1 SLF team member + 1 NSS BI member. @@ -57,6 +51,12 @@ knitr::include_graphics("images/git_flow.png") * Always created from development * After testing locally, raise a PR → merge into development +### Merge Visual Workflow: + +```{r, echo=FALSE, out.width="85%"} +knitr::include_graphics("images/git_flow.png") +``` + ### Workflow Summary | Branch | Purpose | Approval Required | |----------------------|--------------------------|-----------------------| diff --git a/vignettes/images/git_flow.png b/vignettes/images/git_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d6428c0c853c9697a17782c70f0908d4b4f2416a GIT binary patch literal 45333 zcmeFYg;!Kz*FFr=(j^_zl0!F$fPj=B(%s#i($dlm(xTEZbUAbiBaAR~cX$4d&!^At zd;f#)TkD;*ShEgu&VBCK``XvO?tMqSRguGfO8yi90RdY8vjBh3KX(_X?qMjB*>eK(>-nmO?@BYoaJ@g5D;)6fBq2roxYeOAXI-< zkde~xHr$){%F(wdcsw3|@y^rJQ*b6}fvq@F1a5u1M>G%VP)?zG>W z7HV;^(#gL=E*6v$31)c7x^3}J0Dh|?zIoX%%-hPVKpU)3+j`w$L|K}{Yc({Md^&O| z)@yBN?Tr85&kI`KN1Xp&C0@SiF8cWILzELD_urph2%#j<{rjjpKc$wH`THqeA`*-K z_l$h^3vZ%-4<&}YJ7W3w3>`|@lG?v#WS*-0?~7z){&(vBV-Wvq41cEKe~sb)qsH)B zPdYR^sBEBhxuw~N5d!K4-R+`AEE|}THdXE#^bahg&)~FqaH67eHgQ&7A~!ueSrV#j zTmU&!9ZJAFx)!}GTj$bKAIaM{iT@&F;t%yBmcs!M7KlR$+68KVU0Z5l!G#U!>K;Lj zDYf~jw<6Z>;X(-;r)YmW>7lO=8*Fv&_K+`Ycc@)1OZN_W_2yqgp@mDwEa^55);iB3 zEKD+(N^MLtm^e|v`zWzaWd*#l4t`nFP15Y^c#19VCHkfc%zk8w&FXNg_#1kjR@A%aa4XMFNShywHee54|4 z<`8%!Y@{Sa;a?~6h{UKFm4;8AL3^s%LF`z=J>Uzf9}Rs}U;)P83pwU;ib=B&LU zc0}5SXD<$R1GzRO=m|h%L=9g~LI=K@W=p9Z-Yk6?{ep=28W$a8Ym8?nsbk8z|58L& zB(+bW%!Lw-ITsan+?rt3;%(KE67x6QP#O@4UGPTOn9c}9*qF>b!(j^k+^z-N1UEru zXN9sU2<@E|YTJbe!Ays)er`z{+9HSea%K1yf#{iyN|jjLH9Q%e!Y}&6>uFwFh74-3 z!bQ}Bi~qIF0kmz>{Jbd6P6zo!7j$5&TvIAA*3u&6WRZ?6s+%MXAMD1|Monf5rF=)c zk|9;Fcm5(2BJ-rVz?41j2c0r7PZ3FmPiClIvqt_6iHQ#~-DWhVvjScdOWS(N^t_;nvuav$DO>*J&t1 zj@}tFkZ2)C?F`>5ATBXZip6KSn8cM@M$tMeh4QQjZmqjv`aoyU1CZqCcpqZ z%jW(Ip89`~M@GgM2_+#i$|mb~0bV>Y?Ovn(+(gn^LF25qxq)cHcRS|&E!F3@f}X~o zaFya+$JSUjl{g1cV{5!a+{IK_6MF_!$JPgk?Q|un2(xinA>fq9GQXtP;FS>;Toc`p2Il z^F#WjyZDr!EQ2&bDcAuAM$kS3C$RHnblTmh>_W23x)f)oPM-y@Vy1`?)=Mq1D2jyS z*#2&WA~_QKhLC^r50UCNL(~DsQQ;7x`&LlErWmjGlU^U_PP|gi?z2ykKJ1ymmk{_C zJI=w<4{FP-fgY1aY0vFO%+q^oJp8vWNg@4Dszar!rNbZ#SUsvvJ4=F9e6HhPr|*eF5xjwk(@RfGvnpnTK|GRL)d_-a$Xu!fDLuQUC4!w)Q z7ddU#t}Ak{v!f}w^9?|sxY${&`rdX@c=|EdRB|doy0*A6;-36l_!kT)35OvjS=t4l zWjd~b=KXWaz$166-CaVUfiv>-5%yKlGA)su2u^2OE;V;mpo5)$~ElOQmsV(T-P3>Ef)#9nLu#j z@$~5Y`|d<9)$Ub9^e{*m9X`Ut?zL~n%|PCrvdm4fFeK(`YUMdQC2>IouT)DNp`f$3}?SD^Hb#A7o zC>o`W1$VkfXZi4N{XwKcK-03+WF4abOBkmI#?2-Bc!Xux}T)d+7$oeU)~}NdP?mFg5c9hWmk!}L;@x@V#ML9(R?&M#a@0; zSj-nfjFt4JxtNN}-Q6JkUxIUT!Pi&Bg@;2JEz{&Di6( zj;ok`b++iazG&cVBw3Qg%PixwNCV!e+9B37k_=9?KoS(b!b$i&6Sby7=u4tKd zyxS}76W|rg8x*wl5WyP}rsFv(G#M}bPMNTD*%;20Hs$t%4EyGvkNLfekptZQRU*1x zR+9fk$Ncp-%&(R7z0p~}1Jidl%patm9z@R|U2WLB$6{+Z)l#4VS-kxiB;Js8@-emZ z>yqZLo~D}xgE0G;tq%lAHu7Z#IrT9yh%D~^EFs|C5&G|C5Q0%qeMA~y03K2mU!r(V z)3YyH?`|b`PH51WKv zrb_*nIu0zv-*8j&nu!Kp7mx>Dn@T_Igbc**vDXNK<3ms*7QUG@2-mA-WHt82{ppl^@fi?m!RdeFYJ=g*n6 zBDUTL&z;#4!Xz~y@7>T`=cCq@zM!iU9o1fp6+@!uT^`Pl#qZqQ;&95Ii+>^e+#NDNX0@5c^<5%I8tid>{9$ zbbxeIRaFOe|5Z8kyZ)D8Z&uU7zyQ!S&s|%UNYC>Pl zHF=}w>%GnE{1y<6j3v=ookIs-;$qX&R-fNkb$k1;k>jP5azYo=S>b3g zGe)ZTwe@OtF!k=_?zvLs(;A>Hhbq7M2s4HB@S^Ce88p;Q|9FH=YQpu9@)CCVOz%9K z?(g|D)3GDEK)3F<&*E8!950(u*5^EIE^pfaw})pDu#@Wa97>3>TfybKme`oJ)D6v# zyJiLQ;ImQ;)+gcNNOeKkUbWx&dj<2qtmo)~6D6M9XFs;oqCgPfVEMAPgK3-o^L`(( zyDGVV45P6~!duBiZ85X7;PhwweuhimmFXOf>ip&j052Aew=2i%?Bs+dUV70nhu=4V zHjkGjwcLi3^|aqnY^K!UclhWMUsW7f;$TnwO5ISz-P^d6bl4o~+*`X^wBIPzqHqaL z?thKYWTC@*S!v6d>1h*R(tN@tdcEy-KC>xKT8ij5`_6ywfXaXE!dB&RUQ_ch%57>6 z5sRg^X?65j>76M(O{*W8o8w&1c%B_C0qFV!u->m&8;6cuX*Sgb65TeP@F7O8gQcED z$K@bH+a8{!B(f5}efl)l=7(i+30FUU=Eucn2flUTyi7!9*{FhC4yMbGjvIga_@}Qs zx1MUSL{n3XPp1hSgEOiM11p>3Ft;7$h10;Zcw2BI0~tYsu#ZwrXWZb_DVjR@PGCL& z!J$5#3nPkfQ8F#+wbg#?fdeQH_QKbgKT~scl>bfmytHDj_B#dyBotVG+2|t*uoB~k zD#6oatHt@nuXqB#m=UUx1Z-f8>rF!OF{?sCoK5YX$9;wW@DQ^51(zBLJb2UM{V*Rn z0w1-VcYD1HAUg(}DWSq?b;4twg8=rc&&NJMGy*ZE&pUW(br(){3B}g%f8+rCn6Z_k zYm$n)C5bc5$NHw*(NXDW=%R9OAG0i#r<}Ft0L&oBb>4?E0xS(7JUcm-1=D%D$9k+K zK%vxt+V@)=f5UuG{-fUH0Qi2-Ow}(M4F+DHyL`xQ#DBOTmk0_vuwM_-n|fm)M-By5 zpWL7yS}UBCtjyvW2_D#`L&M&Nf0z!Wb2Ixr6>zPdDol7 znhWSR+uQ0ZV&cQ3Z3gDpWcK5Dx>u7`#YdVjq{)PRL7@@2h5pXONMBiBRD9n`9Zm>5 zd8bbz$uMOu^fxVt9G;*8a2{--4tMd^6+OYJ)4j}@@U@PDeYHR9qHPRx_a5W1c#Ga2 zE~O^QT+ND+`N!{#f}B}!1O1719Ww@;B>CK{Dtp2;;CZ5hgH0#2Ch)GVB|?tl#NWTs9<(++IT_nI!HT4Q3pIoTq6!d|es8UG!wSt(NZHquB*jp)B=| z$5}iK&;c=?-pHqzNtELJR8Q1R0-p3~5SmX7nZuX;UZr}Jtwru*DlKYfy9$8M$r1Bw zULjkne6yfiMDHD_88GKA7x$Ln`QM)guCXpHf({u^y{zN>%p5ivbNofoP6Jp|R7a@> zXgDeRXaa-SsyZK-A`nY$jF*x!Cuc#v5E)+7$HVl;)b{iBUB@LhSP(W88O~G9fdu8@ z#)bv8|6O-i7RvK(Ga+(Dyr&fn+|$hr(s@b=1wGH@zi)r6bbvw zT3mu1`w|xCQBIw#rnbs0D0o?}H2nmQ8G&DqUFlcNWX0YGAnWoa4fSiaE`P1=Re%jFrElVv zIM5URNitIoL7vOg0#+~?G_HUw6yc$sD``T;nBpN@91x?|f z1H_GiDjipeb2;=~iejFZ8h-hUyNz4F8b*oY(TaB+QDVzwBi$g%Z09-`^RC0 z)L1s$pX6TNp2MP%_EN)3q3_;gOqwO7jdQVB$&`-*cdOcO<+)oKnZ9t^uz-G;q^_dp zrT2JW6KC^M=V~dYdr`BYw)}bbr!Tp@e*9gx%+KDD*Z!VOF_s-Iz^ub91MG718CG!x zy;K`pFeWLfVT{z{Hxp9S(rp9k@?O3;rPX0}CsQ){)+LcZ_MH|#2j;(X67F#nr6_4i zidt?S0oCx6rAtd#n%I{TaNBM3T6XkiO3nuJ)z3 zX+{Bx!=E?+WcGi4Z8Q=KDU;-lK&zybwdg6OUtWtvo1s*Mrn-~zf(CNaW0&lhwL)k- zODWU;Sbm*W!a6|OPI}%Kkr`1J(>t;E-|HCVF9jLd6!Pb7tdLo-U;hwt?DR$+t|S|O ze~S9aedz))RLdU=G_Y`+P>9$?`NW(@d1Jz`W$Hwl^VOnO)K}rqquSH$Ai`R z+_IFTG~27}pEO4x=W+CL(RTQag|7HT-i$BsGMa}|&xgerY3514Xjs&N z-{KSx=eo0Wo%%M*1U-)8`fX=^elmU~`w18ox04M1xYPdH5BRs4`LsfIdkd@JKxYSv z%PJd)i@}(9Y1pt;daxwL>0{fkmu^~FvSxJb65z1-u;Ir1?_S`Vza-z}2{5 zp#flTQP}%3Axtz`xrw#S zcIh?pJlSe#bV{7jLS_%;qL%#RO{e_MO!TS(lS6W?&LQ+OcJ~JT1^+T6d)`v7Hm|kC*Y`t1jm`b z)~_xk7Z4+NS4}rRgYi&I1$l$pv0EV@bk@5%{HJ|BzJBX3c1S^#vcsTiC8S|wIA66r zA@t0$`Qkv5Cq@wJ`Otb)_%=NDZ*!3_L&=E*flSa3g|cmH8!P8u8>P6||LJlaAQT#L zP`~kGmz8z^)L>)sOlN$1_zxazP2v>p5s_vS(L*!)$HaF%<`)((utE{&8P`*koIj z)5)Pnf-~CRoz%pl6!b1Jut><-_0M|WheNjB6qhgP%2`=Gq310v zvH%1Lu!X6P;mdp-7)6WrU%_4euxP0U4bqh@203|>rtQZZcV0o-bocPXuP zX+(?#g*I4%__&7g8kcz6%^tcWcSti*lutPda7I5{-I=<& zC=DL$2-pb>-1eCp4}|fX3A~M~_yPW{&*LAdUy$oIqlO?LRZ)~XkpD5^CU^eE$zMPF z25J$4I$eqW{GG}@TbI-?R=wH_3ATUiV|Y0K^+tDg#ePO#&df}-RMM@%!Iy&)3A`O1 zp9VXbs8>=d@?-M;t05-ds~t7r&KymgSspjAhkkbWIW^OJKy}X7=vj01n;^~Kg!1vS zz$BI(bM5d|v6imCJ%(Z@U*4i2C^nidIVrPXZ-lMbE6xi;Abh_X>nz@Jj4D$tc!@)YCc-|ihsSq+knOtYxQ)Qb{GwLyZ@Zro z9VNjDa@3lVg{lo!=;8si^bo{QcOC^r1NsI(-L2@dtLg3cdv~zGxwB;xN-q?@k|qVR#>diSFmu`QO_l%Fa1=@0!4W|KP(9-O$F zkD_$#l}e^~_P%=i8)5T)5k%O;J*>1;1#Dkwc3Ekebetl|=HY0!utxx@aX^APZEvB( zUyuKtMY@xVSa1ZY(@z0m+W6HK(qkW;|2Aa zc1NE98(61a%<3SkSgwtvOp8AlEZ@bD=x*(B@VUG>8Q6`nA#Do8G=v@+Qh}6};Mv`? zC;eW0%2lcKGn$eo7U_>Hk;J?)w z+f;w__ex9^rjPFW>hUqVjN!_#s`+236ncx8tDJ*{G!`X%?nr zoM{dwWZuE_m5VLhZZm@avj=jS&pwf&R<3$9sN8B17m%87zEus z?Yn8)9tB{ID#ZqyOv7}$pcJhtJC8^7mH(EioZ&pB#_aNFPxyJ;8NAxGkmP`|?KP+Z zsG1}&ml`C2-U+&pL|R6Ct}tY88$D)#i*44N?*qC~YP(T9C!p{{`$*iz)(FNV!C?iA z0tn@N?qILUY3i~f@%UuV+WRlqZJd*t({ZIXSM%lfE)@6Nl7xbd%aimUhZGd9fO->Y6O-uJC9!M{-kk2GspKur zb_4m6PlK+Mc@Tf~fGM!^7Ss1y$VZ9$RL--}cJE`!N3R}hrv&H(KAI$G1e+qxKHX** z0eZspv4-7A({mV?{?=_Nqu^gLPO;b9BX9JkO2OB8yEg_k$1NtJl{BwP+lSptEs9qS z#_f$XC`+4IK2qTj#39$-I;aW($|c&k)Am}pLoWN`jI2`fuQLVup(i60YCVHy^niLb zxGj;Z)a>rj7v;eS^dwoHp}RLbk(>*379xFjG~zV6)o431@+Nm*#o<$~aRhb3Vb%Xw z7hEJ}UY}T+*CO$ufLT(Z!NTi9VH~3S=2ioqRA^{i8mv#zqGUpT%Ssi>&Py?LWw)BK zFA@Vgsg-*rKL!>oWOP0N*!SQ4)3%S#17S8F%!i&&r+%)3>aEnsjIH{C-|{IVVUY}X z=3$JpcZL@wVo>>oC107C8RheBy!;uIA?`f6*c7YWL9Yswgfd`Xx#6-RPzw=Wmyw4buc5mexC>x8 zivLz$wTFiE)6*tPZ7982^{t@JRl2nAKi7RF!ilrMz&~$NjCp0yOhqy*fDsvr94a6y zEA?au52)PCdNl`>KmBwZ-a_Cttne9LfLe?RP8mZG-cqPa_$h9GO1taif}FfRR*6*%~F&%uDqeE%cD3 z1%RLgvNl8G*!!R?lmWlN`3&edfGT{k!2oDw_NQFD!(*DAvI}ZJl>(3L%MWTuPhu~) z{1&LiK^eJs%n*+Pwmdpu&so0sBd}pd@M5JVrEyXfxmEi0;dqWsa|TuD!~iBaHb|Ke z>fC*(n~On>eHXC8YClr+|Mr95G2YM3OZkgP1e)VX)tw)NIAzyYc?vY<5IQHTte(V27)wLwvPTD)OQ zztYc)ecRk^&i%;b(ndGu_FG;;G6li^u@;7`ge(@!rN{INP6l3ATUT()7Tea$=}&>* z6ksU*xHNv?*b&du3+kQGEG*N#(*@q2E0d9fCm`{4VC z;i69h=V>QPb-*0vsj-K)j@Q;20Fuv{?x~ORO&d5clXjG^T8R*fFnq#QS3VC{ENRc| zdRGaX63g}M@^HBmv^M>)Yu;M4+R{|1D6+pK#93Z1EwcW}vrUnCf29fMs@sw2C$F#n z&({gCjqned&fIQRj-N9y2-@FQF4j&s&2Jsjwi+;H@OAAw{{DS0f^~SR_0#+R7Eb<& zMz<`I^gS+ZZ&~3X+_#dQtqnBKLV{Pl3v%Agz11FlA08{d zkU$jn?Z3XP_4ep@!Z{W_Z~DxqpSbgsFsIJn^PeX$Degak2sJIA$a6WJuC(Xfjvz;g zBMt5mS~&WsX3dv1R?tXTg2(6b6&`q0vjY4#S{7MBgbzMd3=|?a2?vIoi~B8sG1C3p zIK=nQK1R@>T80jc=#4BKHtL^UDwYzPsf1+M;O;o&+q7rQFr1PKyZ?{4mhdX`B@bbQ z#gCf2Zj%lrmdsH+-er@E$~?kp_rn4!#|)ixjJ3Au1SjYUx10Da)^!DPD@4+%Gjnq{ zFi7|g8>>i8Xoi=4BrHk%M46|%c-OKuc(bkPVBQikIC87j!C?w^Iuz|#b^VlBvirv+PFKaWR2gr9{{4YxXGA|o*cf7q_t z?V!fe4n#1=8(~L$JPs5h!t#bmBPPG?VzAzHq^UlpHd|g4xbN2iZU+Y$(VmjC9}3&U zX^nkuYdNYppxMoEfwoIa-$U+GLuCjif5pfew|I-5Uw&?4``&|ps`bC@bV9kiXl($S z@t&54Q0aoS6$EYJB9yn37H<1I#sio-Cf7aQ_z9Ad zpQ+;*?gF>MHpTiDt;X-YA|oG4wmU6(Pj#`CAfplAGmrQQyADLPHJbkIb^b}BhNK3O z9mSD`4sKiZ5H9TTt+Nb2!+3weVUz7~UYXcTe(ag&nGQJa`I)eZ_R7uuyx>AFy@JBO z8OwklfI&Fl=9YMZ2C=a(8H2L(q?SAW)sx^0^Za+YKYslGcO`W3qKkpoBPIfB<#1qH zfLNcA%-YXEE+^JTx^|;LpLfl~+xI8K*+UhSwtuQ4JD$@`IyG^oXlj}}1zopLG+ks> z8Iz(S!f8oCfSQ+PV@xWHo4POp0%0LRYk?pPeDS$-w_-1NK)PJ?L0Fwn*6wqahkqa_ zv0eJ>l@_iE&8IR!^p?e$IWv7zf@4;z+$L@GAGw=wwlzfR`Gr&<<%lQ}q(P_GyPILRZsssr&VyJzZU( zik$hDrl!hdLUr$cy?#5))kyL$bJ3J-p)8Fyo$O*&n70RfpLSRLcB~R1O_?@&I4f=0Y^nwxk5Yyo9bh4~@Ou0&lD#Z%Slf^49 zCZnhu318%-gi_Vkgrqeh@6ExbDBzuZ`$)ULl2uBbC*$+IzRtaQJO{5oJN#_{m%>`@ z8d4dGN`BMdKDX1f*2*2`Zjaf^wyz$PgY5Ugl3&&(NYYhzMVBU2wA951*hXMw>>n z#a!NY==U>LxUvQGNDNol80+5Ro|~3y&aO7pUn}~xjdjkg8Zhm&KziLnQV7Svnyd`a z>gv%?joK!!G*gm((iRr578XdQTq*MLeYE}wKyUEfJc1$Smb*xJwt5*S>o*+co% zLArffJ67Cbf6oTk3(ym75U)J6u`2?%i!;BCEyGb3pAi_fe@TY(TSodhYPt*=Q5;WG zaacFw!aD7vtFuB%SKvbWYD@9E7e9}|i+_^N`)DA080Q0|iarp)wd3qE{2IvJDbuOo z6f@w4JOk0}R;1ntPx77F@+v3#>C_P)B_keVXfcECT4QE6N%GZmnDl=l$6HOJgrcwBV!ho%e;QzPo~#6L3IBS1 zntQZ8M5y0mX7cAiUyCnTkpDKgkc7!Hq<2haQG7v@NRIRuZ%XWIGJOJzR~C$f-&o6I z4-8aQ7?PK^yy03v3YZuu+r7GMH3M!$eqyYv?Xz0rFsnTr;oL?Q#((pu1?@;INpWM#&s zOY)+7o+`imWp3#Cr+1DVNW4{ct`4^%wzJc37i%&j#yI${(kpk@?7jFf(B72C#+DU& zQxYfEXb>k@S#P@+7JSXwS07|hnRSW-3>W2B-CRprc&=dlik_dXPD5*i@;SD>t+nyH z0Ho|)3g`HhRRdr7z#j^<`0j`N`zAX9<1dx;q$U{&Z4g;R5A9FsOFqy>*Vo z#tuIe*oW8Gq(Fk@^DZ3;}m^-bn0W40^&ShGLJl{Wu`*%Xb2$ z_;?_!KlRdJ?){f4joa_pJgZmYY&F}|Mu!ByZg2fe$a_U0{56NH?lq6u1&bw>V05?i zQ0*?kF@p-Lf=DJq>Kh+k1d2>fW|3h(ja@ZI4$)6g2jB6X`Cs4Xlt+gQfG^ov-o(?l zK8HiEv5W`KOt3P!V+(jA2&wdw4ANtn6~4_4b)2y`N{L$4rc!ZK)wSEafM=(x&$p#` ze-+;>I9W)Q>jT+#>A%L#>E8-IeSwKPT&c)JxDckr+L%-&*UbMUIL8q>{MGAd2W)FN z-;t};_#R5FCEonA?|lld(;3UNSnA#%6GfyFpIh@NRT*580W(1TYX;h+5hliHp`@N4 zUV=V}gS4ES*49Y`s?Vl4zIzw7s3t&uYhlxHe*%VIyA*az88j*L>iJ=$4c&pquu9)5 zfKrFI`yn>Acn3wYrE^)H2(5C>4l@%Y7h2$2w;4}c&4UBzD(K>U31pa*CxDcGGtTnY z4{q(iX64>@#qS*xY-e04s@qp97bVJS+}J2~@=e?zG4@V|vt|7zd*6oWi^znHISE-+ zEKR4%e_N8?annH+$B8urB5~Qz{`dxOyxevnz5U9)j+80s zOH`&pI!>0%OaQ+3b>#`qo;<#g|A(iSeK^R~AyRwBEVtKf&HkcQZS{#-hO<3s${yFa ziS+i%7^^zYE66HhHgus8DNpbcm|fl}BprtdF2qS)^ndTTyjLxqLk)TEBu{UA8J(-a zHS_vB$$`(oVIb%ur3pPrtmWDrcdSSt)`XOy-GGv!d@8(18ax*fV*d01T&gvr{m4#1 zkyla~ApIb{hMxV_=P58q6ZNU>l!(YDpOktP`k}0ia#8l;!bC%!%K;Xgv`!2J;yo1J_L}VJ79QG*+6u529BuwCtQSDWiSQ5MTb1aL-(~pfmJT_ zO6F-ppsJOnH3jsK&nFd?vxP%=7X-t3$Maq*M8SCIr-}O&7!_{j{YFM!7(T|fpDAa$ z+UX#&cg{_>H$*Crf4742Qf%4ojRbu>Qx7e}vADA#%yix`51GJ2IIe7>dG&Sff*DxM z`s(kr2(7xB)wbi(-^+b6E@T28q>IzZg_nd%u_V&BrAY|Eyv+Be#e{}2tQwBDaljDq zXqOuE{LD5vskNK4&@?LwDh(jiXT)xDamL5><@z8qato8rJj$3=29GxJU;q5JD-*0t zOGJlv61X)DoF3>Y`sRHz$ZxOT$sFXiZKfizPdX-K_p~f05DVd0`w4R{-30Mz=WS(> zr`EjUP12n!TxYR6qHMb6I`f>*Ufp^E7H7bh=TfF@zBfpSAm2w=tj^jPU=Y~s5OZj< zet@RkzG-q%UopCJW`KGdA&!5OAx0U~`3y-D-!R)^XR@sqf`# z;>}gJT`6YTVh&F?m4u&t@TLn+{&jru_MZ)USr0FjCUv($| zlJEZzh7OdNX!K{qh}C-y6>~R{B;Kdz``6inYAb~?n=b2Rs)hCSA1f<`2DP!6Q%}bB z$SYwytJbWv?Hc2*t#;QqX^+?MZ8i6X7M0=&pb}!qI_cx|`s7Rt#LShhaJF;yMm=() zm1~a2;fqq(iC}V3&z+i9t@U0y%hMEmRd<3zdBA&Ki4X5%W;Y&5j(2n=IRIU*kZ5q0 zfaSUpAVo)S#r7+B?0DZA{$)63oY30pCnm2F@!*a8&cla!o7>E=H76#y0(pjk^?b3! z;Yu;;4`Uacrc_iJfiocN4@E^eX9A@b_~;QBMB&!uj;1sDh8Cxi{E&*5v;^kU7H*k7 zgD#(4;omaSWIwaKq$MpVaN`|!Y)RzzqaFmt^-AhnMsilg4oPQ~hNB+?IaQC#c{dgNVGm*jP zgKqRNJEN2-5Icrbr5Lqa+#XHL8BtKz68R38(iN^@pK~UU(UkW0D&JSa>{Km&)`UiR z^=$9#s5gs;_@=?r8}EU#$t#@)COWJanL{)E{^|G@yivWP9~&5fxbit~{o>KkKb%JV zI^oazfaotNbcr-V%^e$GNjiu#mAr`kpHtM^w?MgmfqYoYtmeZ$ThRM0mfMCv18k$F zoo5G4=N5FmCPS=4Ap2~M*=~<^(4yYWfzOcNL3{em&4T2rTj`wVuZGi}MjB1vx%Zs~ z@o1ITY)%UeId5I$*DuhAQsC3t*j}C2KH>4TM*I%nn%5f=P9~=p@o|XXY3h7+^$Rl} z+CP}qtZX^udP-%{skvXd9J2VBxY%~Y(<^K8=5`qX_3DTHU86_Chg>?kfSH7#8|dD7 zIHsy`cL*Vnnh*0;vmZ|K-8jX_v1!P#sP~+d=v|*|I$1#@W`TiU)B*-=zo5~-eVF~K ziA9Mg5s-3`j5AO(S0+iucc%AdAU217G}v)*O8F9@rk&xTWnOoBc<99Vu|zey=Tu_; zkN`f%gL}!jwE=iTTUIFtcC4sJ;m|%l-p4TX2zq-5-*9-Eft16o9&n^&&jN7DUtlNW zoh3I7#{>j6eVH#`KBj~1*H`o&MrOsoG7pRTnVdeGo|<-fsDIE>m7x4Jr3>Vfm+0;d z54(#G5vxM}XN55!EPB7bU3p6H9}_H|paHk>@2jGVS9%XSjpyaxR5vEs5}5I-PqY$M zMEL|gPKIJAn%6JK-)X_qItTGR=H|HX;Fn`)OLB{TpVk!{H=JBGGI<Tp}Wy+Y|fP?dMHP;~w6wk_ttnGET5dfmYUzu4pAts_v{Nr;&NI8*(B z{c_&7g8?J#t~S;DuCo|R#OjkgLGS&``Ne&V!|ahLSk5b2g1zI9_kOLgNfPXQ-Xz|~ zd&(!vABOf#l3p}AO-Xc%vsDfn&2Q%NJcy`}-jijufREwnyg}z`X8PAr`h2S}{SbcRe3?& zK^~nA)_2;DEmw4O-4E|oC4T)`iZyYO-4WjA3!{hdRaJ@1{(Nsb_}YR?Tj=<*tuGCF zWKF14UZCr!RAjt(@9GP%W2G6iZ+36;_s{OG6Vovrv6#oZ>)u#0z060@wyeZ`^Sg{z zWA^UPxt%*y904Afg8tho>g9Zi*2w+*KnZnDedy}NeDp7`&T|I@(_^8|_HCxpvAo`M zqifby&%^FsQIjQ(>jbfSo^?-ve%x4WY0FEO;-Vm74IB5&B?><`YvWgef?tyh3Yw?K zw|F9$au^6-Uh2b)_VhJJi;V6?Rfe7eUN&Gcw7(;cdpZ154JTnVj?49SH=lOD_+wi5 zdq>iXL8D*6nX5o~WbZ?Qgn*s(oSLqxf_{*lrNm;aB1eyFCS zL#7q5LipXVE+U4rJ*943GJ&y*qqi5623M|k=qWO~EZyGRL{HG;ReLyzLxsWJc#!1a zdz#w-&+CC}!IRZT?@tjCo_)%sJtS2@Mh}o;8l5^@=Ew6QIrMP*XvG+X5@2)xGQd-R zwc5W7bI`*;MW_CwkK2a%p&|ppod59XNCt2AZs!fL=iXfSsyCdvl13)e72Z-8P7-*m z^kBOURQ4p3g1+VeGa|Ap`VoiI0^r;;=TnN{lP>;C=ff#4%XBKmMx>uj&CfR<{Hi*V z*Bd)#%?|IS_h-rT9J_SSZBC0?-@zZ3g>NaKWy_Gju)j>5+S zafVM?SUT^9*m69^X7qh~iNE{UiC1E7OH;li2WoXTtt9=!;^V!6qeOq`(45ciaF3Zn z=_u(K3W;8(!0&aN6mS`YbY+lkJa!}iP!k;O! ztL&7x4IL21lKjXHXKNgPyt7Hljk=qfgnZhDpuY~~bFwQAl%^`MW?}Xw8joOJFg?F# z`}k#!nn!a$bXv0QLa*oD{kQe+lw@q4i~V*}jrcF3fnQmr4!v*B(Wnc=1Fd%kUEP~E zK*Z2z)AKco+Q-EV=02MmGCtbyV#5$ZZx_aVuzs@CmnO!<4OJdm5_;|iZDr|}z z5!^|1FvtNf{ZgM2BvzAk7<7Ah{S8;!GPXZ$W9&XYnKTOddflnY_(yTK*v-%EyE8Og zE7+)>P`qlOB|ae&HWO(*AT@#=DmKU9hRcI;T8Ky2cH>KhiW@aHW*k~ZK5hx(kPyPY z(>SO6NQ>;dJ4u?={6}rTgw~R^@<+(5lr4;XxDodExea{-kvi{YR^4w*Mj!gTDS5$3 zssR_~8zVHp%}+j;*M$D*pya~YoCHnhT8T2dhyxEJqpZ-_!Xe^PT5BZ}Iri}Yl9TJS zFqDk1i3kF+wzl5nYUDE6jAxSYI3J89(*n-t@(Fr59~z~(!bh9UmM90TP>-gZ@`iP2 zGWyzsbcVvBLNg@n7`i_z(%!f~9pd()2^C>)K~ zKH?jH&{^V9OmJ=8-aZ#QEn+^=x@0@_i0!Y%M-tk--BjnPPZ2!SRjFkgbkQ1Po}TN4 zN_ywaHt-9>t=L!hTWHz|MF+_Cnc|% z@?{@t?R#v3?fAVwOYGK<*F_R4KITMVGE~~kgF zknTEJTpT5Us;wC!OeRz9E#8kJiPasG2#+^NW^z+&9r|P-E-wS@DB5DSC&}S^RZv#{ z!VNCLHjX9EEyzmwhUo?Kn6zDIZ$!&nkfcQWk|Aph^U>Xg(do+cBa-pL09%IO$x~FK zxGp|+b(I`(2Rk3f(>Qxu@8_GxB?ZrO1eQ^mH1pmFy$#tFsqeA%uDB6Mvwt)j14rsA zSmVJseDmTfama0Ff&75wo#SJND?jX^!ifqq?`Fm71xEPQ@UGLzawe2aS2x;*^cT4C zxHUbkx}rQPNch~G3Fqq%9wl;7(W}*@lDRAWORshzqBSEG@yuRmsk$L$w}7%fiLR-^ zo!R~Cj{5;K_nubOz`%#%)n@+#%80Zy(@fMTjjT~@?7NHJ^k%1CRuxjw2qS-MZs|9z zyIEAn$cw&f+y?<}jM9pV*EgAEE;l_GDG}{KW;>#@e{K)FlDXVl&b+VhU$u9zUrE7O z1z{({z*?tMost6=r5k(T_Nk>L0>k!Y-C2#zIp^EGMZI^7ug&eMxJ-R$3%mujE! zQYj9@Ex)atEY zg9tM)2|z|(eCS3Q5pm?J;4okha$w_c)gzT~rRBAZGY8PB?d&chryrM8d!%PD)W$CE zcxN~pgheXqhzGp2w4^*4d-oE-xm(tag)4!_;|84|im0limdu$4`b9P`csg`fpH3Cvu)RXo@t%neFJ6mUo)AXZJl30En`2|u>~i)f|Q*u zBo5Jj_}!gQTXKRtM}YErx5eai1fh6HbSm3b=i+?N#SWE{xaU&~3#6krJ|+*NpXHhZ zw)?DX7Tu15vOCO&(8>s@-^xJxM8KVGj6wVekpDy5S9nF$wQr*+h?I(SDbn2?Dgx5o zEiEzh&?pK>OE;*Lbji@&EsXRq#1PWW5W~!Oc%Jut*Y6+rSi08HHJr2ep0oG9@9Vy< zYum(*}0!NOex@p65(j|d!9Us8kh^lq)mBBu_H?Vm67gS~M zPCG6|T_S<7>36!5?aPS=@=2p3z7_R}zC7#knr~!voj`ucO|dZqtW=$cHIxKg*?mJ9 zxc1wyv9(uryx;8a(H@Bli+Ja@WD2hZ6cQS$=$C{7+1p2m4`ESEdyX8U?d?FU78H`P zH(F_#`8+I%X1F0T@e5OCv4b)GOPiy6()=g-(WRpCpP_>rVdQ^Rgf$H%rLWQ6zc>$$ zN{GwfG<}*p)R0de2QtGq>*o@2l4D~jU~_fpCly&TsU`MF2>IA&IZ8*c!qJ9?XgY(j zvXyR8tK&BSAmBkQlIS@ZO~d=uK^C{Rv>?>0&Mfd`hW_#qeY#NMFT~;Tba_j)75R}) zq@_)P3MK#N8rLrX2zPh+N?Uy+BT=2fdak9#iyE{)uQ~upGtlitO}v5c$IQ@) zRj|Sf{NVx3^(E{r_`03wDZPGVc<#xl< z<-48a#<&x}^Hd!yfkWHtLRPuQmw(V6%5^Rz|K z2W%dg1g?+5&NlTQgklG*CHO|u=#C|%3Tw8u#@h>yj3DIKcfs4ID-GNL;!O1cUz$H0 zK$|Cj{~l`(K9Oz*dk-U&uDjo+j@8*iui!tA**YY}4Cf43slvj-ZEKFziir&OAF zuq>gkmM*T&z$dlz(kjZzEWmQJ5)!xOOWh>it@t2jxpFZN>8?PQ{;gVBu6&U|4+^c^Tfzc$b{^Ba`n_RhR3O)5}QI9!qm zN)jqPryZgB!o=fzuf6vr|6YR9Eprv6m;^6Xp%ndv4{yirIKn5d`kOCz$z#P6i*UWp zt{1Rd36Mq>@YL80>t*d$;T_z>P=_g&6+~r_hKscPjS3r~kO$xz=rqpznQ4vsij=1M zbBlR0Sv#WfC6f=^Obaj9ATy64PY;O__A2*56{>-ED*ELhwAlyD=M?B-@WhochWB(>^n92Ti=zdWpyv`pIgt8U0Ix)FsM$^* zMqwG$?8Tvu>Y^Hhr}P^xr{WIv_DG)M4yOyO@`t3%_`ib>3>UNKyfy8|aWVB13pPDs zaxwK5QwF0bhY5JS1{&v_iBn_F% zIUX2*<_Wek)+Vu$vovaYXX3Vy9k7*iEsDgTJE$eVT2w>=pd|ezNt-SJ(56#SE{g)m z98=^rA$UxJm#|F^uZCJilo)%iVo+Qj%T5B)I2eX68CmXyDzn=;JnL3(~f%i>;m%95w z?NK~151upHz1sz%A}iGx2~kOGZ*5HAaA{6dMxSnG>BR?jLWAu6e-1eZ-_nJz>XtBQ zj3~OtkW(~>%!7Qyx^I_~Mk0_3pFA5#Kbuq3gZDj5E{oOOwn$SwR(k1ej>2Vn3^#Lz z+3a!#@rts#T1aB;`m)4mB&=`{%<8rmv(-9;^lFB>q&B+A0C|Mp;`cKgBDy!dUtgh4 z8Uu5;#&xp9#R2JhFeaLhq@V9S%79rlyQ@1+YD2dIRk4a|Jjl-#MLQL938v?dA>3n3 z+}hnsRF?^RoHyj)WWPCqtH0)SJuA!ca}laE^-XJon*z6kdKdy=Ju2C7T8gYHdxmZW zqWtnY4(e}X*_)$7C?LKtI8Fd-;LbJ`rG-@`H#lNPkab=v9oBaT4WKFsFG*TMbQA5!cxtx z0$ZheyCZY`vD?fl(19`jz^YuszG<#ANmmdUKRPvM>7}+TF2wmUfgd84bUt=Z6>Am} zn&|yjVmW^iEW`}8Yd^dX^gqLtSuMRQzZgo?&7V97Ep#6_bx=v?iU+z8#9N%7pX206aB0dJffyAR<4AE4g#2?C4D<3J>@m1MBCArZMv?mp4 zabi|v>Dvg~ypv|&%O3wyOvu^M#}>*{bFGpu;p2h4@m#xK`T}>P(+%39du=`DKc|6F zpC>tca~GRZyN%Z$v+{d(i;yJG-FO)&ML9W02Ar+ERu&_=-B1C{6iZk{u%>pd6vPco zo3N(+tBsT}d6n*gF~OVNzR|4HVRL~K7MaZh4t=|NY=de?kt6Ge!y{ZLDGvO;8l*tn z-+3S(xH1~NI!k|(L@(8d(WnxAYQ2&+AzIOG_Z*mC=jRG!kK?5)TJy4{{NK;k7KLSGP`y9*Q4S15b{;McWi5Kq;P$({ zErRAl7eB%l+-Sn5r}fVNOec5~fV^e;cQWqc@=<53c+rDgwnxl829osO;N5GIt+4FI z@%flx>3Z%fa8ZB2HO8$Uu+7Lh%=qXR1^+LC4?vyrjg_o~Y&hZa2vYsN#m25?QVLnM zjkc+T=8lM%18%^rR^Urw&n}+b-BV5f zb79YE*GL@szwft4wzOJ3w!Fo+=kerZ31nQ}j9J}lLLHTe6N2F)?^;-Eo|v&5ihMr~|*5575?VLV{V1Lb+t$Vr1p?ync{nB`UKwxpS{ zIbLQDI{Mx#HVkB_z&{Pr$?a`>5)`Q_^Q$n&SeLCV@l+ME*$ncC=^`y+)88aheFzMM&qU$k0? z#J}|?Wh20FRv?9>(w4ArYn?&X6gcETe;FzoH~a{o%-QGC;h%!c0kU^|p{I{a70ldA zc>mgeLHj3T^h92OO>~wF6^H#}T9d9-YMxc7dSHaQ%o&rk`|x^F49x=^f*kQA017&$ z_tW7xX*XuC59O*a)=4=20Y={mVy){rm+}nT*_Uwr>i{G~0e+pWCP6T+EYWih70Li2 z-ChzPF|n1c1g|zY%#*-p-7Yzy%=Y90g#ph2BqSD;-NwULDWaxAGKTU|Rj^tbS&&}WGcv5^CWb8!u z_R)1Zg8UFwXTIDQCEWuA3IG!zf*_Ktw!AvRhdsG=j|Y88Bjb1MFnx`XjV&!(UPait z&GhqZu8fovP~Y#2 z{j&l-CWYJ>dmqytv(rRCE1rdj%^aWQvuf?XtVNDy34cPiVw`|_%h<^0jqz=yn$?r$ z3T0NK5KE($gZx|o{$RxwFFnJcR}j&3#>v@JS0&@wT}-Jw)&K<1YFh%&B@VRa&b?W6 z&;i&g)0yVW=521m5k8T@n2nn6WXI_E&;m?{ihx` zGh@tT%EyS{;I9Rh8*29PzLgSS!J`Oem-(F|sio^Svtcf<>FBr40{>C6n-g=>zEi^& zjVIHojhBU+HOSzz%uVd*@(4#%@)sHK*`?!?TY{Nupn%Hu~as!-gC1-tik(ZEU zlQ!7LAA`ebd`>mqT6JLg_`H{wK>DIHs$m1)+;+F&XqFie+;$wZl-H=Xh?TYk+rcAt znx4uj^KwSXuKS6Wgf5uDj3nFlSDw)k$=WSuGOluctLj!CB^wz~r>*T-S! z2Ej;&bkv0dXtK7OO@QQ-x_N))yU@}IJU2bi&;LZr#T*^6djky*`btc5Vrpd7e7QFa z_X*V>X-xiJ0JYzR4NcO5t(#R+75ZEU%QC-&vHPBu2ivXhw;zD@b|w#h?+Razld9L9 zAg9c+0Z)ivB}IEzZ|Voe(iys9F4kg zi_l45X%}}|X%q#*O$RQugYs`<4QlqI*m{ySOzvf=e``_Og<)87imhGrSOa1xjxYH1 zZO}>AFbXNKn0ug3o;%#zKf1cV4mzyEr5l5|bK-^i20?An=Nk{v)s`;+ppiaTCKZ(B zD=uMdBziIfFFTYXWi$ws`o#V*$Y) zJO(42fFo@TZTzteX3$CufuSwK#-ro8zBmd%mB;~l zt)R==e&6k*skukhtx}K~0A^v|?3cl?+F&!>mTh2eJHvC=!Kdc*-<>Qz1EKQ3^;pgj z2aoe=run7gd3F2MVzNrMGy}Ek`RQ%tA|z^~%AuRC&2=jG{2`Hq1R~%-f!@}__elEF z@BwQ1u3GTYQ#0e5&`L9ZyYnNt_-7($lp>w~Pk&f137P6z>5?SwhuoXP$3Quw+nhE{n%-?3U|h>itCfcZ$^qkGN@?PkW3KLll*PL^K5U$!mNG0 zwu(&iDx!#rF*P-D8~7bCMtn1i__&t`-qBEv;3LF_-d*6wGeAe&UEpXh+`3VAeU>XX z?tZ<>gBhI1ZElynnZTRL>Z*<^nrJDHz^!Nvx3*)j3w-uuttB`3OXQJmS#SX1_{|Iy zi}PYPLgnUAW!`b#2bD>@FT`wn?nYAb)37lryrNyi?q-5UG6yq^Pbv9d1hDO_HLDtr zIQ%Bm3ztfgPU6C8Ol(7@Y6MHY?D`Jql!Dm(-PBeVc$fHr!Ai)zIAiK1w6*0%t98gg z4tM%lu*y%#WPr%A0#BaVgvnIAdtB;BXZvowSg^n3@+JYOEaggFN{mptvH8!>Y{1mx zkan4`=mK|^fO3UkZdS0!x}24d!@_}&H>Apgzx9J!vfYW%= zA7|QiSTosbM&41$ef8)-#+HBFX?6felA)lGe*elVQ4e{t!W>xc-eQs5oBUip)CXce zlMJ&cS)MO~Ey~!O-2>c(E6%B=2j)xu9~I~VKb-AM+sZ0*^BS~Vyatvd#h{b+;CJw> z`^)tfzX+;S+I91`vhhw{Yhrro)~eYira}=7Cax=Pm!%K4VZ8#EhYFjI3FgZJ@-m9( zkT}I=P1XX<-a?vYkJnr9Z68N?f-i3dZ15=nggcwo4Q>FJ%CtB;mj~Fk&!6B`AAUY! zBymXL9&}D_K-HD!YdMh7$mEcy@8?LaHZ)p^uAf=~@t1JLQsPNkbp70gCex=yEW9(G`lADYWtoA<@g#(k_OA!%oFFVwARKltSQGU4xbmzQa* zX}~h#`j7@am_0|QtIxw40{9;e!Z#(|gn1rCh@=hRS&{J|R= zd9M?98j)UrP+L|0$e22Ht!xQMKgAPcbO58_Uq_1{ZGN-cZv4h)B}#$*(H*^NDpJgs zn1%m(3av^r@xn>&C8=2$r}2Jnvtr3ONxS=gG#j<2L1i3t_r;JcbavLL!+oa&X1hID zF-+=P%SKPQS}Yj5^DdLQ8#VY2i!7FMbgo~mPgoT|p&KII%@*}k1O0KaU&v(%iGe2} z39b*idC#{qVlW~-xu>>U=kGb8YuMVcmgisg6&Ym&t*C%~qPKT_)byHi@+Yyl1I%C} zn&wrYm1S)Gznj7m%7qDF_NG}F0g|4cV`Fk#BMKa+PcJ)Q{zvtL=1!&le1xgF=-qIv zd!JraG@wW%PvV$RyG0`WzQ<21f7pdMCrCMF`nFkg97wN%pAUY{f-47ae$p*`mmb|u zDPs9Z-^@!3&5T=~|Lcn*$cH|-;RZUl-lkBA2n&`92g)&-BGc~B%G^O0a{x)XJ}^|X zQ^_m#xlK)QFaMR1-{4CQ)Pz965Lac$`F8ROUcXo+SHjtIn`;* zFnA`{+_HCPfvxh(@o2F5hsws`evM@d z@)N^}RR?D24j)0~s%0Ad84TilwLZ>h@iFjAswaCV23^=}Gu)Qtb~OhBFKMIN&C#(D z2o~SUxznMaGgRsOH3zwZ9fw2Cg}ZHuDvhc=t4VR?7U%2m&v-Xeg?7SK=bgHuY~grC z>Kh3QGGn3b?Me8-!EE|4BqczNjJ52V-V~|bqU3?m*SQi*bQUmLDW0FEjf$I(MrQXc zy!(v%lyCc@`m!`mJj|hL*@NY^EkAqmf~k%`X9Y_0>Ms@6_=T1vc-}}Vu|I$eMu0geS=kN~d;9nH`m62;Ff)7u z?e>2Q0UXC4QfBH7KCDMN3uc{bg<+dMR+~~-oD?^T(qacL+-c|L0q@b~Vz$2xJ(-Ms z12@fUNDf={ZtS+jg?U-UBZh4;ImGIi`#``L1Kj+6H?Lvc^&Nm}5`RJy9%*UN0!o;X zYAFz_aQA;OpqTF5DPVzZhu#DII!O7qu!I)p$*!?>d(?mp`ed#xc-0rUp#OOK9OC z;$$3{ZY#G1WJ7)9{+<#gm$uzJnCFokYRfA1u-ilCrD4MtpeF1wTzXyEjATl2I4noz z;=MHX_}?s?G3gL$scnHI7kg5EcIpP*1+{Fh$4Y<-s;fWlR9x~aoBL+d2VrC=h2Ar! zq~i&xa^myY6BymYHX}i4bkJk>fFeN)I4Qy3#D6N0K5{(xR{Nr_s6skDl*K!@F<1o1 zsre8k6f%|?-auL6&lJRc+_chtbgI5a2(+<@yKf4VP7~JmDFz%Wi8I7FE5y5sFAQU_Ua18lQ{bEAKEM=1amFN ztMYA_@@u3Yt(5bk);O}=OGepj{;ekCfMSt~ExgOk(~G%bvqJxJUj!|0XO=qN7v@bD zc&Lh#Lhdo2u1z8CgypDzuok`)_)KEK`+G~~`0h(7^nelsLY1EeZ_oBQcrj*XjJb;L93SY^cnoYn3W5|GF^zvDFw08LxY1 z8cOvlxj>}7OIbu(xw}xj>|1XKA1MKi_D5QX18lw{sy!fOGkD*tx{sJncH+^V|NQLX zpQfz9Go71l;q93jz$LERmQZG!C0%Um3d%~aKUX=lX9`}Nz8-S^k*(cl-v4<>`$S}G ziq0H~EiBUVvg4tE@9*n0121vYK{7hSYg33|+h?2kB=VS{;MwQ3h3A@7;t*a4>P??M zCqsH{we>ZZWYyKqWoAvO7gMv*(!FmGK<7hsPA9*XuG+qw9@G9!%B=tQG*la!#-~2WTemhaHPv(lgV||azt=dYjuPb4)JQYK#>6W&jW~{;BmGB{bsQFp=~^F!{#Wd zQwhl8wBw_Rpa%|19DRRSlb^Kj^&+hP9chZC`!rvom`#_DR%~}Gho1Y{B67_Wxj!5f z00+tr4OM4rXcenlvCitgRdl~&n7BhlYj$8=Rx^ zN^~+Q$j6jyJ$pUwabx8XR~)l`;Q7;vi$4(n!?ea9T#L!;z@Pkdhewdu8h1qc@PK{J zj0Nr#Ok~jjCr7_Dx@aSh@X1Q|h|9B8cR`{O$+L&*W`eSdwe4&%LcBNC7OngXi}PLl zoi$ts(Ll-n{8h?KG|HXYG3MkCn7+`~2D25y7(SDw&TVntzcDfYXHX4baB8_UKPg9f z^={6=VKPRCr{470m(+c_Spz4T!J|>e$Q*(^9&s;}SC-&8{x1lm)j_1;`w|^q_ap`3frH?9r1F5vdw2K zuyPTeEVVa9hq6SEFDb3j25y&d3(tlvBv z%4+e^Ul+<#0K|x47ail$0|WP|iZqDeT|AucZbxl`DsO|8yB-qgGwiHcl@vz{#wTG{ zA6!y;=mfw705L&c*@@iIk$&8KktJJbEAyXW14Fd6p}>xkHnjKQZJI;{ilRtW($7d* zX(a%;i*y?uWSN+R%kAZK(F5ZKV5aU*51WkaD15Ya{7KVB(tjc$X>+v@oD{q}_&^lDpG}-aBdd zyXp(PWL1uK0%}8!^^TVUibiMy&B7Hw>_6?9JWg>+252xwgDb*11cMHpadv@cHA;G7 zWMP5VQZ(Q!5y%e*pM#0>W0vO`kKqMyxV; z`_x_64*;NpbE{IAE+i@e3!h!POW2K}hn-nn?+uk(dH~2wn$YeK)Mx?LSPqJ|!t4Tz zT;-bQN9RL`V9OgTyQTf)M^%xc!9#IrGTTZ<3r2I*<<2teWI$k{bl>gVnCp{(^c@c?om#%}GOOaXs)VX6w>x%0jG_2yKA zO8520)a;f%di}{$yY_t|iDn-B?q1#&UZM22zjbC_GsNF!`l+CRO;na)qTKPQOb|_Q z3ql}ZxrGv-7y?r@YKC-}UVD(AaQDMj-Lz1rVC%MQXIoqNYZ@O6+EMFdiPbI5(_sSno@8qs; z#bC1A<#PGk-aXDWy?6v*O>dPQaV1I@mI`51?Dh9=AH|q>i{zt__cyg^CXe*a5B}gG zd{(kAg1FK+kL{tc%vYXu6@6+w6nv_ zv|}JFD{La$r){RT4tL1Sga$W(4Y!{+;;8~)O!iJ)6~7%-$>Ou+3+gj?jM~@Fz1n3n zK}V2a&1yrHtgOIbo>~Ptb_@TRy{we3@D*iKEDpU2>#JW5qD1*O$MGtSqOqS|AtUY# z--Gg3*OYS-sn3n_)K9EF=q-@@H3K=Cj2W-KS?2;oba`o(R3n!?cWq6D$pOKLdLtL1 zwuy-fFa-fRlQi{q6N~Z_K7uIie$(LyD;Zq&`qo02yb?pwo2c2j$u2ORZ&uNCaSrDq zCv@3dO(K+sOZ@SbTcZ@sKl(3s#!m{UhpPKQ#G@y>aRBS{Lm~j-m};@5{#a$e(M!TQ zT=m##Jlh~QtoH_^W!G6f(D!REF90D=P08nT2t}P&d5;wvU^e3PVa88HfZGAW6oPs2 zoyW}-VUhuht^q6thMzxd1`BQOy}D{fsAqKaR~q&3X@?~!i3tk+g3kUX z3Q}fI++Vrt)c!ho>#oh|#88qxHvtX#qyujMkr6Ak4;QzJiOTRjSoak+D`IcRSDCf>IkRHZ>I**jM~aHbwI z;Ga?jBu~y`X@c=PYElvD-C^-65`xo63}SEPA0bh4o|F$`k=A>q|tE zEr&KFIUBE*N59adzTfphY$h#Y>d@GPA}BTe#d`LT^Dj}AYWkNhKF3_s(hZUGLPEa& z@o3v)+(KRewk=N6xDSZ^Dqv)(IA6#V?if^G2c;Y|L;=Fx%{{rROv7&Ocl!fzeEB_@ ztSajeQ1ZeL`!8CUp3Wt>$zX0Ox0P=lfZHzKqQ(e-;^FnTb0(2%cwlUr`?~NydZ`>I zee(9n)bmv9NdTC{Q|NjV+5JYj3#$cUjZX|~&f3H@atG^AhU@AjyPh{fFMlg+XlYXR zdYNWqiaWgDW~5VpM}@O&+bm_6GDA4D@5Ve+szN(Qj~BXpGxnF8+(#yYXgEy^cl+f( zUG3qimq>N7+mkJwz3SRPnJUujnHY}r)W+Hj-G@dbk(a{G!`+Rk7@r)4M2`{z%EL|5 zveH2Q+Xf_m#u2cZ4NntUbqBl=k{5zBTwYA@PW%M71iAnic#Ef4T%|4`9Hi7T>XH+% zJ3PAYLHSgwX=gAz;~(4_FgkT#+#gETFAf1tklBlKCLu6*n)-&7dimzrdx!nC!G8Ud zQxZpmS|vO1H3L*o6j4^3g>GX5RLJ+RR*#;Rb7cz(fmice1?njlO>? zMgLNamT+dsBa6NBj8c7~%zdGK$l2j>fepNDCVP-sZ!hTUls}!V-7xiKbE0$yFJ~c< zbT}XawRyMhfW@edmqBgCUVrlwcrWBxPy8PWd3(EKB6TIJ-V;_H0P0De8kJ8cMXEMO zzu2<)92l^U-b7B@(t?PYfRJLclGO($0^)VX?my~Z81&?FdzS27t@3F#f#HAvq>1%G zmD=&LpQP0Ac$Hb$`AeIPR zQ=H#rnuQM4pxn|>$CmbbZ7()n4m&eG8AFd!i-=SKEO?#vrsTd+!pr6);M6bz`4Rfj zG=Q>$K8={QJOIrC4vm?BeAKIB9m4oll;SRseb54Bm3LM*wSOR`a=IW}3g%mOmitsX zkbuzL8K%CQS67~R4grLk^j_cAg=q*$@O&|Pm4G;ZNxxz>ms+^mI}T7Ur#nz&iMvVO z!nRRG>P$}#(P3QWrk;O&{0;u6$MgcT-9hm=PfGPc+)$Cph=$Kyca)SOzdQ}Ea>oAv z@P}GZUGiqW4kW{7iwW)iVt0o)A`N}I?vdq)=7h4SJ)`(_=kMRQzb78&)d8NL^PL?) zBJQFF=L|rr1k7>2Fq0elMZnqJ!AnTcy`UFc2G(|oit09i;Jq9kvn?^7Qv%f7yC!DY zw|9;ldI6MSes1Bz&GFJ^m3{l-0FxN2j}n@_VTNK>G=)faYUHw);x0T^Ux zsg>r=gas22eIBK1SF7^y?neTLxT^kyons#q!pKO&A6%TR0m^lNzK#P3yCcYjOLJh< zI&yhg!fuj9>RBCIiOi2`0NJ{JNUSjMmfRY`-M%FOb}n(R+64rN3TZ3(*G0d&w{SCK z$@M;GkbB-0|LnU{6{+1^sjT&BOS&xB7j4t7%r-5vsvo=`U(_ z<`=Ahgxww#^;kW>qqp+S<)=T$w8lC9j;iS0bYrMYsbd=2(5(BzZow%T&|-Op=XYNn zC}{o==p3_|+6BrKiyYn)Rn^=FlxrFf-h>dOOD6$x2R`d7UL1AW4AYr8x;)u+h`GPW zI)s(#nZ19x+iI~lknRqgZxlFzjFeOtGFt4u%035ZLhqLWXM?oifjb_QKs9u?DRzuo zd?68-OS8>v^((8-zJJhHcZur<%4%e0i)Nz<&I^XE#oMu)mRDgx19c7IsttyqQ3EM)1XC)9%VCF2u@ zCwN*<@obS((`1Mkn+1a-c_Bx=J!=3HNr>=_vr7c$0WpJOKfzIVUpydKm2BqDcK>@i zJ`3^cQDlKqgn|3WW+d<(Dd2O4wf&p{z=;Kh%!OO;(wPfaVz_WCmTcC5RkwA~pRFD+ z23?^85C}3mWTr$hFp7Y>M9}Hyi)@|7z)HZOrZ`QMm0Flcd^(esPFSnmeOAVRG}z!=`9`ist`iV_iYF8*tUS+Xd^s3i_>)0b6J1{AVyg`Kjb zel+J~DM@&4`7D(FcP@S$Cb-zsEyKbPR3btW&-F9M7++pkrBGs2G&N7he{mjnJqNge5@F@Nv zX!VhfOF?)@@&ZHD4+c=mBH+#g(gYai84#gemosi{HAy?_Ej=o#uCJ49w`$_wz|nDR z*}$l3c()?NJ-rzLcOQ#&VG0Oa>>3?tW_lMe1fbG8Gq^PwLE70nutCF!2Dzc(gqE&~ zir#_qZd;Q_5dGVOlyALzz~g5e+Hfz|?0uyq#Q6DU!*XGBf2-S#vugJj72Ud0A4#UKhps@T3Jd(Wa&u0sIP!G^P{puWh2R(7LPVd)_Cmm7NxVfSa)@oS2?obg(X$zYw|?$m-0aGH$u?+AkT^4qLl5N2mO{GEN>8ax;Ob9}Bsru0j6 z!4Dr!(s(z37nN7zLzCQ#z*{H~Tkz_A*JBksRNj*JI>ng7;tA0P9SAHaQv1CkCk8OG zsQ~?BWJ5*u6C~reJ&0iEpfK0$ycpWId8f-%u+jo7hgok-&eq!gYd5e&jalR7=B}8b zzcaHX-MwHscziIdQ-fM~=`A5)@%W)H7en`VtQ2P(JNRC4DaWhD9AUts%Kj&C%xYWq zRg*UrHDH7LT?kWHUd+@?v3VzO7bXl+Y-$d=lay73B=Gnd|{CO8OqOa7Xu_Efz z$3$io9H^*mE!pq=g)UTAYA?kBSERY>tquc9n| zGe05p{rE2K8{e{eOD)gfn@F9ZPB)X)BgP2pd3-7>#mV%!Q!D~Mot&11^oQ~KABS3< z)8x7T`(SVS|$m6TYC9cnjFLk+5mG z9q{`vw2v6(?zZja)0BOSA^lYqA`A(3xX-n#fxOZC?Qbdt!ew~HV}07)^Hz>euOrjP z&Rh#{!2!H~o_jY8mjfp@+;bXfv8X5l3NCwiJfEGAp9YgiSk`+K3laG@J8Ud!lM#t( z$QIfcdyH={kp+u@IIv6j6TEDsG8K{g+w95N`--eF63yBE^+Z$|fxW0el-V79@Wt^MwffQ6k6aG0x4W)`AK zv1k$~v}?s8aG$c*Px`lLH+tRZ>4vw!a0oaT7%3ijVg_VFw6++F^Yv}D+4R@-{F32X zE-@d#ErdAOW{<$1nY7sw2KU7Q#QfF<6Oj2<00+FXV+eQv&oSdo{cot9So{ja^1BOC zF3<=yY6m`N-rc;X&&%IDsspbXUs)P}*%*_h*w{9|v>ks>C4U}m3t@P7foQr&P8nHk z;&$0^5`^!5P9OTFFLwGq+@-K4%@-6a%bz~xojzF1dge1B)of>5Nd-?g=q^?DCH*lH z7!=6rkvo^C{I)Q`CWAR_N4Km+DXrZYbChm;<)W<4UJvvX`4a}X|1IUYm%4NOC(8s* z7_wZSqDKwItt<)?91u9$wjylV)hhJyj?mq1Ey^=)ZiL;X0hh^Kl|z=+$m|nIsT>aN zBYwbGa7gaFBgNO!TJPf8+qCj^g5l;KZDkJPp!1O3e{N^de@Hs6o;bH%2Af>OL&}(P zJ4chpBiGW8XTDU>26EQ?l>%*Oa`1ib3?6jDbdo`E;4uIr^JQVLUqsrR7rAq^0vR|m zF#V<&rUWW-UkEg}4F;T$SpErs8y?cd{mdby@0Ky%UPRpR_-|d=$qB@5X^JsaHY-8g zQ?xaAfU~!d@xFJYa%M{XF0MzNLUwfX{d8WpJe-D`f59xlv-=k`r+w)#((1a|doF{c zbTzL&+|wX?^-<5Yvq0{Zu>xMhFQ}+6cY~*d_xP+c@-$k?YN0&OUKzUj3qMnU|H}u# zZ_t;+U%IL8KY7Mz{d{M1@jyzM>!e@X3&P3lngCRa%D%DGV1jh>ZM({Wgo?OG=o2FQuBel)bkSVoLs!`#;XcohCn> zHBU>t-fHhEoGAf&)(~l*o9%DzW?eB+jZ$wGfVOjMi(lZ<*h|(+){CNccRWftJ>Mej z#w#Z6_P_YL>>NN@YTIfro96s;jA^KDKc#>lqJX84^m*BBXjojjqP7aKDwtlFYNl`r zzHx0Doo9(Lbtw9|X9P6WOMBAHa5~OWj7ut~PFcpvLxDr0q%1E9F1EAVV5OS6$T$Up{`xDw373NPusYNJXT#}RPrA`$Stozzl{vU6T- z+Ks7)st|%7aQrB!D`{a^fx&|`&4Hh^JdeF-L>-5jAtIEn{1ADYjs&OSLsv-i>(>g zs&hf&+M)^ndB8GIOpfX%?RM%CVhMZ)0Vh!TJTFY< zkpHBVrjLE*iE3EHP+dbCS9k<7bT0=!gDlv*oc_67RM}CI=7Qg*$;ZonF?Zd%=SY(| zx9+HyTBKEle7z*Nw3>l$e^hEbrNe?sKbMFJ+CJ!YHa`cu2l%{#VO$JG=3kO zHliF)jAlU?Uc&cf8{(D9yguoc)0a3PTvZqP7@X;e>jGiU^)W*5{_we_Z(0^Y%?r>n z!7o`;>yF;_{xU@iGd~ZVcY$>{5Pr#H{l133{e;|=L3x-oyD;d+oQ>UnJ3l%^^ ze$v!syLlS@P7V9&Txlb4B5rA0(c0K08vjEudL(3!w@hE*$y+*~|I@MX>glf&`m4SV z=h-RDDe%tLAdz~YN_*WK-KoA6BV~!*_6`9fVS%Fc+G8VW3G?9Ko{n!7t+--T@_Ue!kGxGSG-PG=ef(Gyfz zUwvNfWAqKWNq!o6Dc8E17BXg}@dxJ8UZ7e>rR4Urii{1f)P-o!@6pCaY(Bd?=09_c zSLl(Xnx)}@eaOq2@~P-{xYo36=8&H?G@s75(|P!L`%tlyrTI5~8tvbdCsBUAsE{!; zgFm~4yfr3KHeDsFygE=9Be0y6*VX%V}b3)O2KDxUkxG zn-@t_@Lt2dxybjAcM-QCu#U~pvh6>3|WxTH|!5@4w zXq3nJoyuMP|BeLT&NXn~2y)h3$IogQ5F&ryRHEW~TJ0~oj)e2vJxSET+ia7I?Vr0^ zI;3tOaT4-*qe-VqBHw@iQB}z3LYt!cVfy92i%G|ym%x!EK5aZa4;W>NOqLZB*e!o7 z=*MjrmG*n~Z)>*lK7r(h<^2|miuBuwkZN)@tOtg*?0`qVM5#n5bgCqQ(WN*@a=u&e zKkHN>PDuZ!9wQE!T>ahq?D@$t)Zvaz&Qm}44WtSs^y1heFLf=(W3zLh#;IOAT{err z9o3}-IrK{+*-1mEGE@RzQ6a%w_B64o|EGb^DD$4BYOmgBf9jr)zv7<1Lr*=e%Aw$S zFn@F|@F7s^VVPdmbP;LM`L-&Hr*gu3&9a|Hx(3DUv9D7*21oIH1^=_&-hMBVSY>q& zAKv$E43Ii)Tp!e2ytt@xF%pBpX?zr8cg7uh9Riznf0go+$vDWVa~2Nt)0ZElmIM`)_K+c z?h3$8a>R5PU>;O#9J=p9`tV~#u#>?irrXH$aL?J?My|gT zX>9fz1kur9C7oK3QN4VvsmZ{^fA8x*8_V*C=RN_CftNXoiPYa;mv!y*Mj`yy?m^DP zwafg^>lxKwBDh4w!9K1UMS+1a+^ueTIrDm&)y?^nr(3{_s+q+apTx)=pz`+FKdpNi z{z!7a$fWwGmU-^O-jID?ZS}8s%sEtwb3F`zd1DtcI+h1%V!_IGEqe z+~Gn`La&YkC3Hrvx3l3zCdK)zk<@prjqc$6bCbh&k0tj%ebdk=u2e60{jI$JkYFcg5DpE54lY>i(O#!#-UJT!QxXF#JXM3ff8&jWiqR)? zOUq*Y+mdtQP6Qo=qm7ajJK4!qXP&Izoc_$;=_2`s%sUF7Wm-K-;poM)d0rE3b@Te; z-XHHZe~5aQnk$EWpZTXJ7VW^WhMh?k&*o{tXM)j}-hs>EnSwg8^T6*XE$GK=?}DU@ zaA(wiHrFe^D$X}bYG|ZSNB-M^U6zo3VPGhuOt**puVCu++xTFRBj_$owQyXRAEIu2 zXWy>x&y2BFb+fW&66-^&`qjDz^#6RF9c|BjoNS|YcD0^w?&Q@wO{X3#Ou+AouEywE zwO&e$?`*Kh|5?=5`QEH-nZz3Tgo$tE-+*OSv6;=FCS84*hT0omR~=s@ zvGCtc!o=+@uEF8;r(qF4WDs znRPo=&{AuZBR$oh@Zi(e*ZZ;8i8Et=sN)W%Gb>DIg6x%iRt5SUfyF!y<5Sy)`Kxig z(ydg~Hk{lJt>hTb{%&=ReL2ko}H&FiQ?E}M9I{r8`C(`f$m zNwO~21>TPN&J6TnFvvv)rn%5BTMpBLBOJRm%5RcluRAEAr}BR(EB&qCn?SI&;jH-NJ%;r{;b#eq__y zA8ErEftPJ}vVEth0uRIgUwdC34`u)T-Ce2sCMgxNR*1+}mS|AYWFKT~W2a=#o?(c) z_*#Z+*~u=mW#6}CkHIjqj5Ws0*us$gx#asi&wtPV&+GN`Co|V|uFvP3^M0TAIj&Ed z*8PE_op&m(a zM#ffSAWsyBMGKs;VJo9&2i!5E6VX|XE|HB}k-=N7Jn_B1ewWG2!RM;BT`bx%>xYBj zbI#^))2s!rI_rTa^J>a|js{uP-eq9XU*axC03eu{X9hSW2n~iDe@V6Edo7;nbs@he11{Ji>I0uah$uuzf^P7LA{(sF?SyQJ(x#t~uquDn;$}uiKwgSe_A0qDJ{KU@WV& z8-?ZrxiDZ}RehD$0u?s}Cx@w?6+IGD!_;aLZOYpkAkTn~-)klU@Bh zRP~lZn$xD5)D(BxajX8T=AR%<@KDCafec6tWiRF;1&CmgdGw?&JnN7KTTqKT^d`Ln zzGpBGyqumt8;HFRD~?QrtwcBEF>-rw(4Ik}7JrGoIGEk}$K2hg3EO0M>?1>C8Bp`1 zA72bzKQHEu`k8zGG6Vh^w3qLLy2^prOb@(<$mKhP8?(434}~aMS_brRAIx*vSILcx zC;6h97AePp`DVOWFVQKy&%|ITX-c7R9NT z1?3yDxTOwhi-uMBNe`uTT%}`t`v?I2q5Bx6lW<%TE&=#7!;7??mf~aklpCD_HOKX> zHb*z?i-G$A3EO+B);-a~knf>A{J?j^CcWWH(RD#f{zSDj@WrM5Pe&Ugt@ps|2#DTd zDD0VgT;Ik6@56%-$v>I+?dO>yU~1KGOzN_O)ogR$a&nE8LsHxkyxY}sDsX!rUKf)! zj@$T{P!1R;DCgY&{%Es)lKw9sH zO_r)S;?mD`=$?`J!*l@1v4rxRLK+_*vC9%+xLW6s+gI<1Yz&xss}Ve0Xh~{`+@wyp=iM{j$)Dv9T)wxPFOzYej3)K zFbMuex1A%S?spq=tdgIP#p**u>U!n?e_HqM4yTc|-zQL6u88{j8B4u502SKYa~?zk zZw3b5TGS+Pr)zSkhXcjH4YQTMVISXk{d9Nr1~5>06T^)Rka%wy#p`r z+*`l8T&^7lPgHClZ1yxNC=jmIanO4|^;eb=Ww#@g<|0VRM!wJ{vifZ`pOwHbqp3+W zA)0d2-irnWcSDP`XHL6)Ph2gUzbh+(is(;d#1@%07p~O8qL+2VG`s+3R;^` z?@QfLG_$1{7iEED#!6Skru;14D+lTGHRO9&tn(ebR2}c&H?jR$k=W_NjiuDZNQ+nn z)dcDTckC_$lN`K%J{6)bRv%g=t;z#M;fBmyD!NUg+c1?g7`8m>3ARiSX5w9KB>V9A?t{e4K+nozQZR?|WzsH0 zEqY(Nd#9!1{g*|)3*Wb5fRQQIKYZ@(ze|f3d6BWJCN5mc4~C<6#ZablxL1m}4rroS zW+q{K(qF5G_H)#)EnK>8-0dGUeBDq~henW_l7cAj96U8W=nz_@PNh}#=+5c@MSSIc zfLV|Z!&GPI;uCuvr=5wQtx%J7jNYW2>Ai!h^DaOlx&nhenJM%&sIaasu(7HLFy#Lc zpO8QlbC4GCI$UUu<+Hk6~~(3dmxO7#=NNR9# z_e`*+S$i?&@zlPBr9A#sAg-y0d+Kt4e=!r%xa*HPrd9pd>%a#;hC$?#-n?eQMrh z6KqjdoyXiNgP0}uid`!?ug~UzoBEP{&_5(wQSj-H8Y4bsoybCl-5&qSBceRVF^0QYfFKA4R9)uvk!@a{!DSR!25`%8&prB7 zpl@_0pCekWp$=L+T)ykENA0Yu18*U)h*!FNhXYLX%A@(-GWse$>+_T|X7M|UIJCWr zQ$(<-@3vj*phB4l9SMU0s4+7uY0X#Om2WoM1m{7X6N5K&f%zi0qEyx?mOnG)Pnj53%oOIuEi zU!JT*!z}&xKpB$v3kxfunSjg8kQd`RbM(8!ZDna}%4mqxD8ogFC&kPGGdDcf~#S)TMNZCL*U>c7A#~{6-sPx|T zqvLA|o7WU2R)>dI({br;o1e3s9a18H<;24`mwkJUq`pXqyxH$hA#7GeE;x9}WzX=X z%a~jGjdQzjU-TYDa(TDrGg)}7{U*L3?Ghi7o%AdLUff+f`;q-(_Zsyj@JTbo0uTlh zp5su|yEu2xFjL!vm!Z!;)k|u!lGYpr^=$;=1=bZ&Hza{2Y`$MA%cOA~@|36Y-YfSM#SMlN65+#+eTqP%O2e5#P zq$(d3&pHI+sDa6=BaDrw(G`@Orid$_MZeU}3^Ks?pKHP_j<$00#8$-F zBLU%h4Rd;`bGtN)h19ccsvO2;u{>GF*sE$No_^9iINzto0}{cEt$#&R-Kl8eLm)9? z`OqUlM{RH0Q6+)f-&_wS?=*;<1y|uXhx6r}hvLU4BJj$V_pyMUkd_HlxxcT=oBP1C zENVU-3ptAmUY+7SUmCaPf(pf z+EL+$`ztP-BCCNdiKH4p0yA}Q1s}8Rj;%Vp=h#HO?8UI%eW0KruR31Hm`p2i1YCgQ zgMHNGo`)|I3dm;bL@_`*Lom^m{Ae!$H&51(M@>D3FjncJ`p`G3i=&GL zeHzlukjbdTh)H#xKY8oH zG>2ox0*m`qhk!R)p0x<`4gZZ}xhMlD5H^pmgXVU$8vhU_Q`+8(Tr}z0R`esP8Q#+v zbo}~x*CRVORpg|N)Ew+RbUwzBkxz8K^me-taBQ98Zr7@W{`6(t=|!)ZQdiQ(j9^?| z1}yCAvyud?>9U_|;4^$T=Bil!@H>#i9~k-+JT3Jip|cDepF78SJ*9sGI>t^SL>wU>s;prQ?RV%vc$Ax1=WZ(x1!Rc(Rs!vBB%F zh@U38-M_2b!M8WZY&CaB!;%)irAW9A+fKjs+yT%N;AKF`f(Z%?YX|qN)JRg+sOYf) zPkdCI9izC=iTF_vk{jrr^3oj;AoaN0ir<$olFX^gH2s>7i&v^#i4`o&m072`FV}h) z8kvJ2$6J|-29MQSKT6aPex5}b5MBeKuzNedxvbQo?L@R{UbzI4RcEbQcS%>%;}DHv z-Px(H-K|Yz0ge{x{D7?o#0L@gz0b|oG+)RP@tB(eNv_=UjsBT&@YVNv3iV^1+k-cW z!O-bCYa-Ef)N6+A&ttzO0V-O&fPRju`mOhRIl@|3dxS>_n8V2s*$X3^;e2jH3FR@HoLP62)~R)DlSRMhx8sFG&Hb$c9gzMx(i%y4T!qMu0+gHZ8yH= zUnh;J5>~HWF#2~_LU{_y+*+}vdFpvz8&Fg*v41B51+@XQ?ec_FaZASBy*N80Iu@N6 zfbZTO#H^lHv&~0$#`d3RlKZlNs2VHaI@zJB&n?I}_l>zJT0nUXx5gJeG&)ASzp8ccB<3C~fD$T6-kMGI>fEQ%DPaGK@}mT{XgM{c@CM;?W| ze%TW~g45IfM}SH8a@sJ(aFD1lz$ zxeIUtojB0aAt7%s99|V_cr4+a20&N0|5AT&t;EC+Ne2*W$)w`PT~Rlv2VT0CL3@ z#{5s_IJr}GjU(-ldNvavBvGwhBek#?fDMgbH7!! zZFA!}xz$iEX$$t{nTb;20r+^gviEjTX#1bn`E8L=>O~$W;3jdsWlr;hfPOkdYzZvj zwtCc8NuR_IB~AuQBEps;uS{{Mkh@_eu5SWVt3XmY$DO69ooiN8JP#EMnUZ{++CC%T zy{vM+b9RD5KaEZJ`Cn-37?J{_+B*fpoe@tRjYeN7c5R?R@tqrre(lUCS&czzyED@t zuU?zI3~E$0VaSWpW38JZ>J4%}0*C8eZ7U@f*VTPeF?vig$0}er1#1z*MS-<&Er8At z3NDA*+8UAXicr74IO&ps3XG?e74Ch`o>504YulozCdt?;eS>yV?=%KP-BaaB~z$2097f!uOkvjC}QK^mP;k*;O|nx(cU2vkz1`4 zJ=Vz_+gHqmk)gb%dQG-_U3?~&S1YxjN(KKh;Ps75ARk@Dw_16sU=7Z{>?)aajn&a! z7M-f@OCi}dMvu+&(=`;I`Z-)YrT~)_Ks%H4r=4l(a^pWBeQgQ2f}6TJnFltwqglII z{2p1{{>!7N`;CdM?KNbKQJ%De-m{kK(H3 z*W(0uBE;k_Jk%MybkAd47!?&o+Cw8sP@k|iI)OI}SM+t8R*YqcfJBPj8_`*`%*yKL zPrD6$8JpTV7}EF%XQn%})A7-3GETo|jbfVo$|EOd-3|)a07c2%iG{_Qic5O6WdAf_ zziUdH97lhZGFQ6|Yf*q%fwjpe$ib}!*z!1Cj5j_s7HFiaN98;)j8oIQD|h!{1WnXV z$Q^AgZXm+uA(H5^9x3n5&h@WJvu5IVSD|0TR77P#`o!r43;}8I)UQ4HkZ$)JCykaiv_an)p<^iSVqyevhIKe#a&oOq5 zO$BqLsA+_GbcBPZigi2hByB+NE?m8OdVZfMS;{F0cZ5AfRT-5#`a@Bbb=yupL}{~V z(=nUXXbQ8}?DzDK_&%qdyX^PGvl4-!2F!3#oV1k5a|~xO$Yj{Arl8wS+hJ*G;gwd{ zyr#OMKzTbd63dd(_qA=4+2rMc9L^j1N z*Rqj<*z#Me!nzmGY}&w_h3Tg@O63l@jo?Xd3%aL%OWRNd=++kx>&|NwIm#I1bJzas zaO=n4*GV{elo=Y|@@gyu%n!_%Xy3|zf-0LH5N;@7{dy8^l7g2(Iyc4NeJ{Rl{v+X= z_y^~UJY^aH++D4SP|I(z^8xt?Rlj!`Jau1v!m*>K+33T@wY-)*GR&_Lr_$$iq!u^v zRqjlDNo6##903}vEYSs|Jr_Q=$xu%54v{cmcEvbed)(CP^-;vNGpG6wojc8D4ST30oP9kt!Bq6{MqFrmeUgGOQrk*7$jS}StG z@gHw;*4!AFk97FY4{7N!s6uT-$K6+GmWsYm&BB>HZ}ueCDrH#b$%K*>FyNG)Q~Kz0 zqolU1Kpn420W{WO+_}gn4*H}38n1q<&EfYCv+E{&3(Gp*sN0&1ry+sUUE7$D=I57w zuOmc{M{`ik+dr3;(#CUzbp~(T)02;qNpbD59^7j5rls5kNsF8{Y^z*e`PvrJbac}U z!*(airm7lpRrG=_)G79>q<#f!F&j9d^?~U9?-Ba>-=JJCTPzU@Px(jhdTGU^-8I%C zs2cVD_?un3Qo+0Olos3-UQ_ux_RER;XdwXi2}g6@>t)I)zoqYSEm~aF+2Fy;o3>Xw zkXHAY1rn>R$Hc!mmmB&2Na2OJ6+KY@=}*KIE%~p5MDbOwS>)lcLry1inJiI?XGNgN zhnGl@(+lKJKT2ih*s?iCO=5HFH)ffb9AgdEHVS+BJ$=@Zuv}5~1cC4zVMA^q#$027 zT}F^(qgmV3@8-9-vMr_*D8C|Xj+*_Q{62EDkN8N6iItQsfN|DBaS@n?#$UAL#m0fH zZRb2Ww#ktGlWn*Nv{=JFOY<9W*Xb5pv=|>{c~yIJvT16E&up#9e;l-c)5xeBLZA7`vh z0%u~B_y=t~B+Rfd=$`hr&Kb3k|ANn1AhoDStH`qt%7n$_;Bo zFfM3}iHseaiil!iAhO+oj_>DI6JZ|UY+pbbejD0Omo|9Jnai@J6ci1@!sY zQ6uy!M3kLC6G7QHt6wUE>y9X)EWW4Ok^i9aDQ*fds-_t3&baNoM)nX}yO#DYNuKb>-0Lm;rsbh=z^N+6$uAMeEr;d>5uvhw9e}r# z4@fd!Hm|#@>&&=bda7iHZFxkEg_BV2yRiergIQC}>C$rmZ}kxi@8b)F-x~U)kC#jRsg5dE#VX`~0lWrzr~m)} literal 0 HcmV?d00001 From 3185d5d50cb520af60a252d64e0e3fcb3665e117 Mon Sep 17 00:00:00 2001 From: Oluwatobi Date: Mon, 23 Feb 2026 16:59:24 +0000 Subject: [PATCH 3/3] Script updated for proper formatting --- vignettes/github_branches.Rmd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vignettes/github_branches.Rmd b/vignettes/github_branches.Rmd index e8fd88df8..994733ff4 100644 --- a/vignettes/github_branches.Rmd +++ b/vignettes/github_branches.Rmd @@ -31,23 +31,28 @@ The project uses a three‑tier protected branching model: ### Branching Workflow: **master (production)** – Represents the code currently deployed in production + * Must be protected: No direct pushes and PRs must be approved by 1 SLF team member + 1 NSS BI member. * Ensures: A stable, production environment and that all production code has been peer‑reviewed. **main-byoc (infrastructure integration)** – Acts as the integration layer between SLF R code and NSS BI BYOC-specific configurations + * Holds the BYOC artefacts including the wrapper and utility scripts. * Owned primarily by NSS BI. **UAT (User Acceptance Testing)** – Used for end‑user testing after changes are validated in development + * PRs must be reviewed by one PHS member and one NSS BI member. * Code here is deployed into the UAT environment. * When UAT is successful, code moves to main-byoc → then to master. **development** – Represents the current state of code under active development + * PRs must be reviewed by one PHS member. * All feature branches must be created from this branch. **Feature branches (working branches)** – Created when working on issues + * Always created from development * After testing locally, raise a PR → merge into development