From 0198ef40faaf646fb0175f8674fa1fb1b3d14389 Mon Sep 17 00:00:00 2001 From: Jawher Kallel Date: Fri, 30 May 2025 10:17:57 +0100 Subject: [PATCH] update swagger interface to execute all the api with token generated from login api --- .gitignore | 3 +- config/swagger.js | 61 ++++--- routes/loginRoutes.js | 16 +- routes/userRoutes.js | 210 +++++++++-------------- uploads/873409ad6aa037c801ba38a04be33200 | Bin 0 -> 39375 bytes 5 files changed, 128 insertions(+), 162 deletions(-) create mode 100644 uploads/873409ad6aa037c801ba38a04be33200 diff --git a/.gitignore b/.gitignore index 4781473..e0a8937 100644 --- a/.gitignore +++ b/.gitignore @@ -129,4 +129,5 @@ dist .yarn/install-state.gz .pnp.* .clinic/ -features.md \ No newline at end of file +features.md +.qodo diff --git a/config/swagger.js b/config/swagger.js index 3cd6b0b..1c066f6 100644 --- a/config/swagger.js +++ b/config/swagger.js @@ -2,33 +2,50 @@ const swaggerJSDoc = require('swagger-jsdoc'); const swaggerUi = require('swagger-ui-express'); const swaggerOptions = { - definition: { - openapi: '3.0.0', - info: { - title: 'User API', - version: '1.0.0', - description: 'This API allows you to manage users, including authentication and CRUD operations.', + definition: { + openapi: '3.0.0', + info: { + title: 'User API', + version: '1.0.0', + description: 'User management API with authentication', + }, + servers: [ + { + url: 'http://localhost:3000', + description: 'Development server', }, - host: 'localhost:3000', - basePath: '/', - securityDefinitions: { + ], + components: { + securitySchemes: { bearerAuth: { - type: 'apiKey', - name: 'x-auth-token', + type: 'http', scheme: 'bearer', - in: 'header', - }, + bearerFormat: 'JWT', + description: 'Enter your JWT token' + } }, - security: [ - { - bearerAuth: [], // Apply bearer auth globally to all routes - }, - ], }, - apis: ['./routes/userRoutes.js', './controllers/userController.js'], - }; - + security: [ + { + bearerAuth: [] + } + ], + }, + apis: ['./routes/*.js'], +}; + // Initialize Swagger JSDoc const swaggerSpec = swaggerJSDoc(swaggerOptions); -module.exports = { swaggerUi, swaggerSpec }; +const swaggerUiOptions = { + explorer: true, + swaggerOptions: { + persistAuthorization: true, + }, +}; + +module.exports = { + swaggerUi, + swaggerSpec, + swaggerUiOptions +}; diff --git a/routes/loginRoutes.js b/routes/loginRoutes.js index a00774b..625636e 100644 --- a/routes/loginRoutes.js +++ b/routes/loginRoutes.js @@ -8,6 +8,7 @@ const authController = require('../controllers/authController'); * post: * summary: Login an existing user * description: Authenticates the user and returns a JWT token + * security: [] * requestBody: * required: true * content: @@ -17,16 +18,11 @@ const authController = require('../controllers/authController'); * properties: * email: * type: string - * description: The user's email * password: * type: string - * description: The user's password - * required: - * - email - * - password * responses: * 200: - * description: JWT token returned after successful login + * description: Login successful * content: * application/json: * schema: @@ -34,13 +30,9 @@ const authController = require('../controllers/authController'); * properties: * token: * type: string - * description: The JWT token for authentication - * 400: - * description: Bad request (invalid input) + * description: JWT token to be used for authentication * 401: - * description: Unauthorized (incorrect credentials) - * 500: - * description: Server error + * description: Invalid credentials */ router.post('/login', authController.login); diff --git a/routes/userRoutes.js b/routes/userRoutes.js index b14d431..7da54f2 100644 --- a/routes/userRoutes.js +++ b/routes/userRoutes.js @@ -1,91 +1,56 @@ const express = require('express'); const userController = require('../controllers/userController'); -const authenticateToken = require('../middleware/auth'); -const authorize = require('../middleware/authorize'); +const auth = require('../middleware/auth'); const multer = require('multer'); const upload = multer({ dest: 'uploads/' }); const router = express.Router(); /** - * @swagger + * @openapi + * components: + * securitySchemes: + * bearerAuth: + * type: http + * scheme: bearer + * bearerFormat: JWT + * schemas: + * User: + * type: object + * properties: + * name: + * type: string + * email: + * type: string + * password: + * type: string + * profile_picture: + * type: string + * format: binary + * * /users: * get: - * summary: Retrieve all users - * description: Returns a list of all users + * tags: + * - Users + * summary: Get all users * security: * - bearerAuth: [] * responses: * 200: - * description: A list of users - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * properties: - * id: - * type: integer - * name: - * type: string - * email: - * type: string + * description: List of users retrieved successfully * 401: - * description: Unauthorized access - * 500: - * description: Server error - */ -router.get('/', authenticateToken, userController.getUsers); - -/** - * @swagger - * /users/{id}: - * get: - * summary: Retrieve a user by ID - * description: Returns a single user identified by their ID - * parameters: - * - name: id - * in: path - * required: true - * description: The ID of the user to retrieve - * schema: - * type: integer - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: User details - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: integer - * name: - * type: string - * email: - * type: string - * 401: - * description: Unauthorized access - * 404: - * description: User not found - * 500: - * description: Server error - */ -router.get('/:id', authenticateToken, userController.getUserById); - -/** - * @swagger - * /users: + * description: Unauthorized - invalid token + * * post: + * tags: + * - Users * summary: Create a new user - * description: Creates a new user in the system + * security: + * - bearerAuth: [] * requestBody: * required: true * content: - * application/json: + * multipart/form-data: * schema: * type: object * properties: @@ -95,44 +60,46 @@ router.get('/:id', authenticateToken, userController.getUserById); * type: string * password: * type: string - * required: - * - name - * - email - * - password - * security: - * - bearerAuth: [] + * picture: + * type: string + * format: binary * responses: * 201: * description: User created successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * userId: - * type: integer - * 400: - * description: Validation error * 401: - * description: Unauthorized access - * 500: - * description: Server error - */ -router.post('/', authenticateToken, upload.single('picture'), userController.createUser); - -/** - * @swagger + * description: Unauthorized - invalid token + * * /users/{id}: + * get: + * tags: + * - Users + * summary: Get user by ID + * security: + * - bearerAuth: [] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * responses: + * 200: + * description: User found successfully + * 401: + * description: Unauthorized - invalid token + * 404: + * description: User not found + * * put: - * summary: Update an existing user - * description: Updates the details of an existing user by ID + * tags: + * - Users + * summary: Update user + * security: + * - bearerAuth: [] * parameters: - * - name: id - * in: path + * - in: path + * name: id * required: true - * description: The ID of the user to update * schema: * type: integer * requestBody: @@ -146,52 +113,41 @@ router.post('/', authenticateToken, upload.single('picture'), userController.cre * type: string * email: * type: string - * required: - * - name - * - email - * security: - * - bearerAuth: [] + * password: + * type: string * responses: * 200: * description: User updated successfully - * 400: - * description: Bad request, validation error * 401: - * description: Unauthorized access + * description: Unauthorized - invalid token * 404: * description: User not found - * 500: - * description: Server error - */ -router.put('/:id', authenticateToken, userController.updateUser); - -/** - * @swagger - * /users/{id}: + * * delete: - * summary: Delete a user by ID - * description: Deletes a user from the system by their ID + * tags: + * - Users + * summary: Delete user + * security: + * - bearerAuth: [] * parameters: - * - name: id - * in: path + * - in: path + * name: id * required: true - * description: The ID of the user to delete * schema: * type: integer - * security: - * - bearerAuth: [] * responses: * 200: * description: User deleted successfully * 401: - * description: Unauthorized access - * 403: - * description: Forbidden, insufficient privileges + * description: Unauthorized - invalid token * 404: * description: User not found - * 500: - * description: Server error */ -router.delete('/:id', authenticateToken, authorize('admin'), userController.deleteUser); + +router.get('/', auth, userController.getUsers); +router.post('/', auth, upload.single('picture'), userController.createUser); +router.get('/:id', auth, userController.getUserById); +router.put('/:id', auth, userController.updateUser); +router.delete('/:id', auth, userController.deleteUser); module.exports = router; diff --git a/uploads/873409ad6aa037c801ba38a04be33200 b/uploads/873409ad6aa037c801ba38a04be33200 new file mode 100644 index 0000000000000000000000000000000000000000..8c4a3778fdedfb4b9b3dcce174cdcfc7ba856fdc GIT binary patch literal 39375 zcmbrlWl&u~(=N*1xVyW%ySux)6Wk>@Y}`G#yGxMZunF!iL4rF3Cpb6nd+t5w`*VMt zt~Fgx%k009C50$E;8N&^A{67-)22l-E9bawgWp8%nzq$Mru zsssxQ3kCTf{r@Cb7#L`1XaE2J1OhS9Pz6==f&az-%LfVy>YwR<`u{J_e;fxJ3-Z6w z{>6lYgJq&3SR_O z=ii+heb8OD)tY}cP<=PnFjk&Y9O2cN0-CSOx}W&|JlpoR&~ZQB^f=vmH(c|%3I1H^ z{@fpZIaqmI==r-k^!$6~^=#+m@&5hg`Q!cV_4@4d^K-GWd~a-UqqAiy_uJX>!tLRH zkB>u>g>IdZdX1iPm9~7VgV|uX&qPXixvEr&oY2+v^=4U&qP(1>goL!TtgMWzxVWUK z$UhRLBqRIBMMcE~1O&yz#ARgV6cm&srKE+0ML0P*>F61Fd3YrxBvn<_v~~2%Ev&3; z?L54``UM20rl-fm#T6D6)zsFxx_KCxnCt2p^6~Pqu&}oM_|esFSw(V%jnp+zJc+-;l#xy3=IsZC@D2GwaH0I3%eR8F182vSDU7P;^5(bt1Df& zKbF%_-}t!I(KXQ1H`3P8SJyR`*EWl_md$mL_+q3p>CL?AM|T=bb{$Ik6hZP9MIt0B z(e1{%A4K&KPWl-`Sm!DvrfbbFEO{43auG~?6+#?0b}B;ypKna-FOK?|NOqIJ)n-M) zhy%Uij6G~iu;oo+&WD|tDrPBkAzcNagw~mex8}D z3da)&yUvz*$c@(8(OtvdJ4Tl|K$G1ixKRnH~6(yOSo>f*Eh_Ot2nGob6RlrZ~Nhwgqo<~v*3ZN@QIgz?xVo&qkpE#?iwQq z2mpkqhKeQxvvp+M(A9B@0u??Qlu_5_oSW$9d)7-yfEGO8!@q^}e?>%evR1+1vX%A! zzexXE|DQGcU%LMPz-QU##{b6u2dKvMVt#&pd_Mgj)&E3Q|F2;C&xc0z^RqHie|-P* zv;RNp#s9ER@Bi}uvL9JzMBjCKARy9%}MV?=)=)8pW_3o06DKq)3 zX!H=ovI+}o#IH0CMf<{=kno#rqj;yT{XuyR=22-()e`I6Y1cwF)Zi*jYteo-g<*utL&ohOZ+%m%^mVcOhbBP&JK_U&9Nr8Y3a~V1?C| zGa^mp22GL{RU;v7AM~b|uU!`G7bPQ(M48e_9HT#OaHKkQzLV6=O#6>n3U8v7N9>{= z5;*&H1o3PaU)*CY+dmcVlvMH&%1OLUtl{@fvV;|sGE95W5emz1n*t@-m;F*jP^LV_ zc!X7ju^;!=WmLIxk6kYxl%~f`ei>D-Hr~JuNzX3p+S#!(!0`&}YU91(oQ}WjX8dBD zn9VI+UaAH;bQ2z0;Wc*oU7(8+7qTpY^vczH# zwn}qpg>)f5!GXBq+o!VV2|xJVzOOne=*fC<8(DODns*m3@z~D(n14DnD$+9Oye-Ml z?pnX9mrC>bY=D&h>O&vE_7W;bIti?*~sP-`kg5MzFy}cd>2k zaM_@b^igvlmcH)t-r+{`(!6JzcN8pR&NC6x!REv0av;{9ulVXM?cJr_CX_4{Y?!mX z;%<(J^cw-A6W!|(^*NwAM~@`t{N(HOMR!pu;rsYby>Bw*P3MzGEO{=ga`U)gZ)90# zezPWpE=^dwLFc09qhyM)%QR2b)nRSW`QenU8Oao}pYkw9*|FSH{Dc_Jo``w}e4!R$ zfVNKPRq7_#0H-6h4yGB+^-C`Dg>)$6;J8pk1FjJ{dUWkuRGcqD%MOAeQ2oa(DFvjj z51(dsr7OBoF*WWX-Dfe&lp-C2FKS>uA)J^iFccy{I1mF5POPK3{D}G>L~PQb}iT$jxTK@m@l_-ZruMw^-;Zu z6y9-6`uCW3v@T>hn=AGBv@YJE;L;Iu9`x69j^ zn7gr9?ttABh9uD z)LTfcE8Dz<87IEcDJzVK8MsTVr4;Fh+IdZ3|tp3a7g#$1KHy{OG0q0btXtG3Bddt zS87Eloi>mNTt^BPOk~K@khgPTfamaW4D1m@ihhuCb)6L z7z((A@RF6Oc}$EfcTi!Le)dF{pkGHZb6?QOLA@1=;(z7(3&cw}QeXtRsM*W_KbSb? zkl<``hQVrn9jQ=}TL%dcw`dJ@xqUUCP2RW$GX&;%qvx{cONLAX`g!5rWt{gPtTj{3 zg@)lx{Ns0q+Z}JHC_gSc3XWfL+Z}}m+h|v?Tbu;1X?Cq~hFh%CazqzT%fLUb0{Efc z9F1{lCrRJf7$%x)ax0uSx-NfPeDDTxFOI)AFr`&RO9Y=E`WAfob*E*wp>m|;4c>UM zL&xq8)JIA3{%m_yy+F6ws;i&2ta^0&{;SLPX!G!F?K*cF-#iiIsj@q_ok%N#K#+$P zhSA!G8&!@=Ra}^!v42ez0A81p@N4nAk>cLfE?d4HN@2unB;)i6!`P}w13(B!)lYXiUKy&D;RT40VL<15T4UH2tK zuO5lO1!Ti3SIf!+@lQQwuuENAC%dlf0j$A;p@ViXMSR=adt4h!ca<#52_D;ReiQ^Q zNLzf+gkGRo^d!rkl2BGo0%S9>uQHB#3t8=TrSI^JVZLbv+7R~;KxSLULE(ww!v}gI zETpQy7-bG5K*I$aIKV%~qUTAYemMP;^cZglrCn)?hhYE(5dP4}g3IW6rbR4{P(Dmh zc<{_{Gqg{58*tZra7}YLX5WFtOp#)s(T7nxaqfRr4ox8jrDrQ22T4B4APXuCg+QD+1&TGf z*-(O$Bta=M!MKcS!#uz@I3j|dD1yqkK#3YCKoAs<>}@%YCqI}1>PZ}q&2~xp6>>xp z>IneHcCIap3*Ga8w&PDO)@@|=L~HF?I@Fn@T0<@dg1ZiWoM};X%0mRx_IlIw{uPM2 zpc^-{8l2lakt1Qd`urr^AO!OCb@@5PZQ9&KEzC4~1Tp8q0&7H-@^*h_fY;<0pv6cwcgoVsUd zKeo{(3pJdzODx^=c=f591Y z!}N3>62sflXEx%yhzr&^j6|``D9qhFv6L4w^b#;3*MFvmr-G<<1cg8K7-7uvLrgZ3 z08&KOW~DFTP_3F^&PY_ytPk-O>89B0yCnVzNiR8|{$Rj(5NMyi(+PV&%K_Q@6%8^* z>{#r#(32MX$ge0W8RtBX^X*q_4S9iRn=tNPPgBV@YhWP zUT=t&d_fx+klBR81ovXgaHH(J1U`vSt@okeQI|xc1c-TfOJa&u1W10DVFOQd`Ks>& zWx^P9EA>i^FUt84yQ6;hb#$=J&ULbLH)3tk$5;U7gR*&yp_EAUI^6Sx2d3*r;-Q?U zBKIOqZft;y5e=*R{zt(8Js47!5^y=P4t2ReIOd>Ur;K`AzUrkM0p=`=$cGGhl~uB= z5R86^!K+Ot6bpgI-}7y;R{%2}L?lq&G>QlwVX950sjZ+`LWLkc1wO1RV$2D!nDBN) z|8|9DBS4ZZRS)KSbW)bUPx=^a7%%$VxFS^At8c}Nia*kccg<;SawFOsFD_*V;5h{f zL@oYOlFOE37c4+6tq+{+$q;>lY!KCZyLk^u4IgS(&2ps zso=;{=%k!pumQQ^zwtxB4DM^iYNvV%MDqgv#Si9auKdfRpF-)KuuOJVp#mEGrBO%O zE>uEntq+kml^LT)D=#}=fd=O@z?XoF4Y^6h$aFChwCcHwYKzvm&ze!aCdcqfsEGdc z0UV!{X+i1EPrPr!_Ez;00@WIyTLH66c#S;2m2g9zZh<)Nj)fD9F!Zp7EY0vEWddpI-8GTu10rDTn!kY^845=GS zLG+%oDnh2j&p9iMRgxX>V@}pz46k^pOm$>yf~}Sc7+{qX^pC4+vS2TECoGDA<;r6G zaN=OovGXm*avl7(Y?cxINt2zx&WhLmaRG~!Y+z0z+Bnc3;(W3|P_7Yx${&yY761cz zqx>~ZpP^5dBY}-I3q}OCHz=lVERECprRm?)9fZZKu2si=twkoP{b@L!SS)`MIi=8v zhIqGqIK%9QqEf;2Bwl#o{TU-C4U<}(gttN81h;J(%S2@#jY^)@d4cIibPbSCp>1dM zDe(1rqs=l)xdf!2j)gw3nP4%-V`eLZ_hW)kCUQ?+fsHAcD^3xaiCLMB&--N8fS7$?YS`kqD0|K?N-50#2>!cK2;Vdk`@~i(bym>p zftM}3^k@M3^{_63I%*0b%wV~lZUmTf9E~~Z{43%M**S5F0boO9bkp>tcBC$(P?maC zrp4U|uNG7phuNP^S?BUKSi~`d6FBl=vGMtdjTqq&SReAr0fl@n|L{?#s(#74>rRh7 z^aiAkD>BViHCl=2!Sqk5xXe?^su{A>pZ4SwV~Su|T>0pp&H$ccxUo&RASf;QqX{u7 zUuYs0XgvCn9Qv=a1!GJHf}a8puCT$Q&1;A;^ic)ELR$>FS?a;1tRyd|XzuLoQ>KEYZJi=uHSo zAaVg|%}mbcIw?YN-G26WmmE0H*sV}FTV3o>z7%h$3p}~`1N+3IOgdm!%7RTL^^O}k z5JxS7jKy?RRxBJeAjc?eco_jdp$TW@ta?RRMX}S*jpEM_FE=O$eZAvZj6PR*4$sF> z4Kl)ZrH6Wn&rJg*#p)p_Y)(BR*-D6|uqY4$C@F!7h-lX`=s=8i_XJR0`!^1=66zfy zRx_4-+d(Z`GTkeNxLfpV7H#s2T)CIC9f5h8(QaxoURE+8;DQ2Iu8%A8tP0+Yx1pHz zchEih($9yrS1f=x4G^aVEwZDD6Fqqbl)(DZ{k;))Ay(OFfCxxBNNI-4L?#V3svvK` zUW!$Qv0w;sN%jKUb~yka5fVV!UATKu0#G7B$hfYf=b&DTGmsBJH5DG(4Zx0V8V}MS z0n+HyUxnKpQtUu;6qB(~I!F7Q?yOixKAFs=DofVE;i*t{;bM^$ZM@a=W9Rk_V2y0W z@~D2l1HBXHM(!}*EutA03>y4&;6l>FqeYMNJ-;rOt~dq^RoIZ=qd~GUIBXSLc}5MtkFVjx1vc=uEv84% zy!bBsahIL|;cbO?=nzf)XnO5ocDB_fMJ|k@vv@mh1!|kbDuDAVir16T--3x}1*}T| zRKQCZvsKAqxC;Rou8JfThC}=}@@{vJ7Vbd_Wx&E}PhR;)+8?%|Qi=8jOw_-vj5o*! z zu-XAS)tNApmyQ}K**KmKW>)y~xio1X8QKrZAlF`4qg|wb4IsFe1VaCs`UcqmR3V{O z$j8?CLpQDfx`BGGpu3H>ETLN{u<>J=C_1HN8Z;}n!Oh?z#2vu{32aVO^K~vA*EPm zw}=Cku&h_GKa#!R$ihnW=_sT{k;t-W!9Ul6aBKz_F-phh=9N1e()a7^hqYAm$07&T zVLsI@Z5&^s4Yv*^)JB=zJO;hKMvW0RDxHFsb`m<81#+0_SA6zZ>yhDteeVO?? zRfQq*@6}HmX@f*RZUFV`lxRT%Wl|{jMPN)|#AoQD_gm(6h-+6oYatZ=Ip%`!~OTU*MJd=_~nuZ<*hmXha*y9Nlnnxa>HWJoF zI?iHA%bSc1CSqu-y6Q`=cAk*rJDf!pcQ%~QSDZ%SmmxKW&eI(R;#bXao!FDIrF(noS&bkHvJ&zJ!S^?_NZA*t1B05Xtlfj`OKP-oN48KC+niYJMbo z(JRagS{1w6>_fexM6Kks^Qj~Y2aPA6ZjaA+5slKPk2Q#F!^lH17T{HRC9Fm9n`o8= zJxp;A^hYQI;%AGJ|8W=)C^vSj0|55D!3e}I(Y;2eJ-?uqVFhku;+5G6j7q0)Mx?5Q zOA4-XN-L;OB&tG6XD}_da8tU|_~P!G8rT@Ga%wYv3oDwpT`D5JY)9^pO5S2?f;3?F z6!4GoC7M?DCTxfG=s^jLGX;D;Sr47|_DjTXq7!wO+_q%n4I0DHNOAe&OE=hgI-py^tF{ z2SpWS7q|^WBd*?L>tKL@NI4UHy@{oMz|Ff)PR+=6W`6XmPNdqWXNJO%O*^heMn?zI z+I;0DB5s)vX4;=~YsN=xo8;)bK0knJ)zvbu9CEBGc!0v@wYv*-(6TuzG(j)FP)jPm ztyjWIood?(Z8EJhUCw6y<&r!BxI zFlE^e9#zyaYe6%5c$)*-ean-oBT4Z>Dv*vp4X#e5iz!Gz3Je|8Qygw8@fwQ+7^(jN zaJtfl&f#-W32i%h3q@=tZ^&Lz;1MBMx~}Vyf3Ds1I*$rnQ4uH?@P1 zjnCtlb#`v7m}adJYk8ehm|HD|r*C^mb|K6Bw5ySWlp9#o_?(Tm$-Zk+3ksyS3KUJj z97>2n5V%(3i2Y_NtdYQ?exPD97*?8GWI&;nYa)I6%fBCme4 zsi7ljr176e(x?_>$~)7aeaQ?&J4obYvU&+zNGzkMe~wAjL+H*rNoltOv7Olx#F~Xd zmY;=?e^EO#b)Wk6X-QU^7x6Dnid5+-@9q5dUI5vK=*Qzjzl9D67ysR2YtIUX;z5KH z^5Lg7UTyR1J8mxA_S;N-6p>CFFYeLOU7JLEn@>Pgg!)RGHwVt`E}bJ!6qUbVA_GR4 zvbiKSIA5VO-bhe2L0H@eK|Tze+-f9{8@7Uwg18o4x(Wz@2#61vU{T#747oikzMin) zwb~yqKsg`I6h6Uz<;uIO$Cr!Zzmp?LrnS_)7&Qg8EYPM`1sS?dCz}j0rxYnDjjE^) z6rdqB4D~-k_$U=T9erDZc@!XN5mUkEkJ=xS4npYuTzW|B@g5T)#< z%)T%c>#)bf++nnEq4nSEM%>XO_dy8gpCe!L)#AhUb8Bnk;w~IbjPkd4_W6;!K|B`` zc;Tr&9xpEfuRi)a*@1oM?Uk=l)SIkssE<&dY$fPO319Rx(V=9fuLrEE!|^+8;y3do zCU0d`R2m}ly(flQ1EXaeNq@(@FP4_Bx+EpaUFPcI+NORZ4L>rNktY@s5C{qk@Ki8i z*`etcF+o)4X&Ouwyw$yBW+d`uWS)+;p-cUyo>+muvBE{UcYL;ef2@FHzVnBihv?RBYs1=BptO{$zW5m*IRYVY*$OXQ&)D0# zX>&ILY3%~|izJesVodK%R5-u~ApA=$S%={leC zHa%?zA182*jZcX07SUKcATBn(04?0|7riZ>r*f+gZreaqW%34 zh1v$rePLYkMSKIE4lYnLRSb;YxMhUw9EHy^yFGjuOD4AmuuR;6`$oa)$`2XQo1vv$ z{x6gC{qF`NzmQAQ7&Zq($D(zz8oU6IAx z<5DPwdF19?T(3j5Fj+p{h63iYv;|+BMl|2Ah4({8dU)I3<{{wy252vHJ=sLi z{I`@RSVke6beEh&Lw*fJM`)f0+9WnEpjjR)-Jwb(f`nmL5~>VezRd=9vgX0jxFwm zi4kkt5f_*nLn))qq4}B&CfD#jQ7Ot+dR*%32=6 zbcUHM1A)O_t_`uVRU0$YqvU{$HjhA}R0-4O2eRMfuTub^~wC7nK`-atAy`hD1db{o z;GtSK({oK@S0Mt6)cH&e%jYVEiSh*wc*sdazXjBGaeb4_apMltDz+`#w|K%Mc|kDK z9P(xiq=Q67xM^%f2D zF>nrJs*h%{v-`*QNZMQv|omiWmtu%Uw#zPe3<{CIWLPp1g}Z9ky2Jhb~yRZ z3xE2K_7;@afcykghf8U?{i1JrB(`KS`Gs)wmIJT1J7wpaf@;}kwKXmpPWSAHwfUjptu&2tYQ^8?gk0}C{pPx;1FAs&+NVbQWVpWem zsY@|>OokCK)||K8qek3FRtA7g=~k3kaAt3rHsz4RYUZGLjyW5VQEyzDPCeS+;J}|I zYgx1*Uns&zDbXjNzHwL@;u9WX%o?>RJyU%iUJy3+P4c!qH|leWKTDb* znz@N|E49ppqzS&8+MAZziW8=(=<&9i;*f-1XWAq2YdKl= z$dUj1GQrJc?O510i10v7DujN=Y^FQOX+~exZ!WyXOlF&4HDVqhXOAR(n3H5DH~M1D|>_?SDJ4Rjgg z6zJ8J9!=JJhR=r7uncX#_+m;Olq@xC;Ac>je;7)qh77fbf8P60qPXj8e;PAz%eD1v z%SL^Z7fBkSihA_O$EoT9zG<1OxJsx4y2lIvWY<3M$wUO#N3@An>#7cr9 z2~_~)*!@wkkD!GH$r>%L9u8uq=dOyq#t13KTP{Ao@@)W%j7%N%D;QcL1pEp%j2{mv zKM2@*;0+vu{$s+vk&rBI-^L?=HJccJmQsNMR@n@m7es3i)!n&K{#gS)QY_-hyhc)A zrc`FZf5iRM^f${@4d;(IQht`#POkls-?Ew(#}>4um-l4 z22UwXNuLMU<-*$O+#fF-=4b+R_f*7tPknG>|i== z-FBjB6?1!qgjI@&hGY>6TOqtnzxrRjIOG;?2jsME<@Uw;Du;|5NeBtZ>8vl6F2IGP z;Jple^ws+~?FR%MYvxx&=|yW-)sr+wV4$K7^p9xuybOL|*Y{r)_CC4^ATIIGZNp+@;+%Ggwr(a$3OS?m*sEPz!+u z#mzINGGSgHU8Z-^zn88GW{|QJngPyCa{SJ?(4u&spZV`gn5vgM8a2g{nprjBgY4;@ zf7ld3DdEZy2rLy3pEv(?8&`OgS(3Ebs}v*4Gn8(ymCJ7k&%d#u(cFtXBu?+4F?w=V z^*5KR0BK-XsUgh9Ed#+f9nqiP^y$z$ z?<`&xKuf@9(Z#5z+d0+Q>6LovK!L5F>9LIp7kEBRRL!1GnY=Rv^JlgiKReDhy)wGD z*i}Pajsv^W2F2*$)53xKMH4Md%55ulImoe1u)t2o_v*>GdhYf6zZ0*d{FC1OA7)n~ zOA9MNh{Ry$It|$*Lrfj0kS1MB%by;b0~Il;$vZL|9Gkidf&2a_9bI3#ZoAtjdq1}I zV`NId`v|2dl`Wj2_B8dmsmdHIo@xnXD~(vr+fs3KU3)gfiC-L{VOHppzCOZ5hQNZ7 zH;}`u3TD<>mAaLR$R*PZ+G3nzq%6N%Q80h`Lfzik*4xt3-QHd(+QHfnOX}It@_wV~ zoS#`X8#83ZL~tq>K}j$NHD!(b@-yk97f}~KG8FGf-q?HkB>~TNtWMy~i@DE-<6WOY zuJbbgy*JFF+DJq|Kp;}3@6`*5)Pw~G_4c(=a3eQXi!P5k^?L!z8{7Lc`y5u+y#FD*@MuElX#Xte=1vQb?_72a|otfDpY&#sst_Uq|v0FE&H@YL;vZ$lK56smyHN4j19g@6Y1O^J$O>DsA>*+Ew~)4`;u3mp>e9Z<_XTaQ@$ch%2eN%x8pEqg3! z+v8tSv-f1S=#d*~W))5TcUo z(HotF3n+p!MuYd}QN-zY$E-VFi3aRa5?DOj^$x#Zlcg~T(-MFWeD(Bny>3=?V#v#| zb0urVxx<@S@Xh(2$u{0_HArergKLKduq|?$=-cqE`_2EhzYnLmllXi}2(~YAe)l{1oVng*I|0$C6Pmf$6n7$+xu5nPZ3Zli zlPI=SS5i#qG|npo(lkQM&w69d4=N$CdI$MXE2NPWbUL^kbR$occZ<<5vM8)rOm2XDonp52Pg@4S zhl}N5HnJ5^FJ2OAPe0mA(NvnRGnAUvRu&H!F#(*wp!ZKHN=IxRlCD$sq}X9GVsN;^%Yffu93vjbaW$4)RnFE>N1CmSOQ><1LEN2QQIYU ztyl0EjD-gon$nX|mo3_9j-dR0pRJ2E6tA5$ICJ!Qe85}}?k~mFV4L+h zm6=59Qb4+{K}1i#WGxK@&M3Fggds-LRz92KEB1n* zPwL6#^66`s3Ti*A*49AI@R$Uqw*deL?0> zuu5Zb(rCJ0(gBGAI*VVCtyAmUn*tz;r(fgE4qA$av+;$s<$>McH-`8VoEPGFA;0D|}vvoi2ge-;BN`$gjV zwt|AC97SYF+yB*$yTe0cVG~1y=@5Zim-w0v&$yeM$uO=Nn5&V@7G|`>a7Q`m*ISA6 z^O!^G?GR!u=R$;-LHCDT=sxS%(T%1ue^o_Dg4XA3j|P7a#4Vmowq>wlu_217U`!N^ z+4X_o`BcOY!x8t=^#M-RsLZl|$9{>B)gk!}?xJx67so_D(dRxzZ$HK{J69V^Dh0cv z{Bv79@3-!RwVrh@CqRstiWL(KQP|qQxH_9y5^P%)#htrX8^Fu&Gvh{Rkw9hO0hDQq~zNS z>>aM0-pq`Sy)flJd*VHJcm#A|f5qo%LPzC>`KHO?7!MuJ010xilLN2oiD|-;{TUjd zf@VH)TvgFvgbuJp)o}OcI*WhBD0Rk04n*3^e5^fr{&*aZ+Zy{F1+HN7>GEyv4JJXh z$s_dV;91%ORa0T>D3}5a&D{*IyUu_`7J$(NFuSzV0<0$^mat-cmaF_LFtthe?8Q@n zfItY&IqmF1+w=VGoRn-U$rxi`XOCm0Uzq=Qa5uJ0UM_1h7DAG;2 z)JW$G`SG_JtK~1TGBe+E8!YvI6we=og5sc)mjt$8BZc2s6Mq6_W1fZ)(YkElY08A;{-bL<5j+cJJnwRZoqwy?7~J6RR}+VedzVs2C#YNm_$9d z9PA-fOV>=BhQ-Z4fYd4ZCfzic$^Nf?p^wQQqc&P7vrc#p;|zHy0k!LmCokB!2UHTh zG@0y)312nLJSe}eM4vxXj-31h$ri_Ju}z8A`Bdo_PzUEUQ%4t0ZW>EW;>^<;iU>_A z8TsuN_hS1B=dD&kE0CIF1;X_C+WSXHvW5+ zPn={|q3nsN-|?cpXBl-m5-QC{bE;^&$Ntdvj62k*zQ`a>oA=t99>QVVf$p5k=r~V^ zBp#|t8~%8PkqLWx(tWZiyLS282L0zfrC+Qbyo!tD`1bbDlAM6kRLsS|BXN9KQS5tZbu-)X*{mL;GM=J>@E(D>yx##&M^PmIZ?E_!p+wn%8t?W zb>+MfQM}~qENce%MU~LTY%Ejs_Y^+eZcmyv6m&na?l-->(6|#`b*Zo?niujCbR8wJ zX4O=Wk1dkE+(3wXi#{hlZPN*cud|`rpY{=AZvASI?4l9oClzjwTR%g3m?Wfh$2z+7 zT#7`c?_oc-`gL)o19X!!Op)CBl&9a?RNq7dLu!K8`iltH*7zVL`}&`A;gZX6pLTzJ zF!!QBB;q>_-fIq)nc%=?L%$T-!73TE3mLY}NKkwabGxSI1 z?q;#@*tDABs^%d?8KO}85S0|-<#+Kom9d};9kAvz5Aq&=Z#H`mV21=*D8hFyb{6r8&Se!*ADp;+%4qV;4>mdwgg`$(Je4vY^h6IB&hjA0z9o+1M!3qOgHuS zM;T|Xr;O@4aU^Ua&77`Iis+-3t%u;efAtmBANo#vUn^KJ{U;9z_>DbU#1U8l1?DZp zkP~(WR&?q8IgN=5d0t&zIpkwJc`2fi0Q=z??7?laK)a^SE&EIW$WZf`3z!*UNzC!q z;w9@GqQ`0*XP^%{ypF#UL(no3fG<^qJ3T_^bbTtp+cSyaE8# zaF+el<8x9e!CF<=*WxLduh>o%XEZOHa@Sda9tTROIz8wBuN`$BFSJ8Hj#r!+n!te9 z-9?G~>jnBQepEgGC%4(-72WyA#2EFfiS;+6QEWMka37`=rE+S0h04?zJtMSOk}?~d zOx+&Km$ce*k6F7BCA^MKb00vIw?yu1WD{}7$aQh|zRz}2?Lg)VAV6mTLWF5OFz|t+ z0m}{2`ShI#nFZT(7mKs#E5t!Z_HcTPg>U8{QcIF4S80`jxCX=iFWF>3%jEB$mis3c z%0uC_6N@8$ZzJaUb0LokrXa78<@n147OEMAK}V6m5Y$fsg;<1#aCu{X=Kat9A9=H< z&-3u5BP*1xe*#8Y?C>orE3nG2B-C{{-L}xnad%c2OJ$BLmHA4_=HZ18cHd{n-*Cwu z+mMkvl8Gvvds`8Tf(acy;>jK`X*^?nv;0Br1EywPz)G^1r#Ob3GCKu|qhAxngVk1IA6Rmt(0ZHzvc4Yu=+BoEhN?Q`KtaOt;K0kv*M$#gb6zq|Lz^QR-HnKM3>nc_3n10bh zQ$@SIMocqSN4ZdiF6*VO zAOscLtyZs(s%yT2B8Xu~b{hE{f(_|6Z27f_NOTH3Z1R52QXaS=Yl%vdRbupDDesNW zPy&XY63knPt!XS8h&-+pk~8GDEF{QJ|J%FE-5yN8J!RD}9tAW{t1rM>=^WTlT55;t zlLlG>-0;+ra2wv7jJ8%;D3DWr zrOx32O6}V6&dmfT%X^!%^A$PMgNJT!m+fA}m;2NmdD?Y@^EzI0k9!Sx?)}ozQa^)5 z!d(yqMoyiKcSJZ;m>9tE6j%^XLHk2W$_xmHX1)cLH~_2Ybc!*$>@JaT=u^my>C^WT zR3MJ2E_wCu2APQX4yhdG+;~F&jbdVjUD&bu=)|~&jo|Z-vWZLBm8zw{2dA0(2vdbO zJCgS$%+bmS4Gup{G`oIAOUa2km%dIjJ~ecD_>*|c33@~wmECt^uoxy^9}g}lF2Lqk zaq5)Gu9I;?g`4CmwUsz|$$k87xK%Op^(;5hDsNaj&W_g8evl3ByRmTCg8YtDAM+H< zAE+qRAb}4Y2VnqY#{a|7RR+Y-^x(V0-L(|A;_h;2arffx?s`Dc;_ePbN^y60FYfNe zi^IqJ?ceOoJeg!Bv)M@^JL zhp0!9ZaE`P;F+nVin&%^dCmqLh1LUYW9pu-16l0|$bXe};oNapHnm4At$Z&^t4t$wGyt2tsEE^3{j`{tUWmN zU5cS_8tEUKj+o9WXayuf(O6woa`&)EAYeN{==7wS;SuCz;L*D)i%L>tR0_#o1juY6 z7=bLvXw}e6S8@{q&q-qV3iH6Nt*wGGiz+C(R^{XTbaado%0>hYsydF$|n z-JV1e?CJ=myH@^zxyyc-p!_7yqL!!R4p$E}{H{sIM2gPYAg7}NFczS)Ql7!roDFGa z14C6%Un*DXSiFafnxpy9<{h&ceZzZ(`*y-y-=^;SeE-E@VW)}`u=cmjdot>GN*kv? zPfGpNrozL@+b4l9pbM=FklB&pepE53DJKDM8ZCA|AT0`M8g9Ox0Ua6I{=ola37?|^ zxs=L$)RA#Vp&_pzzmG%yxyiXT?y9!x-@m_o^)t<_Zuf76shP=_nb!d-^&$600oluJ zN>Ju(mv@=5QgMChy{HX2Jy z{Edb5g;+OvT!E5U4|$k=6WMrSzj)&Oyy@!v!+B8eT1>T<=lt(CUY}!$1-Yorw$h92 zEbmCY&{hfgW=0w2%$Cf@xvw0L`c6GAo6@C47p2|%*J`%|o%8QR2O#Vq{ICN?Y6u+w zgh4nYz6MV^#CX`gf`g@vj}4QtJoRUGp8dPA5PjDsDcSlTay9b<753-*r34Tlzw&oWs1FbWVk4@^?RHRmpu9$^DK zzK^{w&F^2$E7<{n`&BKJ^apxUAj2SIAcs~r z{sM^n5*;E#0NJu4?smIy{%AX9Yp=!()A+}LQbFrC(upr8X34xG<`5~W32>;Q`9tXv zSf%l?pCecW6;)GKwI`vP8;8jO@^_|+k5VKN;skz5a65+()wtg}%sk=UZGaJf%)vIL zl9qm-aHj4)`t$mQVlQp6>3s?b~@a)%FrO_+W&aP>(p= z+`f@srn%&!c@jg!lE?;w&CK9g4ML}VYR4YLc=3G+K(>?n>=marK-e^NS;1vu0;a#a zwhlJUvjU~ed~M=9%9dM;^Hvq*2t;q1PR~V2my8bXr2y;J_^6+SJ zF<5%;=e7h|BRYu=KOnAH9yr|I97-T}WO>v&tH7h$fvRPDR9+zya=#46llGMfoxm8#u~eg;Hlw{zm344kW$LF?GpHRDS;2enMvfdsi(-WrAiQk8Wczgm~8KEClffj90thAVCPAuS5hmZQqcR? z^L6!eUmeMhDcDYG zSHGJ|^0FiDy9#E9&vx+mqAqS6Hhs`ccvXR3LK03yUlYf(gyPzY(e@(S2pEwNqDB%T z-)_tVPsToh{Ybgn*@hmb8JH!Q7;s>bzaIK3a`A2;Lsa|v(^Z=It9=mJy2$PJ^hVYv zJt*KuFI0SL%ViV(Ty*iwqQ~tYqkMx-*lzC`{V5+5I4tVugwhKihmd5-NMGO-F3y#h zGH0z5uck)yCpp=L{tN!m&~K(mCUKC<=|)6Q`&^=8uF5Y0z%j;-T-n6uVYl#=OI#K$ zW1uh??(_-G$0uA+dlGHY&&&0q`Vlx*$59)&07qV$P%O8*t6$|I$8CU=C6quv#;QCn zLzt8#_cQSe6Kj+<95%Qi@n63pD1n0F+B$X?aq?~&YWPwefkKX zcF@BWjp^IJe?_i*j29ybMI~K?0^~1zt2EkqSUfPlFo);z=MjG4@=B$D9l^ktFG@;E zQJ$5iiU5ee6r0r(NamIgS^0*9!A>h?jP>dYtD;(l@uOW}H@Kr~NeKOIABlzSL;xo~ z+z|I(q>^+#-z^#hJnL~!rM3xw%pk7}Ijk%(J|b`k8ED0hUFaN6 zz{V06L1%*jz+jlFYs;Sg@Pc|6Xy3RDB>^3oc(MaFNGB84uyQA7a6nax23_kS-p@La zxohF0m)AR!w@=>*VBVlHL>7U$zy0x&OU8M6D~rnE4tz|T}C{faYBhT zLTocVE?^Bu5J5h{?TyF10o28T0$fXDOAYZ7S&CnUKS7*;+1Zc%9=r`7fqAxhE`5^o zWHYl;dGYqRe=i)+>DP=r{TR$Oa!;1cmqV3ns}#ivQpT<8wYP=M%l;k*<~#)wFjkbp zcmJaKAr$80+w}-|yPneg zmpxtbhBQF1q*&th8JvcE_iSmy=@lBah4yRw@%EdPw0uH?t7v>;8Rd(f{7+8p*#u%W zl%k*|nnen1LpQ)giTRWUZpqX{5TB%*7$@+>T`^g;_=OBQ;PsRyb0EBRvQ|)JO7xck z>EX@uYtn!z^1wv2F~b%JC9l8ImXM6LA|XSj%u0QM(()rf1db1?^wJ{E167F>Z41^6 zv3r`!3Do-U;vMSF;N9PHrA-gZQ==py4w$57b)osdeUU4#5QF`wL$T?*X!%&-dTISW z(7yVE3SEii(`a=&6}{A4{9`g^Lc1)G+M!*%CsExQCTZ=WJmC)BSSScOu=w5LqJ1-y zrwRJ(Rw*kqHKaQJSiYpR*+$p0Uj=vd5)Cvi~pZn&Pi2qD3@ z<3TKBHZ3M?)w%a|V=7G#tSmjT=W-BNl|sZcV#LJWk|2nr>!q3rZ@r~(KsZ8d`atbsP{LTF(#WgQwp`mjYgiMzVV};`3qP=EgzxDNCk&;CJ z#T!HqH09dy1hnSo6L&%hm!Zc+D1!f9Xrt%rH2~5`W)2>of`UL4>QZ@;AJ5$w-qfPP zm4bN271zcI26WA##r_B*Uc<>cjX@UuIZCndLDZpnhoA>)N%ro{=pUEsf;{R992{4w zR!zYISH)r@-`pe^j&Hl@=-W9$(B{lqEyk6L4b~3?3$peN`w=F*JReCKBett>q2NQUQ?R*}8ZyXdUXdvyc3u`TPhwa3N8ue1{ z>K%GHYZ96HgeE`uaQ8OeN3Z0_Kp>LA$J3?E9EC2Jv1^q5eY1fignl|E<_Uvx?=frm zz}8;J(phKg^T^^Gtc@z}4pJ7kG%R+g^V>+MN=7>w;3s2}iNf|O$!8}!yFVF5?B7VR z#|PLC=t6gwh9izN2`*?Pz^BjYnmb5=|I`)Zy_j?g>6w|CI7ajd%C2kMYYdu|;CL+& z4Atl?>F5}lgKNhNV0a_yK|jrkq;bp#5Ci@6^c`|#x)D@;o{W(kuY9rL8Z`K65Fm)x zOdG~VT9d`s%nvd{`d1JJN&9nfh2NeVr5g9j<0JX4s`ttS59(9 z@P#?0DwyR`=1)%1k6m3N*^-Mtl;xWV#g8RB#Li)gqL+95LS9hRL(b zc@~$nL>Bn%#esz)$`VpWe@{YGbk^4A=H?dHKdwyi_HDN+v2SbB?ad;>zq%;oEJcT_yKfeOcE&Xh*lSJk^y6v0Vkwpt< zxHMxshEsIy9gu#1YB$yFpHMZB`a=JG{3c)g$TtmQH_w_Gq#mQ{IWyKmvsa){(J(sd zqNzZs3EuPLV}NZXy)+WCHDOSAU|hCCHkh)+q-|puol6Zp4ok9Kqpp*d5&P0XhPF@; z-jm+^Iojr{WDGHXBNFl&1QZh%K}SD!@d?}Lm4iXQ1?zHG*laddU!MJ{P)7;;vKSl0 z<@$@MdC+2HDOd-Seae!YICwqu^(75)q4qAn847U)e?_$J_dQzzIjO-R5e|#Xf$%oo z0X!)=oS#o-wA*s|FUW0V2i@O(mpdInSJcv)MtmfCsfP-D&bV2T<(u-=RjNozq%v(G zHa2I&_dpZ=ZIml`DFQc`dx?0Wp-@;<6zhHXG#yZh7k?`xr}LMkF99Z^n$1W`RZR-l zoztRJZ~?rF)eAir+$bx)<=zag?t@ZbdO9U=q82jjqp&eB&C$mqFf?0VjCwe{^vgVB zTRRmhJIX>(d~yfJ1}VzY0NPJxA<)w&=4{=^6K+jg)3^Y6+M^V^L+{%9=nU?wa`)>H zs-|s4xEOe}y5st1m?$1O!O~`80S3!NRs_5!wOqHXvx4@jzx0=_vgz$2`g77g<)7(2Uv?Rgm5ZBV=V1O=;)(9DCnfiq zrVbw$IMF|N9MM(>;Mt-zboPfQ3SS5(yoP%0P9$ zkg;pd(vDL2z;i~DSb|kQ-9qVVy#-zQJ{U#p7di@FkgZ5z*!Nmmld7gw zW3{AOyx%O?V&5QiQ4%Ae6RULpJ})UEuc2vMl09fH+QMP__+lJ#t0FibF$D0K})6HZS0VLZ>x+0{cGTH zbh=6sfdeHisj-8Vg9FscszLyfd$UUBt*Z}G?w!Z=LHi#35h1;y`2kLwtl5{Pp+$A( zo+p|5n7)i!6}p@lAY!wNFrt*`*58SDX;_HSgFx&a>(;^%i10@vvBMveGqq3n&D?+F z%k#>bNLeQ8Juq#>NGJZyr3S)!kC%p7K`fYa-m1F1hQ>A7sU^UszX$9|+|Zv;@t=-X z%#HOgy4Qb&GjJy1g{Vbj2iY$-LcvfHt=>JhoZqX%dW8(Zi71u^{r>S*`6tI6KHw-9 zv4`YxbAD^K=Jq$sm*KT=5Tf8N&SC@aO1Pp8)+W2rnmWe_=JY@m28+uIzpOQ5yI$`g zkByCvOVPNh&!XbNX_>aRF5M4fLdEVooV1`(&;cix{kt?{{8k4lvwiG*IQO~bpRjUf zI;gOZz+|NOAc<*?^b;e)Dudg{wmOv%?gRN4$gqIaOkD$8{yyxopuh6%dL+*adon@s zuW4*s6!9U`mDb9gIEF2$jTXrSNI8nDFdsAlty$#4^V|hI7fAtrI2nsxa5~#_A9O!c z4Z9h#uONjsh))d!t5`b|M^b3%WAEd%x$`EKsDEo#ijelzZVmDDVIecB1~xD=55pQ`S%^wNn;lrvZK7vd-4(zxCF*WF(*v|tk>FLM#JXDQ8k1#s)c#!2#4yfh9DJd{f z$@w+o*tOQBl8^UsXAxiG_Zx5%NM6NAXKv z2;z!r9?HuvB-3>JTy)(39Z957%;I5n*=Vni{nArk6Lw(zJn%b-_0qsXz64SZ71FQ{ zd>j`yu&DCx3C`zPGA0om@}S4*1E(R@Jr1*Cqp$e2+!y-n`8=qOJcVyN_!R4WYY6=N z_e>QpuFhiQJh@IW?moBu{%@P*-bgx)ig~4YE6L_5ER^5hPBrw)WP%Z_>768)DEAo2 zd(!m7sM1E%uh*kN^Qo2n9fIF38>jL0z?R}_XE0Ftt4*NSACZ?zrMkI}4@f8!4ve~$ zdxi7gaUM1ieP8wpX?oxzBy)JY*gg{{4t+CuLdei}=1OPALH7N^t_^aw&6epNPwl<^ zgf33zs$5|+!0TNGvR;AM5V?QmbM@q>ZJsxc5<-MljU^HCMh0zRu$D*%wUMBxO|=tm z3iq!PB)+$hUST+HtGy=ElVr*H#0%)F%Tq`~`E6jcIJ!&DLhogc8-d8{aJ+iJsYj)}T^!TNn6Z<(_OS&k)k_FwIlxnIy2C3&z zee342{Q>HoBKEiJ@t5YqYF5|mhEaiZP)Q~Rp&j7V_lx1yjWqUjIqv17@~eF->+?rI z>_W^0cq}-bN~_@p{~sRe7GJ@H+AS*aB;30DOP$Lhoyh{Lk(u(Af?=t%V91HGCw*Ag zPf2uePgOvR(narnsyY1@$2Wus{@3_z+qJA*A~=N8GGBVI<=I z%;sF%;{I{F|E}iXtf@QZeOx^x(cbVMSO%X*?+fWO1B&Z1IXsUZA3?k;v0BvYSb7yR z(m`^jQMy5Om&awCF)mHo0a?%gfu)<5K1DX*o&mSoElgwp(MP>T4uAo=hX4Nlya8fb621JjpY(DG@xv zA4BlrVEDCKA^1Uh;1I?F+6Gnokc}O>dWhuM|GHbT3A0STNkp z_oo-1`vQDd$!t<_S8JQKkxuimX%lWL8R8CiD=CH+o zccvtcBabYj=y)La=KX?@z&`jsbr8zf9|))sDzJ!q7bfN;fb5 z31DNY#A3$@ERw9hx*QuHl5FK`5Iy&B z58`2s^XidQ7yE_>Qm2oY0o14%kKySN90bs@s{y+Qxw7xpCl9!zjN+Yta9Ae38U3Jm z`p6Z`3j5@v3hqX`61S=4b<0kyxshL>Mw(dKBEXdw&*bSXP4uL3of^Ox=2sSI?wMrw zMRBko{gr`GPedncek!|5AksgNz(676!s2Nf%C&FFpG!&duBPD%(vR*nBcA2@{Z zjG&+PhzZ{scD>$q?m;88cIs>p;Cs`wnLUXr?#`SHBbUf~DlhRO_AZ_U*_ZDOJPDpS z7^z5k2xJV>rqVRf|}kDz1xac1wB8z9qfNfFpw)(5Xi{ zDyDtTHb2w4UfT#XNp60(hU@3_z58rUWq>Wr4(4lYkL`5!x4jn2LD1gY=iV)&$jI5i z%bjt&Bxc8|&CO%r<9G2rESQ~*o$c*y;c#D7xo(cC4h&n-ya1q`MiVJBdX_EF>4$QO zkf%SiG?y3LOA-a)>UX-GG`Ia_t$|KB z?VETrpq?rs7^cF=y)PEcq*nL8DcT(89t~k-LLsYFFhwyN8+Q-QY&-o^JtA>vAd=xj z9L!NZ{+W*A1EnwrM8q`n!HRxi66817dUQamLt&ukeGyW)Wvbd-*5^GJqo9%ac#;^9 z7o4<+9WpACcBmu^Xciudm$uWm&oS(R`qOx@-<~X3v~6r{O=fmP3WMcmgZXlFI1{{4 zh?1R1di#=|4rX)u+Ar=ep^#WAV16MnD{vs4Ind`V&(~>%hLhm8QKHdRQ=fCbOF3d1 zHM_||CjNW3a5M*JCjQcVDhO17w!CtnlOgeXh7U{CY^Wqo#MIJ8+^)9p37Ma(SpVibGt!tUl0|c<5N?16Q}xOeds@aRiq`EZ=^vwTZ6qXkE`-~GbsI= z5zXs*O|_h(%7z3=a{qnb4>-^k(H2mSfbT z1vbp(BuNas7g`P#Z8nB2_d%Q~U%OTuND7$<23Y~I&xDrfz3k?nVz7yLq<7bTgA zviMHN)7DwC68W+lOk)7!b=@QUOUg|iCCdoSVQhg;bmIX;XLVw!qJcZou&HK2P+ZuG z>p#r}F=%}1tu?E-xxP+eo-%0D_=yi9pEf$WRS*{{b$ROU_|)~*$>W_!#<-PqulPXB z)W!RbIrSSZ+BSlQ_<9I4IftTx`cmFVj@*lN5wv>f6In%@5{T>ZFU;uX2s zHj=cU94~@6_e|`nT1eif0vdKvy~1n35e7C4ihzpY?r-qmz?>&e+58Y5=O$l#`*@kB zsdIVZz+Ml9c&Wr(Q-DvvTLAbWg%F%G7-kiK-Z04NDfOl=1jo~oNnT|0`qqIG2n%?4 zIFRlK6v=r@7Ypck=J|b%ETp@j&`tu+Iu553>Yb`yB#d*Zc?>I-UkHeKkUEL!YMuw%9Ps1K{~Q)hu!SY#xO9+V)7-WKy9mzt4-sO@bHg&t82Qpd+bVN zDm^R8he1z^s^%p}{x{mjDuf!B4KH8v&j2&g z%(p$?NYxD09)q{8Vir;ciEz-zFlI*x&K-t{NQAPg9b=mRJ%j_9x(V9mqzEF4@> z?-A??@gY*sKqe8(;x{|T3@78)6XEr#ImN1xJMuoA%8Dplf(-fW*fdBKz3QR^2&|-E z^4N59jxYo$x_GfnZY;KYfd_qL1BQbOLr8mBjFMv(A0gH_mWB<{`pXI=;bhV){+Ev5 z+Ae+Lfd2jq**BiBS(gf6h+OhB^udc2=FAx$E14pXlVv3W!0N>kj^x9sFrA4I&2~1jwa78BIqT{(R0Ab2@Bu2d#9^ zX{P^2LC{Sf%tIPDPs2~*cm3V>J(wmhF;f-qKbj;7lU^HwH+*=_!}&HCbkuVvD+i_~ z-PQW73)j&jV|B6dFR!$X3*-$6IY#@4vCUo6fvNb=hcn33cjqF4rV`vYc+xhxqcdk zHU+UU$pt4W)t_vyH%$235*;N-0*V!3V+^{5?bGQv{r_uD@A~LL9;!SqTTJr#Yndq= zRK2pi0bvs)*Us;zPOcjc3~qd7!~af;NYgrJ<;}2I{w&W!bX@;!kJlKa0FAWxe_ksB zKJM+n2LX8de-x~WV@nV_CCGLgDqV8^AG^%^FMKRrd1#;s3-iD)$mi7U);Ee_KGMb(OFAhPfuqtVNRT&9JUHxKSS^b9l;`~hG z3`{21&FW%B7!`3^i1YE%U7cp5dbvLL?Y;SVf=C*~WSmvaI=t!9 z1NDY=AvXu^Z@-gV+d9nv7Wyv$-r&ku!B1eKqp@28#9?U4#=;9l_4Nw1Xkvw) zK|+02+ee?1_&_gk8suC@MVLPJoOLql4N#! z8&vYAFCD%uf)(@FiLM;0?>N7)L(PjWdtO4D>RG;=$DmDHB-rn>P*mYR<%ApE9_hh-eJyI8Q^H?G9br9MxjE zKjx>0sE4~xCuYvwt10FXTbft9@7FAoL`OqhGXiQeQT$@Mp=x(e@@vJ&X zHlg2LKDtsF7ZQ5N?km(ZP86Ikl5bn9Jd}%e$cGuIW>%`_SeEMSewi)ccIVxqe#-Fm z*lesxZVB)(F)`VHYi;*$&YiH;;1F{1nteyBYx0Y3%29C6Bhj2P=ni8BB7DJ{PkbqK z9Py+)`C2^z_EWU;{hq=>y%l^1L+A7+`9y^g>*@a`$&p^$WytK^ah{>q!t^QkZbHs% zvy<$@A&j)`HR&6Z8Oxy&wS)eg_aRyY%cJrYt@pdCtW;xaY~QZI_vd z!wZl|yKjOk?`Mljz{A~{I4rk4nn~`(SgP|t%(#Ypk)I7YNaRXi6TE`;|HOM81d|p zDYninPGCBC;R*4RCmO_R4K{Q)ZH+^7%{SNRE`niS_S=&oi5ooi^8dMjFhVtf(8zZjA>8+KHBV+2y0|68ZZ*kH=b(oA|;a2_M(=~6Qg zD)IE3CBM7{)k0IwuNUl3UggGOiiCv+14 zfj20%9bA=~BpR0EZ3~r}Jy8KpC=ocx&go%g>Mg03lN}msQoJFA-`g-r)*!-w4Kl-& zEE#arY=H0oVc^(6)p?%5(H`KD&q)0_j1I~6HD;szZj6BHVORWDTO>n04N|yA7}_oc zmny=Pjmw(~c@p`J8V>9@k2t)Sy#q_Z@*}*2!{d-x-L?XNAcpPMc+o1$#zPkJy|u!zs#b zggp((t#Ii5F0u69zP4!nxpd$ zTS+U|t^Bvg@FNERcxNsq0-@>86nK(O%#*jQ0lB6CP+6O9#n``!vZfIVFs{|_L*sQc z02Uw5Ar50Im6=xp#y=G`1^nJaa@ihE;31Lq620 zb6Rh9mH7}lp?A%@rJg+#dc@kb#49{BHCCqh3p{@?93>UCuiU!)>PAc`1iA;U|18RQcWW}c!>rLK`~J@L@2Z5H1POH z3F$!sxG^?^jWNw(=)Ytmd2GKW*F7(reWGQqQi00Ktn1E9_TcI*lz z*p(50)HPnw%@D9U~Draj^|gYXm2BtV$JF zJy?xjccv)_JZwxte=P$gbCC=;)_!2b9!G7rM;D$WuulB=`d#epahg7H zcQ-DnUJz2G{s`X1r66t^Zd=c>ya6-8`eAHoDpGy08su@B-cZ$B4~R zctHYk;la6Yw&O$r%QA_)1&Z2b06MP!HAnlI}}Hk8fb8mOOF z$SO;AAnS(xX=fZ`6)B*jeft)Ig=H( zOotTi?2z!RpvX~(I69GIQcfcwJn9Vk&Q6U!Fev^VO&@(*uVnNxaWfO!V1ePd<$UZU zkN85Dz0W{3o-N?@{78TJWs936BVVp)t=zg9!P44m+LNu+`4_(N{!NroNa@2yFCtq7~fUKYMc@{uEn zOhK;yh&kAaFbX0%!KlGUp;TA?)PjiR=&Jh=RfshwaE3XNA@G-Ly8N&KbBD*7bj%|{ zgwEzu1N0w`8;>=b?)5u{?^~46Ja?Ih5Bo+OPsj9CTweP>`%Dk-e#CxuixK9v2Yxch zv&L=8>}M`9zG>R+xizNy8!e8zHX=3pDMCW^=8n-CRBJu)tym0f)2PZ+g-*T2E0JfG zN7~J?js&wly^Q(UqwbI7+!)-vUk6j(#IX4uXZGb}%vZ%;|d4y;e4DvVDxODEIb!=MbX}E>yWMRwDoW!+IvF^U)JMLWmty z2qcEtMR1@Ke`SXU^f&%=?_A^~uTQI_``G!Mu68urP~=>gfa$Q;g2>owNT2I!g5%~; z7x%|&J8D~NYil}{Sr@;bnvq9z#-J&o1<^diJ)HhTzqF`&KcjKzdR_P?{64_E@v>hv zDbdaRdXjqAr0;cu*Y)sNHN=!RAG#24ieEqwK$##XVgJ*wCW$*m$JK{igoDB{4ZqbM zKxLpfsR#D{Y*(;Jh0z>w$c)0g#ebp0l$I3+!KO0|zTY6I`#9{hP1{5v3BGa@L_dRS zz~s0$eOpBVf-HZb@fw>Qdj*NwddD?1TGceGTSAZ zw`m@H^$%Hor72|W?3_zV`G#~+!et$uq} zgCA3(jjCXJwXY1M?3b9F)mZwDPB9U#4tD6y6C3}iQ_XogA0Y*5cHRJc*>I3G2W zOpW~qBc}84Abdo=V%=pT>V^nQOSMIx8SVPu#E{A!7@eqbq`w#F&k&&TXV;-GtX3Y= zw?t};8dGJS>Youj>2K>oo5JcJ85w3^LB}ubf9Tk6SlisA^67V(E%+z=*Id&_w^|66 zm1~2Bvgi37$vqx~%J98jls(^)f%sApmh^f6lrs|NGJ=h+EzA*ui+cQ^1QqwRXkPQ{ zE=7mz!#^-X54GM7 zNotb;oJAl9C(IKWAY5;47LEj!9#gj4`FElD(3NccKfK82m#GJIWbxMxOAf*!3iyb8 zsXT4}yb4L1ES=v44NWF^Q}W=FEv)0;@YvOR3KW3xoQgUObU8t;^+jRUXqNYDdQO^+ z2PG4PVH9o@>eOWG--Zz$PId7tf{(;(6pqSSu_1WAW!=cV;J#Kp){Mm-JlEN@QoW+h zLV0)|MIeEq(B|jBAZXS+A94%It%jlBK_+FNVR5P63R~qa{C&ed66os^2w7C_CUst%nZqp;G>n)&zBs?9&}+$Uz`q?DQ94+ z9d}PmEWT_F9GkpiJw!xsz|~OA`7rxkWkMl6TrI)8$R6T%iOk@Po8@ZthbngWrd_kGFl54L;7#WbZ{&iedRJ zJP5RWf(Q1|pX$|7jc79mhfbPxSV_AQ_orH>{-Kz!9%2ckAu2vZVq~{+w%Q6C-c# zW@8-OUsdYH(X&i@4TCk^KGt<4(Qi37cyUfwXrI3Dkg2>+s(`&0{x!V63c>L?8tLy< zL&G5V47ri%dwJj!_}`6u+QqqyR(vOjRs@R@s)y6%3te}P09@B4|APMviEPeE|MWmL z0+ctr(C;DMS>Sl@(SDta^OhytEUYwx*9a#WQn@@i%&kI@dgWIIcD?U5Z9Wb72uoyN zg{@)LKdJ!$9k)glDzjqEm)C7oQQF?ZFcRY*gh~5@#VOe+o^q~A zB>prDIR0$b+|VcsY*l97`o_otz1V2#epW=5m)%eh{R2tyZTnDIaY!Jm41(!-jH6oV zVdxY5<&aA=0QEaCZu%=p=gg7@(O^jIM!-!H$p5BT18DGca131((6x&d2dk}@+^!z7 zb<~h)ncw)j6WxF4Rq)T!mGF#%RCFjCP}eHpPR>#z*5aL zILIQ%x?MWacR2mkL5r{bDuOi%a?$Rg1MIp}sDNDfo;Im~MNcmoLB=y!iWA`*KZD=Y z1c+rxmrB*A%{k?3sKZZWcDYWBC2TBpEp;Phb1gtZ-$9*^gJW3r{o&&Ju0JIZiay&z zLnC8&j*JQuCf39Ayigxee97bNt1HeV3{qksn+z??F%S@H6FVc zJ|w2Pn=2VRE@_K-I$d}q%{Yl+uydU6g`z5Mu!$t+{?IFh%8U|kN(?8wm$!=@qP=gG z^@<7Xm-ooSl#^8(7xur`q+6H@c#W-kGn^iMeGs^Jeh{GT>v$pLq|c z40izN3O`rQ6r3m8H?4Cj={VQ#p?uP@p?c=fZP5`Eu?z_)Z>Qq-PQEzYGjH~Ns zua>4|li90r3t(08yUw3?@)sh5r^1-=zG~kuSRYP~tzeL24&{#;7em5OGwp-G$G+16 zbM3OCDUIWtNWO2xmbF$D?RuIm1{Kw-8|F1p@dKCNPsc6j?cIXSuEdujSR zb!K=~+dugGN3VQs5Ih@mK$bLWNvYNze* z7-biZpd7Jv<-}|Qdv-Vmz47+9akxZ(oAna4YEb+_;cIL}P4=$=#{*_cZ~>HGc< zV?)r)Ry3VB)K(vKHIo}28y>7DSpzFI?W(&!dveq6`w0vw;#HG#mh&(ztvo>|jnYl^ z5W4I7f%r|GxwB@zFj-WMH)cKXQWfCXxR;OVA3JHjipmgBxYKFh2-wRsNfsqNYy~{D zqZ%@Wx+`o4_g>$HhZSrZjz*S~vN6DP1=F|V!$74CdknnN4-x`|KLfnjHdN=*rkdD! zJ}2vJOf({S7m5a0Bp%Hp1e>3gU&q%otwv~rl-zl`!=sx=zOzKJe}gl@&& zvbb>c;--o4o_$nnqVa|yafN;h*9?Ue!geddcke3!N#Ji}amwb=n=ngH#PI3$0Be5I z$m%ffqtU};a$Eb#57tUK@gCJMuuWyMSUizR5DUX5VOmje74R}2aP)=@so@LQ&R7)f zb{SC7pYSKHz$WEg1cBFFs;K3x0kz}=>}ir(?1B6Y14iJrl9W#wGH5CLa!}geAw@tX zD1e@`K?{?c5GtwWp+lEsoH5CGCP9^8Zin(|$P5(Np?1#TmJ$Mg(_T3C;_Jq99UmKE z8hUW8r|{?Wan){7PVxtSdN?6~GcDnLwwc+#(WZf4?2YxFUAiYXQlELZ^&`~eEeAz| zFmftI2cTtNg2u9_`2!e#Y+7_-g5)lA1>t9yhp-SLVDU7sN1ey**#F%hwgLPBcUiT$ zk9EQYFs@+Sd?kT$B#6CN!!U+jjQBt5YzB92 z4RDTW-#s6J7~SXCTVQ-xE}s|AaMwvatgAlZslg#V*vysScJK!&d>!uy_=kZsylI}# z7GRM%|LdR0LOx;_YwlwIt`Z|?9tynN4O(>eaqdaPl3FUK^ss;eE3@DJu#DH+WIBj0 zc^kNG4DZ)NQRy0zGFhBgS1PRRLk)08{^C`SL|i7vg( zqt+|}6;R;hZLx|-SQ(5L7SDhK0%MXHK{?Egp&U{Qqq0`Y30CVXK_|;$0X_lR67n1O zF*PUdDb3r&qU;x4&(O?79x)FTm1D!kyyTq(G{yoqny~)55uE}Iwc(Lr8wTYaA`v%} zfXbek7_BD#o(Y=vfi1>TK9V?Z)1QKoqlp1rfYG^2y&BPib#mC`FB7?675&3>JSFU8 z>{gePVWN2zxehISPGnO5*V=V|!~Hek-PQYQtFyZ3M3fL#jcBVyB%%`pi7r^{LzdM` z)Ff(jNf5mRt0#Jw5V3lX=+R%_|KYvA&YZdDo@dUPduQ%Evn%IS(JY*={n4^8F;#~n zzj+FRL%o7Uh|OGqCJEbi?Fi-8EpONKrp(6{$y0p8m8t94B8foT^u=I9lHky#;AbZV z-p{jrW;tS-!X#(ww)mRVz6H=>jTilvXVR17d0T~@CSbk}uR5lGp6+EgakjLIbBG=yhS#ywG&0Rskx%i}f7v>Goa{kLD(O|M? zrnL!F&wcsx`gEckzc#ZW97UD&4nfe)pqqh`4}Tlsk&#bHlL<&yD5|VAjbv0k!&55VrM^r)W3a*oub z`7D3jWHtOFBF+EVNIHymrT`mziZF!H|k$Oo! zP;>{xn?kctRMi97^uE35Pa-h*=({3BM)=cv%=V8O#oV1PH(#$mcf<4>_dlt-H)N|F z;#ehqzegbxPW}+vC%3gT z@w{J}zyqi1IVG|nS;DK$5c?&Z$FC1nh!Xx!md)-zR>@>hPsB{listGjKNPtbHm|^B zO_bOq7T*m<_qX%_W7tl zvdq)*nb-S)cLexZLA9f8=nI!DsvP6cwB*h)eL-Mi=BD4Pd$%T?vJYyLbweqHTP+#JR0!X6S95UwSn*;sJW zGWAaVn06H$dEDdaeSAX|&;CR;n(9YX7ZJ{`3)dul2M>qY6?p}>hyO?$mK@wX zmZO)g^GQV)4_AsSo?e$#pj+8LZy&Yv=10W-qsihbm~V4iZcSa4Am7Qa|4mzI=xZf! zb_7xLN&oVS=+jI#wkuRJ+j6wmxKBmCFgCvN$9fb zTmgAiK%lTl@=fDx$dSJJ-RgVEg)l=>^z0_~l5a7bDwmB14bGk2I-g#Y*Ha3MXBaV` zb5gnBs7!i!xS9p(XJH%(_>C+h zDTE*@?SJV5R7sB+!!6i|2|2`VJ_hUldHUwT9_1C&VqzPPzm4I+k|mf>DO^e@b0_iH zr_Q{IDk;+nV!^6{3>I}g?-DievUMpD!`dE=t<}YcPC%NuARA1fC-d%O?RlHOD@<4# zwDw__ zqH1ZOtN!-b5?1dz?D^>=^%mWxoDG}FTdEl?|5OT6_op`YUo-jfhDPG$cT!vWt(M7X zmE4jmh!_BsR(fg!XLb&%W^96=eo0)LFe)xhs%rP%^cTaZD%9KN$YoID0gss4^d!YM z{}V@pTmX2Em55wOd;WHicrYfOn0!lJlkPq)@a%T1iz#u+A4;Fy`QH%}&X<>8TdG>t z2%dT|eB@bsTbrcmWt-<0np*fV#7qqC<}u8S2?OSSSLSai1@9uOKafYRvCP!+O+(0+ zZZfECUQ{)|e9w!HYWM8se*R>!Xm=O?_crv0uNVdQ8-nfJ_lqq`)d~&0>*-U&lN9n> z*6viS@4W(FHN|b@Tq+t#U%rO)-7onMwb&5le~*YgBTp2i6kN}3uLhj2aOU?z`@cY6 zFGCbH{lImW>B~L72W;lGzzDlO3HC7RtyQ$_I^@i6`~_>kT27gPekrWd3r%vZO?Q8V z_FVA`bT50Xk|CrzOn?kUv-W1hcZTS~`>9?XLt8x_(svVHQ)=HlNjrWN^6u@G`^sb< z%1q4W-ZfbozS0!@`d%qrUyLhr)uVsx_yewO#@h`Mp$YBnUQ_OM93;sQn_ia?9x%5S z0GDvgC9_z4=xZnZcrz@7@^ikBv6#)|1^HE~xQ$vJ959&}qpfY(f_t8jRbG>&& z!iLwZBK;i<RpUJOw_=r@-3vB^no%KeN99rr*cY^| z6J8LScYj;-OEoN>0%RdO5CW4Oc@Yc)=dG~dd`*svwQFCF$KLx>B*QMLV9leUSw?h2 zH6_|i*b_uFB9XQrSi#uUe<6a13&OG!d;N(+^5z!&jSvTZa|{oxmV4WpU6f}OE3p&$ z1oOy=FjcNjr-YEE!@72n?f;183Zt%HhnfAcY;ii+mW2hpjz4|-4+8PRvXPctmX^9D zNA7KL>Q-^<6F2XE6h16w(!`yCp_HP6(Fwdc+kbhU)Sv{E)v%dMHlKDy^{9zEN2PMq z5c1+oBY{gSN@RUS`#LHCKc(sMXFsC zJgi)N+}E`uA^c#2b#4JHI+S*uiGcMDCslKty9@>fO^mAvZ7QQVTiS5*+uOD>Y0Aiw zJP&MYD(3pnirpZtpk0-2EUfva+Ct(2)kM?z zx?b(e%dNdcDHiLKpo_6qbkmg6L*pCxiiz}OIlU#LS!8lhKaauRVyLAP1(;XXGbbcp zyuDqZkug}WrS1mirp6%9G+BAlJ_d4eMIAqz7H=4eah9${pD{0~wQt3>w_pUeerka~KEhuJvwKwF;Tb#+n;27#lk(T%Lmt`a(8bnN$;s74r!C9T?!rc8+gWG%f zq!Gn(Tu2cAFSn8T8QkyB{4Y}Hf$4sJ9xl)m@o8^$A27f7IEsg+Y)avd!vjjNYilyQ zTUST++Bq6Z_?`MVDr(JE&&z#79aDc-Nz%A0UapT7`a9NbcSv>lHDV~sDd9yI%usr8 z0nxvdbL=j}^5zCWQ{s$iwM5F753Gm4dKIwpFb2w+wGDdZVI~npbRaoh0*cv+PU&9v z@pDh{O5lxM_EZ0dmzV9u-C)7%Oo6NZa6W*d~B zzb^NyRdsxea*|H9StyQ#OeFw}fK3bv?Y!O6_K=oAv>QQq=Ez$F0B)>3Zg)8hWGRb_ zZ;u1PG-~ALIbFt7LPF*QOOgY%9zDFhVR-JNaWYaF#_?C}GK{C!+gbg_v)T+1_s;*3 znM=h4eELNZ>u%Ij<(D*7AX-$TpZf7t)K?9^C5~^B0*OSoQvqSW6WSk?`Qt0BMaj%Q zd_-Gbt(W-kiyzz0Rc*72{me9I zcGSn^;tQY7bo7u+I|Lj(#OHZVXJ6P4k#^KZXpB%5pqL{5 zZ~>p90a3Uh{PYbRu`T%X4SRCT^gtD$cf1=~P8^~}2gLwCD$0zgx+KOiZ-{P`e}#?J zhr$IsnLY!=#+L+-(cs63Yytr*jG8=)2_+xxv0DX=Fr|Q#6)ZW9CzOy(Cd)lxx7#%DGI3u z^d1w3MuNszQ#`_mZ^kboLio6^YD?P85k)d$lu{7YSX4(DqsCXqzrM`ZC%5TGY`_8Z z<~5e^XRMB$FoR3I3a$38VJ*b;oU8BWdQo^=bX{N(_fhrq9z8|e_ZI|_`EiGk55YU- z8|>c`=Pmk)*|TK8DpYn=%*l6Ky< z#`4)$li3(Dj>u0kcij2q*Uv`D9^MVvujh{T<&iO+b`S0o^e4E!y5M(57~yEPz8}p# z_Zw8+?1iin$KwzY1*|EsP#X3J`4{|0RvdZNe#%VUHfdGIvaqKm*@)2wJw^e2kG5n1NV)~)$aO(jT?B?F{#*D@m z3h%^Cb0uh>sA+;Q$S%CZI6ZWyvvv(JjU2TH2f#A0`nkE}+N|?2D{Z0(W8~xrVb@~e zoHU6!3Y{l|Ux2TqgPIfsd|+B|%BIZag}t6WqO(E7D(z<5MzR}`I+F)^3W1x; z?4yi$7qayiwM|0=X9`7@aBxnQhzd5@jy#g+Ss8ual{u7C(j7 zBgh3wNCL_i{>a=TDW>+640`D$g8$R=FnZZPhV(cjOLn~weoIX7ClTu_O9fi_Iur6~EUVMmgufjzz376J5zjgQ`T zgj4Bd1H7s`s>wMB#(Wa`kvp(%3bOIQWG=A(Xv?NP+Ydw&5bZj{DzkDAe|{sLkw4_! z#J@zD!9f|PwYxRoxJx}%m% zk)h4q)Cyc5y&=>%_t=R#iH=CRPK0RrH3vPJ6 zuI$d1o$%^q z^8`Npvt_HA^-od(tLp_&$e0DQ!s)T#1CH1 z_+kDTBxC(Qcc^6=8neBA3YKHi6f|LoACBg+fhX5XPGiJ!DGv$V{Pia!c+UvIrRovW zN)AHH(mtk8aQ70a(A9N*NOq9l{B~gWh65(G@CI?=lfMrA^ganIBJkoIFNs`bo!k%+ zNh7joLdZ~sIJH>N$d2FbFO})3fL4C>Zz&y*56KE=^1|-{uTR|c7hZxDH z)d=$-e;~M*tVgH;SKA>6i+ydX+-|iGY6B_; zxr!GZh8UQMPpfJ86|-+MJbDwqQ5dKi9`W2 zMj0*>K1&z!zxD8;0KFIxL+4J#^)E zN>EI>rgq%yn7@QxRymx4G*`zsML>fBdpu^jfd4#h-n8QSvur(cSn9Nu=tY~En#$@r zkPD|Mc}eMM%ngGDs$`gEOzk!S<*snWb9Eo&2h{%kTr}e?>x>hUnmj^^lES>M77ONx z^ah?CnwkgUE_3|3F($vmNZ%t=ED* zM=B_r4*DoFE^Ad$^loQ&qAg3k93#7uWUpY3Ij#%DQ%L6tE7N6^m)H*UtEZ)6nTngb zLf0%L3vrg!Z|9IK>5|K8|Y0>9v3U$AuC}MfG8CiZn@SGlyGQ4l;~6}-2DicXX7pJ1K97LW}Vx! z6kQGIccdQ3pZA@X6Mebhe$2)3ApeymxA0Lc?@ku8AmrDWz;Z?=cdLC^oeEdE7GP`Q zcYI5(vYU)~t2HJOq^>u_y4bnFT$`h*4JZhFECL(o>0sPdd^x~ojcy*J2L{T9wu-Ui z6LUTQ_gd8rC(Frw+>feYpQaX&`m1lhi{CPGiGS!oZ@=Kf8Csz}?SRt}oFeRJo=s<< z{=nhM;{vdFw9(e;`oTkD^Kp~$$V5)@6m4Gq&JbCBy z>W8vb_?eW)JjhuWfmtD~AHG1W01l0dE=GI_&gkS+y#H`+aLjTSS=7?6V{!#<~ zJcb5K-34DDWbWlLY2{Xt=XQUCx9@=tH^x6%zC{1CZ#i|(+N9l&K*$xl%`2;)-DsCq z_pI8oBJgj!*;1*p=S&AY-6_V0n&|kA_n@5o!PZw7>oOACY7gTUO7!u)(46lbre|GE z6_0~&p6{rmQm|WU{=_2-Q@-JsE2q3jLeT$Z{iSeL=E$&A)^7XH+yhMmjdC@cu>S!S C(V^M^ literal 0 HcmV?d00001