From 8f76825cafe5a2992c636204d85a4946d5744a5e Mon Sep 17 00:00:00 2001 From: Maksim Efremov Date: Tue, 24 Dec 2024 20:15:30 +0300 Subject: [PATCH] feat(Job/Statistics): use operation_statistics_descriptions from supported_features [YTFRONT-3522] --- .../{Statistics.scss => StatisticTable.scss} | 8 +- .../StatisticTable/StatisticTable.tsx | 95 +++++++++++++++--- .../ui/components/StatisticTable/Toolbar.tsx | 2 +- .../src/ui/components/StatisticTable/index.ts | 1 + .../src/ui/components/StatisticTable/utils.ts | 19 ++++ .../pages/job/tabs/Statistics/Statistics.scss | 3 + .../pages/job/tabs/Statistics/Statistics.tsx | 3 + .../statistics/OperationStatisticName.scss | 7 -- .../statistics/OperationStatisticName.tsx | 78 ++------------ .../reducers/global/supported-features.ts | 6 +- .../selectors/global/supported-features.ts | 28 +++++- .../pages/operations/jobs.base.screen.ts | 4 +- .../Job---Details-3-chromium-linux.png | Bin 67239 -> 70791 bytes 13 files changed, 150 insertions(+), 104 deletions(-) rename packages/ui/src/ui/components/StatisticTable/{Statistics.scss => StatisticTable.scss} (88%) create mode 100644 packages/ui/src/ui/components/StatisticTable/utils.ts create mode 100644 packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.scss delete mode 100644 packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.scss diff --git a/packages/ui/src/ui/components/StatisticTable/Statistics.scss b/packages/ui/src/ui/components/StatisticTable/StatisticTable.scss similarity index 88% rename from packages/ui/src/ui/components/StatisticTable/Statistics.scss rename to packages/ui/src/ui/components/StatisticTable/StatisticTable.scss index 8f1b59913..06c8e1226 100644 --- a/packages/ui/src/ui/components/StatisticTable/Statistics.scss +++ b/packages/ui/src/ui/components/StatisticTable/StatisticTable.scss @@ -1,4 +1,4 @@ -.job-statistics { +.yt-statistics-table { .elements-toolbar { margin-top: -10px; margin-bottom: 10px; @@ -52,4 +52,10 @@ & &__filter { margin-right: 8px; } + + &__description { + width: 100%; + text-overflow: unset; + white-space: unset; + } } diff --git a/packages/ui/src/ui/components/StatisticTable/StatisticTable.tsx b/packages/ui/src/ui/components/StatisticTable/StatisticTable.tsx index 4ccf83141..2bbbf075b 100644 --- a/packages/ui/src/ui/components/StatisticTable/StatisticTable.tsx +++ b/packages/ui/src/ui/components/StatisticTable/StatisticTable.tsx @@ -3,23 +3,32 @@ import {useSelector} from 'react-redux'; import cn from 'bem-cn-lite'; import Icon from '../Icon/Icon'; -import hammer from '../../common/hammer'; +import format from '../../common/hammer/format'; import ErrorBoundary from '../ErrorBoundary/ErrorBoundary'; import ElementsTableRow from '../ElementsTable/ElementsTable'; +import {ExpandButton} from '../ExpandButton'; import {getFontFamilies} from '../../store/selectors/global/fonts'; +import {Tooltip} from '../../components/Tooltip/Tooltip'; +import MetaTable from '../../components/MetaTable/MetaTable'; +import {Secondary} from '../../components/Text/Text'; import Toolbar from './Toolbar'; import {getMinWidth} from './get-min-width'; import {filterStatisticTree, prepareStatisticTs} from './prepare-statistic.ts'; import {Statistic, StatisticTree, TreeState} from './types'; -import {ExpandButton} from '../ExpandButton'; -import './Statistics.scss'; +import {formatByUnit} from './utils'; +import './StatisticTable.scss'; -const block = cn('job-statistics'); +const block = cn('yt-statistics-table'); export const LEVEL_OFFSET = 40; +export type StatisticInfo = { + description?: string; + unit?: string; +}; + interface TreeItem { name: string; level: number; @@ -34,39 +43,43 @@ interface TreeItem { interface AvgProps { item: TreeItem; + unit?: string; } -function Avg({item}: AvgProps) { +function Avg({item, unit}: AvgProps) { const statistic: Statistic = item.attributes.value as Statistic; if (statistic && statistic.count && statistic.sum) { const result: number = statistic.sum / statistic.count; if (result < 1) { - return hammer.format['Number'](result, {significantDigits: 6}); + return formatByUnit(result, unit, {significantDigits: 6}); } else { - return hammer.format.Number(result); + return formatByUnit(result, unit); } } - return hammer.format.NO_VALUE; + return format.NO_VALUE; } interface StatisticProps { item: TreeItem; aggregation: 'avg' | 'min' | 'max' | 'sum' | 'count' | 'last'; + unit?: string; } -function StatisticTableStaticCell({item, aggregation}: StatisticProps) { +function StatisticTableStaticCell({item, aggregation, unit}: StatisticProps) { if (item.isLeafNode && Boolean(item.attributes.value)) { if (aggregation === 'avg') { - return ; + return ; + } else if (aggregation === 'count') { + return format['Number'](item.attributes?.value?.[aggregation]); } else { - return hammer.format['Number'](item.attributes?.value?.[aggregation]); + return formatByUnit(item.attributes?.value?.[aggregation], unit); } } - return hammer.format.NO_VALUE; + return format.NO_VALUE; } interface ItemState { @@ -81,6 +94,42 @@ interface MetricProps { toggleItemState: Function; renderValue: (item: TreeItem) => React.ReactChild; minWidth?: number; + info?: StatisticInfo; +} + +export function StatisticName({title, info}: {title: React.ReactNode; info?: StatisticInfo}) { + const emptyInfo = !info?.description && !info?.unit; + + return ( + + ) + } + > + {title}{' '} + {!emptyInfo && ( + + + + )} + + ); } export function ExpandedCell({ @@ -89,6 +138,7 @@ export function ExpandedCell({ toggleItemState, minWidth = undefined, renderValue, + info, }: MetricProps) { const offsetStyle = React.useMemo(() => { return {minWidth, paddingLeft: (item?.level || 0) * LEVEL_OFFSET}; @@ -105,7 +155,7 @@ export function ExpandedCell({ - {renderValue(item)} + ); } else { @@ -200,17 +250,21 @@ const useJobStatisticTable = ({ }; export function StatisticTable({ + className, helpUrl, virtual, visibleColumns, fixedHeader, statistic, + getStatisticInfo, }: { + className?: string; helpUrl?: string; virtual?: boolean; fixedHeader?: boolean; statistic: StatisticTree; visibleColumns: Array<'avg' | 'min' | 'max' | 'sum' | 'count' | 'last'>; + getStatisticInfo?: (name: string) => StatisticInfo | undefined; }) { const fontFamilies = useSelector(getFontFamilies); const {items, minWidth, treeState, setTreeState, onFilterChange} = useJobStatisticTable({ @@ -222,6 +276,7 @@ export function StatisticTable({ () => ({ name(item, _, toggleItemState, itemState) { + const info = getStatisticInfo?.(item.name) ?? {}; return ( item?.attributes?.name} + info={info} /> ); }, __default__(item, columnName: ColumnName) { if (item.isLeafNode) { - return ; + const {unit} = getStatisticInfo?.(item.name) ?? {}; + return ( + + ); } return null; }, }) as StatisticTableTemplate, - [minWidth], + [minWidth, getStatisticInfo], ); const tableProps = React.useMemo(() => { return prepareTableProps({ @@ -250,7 +313,7 @@ export function StatisticTable({ return ( -
+
string)> = { + ['ms']: (v, settings) => + format.TimeDuration(Math.round(v!), {format: 'milliseconds', ...settings}), + ['bytes']: (v, settings) => formatBytes(v, settings), + ['bytes * sec']: (v, settings) => formatBytes(v, settings, ' * sec'), + ['ms * bytes']: (v, settings) => formatBytes(v, settings, ' * ms'), + ['Mb*sec']: (v, settings) => formatBytes(v! * 1024 * 1024, settings, ' * sec'), +}; + +function formatBytes(v?: number, settings?: object, suffix = '') { + return isNaN(v!) ? format.NO_VALUE : format.Bytes(Math.round(v!), settings) + suffix; +} + +export function formatByUnit(v?: number, unit?: string, settings?: object) { + const formatFn = UNIT_TO_FORMATTER[unit!] ?? format.Number; + return formatFn?.(v, settings); +} diff --git a/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.scss b/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.scss new file mode 100644 index 000000000..913288d1d --- /dev/null +++ b/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.scss @@ -0,0 +1,3 @@ +.yt-job-statistics { + margin-bottom: 50px; +} diff --git a/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.tsx b/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.tsx index ec0a34df9..674ed0bfb 100644 --- a/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.tsx +++ b/packages/ui/src/ui/pages/job/tabs/Statistics/Statistics.tsx @@ -3,6 +3,7 @@ import {useSelector} from 'react-redux'; import cn from 'bem-cn-lite'; import {getRawStatistic} from '../../../../store/selectors/job/statistics'; +import {getOperationStatisticsDescription} from '../../../../store/selectors/global/supported-features'; import {StatisticTable, StatisticTree} from '../../../../components/StatisticTable'; import {isDocsAllowed} from '../../../../config'; import UIFactory from '../../../../UIFactory'; @@ -13,12 +14,14 @@ const block = cn('yt-job-statistics'); export default function Statistics() { const statistic = useSelector(getRawStatistic); + const {getStatisticInfo} = useSelector(getOperationStatisticsDescription); return ( ); } diff --git a/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.scss b/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.scss deleted file mode 100644 index 0e6fa1fe4..000000000 --- a/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.scss +++ /dev/null @@ -1,7 +0,0 @@ -.operation-statistc-name { - &__description { - width: 100%; - text-overflow: unset; - white-space: unset; - } -} diff --git a/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.tsx b/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.tsx index 314ad9d77..6582c2a28 100644 --- a/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.tsx +++ b/packages/ui/src/ui/pages/operations/OperationDetail/tabs/statistics/OperationStatisticName.tsx @@ -1,85 +1,20 @@ import React from 'react'; import {useSelector} from 'react-redux'; -import find_ from 'lodash/find'; -import cn from 'bem-cn-lite'; - import {getOperationStatisticsDescription} from '../../../../../store/selectors/global/supported-features'; -import MetaTable from '../../../../../components/MetaTable/MetaTable'; import {Tooltip} from '../../../../../components/Tooltip/Tooltip'; -import Icon from '../../../../../components/Icon/Icon'; -import {Secondary} from '../../../../../components/Text/Text'; import format from '../../../../../common/hammer/format'; - -import './OperationStatisticName.scss'; - -const block = cn('operation-statistc-name'); +import {StatisticName, formatByUnit} from '../../../../../components/StatisticTable'; function useStatisticInfo(name: string) { - const {byName, byRegexp} = useSelector(getOperationStatisticsDescription); - - const info = React.useMemo(() => { - const key = name.startsWith('/') ? name.substring('/'.length) : name; - const res = key.endsWith('/$$') ? byName[key.substring(0, key.length - 3)] : byName[key]; - if (res) { - return res; - } - - return find_(byRegexp, ({regexp}) => { - return regexp.test(key); - }); - }, [name, byName, byRegexp]); - - return info; + const {getStatisticInfo} = useSelector(getOperationStatisticsDescription); + return getStatisticInfo(name); } function OperationStatisticNameImpl({name, title}: {name: string; title: string}) { const info = useStatisticInfo(name); - const emptyInfo = !info?.description && !info?.unit; - return ( - - ) - } - > - {title}{' '} - {!emptyInfo && ( - - - - )} - - ); -} - -const UNIT_TO_FORMATTER: Record string> = { - ['ms']: (v, settings) => - format.TimeDuration(Math.round(v!), {format: 'milliseconds', ...settings}), - ['bytes']: (v, settings) => formatBytes(v, settings), - ['bytes * sec']: (v, settings) => formatBytes(v, settings, ' * sec'), - ['ms * bytes']: (v, settings) => formatBytes(v, settings, ' * ms'), - ['Mb*sec']: (v, settings) => formatBytes(v! * 1024 * 1024, settings, ' * sec'), -}; - -function formatBytes(v?: number, settings?: object, suffix = '') { - return isNaN(v!) ? format.NO_VALUE : format.Bytes(Math.round(v!), settings) + suffix; + return ; } function OperationStatisticValueImpl({ @@ -92,11 +27,10 @@ function OperationStatisticValueImpl({ settings?: {significantDigits: number}; }) { const info = useStatisticInfo(name); - const formatFn = UNIT_TO_FORMATTER[info?.unit || '']; - + const asStr = formatByUnit(value, info?.unit, settings); const asNumber = format.Number(value, settings); - return formatFn ? {formatFn(value, settings)} : asNumber; + return asStr !== undefined ? {asStr} : asNumber; } export const OperationStatisticValue = React.memo(OperationStatisticValueImpl); diff --git a/packages/ui/src/ui/store/reducers/global/supported-features.ts b/packages/ui/src/ui/store/reducers/global/supported-features.ts index 24237203c..bce63e86c 100644 --- a/packages/ui/src/ui/store/reducers/global/supported-features.ts +++ b/packages/ui/src/ui/store/reducers/global/supported-features.ts @@ -6,6 +6,7 @@ import { SUPPORTED_FEATURES_SUCCESS, } from '../../../constants/global'; import {mergeStateOnClusterChange} from '../../../store/reducers/utils'; +import type {StatisticInfo} from '../../../components/StatisticTable'; export interface SupportedFeaturesState { loaded: boolean; @@ -22,10 +23,7 @@ export interface SupportedFeaturesState { }; } -export interface OperationStatisticInfo { - description?: string; - unit?: string; -} +export type OperationStatisticInfo = StatisticInfo; const initialState: SupportedFeaturesState = { loaded: false, diff --git a/packages/ui/src/ui/store/selectors/global/supported-features.ts b/packages/ui/src/ui/store/selectors/global/supported-features.ts index 0ab7786d0..55196d611 100644 --- a/packages/ui/src/ui/store/selectors/global/supported-features.ts +++ b/packages/ui/src/ui/store/selectors/global/supported-features.ts @@ -180,9 +180,33 @@ export const getOperationStatisticsDescription = createSelector( } }); + const cache = new Map(); + function putToCache(key: string, info?: OperationStatisticInfo) { + cache.set(key, info); + return info; + } + return { - byName, - byRegexp, + getStatisticInfo: (name: string) => { + if (cache.has(name)) { + return cache.get(name); + } + + const key = name.startsWith('/') ? name.substring('/'.length) : name; + const res = key.endsWith('/$$') + ? byName[key.substring(0, key.length - 3)] + : byName[key]; + if (res) { + return putToCache(name, res); + } + + return putToCache( + name, + find_(byRegexp, ({regexp}) => { + return regexp.test(key); + }), + ); + }, }; }, ); diff --git a/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts b/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts index ecaac5b98..73a2b9089 100644 --- a/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts +++ b/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts @@ -68,7 +68,9 @@ test('Job - Details', async ({page}) => { await test.step('Statistics', async () => { await page.click('.tabs :text("Statistics")'); - await page.waitForSelector('.job-statistics__table-container .job-statistics__group'); + await page.waitForSelector( + '.yt-statistics-table__table-container .yt-statistics-table__group', + ); await expect(page).toHaveScreenshot(); }); diff --git a/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts-snapshots/Job---Details-3-chromium-linux.png b/packages/ui/tests/screenshots/pages/operations/jobs.base.screen.ts-snapshots/Job---Details-3-chromium-linux.png index ec5200a5c4e2d80c09b3d47ffd00f99edf6d3843..43b01d33ecfb77a3a2a677513a82eb2c7f90aca3 100644 GIT binary patch delta 34348 zcmcG0cRNBJZzui(dWast-}{WNK;EQh4Ag z^YwS$@a=snb&gXeP=2#HfB31Ohw?QV^%--9>^g4g!5@_=QaQ_WjRQ`;$bO{ZW;u03 z-A#t`fS0_?5tTO3#G+?N<|513 zx5^!sQ75-c&R_Ov+i=qOe9XzE+8-(livjPP4f!2H={p9zZFjB=zCK9o(%}nOP`B?s zMwi06lsd;ZF%alrvuHUL&6n!M^jJLh2Y*)flcfumtDB^)tgQC#SRxjNi2#59bLYob}NgdHFG=WUNXgPalY*DnEKse z>s(>Z8MfK-^hMtOCc_QH_U#WH($XVEuW7HBoP2a|GTX52skrSzvrXRf3p3_n{+b!n z!?V$`H+J!gmyQmndWB@(D75_rLK5B~L=8W^_&hgt218S1wZh7TZ zRn|5({`BWI$-I31`t{3~A6r|Ave0AgkIne!K0nyQ^5E2uc+wXmV~P?G`5w7;q1o*2 zHc9K0Dq5*k3G*!y;nd8zHgAnYHb zXAm13yX%my%ZnGx%qPyCz5em`dI5{3P#bEG6C2mAs!rIp^XL^_yp)xd2`j6yv999l z*RMy5yYJn z?&LL^8S6TI`n0qU<93e|EDy-5xtD*9w9u;RxDspbLOK8Ph~}>qERro(V~p=rIqzy{ zXfWfykXhHzprO^=u`c_&-mA#S9kjHcyT=}|@4i;Jsz-{Z~Q*1>O77V7Kk8ydR1X>JYaSM)rp@40z|bKTr9NBnEcIO8_+ z(+Sg!xo##ggO;OfhwT-WDl5KN%BHJ6c64L-dFOiuJ@xU>3{&E>FLPjEpuN5Q@w*$} zzIpS6$3W)d#f$Rt@)s^NV&Rv3{VFu{FeF6$dY>u-L$Eh@=hd}kk;y43T?{KpzgA*c zS77~Qu=C_x*r)THlKtz``3BBCaGxI;uUxYKP`)$Ngl~w-#;=Vt{fv5{`>BITTH`qr znv1+gf^~>DJoGP#^7xYU0;vuBEptheCE;%y>@zsm5o41o5>%3^)a`fm@vPjp?rCwD zx_9p$%1z?=J-2-5Zy1t(HyN9-yvU4Lw3)AeV1E_!s=3%7E#`Kr^^)XtN1R;7^+mt2 z=Po_E5|V8EXZtW{Am#)qeRx<)5FW3 zU0J)2a8>?pmG&fRBk4^N*{Z7Uy;0hX=i;c>jNtCGv$J)k-XBojGHUx4fTiReU5Eb8}SjGpA42r20x=|P-$X%qBZoXEE7`f@-eLM}v1bno8q^z^`;Bf2Ig>DT*fe0?dg4HXnh zU%q@<8L2>w7VNQXgwkFE4cJMOmmX<(po zk%_74g+%?L+v}-@nltuC9#OOj{^3qJHaDE(=;%mH)?Yqi__glM#k~I7g!Rm*)T-@( zY*)v+)2J-lX=u2#(yjYz;^bIWR8+=)61|lN4jfPoBIY}o=B9>gYio7hU%BY)oRyGZ zdHS@6i2PQv&{{POjWN5-pFgcl4)gJy-A(CEeD7g9aG>{Fu&_#`yg^d^=;&yn57Tg- z?&IJA{nK+#HjtA~4Z@8_qY zrluw(bvHhKs47||B_$=JDOEVbGZtw|(8+-KVFg7Z>Il z8yf=x0_NuCbTVw>ghg#<58Ry!lvME}Y{{5z$&p*w|01Y_P ze*CuN_l6YHBS(%fiQf=0sbZ7-92s)MVW94?SNC*M3fr=P)SKi-KG>4&cNfPl8jIY z5yP*=GJVjP?JVp{X`E^n>H&Fd{+ynE+Q$zwOtCZ8(i z@UsVX%a8Sp5Pm%8#sZ+xe8CQ#f#wX`Pxt7wCYyRAXYkez+*kh1S%4mzf5Avb1w@c{AkI4H@%KCqCw9JYOt)$kTu_^BdH2xp);nws`o zX3yLW9FuOzJ;(qE@!`V<9b#c(dbDH3iWTS&Z{NOckK8CErnbMPYuI;$X5+?g%KJ1*sOzFU9QG4jw#MwW05RmBj-}$*}UMb*r-H$7Dyf zSFPJTkauk*nH~4D;9wwBA9}%$9iu(g>2Y!9^77uvpB}DSDSeL?pW~HHLFGQ6U$pon z?8a70Q&UrO^T#^VU*t8sQDde$e8g#}sr4^k?*8%PMN<3 zxH94lsY7)Z+1S|JxB*Brl~Z_sm$ayrLJG*s;Fkt2!tHjdL}X>OM<@e5eLj1Lh<&17 z;bvP~+nDU_IwqslG#)2nVqy}&;c`;(ERRf*s+L;jgn8GG-qG!SQ}9Mcs`7p z%%y#7WW?Ra=lsGBe5oIT0kt2^~QHZRqlkFbN#%1Yw&rS`81O__HPmiKo0W^vci}OjPVqyGGpFE+I z{Fq1Nzo&J6nn;K|n9C9x*b z>z}ba{_?*K<$?eID|$fs$YW<(R{XrveU@)*^RgsC_Ne&t*1S%JmC2FRYYyEQBV7z$ z$3uVptHgm&vR|y5?3K&PWvPIS?9oaJ-Q{NRU1m}TZH&Nzv=<=JQWbI|nnRz_x3GcNy_7$uvFqdJ}m8i1mr zZ%9b1H-oTtw$p)O!u?SddI_4|j14Cc5sFI7g~8+_@USL2M=h zP+2yBYq0LEYeRTU3|d1>TpZ^x?TZcA$Tt#x{iFofm38l_@L(5F_(>ej!o?+i-eR`TckEPd+{nh_L4iw1815+aS`0yOOK$sS4$@pkhg0U_+;XDIouuE)*HUMsR`X4+jfGBUb& zk=d)@(pxpvgTk9$SNgXzmoyKkH)(5p5t^(l3HkN7d(N<&R8&{54{&pw=sPPX_Z4+@ z*G^*R-dX`(-T`o*+ITH6n2JdTXk}f+0m9As-Qy^&C@=4!^bFnJN=rM9{Vz%^X5z*- zzB305x5G!7nzFm*j*N`h%}-xdQK`&XoZv?BX7rgF`F>nlTDqwDxTIuaVq(-J%I#o7 z>brN|y9DHSQ@*Jmz~&|B1+7ll9D=Zeo@ilVK`hQhO6)fJ#Q?BKpv~BcXaliqe=f26 zij7UnTfIVX`J?pmMn*kos?m&2&dwlb{r&y*W;Uv-kD{Y{AG4nipQs$V!n3mD%27bx zw6rvQKG+Ty7Z>S%dYmBj)c_8477JEl&l?-glPnK{gPYNY>r0*&48D3Lry;()Y|9D{ ztxl&x`v=^RlaY~;m&ck-i;w4GzMc2|Phw%2!G4g1+5|wB*_2Khu@D7v^$eRqTpnN* zyWZ5gEsS82;26e6Mv8l4Bjuigm59gqjf`9&go5SCfyA@zM%z>P>6oU-74KSNU|)$lP7dJ9D?B^O9OhP0QQ<+gU-=bvL3#Ou7|Hd_fV%Ay z8`pLKQu0s`ZSsvO3AJ$-A`=pFESl4~O5I7=Jd2H;9T?&%pQ*ncRX{NVkG?w)LilOF zZB$fVo}K_|XevQLLF<```O$TLMd2|zeOG(%d%pBUHhJHj(aA^B*Q-o1LODn6{xd6(oyN>KR169Yql)%89A*DOW zSGQNFz5_5)=7v_d|4iVC=4}D0T3UnOzkeSZVx*?##jfh>Gf^NE6ioa)J!J~19@T8w z{$lz{;+nN24F|Qy(c(Qe)Oz3D zv}=;UbBc*MXri>6^3mhR*XjDO=TucyYhJ4#zh5$xJ=#&YW5*6z|E5TVkoecHzm}F> zK12&81?=_s@v!jl+YKg{E-9<2v59#qvT<;5JStb1+GCIP0a{|r8yFm{rK(yL$Y+X0 z5ao~&7k8#fPD7XB!esL0BGU@vFX0o!FFDM42989J|q%+1X;Kq^zt`pF}^Qv1h!0Z`P8D?HLas zfsJ?n{(Y^xz{0b6Tg1s%-+Es2LGRN&5Q+6$wj`h)#KsC=Y5PE6 zQCLvGCm`T<_wHoWT5k^zI$#v=c>F9eH<${g0CE$GFr+8^-23z39n~WNfAu$xZPX#NPQOew3w+yBfy>iY;?$Ws0l4z`P$ZB@0AEa zL79`0m5qM!j)AyOdsuSPx?~LPE8N`E$LBK7Q|DdZbj0dDEH8A4n}0$xH{UP+-TxBw zT1H;PuU~_Ytmy!mr&NP%l<2nMf?LE`{SL{Vb}+IbzLY8?KVVJ{9EsP>+8m_1ScW*DFWcOH1b5A9` z1cK#DiO-+wAd*6G%M4pJbL#YIREN~W#EP1lN$esU8!^Yp*Y_qN_guert+=?jKaci> zsQ#I)%%+~?>T~X#+L=e8$m!_lwA}n~L2?Dhx+(_U(Mzby0A=US(S(!|(<3i@e0*-+ zJSHRK37A&^lCC4k~TUte$7Bz z8|AKD>|(+4N_q~Z#BPY?akE1|`*>zH1RjajXAW!A>3i&0?ojCJdEzCsJ(O?*LqmK(Mq1i3 zxg{0?i@R>1X2+h3JIKZc>7n%7H!B?aTn;i>w2sGm^nDipgM#& zPpYFP!@$lUBWH%xO}}|RAKwH-Pf!^Ae()le+f`8gYHGA`O@|L3hC;e~_ih%Jb~Jn{ zRynnt8_ogeg?S0yN5x%`@c_zzsODy7io_D+8>u7#bm^d7Q&IT^1Y9;X%`mIy5ewlS zOh3K$N^ix!n-XvE7d!92!$L?-PX77xCl-yVkfoOUQ|J!N+T;w{xEJN+fEev^V|JkdWb?o>OP$-@w<9pUQHc<0pbjv@>itQ+oRP0wGX8 zcyQRff%i|CIDTWldtt}P6DRI5iUv|zq3FnGOpJ{5{G@-SmBsjAV`x-V59$ttu2v|8p=}_WDu&@eKtplRpGhQ(xS8E=ZE`bVJcwrs%dI+P*XgW zGmOj#c>K7!s_JVXpKRvc;;zkfJVbtRG5gV@c8l{fU~1sTNrolRXypQOA%+zXoof)3 z$#4+ex48|`2RT;1m>UOR(tz1inF5;k6~GHE_X{IgLm1@5{ zd?J;Q`aRO#uVZ4`N9`VVZ{E%Ny!}pb7wE|Z9+HoT#{*l%vNgZAfmJ<@C^S;%&rb#D z-1t5|gW54Q+?x9K?Nedf_!loOUb@tdro+L>Szz#R^NS7WPRc%yqWxfxu=N&QnW@He7I+J^~#%_b~)bG*4Ci?N1bPX`uo!qF`ev@{T#?5N!qY$ zM{++N`7mZZGiIQm0Q%GX=FJ-bTU^OEK-2JWeYo)8!q7SVvNAk8PD7apDUGCoGloC$ zm2Y*;CEu_?kLM|h+rEAK+O-I*qP^^Nbesl|61MY=ZtsGrRki6NYKv~}Ej$feV|hu* znTBH!dUddn1T$wK2ciRV>tts-PI29rN=hODW(~k-1VwDyA2i1$UwdRT(Gmz6prrJm zljBmVWh-myA7Q>y1tjojde^avt#sZ!d%~cJpenPo6S2iU6sIfFAKQ3W z#J5~Hf|h;ch}XS)5KhfaOk~cS$-3U}Kh1BPv4KtREyG&Zi-v~pa1lGWwX14t3!(q# z=ewU^G49?M=d6$rq`wP37i5Ofk!i4u+qYNu0XAKO{GXkyC^$1aYti^_5Ud(XHu`Fs z)6CdBF*9zEjBgGcgNDnH1CeiIVg#B3die^cH-}bhY(_v3zGFnh4@BAa)$W2iPDeKp z6^oBYnTNZ4=1d9xMTKf>eM3WfMh3Uq8wr^Cb#-rTopgN}%CN(oN1NlNx zQwjt+5sA1tQ zb^0j?wKxwdA(P?(MBw3}o@}H9v8(IP+*U_U#n= z@bOi*wuVTBc@#IJkpu5-W)ON*aA{&hIkylYhc2)|d_e%pjcfM+fK?iAh&rHsf~6dw z2<2v94)>;6#y{OmM2;pLK+JFZeDhL$N=nmCuQr-fRi3laEgAO~*32zl#t+TPJ6>7IFsZ z#Fw1rvLjI-MQS#e7XmYLa|s$LUtmrFUOVQ0zk(KoLfFNy%+MrC|3nSd|3~WgZ~3Rc zB4&ydU_hbVSAw*QgjX-KGDR+-1`TNN4M-o+irfEUYA(!Wzy9z)v;&C$I4v}<1f}>( zQPG2Pm(uQQN1xdWuJ$R!5*aM#8op7MUEWn42Kn#mmq!O+^gC};-JgFoQSCKYn@z)A z89zm~f$<)Rv}eM$7Rb_}hXOsqC>}JckKt zBq?CR>i0A_m~&XI%{;0|n9QIGicV9L2*h&ZO-RD*+_nuiq&Gy9$)Oj+O=(HC!!7vl z35!&wwqvb+aCbVuK9Gw+oNCPbPIyEFGL7?E4wQt)3CPWmj$TJa?Y>RBYu5#&3ocxU zjf(oI{bZyZ^sgbqb{IVY#$i%oqCe*ae_%B0o-&&fl<~7?&#q^N?y|VJ2$vn`!HR;; zm+#JRG~gXj9>mG=UTgbxD=pXCx^%Un!*AWXwc?$BKmZnXr4cWYnII+siwt`H5@n2z zt7hq&vLw9XwPEdIMPp&}=kj4uzZ4MG!L^(MH zYLb~L0$&*Y1HLEj!&XTocrNMb6>QSZw7ZDJRrk2CC;_0{ftCk)ZEj{JDJhxXVMj7Z zu6+MkXlP_)s{Od({{8!3D6&zKKYK>{dxP8K7NVb>t~Vxy_X?R*JnFtfc5AT`klC~ zP0h`a7?8ZGC~>?8CZ>G$EP|i&y^$f{K?r)Bkwi#jBLxM|;lo8=z6ildLVvZk=4I~e zEb;^YmSa64PI~D86KNE4ffirE9f5Kj>*ZApQYJ|69S~3pL#*IzC3=;XrY69HFr(_; zZA6^fTS-}2cA!&n@mBaRg@xUaH#NDYAku23n4ATgbaHaCv6+O8t?yP2+Z5mb*|SWL zCF5Us@A*bxE3l4vB!0%m$Ne5YY*>Rl_NGl;SB|3R2XJWx@)&r63c+z_4u3~_P2!qh z3?Mc{;F)1Zz`F=Jbnzp&VJlbhrNo3?Zh0^zHd9apf--k%<1@CAuSNk6D>uT;J1r|K ztDw-D<(LZ2kds3|)5*9+7rN(#VpPOr?KNJo&y_bNq~-ulkxvpldi3Y%zeh;l>2&Rd z@Ifz*6K?S6&CJZs#c5nev`r{j3557bRT`?2tZ1a9WNhYl%fX$8wiV&8!2!{S#ohlf|~qbl)xmS7Jx zMRYeIRBiAK(dmZkri8h<7Ic2E0zA3?Cu?ZDPEHj4SFG+Bnb0Mkr&T&%06h`E5?`9X zW-q;3>lc|Oap`Qgm1-8S$Mp60o(AN7rCW%JvwkWDO!G3ysS+y@N_ z{D6ati-zKk9BWc#bMcoi_yAa{`?T}AtlT!zwRd%Gr>7So7M&pYA+vz=)qT1n5yiS+ zOG*rE0h7R;pKn_?0)voX^*enwhgw#)7y-z>6eRX1+A9^r%}q_iv`LZQ-IVZ8ir8E- z?p1#N9My3>?5=&ng;aSR9iln?`rvHms2$+X9;thwG)pt3gc!0?`5shg1XYEk{4fF+ zb|TL^d&x2xMya_qxopATNp`ZF+`UZKTU>wWpTCh|l>D6eu?-=mTPP^fiKT2LFo516 zc~enQacjQUH8wuL<)?2nwffeny)XMNZ`ra10()p^=+%x-$bmUJIM}2+PF?sS#+G7; z3WN2Q5Famw^>J&>hVa4oxHwVcig08nyn|M*TIKBQyn%uup3qF&wqu91r~By_@ELXPLvQ8 zMfZb>fY9ancuheFVAzlgb5oJ8UTxaNFE=>^SdPAeM3n|L1^#g7w(tDB(^}W9G&G;| zdC+O#i{@uUMMa(R7X?Wf>8oZpX=nceQ8#MWN8X+0xwqErmw)yib`9*hWLIw{@$C2S z)vWBsQ4P_W2ptsIsUfYM_aQv**uFgl%LqtvD1T4JuNITV2bhetQKX)aY^f;Z9-ESU zg1aYztK-qtW}AV!7bp|Z3`U2jci!hWt9ygx>0bLaSh%*ZP&!jhTU*R&`byK{n)-Y9 z@9$fxWaHwBcz)0K81VjX%1nm|qHjU^cP;9d6h)z%W^7{e<=eLw&_)1{9h@50Xy{;b zzzCNO4Q;Mb-2N+b=*)c`PImSVtF+s`z($}HR}1)XIpA|wXAXwF+6bJB>o(KZy)zFA4AgLTUO?qO z!ow376l7{*g7TO?ALY9@?)O^-vIRQx`SWK065s|fLX@c7Ztqhx!Qc}u;()V|Eb$9Qeq?9<5yAL-GXbX=2;*TIpXcS++eue01jd7hb z;6wa}4;xSEIAyr@_4XFz=g*JiZ9%NpjKA^YM;1}hW~2x|eAo>S6`m-Pb=s{B5sj5=_bY12Ac^@yY z3vVx-gtCw5g&jw-t7{$z7&0ph3k&c%-!~z4EsB_C*^A@q95oqQ8>gq!-oHnHl$D1k zF(Tq_t}Y@2wnFAB_zJvE?cIs_Bmi)tbL!Qx*1whSE&iU8BE9F&p56ESP4^x}W##t4 z!R9V&l?(68Mj<=KhB~ZsBaNELYil!Re;&#M|FxYSxwzR)4-i#XclS1u+mG%P1Iz?| z4QaAi7|jQx3)**As)<1%0c905%@$Vx_q|f=1FuOnOkhNBIqMFK^mC=1`MYHFGX+Imh* z))+9Z5Tk@(5CpjpD*{0e2xu8`Rm6_}OI|i66s0L2sX_oDg5(d=R+NWHqr}w2Yc;Y< zZ~fP-OlFBp^dZT)``-`Bk2L%Iy z7T&PR`XIza5s{`ZUt|ztt*or9ub+Vz&eMSWQcXz-48epgdbcP4<`BI@+y?vF*_m)& z=7wwD&@0-y6nORa_JT*j_i++iLQRHgvUcrS&^+uLEgLA;$rjB*s9V^8L#;VFY}CsA z2;jn~)rZ##8|`A=T1Fq~EG=l$*kI};GKS=tZ%v{s;3h0}P(|==*p@7}Pn= zpbm=+@p)Nc;TRY~f0s{twdO;|DB9L$Mv)%;Ur!H)N;K8gdxwX`;c>t|8}+WDBzkO^ z->SXN&(DX}`bLcdRfKLo7pKpql{cXpu7U~{Bw%S{WrdlFl{Y^W6_FCk;P7ZkzRq!E zEpGq0AD8`?ejM>PLk^%aJ!vlHY%EkB&>>>BH!^@*2QfT9N)~Dg*IT#XpP=JGp+X>o zmVx06IdHeWnHh&)5ppSb)mB#e;Z`GU)r2fDMg#gVVq)E^yxFaztLysgPvfg}r12R9 zS^$Q<*I~+${T%VStfJxzx=LxO?X_#;qoei9o4ct>`V=!Mf_q~*K1W9>PKhh-QCGeeC_{myrd#4 zU#+41Cl_s*cl~ChRSIi8v}s2aC-}$P=4|XZlMnwDe@Y{pB|}_nQJIU9JVHKrmH-kf z7G~+$`G-#WQtq|810%yXSguLC|t7()VN% zMYns!TB59?5`@7Dq+6k5!=2L83+r?@J>6`1z!(M3%$B4A6dGqhR!|7!Jpg69BLdEbj!x^XTepyZ zN0{lPw6w~UpQAqRZnK~;@MDoylw_(N8MKW-`FD|{?x%%E(PwP~3vEpI5{&R15MzgF z!O=3yb#p}~CZNw2ZFPo7L0Dz#NTZ-(zW*5p`oKd;iGsaSMq5ZR6O!pgCZ=Y$R_!^L zPWC`=Z!`wWX=u(}xR8N)IS50Tt{P~~5$EJYX5(U_t-#^K2RJx7$7iZuF2~{al9CQb zXz#swbBNV1`o#++Wo4EYtdEn4-Ve)_@4_`El&Ex+pvWF?rbJ+60}aQ~tL^z9bfDamC(x}r8;O|r@1HpENUjCXxG4el z7CXhnV7>WIUmh}LM0E54VPQuIB#@a%88w7(6O)qQIzNBl48L7VFv3w!z7-Jp}mkZ<68x1p%4>`iE>OWya-N3R;&Kf?S?Ku{1n7~rG`oPdgwqxH>g;D(*4QpyGWi) zZ)9R(m8Jkr3%Xs7zFA>RRjs8J$aHm#|@ir;^$9PoEy{M z*P(0k2bo{I_~7|-3(~;`x|BP11o-;CL3$8-gT`wDx$R%eB>QMgM%r@6HdB(w zLECYtUjIaHEcSo;3vM%}w9VrL^v;~C9a1Mx5^I=m%SVGz)|{(4;FR$%6;o()YA z=l_`b@bZ4=pLyJ6^3hAOPYS=LD#&!nd4K(me>Xz%uZO(Bf5=>Zn?=VT{}mS^R8e{{ z>!8ouHaz<$i!2aEvV z2n+1LYu`w|@YPrXm=6uz4HbPqu|E=s9|JXggODdQ)YLv>jDzFc@#C(^{)rxL67b_O zLjlu7K8Sy?KOyJFzTGjwvqPEd8W`n;wIsYUAD z24m?+{sFMU0D}E?+UEVG0t%B6kK`MeScA(${LSXUD33h1WTBy!HXf(<-vfKo6J>nA zYF^J$if#8rCC!<|=~(0RV>Ha6w{ER%*u6WM_B1uEo1s$Js$=`u7`R@pKGf%%t7*Y| z%V(F;m6OzEquZF+I0gHQ_>3-I@uE392LBo zIz;D-bot=%=-JR8mDl^I6C=X#1=y%P--Wr{Jig+!0XQq_Asjz=7?6fwRJ=<{DlRHI zeB?-F=LkX?2On#ws{X_n9Bv=FR?u$pXw{umR2^+?ikg~E%Khh*`3KZQ}>CBFG199y)hRD69-<&v12P- zbJgBodGY+Yl#ZP0xpP)&O-P|zNm?N)5A&$#))nMVkU!8DhqVLcs5fa{$%RS5Sr`}4 zPme`buD|7e?;Zy?w>SZf9?4G6Fbsa+hY{~2zxDoFw>&s*#F?PaT5yLD;Y6?>ire6L z=A#4b?EOhh5WaR)d@ZfY9KTC!Y=Bx+xf)$C;S33&44R87e0V`$uH z^Us?Qk`3|mquRdx)okxAEXKo6Re)GQD1Ze8t5H(ytw@_8K~|=t zdN5_~o|wmp3g>L5dvbqz{J@<-(DKr;Wx-7`NdHS8z@%q#db-e&Bja#@fQVwY*j~8; zI7R7I&>5k6Fb+;S`K`R~q}YF9;gP3ut5&&U)TDr!n&OqCR@}>18gRu>>za3z9Aqch zgCOet5Irg=2%vF2!5Bf}>9H)gX_Vm_nPsZH=sJBp2$X4W@TmB zVx9oL2mHN>Z1OLGD?YT`GOz&hlR}Mk|M=M?f>WzJ;n=QVxz!|z(qZM znkYi0MSKf>9$)W8EQO70^`LlQv}QLY#`u%pz1z0>qN!6zb~*4<81mRbr#YJXCYqwf(%js^jd3oM)}UrjRY?g{F?P#)NG+ z1O?Uc0H^Gs9uZWlFB%!Whpz<<82^mZ$IxOBJ>I^6$x{c!P+@ss5Ct#_NW3$LU6kuq zq9NHKJM65Yq9PD;L@qNi4+0S;fb&AcV5r0<{WCk5P1DKMSCvu7C6}$-vuBT32!!w| zy{mf5#9Kd8CBzW2uu8<`?pLz)G!ZU@ehC765r#EV^NyiOM zoy5GrKoT9<#unr`0lzSSg=t$&O-&Gh(f0fYThuF0E-zWKlmI)(I+c6 z35C9RkqcpObaC(U54f!Oz@S^U!lada`H(2GP#SI5UuhmPz2%Wu68<5hrTYC?o)1s{ z(4#-C{{7URL#)3Cja&}@fu!!O*J~I3;B+zQ-SJ<)>21N+suPXO5(;`iXqLYtG>YF4 z+P(F^BR*ZZUnl?Ir*H{`?($Fn4=>@*pZU5G+A>&%Bf&^THI7N}SfkMOZ`HnbjPlZL zCR3doEo8!~YHn@@>s)~Iy2RXV2 zTI^LI5Q~O}xr(u!bNh$mL-R4_}QtwW0R8zm`=lO zo}Zt`_5?*j#G&{5_gurI5HaVN@9x_?I(fwC3A3r~={c77O?r28)(_X=fXo4?}R7FY2Nn}nHe`tqd&`$&8aY`}NdKV#lab|_hq%oKCri!gu}F++?< z(hh2B=)d$x!r?bz;Vkq;CMG^C?gDNEuq0*VU_RnNkLF#NuSC}ZdnwA#zbzGpJStW< zk?`itl|#9}_+Z&vpEv?&#~b#-p{I0B;(#ut&R zO4F1NE6>czLIPtg6|;+cacL>3jM_N5EG|RH2rpkgGTKAVn;Je`$n6-#Q-P;F)YWy8 z@;0&!@SlnZEuc@*LsU{i0;D25_7^lue7KkVmdvYffqb!!tNsSI_B)9Ym?3oaXvN6I z{CB7dkBjs>O928NpW4gwRBq56MF5d^gb+J_2(&tlBX0*@2pr~{Bx7c7-rv`Ef@N#4 zJd@lrGNC@4gE2=Sw3OVq>gSF`(zR+K^!veu1R#NTm~KoTMKq)-~qQ}{WaSEadcTt*sI0zY0?achtl-_$YDp z61Hl?;0qY!m{5pVw>?AZsQxDP<285J;hCtf8Ve4y+w{;|a>eU4pnW)4>g@>@I;ZoV zv*&hGl8$Tu&4Fr)Y_`IwQ$0##IiUW6g7u}P!)Q-B7$$+a$=ACCZ3}{T$P&gpKnY{n zT;RdQ)IB?_N369sF_C^G^9u9&I9X{L<)PDRMw}ET!u#>eVq=lbyN0E-Fv~@zyEg++ zPiJu~0OjVjMoJ$f^qoT$4qGs8y=KiC*L%nEMx=KC`SPhhq46@Wt^n%`f=TidZql9H3FY+ROs z!XXDVH*X|OVaZqTAO!}?%0}Yu=3aXHXi!E$0RoHVb?b+kTsg>$TIMW3sg|W&?V3A{ z?+*FeL*U->4DN?A$rT&-tifp$gmUzP^E#g8&vv={rcUS{HCBAXZzqjN9m!m~{ue;` zw{YmsSmd`*^Dl@+`uRU2tk8r(vb(Ev>LLcA-I4H@uG!%ueC0OeWtC6ZTtTV*LzsxHHzltHQVqMG@bLRl4Fb~k*eWu3oW7N*I_t@TT zNG@+456#=d%K8IZ^|?kfbT5=Pc+i7yR#&e(`3%t#D8n*=mzx(Gdy*+y5h+mODxRQ}D4K4Ws z^FTiodlLLG19`_GP7}xLmZHj+$1X1#8%Mv+1?UsUc|YJSsMr02cQ8?QV|wH}Cg(D< zn5904S{C7Z!M^~G5XWI<#=HT{TbF?i#ilfzk4+Bh^0sU5e&Qa#I8Nsz=AskfN4#aP{GKUQO5O4`s| znh(HY(?}D6v|t7k9zWzxlt5@9BCw$#96oyVNI`6-6AA*Vd^_bDk)6J_F580uHN3sN z*pZF&Du6w*d3l)lOGyde;loPJK7Rqxh`+~ZGW=Bkfc%O)64Ai`Qt^nE!`%QWl&dkt zmh|KaE#lpnI7CVdk-#(Z-MB(z|C#X3AqwK6B`Ncv@&ScVZ_>_k=<4k~K;tz>pIkaZ zev9O3iqCZV5h!HSv$GMeUPV981#p7)h+CDDv(&mcDX_iyps@4{#rFtbm8- z1Ro*^?@O}@OX>)z&l{Ys*zPsBDk$3#ctODmaya@JH; zMTzNS?ZY#%6z5f>_?>b}9R>jV>Qia#de8+2%w^(`2Dnc!Tb@0m2Tg&n>YD-3iDOBS zpN7DM2q2(h%%smk-6Oo~;loSFe`Ayp>BRQ7Hl*P)@PnI%*&!6*g##M)A)yFhj_4jU z^LM~YY^kR7>+FIF*WrsI7zrm2^OJ0BY?wU7F(WvS3eg>mDU!5AdL%&pN_7lBy%7^Z z;z+8J_%#9L;cV==Q9BX-Am`EclP9ZH6&2s;7j1)}<)~=z9iBLvGe(LK!sEr@4K$It zfmtyu0{B>XVV>Y%|G5G|aCznEDgcoG*V>f^Qkl2?Ly|!ek{FVNBoV1d_BHzwqMW3t zNF-#tEm4$g$(AKTRMt`|ON&895k~feL?N*wxSzj#b~xg(RNp2$O5?*Z1g)c zVozjs8+o-O78OAefVtSW9cr7s1)v6jw;&pkng%%`I=uv-{%Gr*s`#j z2AL&u^RW6t1`VIky_~G9N2j~|5R{awyuwR~0%ubCJD=4j^)B>V)E%I~Raiw!p=0R%`607ZnV()#BiYCyKw+f#fs zq#&tv9E^czq##;k0jIs_C7Y$FmlszBU3K|-istR&*!+<}0R1=NHq}NVV zS6}*7mXFU0TtXZTKw)bK2VG{G_!`lzTZ>_Wz_oyy4f_40r1eE~FQCYn+5=ki&g(A- zqD7DZqB6fxocM(g9^77~#Lu#cpI<9pDunkUWx{HKPW3?c8{)P)3Gcyr>tyebg*@Z)ON=5XQ}CJ&@=MhX$s5Jk=gH zzU5ZoUZdY;00-h8#$Elg*NHRa!{Fe-0|z*nnQJ>4sO2FM@7dXlF$j$o+UOgF8>z<^ zy6b*E>y_j`S3V)Z#!d-AN+1#v)-(>|(ViG;Z-tYV`2{i;QRaSSVL|o4oiqII-Dy0i zHyAu5-;KE8`dZ7XQl^IxtD0P3)&S-KOKB&H=H}&XAlxR~UDs@J&`ppw<_oX1hLdp# zrd9D+fN9Tn%zpgz3B9ij;(egyDJ&$=#yKZt+(j^pxLIj94o7%gy!?0(4q1FG;XVEZ!gAVHe+`7r4d`%iSBy^1)sdyiOS<0DC>!m$KRlOdW>ym z2?7t3t`)0z${XY>Om4g2=MD{J`lg!?OC;3&>ih%V(xf;;krC(~V9o!EN{WzJ-Btx( z&L7yV*bMC<5)uL+t-=!o3G57_SP{pAo)48pV7<=_LU2oPJ`yl*hOC#PB;&zvgR@VG zv*;CEnDbp1*1xcFL|_GEBhUyzF%BgTE*V9KFf`QBIjLUNJKC`xx4pLk-5ule@Z>aj4i|FV1O2k*nIa>xC8i@c!cc*DOSb=c++7$qGcS zBF(r^=6j%Jjj`LPVSvo0zod@avN791LNLl?_a`aH#Zi4Mqx(lg^5l}puVgu`4RExK%@e= z?aF{0bv%GQD-TO2lt4I()(&@|E>O~7T3K3S_Cpv*p$h1yM2Ae`P=!6(ZJ=Ru&9(r_ zZI_Bn14P7`iU{mXGdPa_`tW@G1B~xxX3bt}^6;r)b{ez&!v-fJS4QxsLf7F#^a1%G zpv#Fae(8i$_VyH)RJkC=2u%OMHTYEV8+T7^8$0IU&^fy;7~1~P<8*6mCF7L&HVD%D z?#HZ3M>z&L%P#Jq$x+}NUN!#By3|N`lf(M)$zvZ(dD-ZJTwURjg^ytls9NIgGwDdh zMcaTgYuO>{8)`dLZs?`!5=npq?t?DD0fKG`p1n27kgT&v2EZpHH#ZWB4g)_T;xSVEkX@>QUI6E&$~2F^FvBqTC`z=2hzJCTkWPbJ z+dutU)%E2gW0xx!&j>3q4z$ql*;D)SZrYTFiubk4{S2mT7Z)8ZEwEj19RQqzi$cH6 zaL|#;*lr?ON@q<|h-MnnBGmc9$FhAvM}W`Ijv0YJ4_^v%ZFO~&w9_Y%%u{TuSBGD} z?uh{oLleXzl(8Oh-NKY0x}lc)1nA)#lksAQ-~N0>Z>i)K+BG|Y>_8MW{CePDp*iqE zbwdkckU0hoIb1_{!5+o@o_Gf)ZfQy9@K0jjk$xQEwXXKc4`7y2Y}6e=4|H?JqCtLd!OTkkw%y>GBg2+BC-xA1`-LHbN1c1V}7(R23KZ* za#&&W15_OZD&Vs550M>}RLvf??@49vD0m|v3$BD3 zCnF*EgDv666I$l|NLM%tCT={D!uvgt%ZdEt4Kn-=jKTs2bG_RL1n40dj_a*?0eWz@ zOJkR*!Tg|Vo`{ZVDfZY|6dZE}w-S#265s%bPV5}TK#{QLTtr1TFsOxdcocUzr39Ip zdLl{u8gcDf%c6#aOvgC0N-RnfJdo&x=b3lz@UJaB2;)*lMjrs|ZNgDgD9OT!ZlFzx zsj*BeeKW)nA|=%YkNbebdJG+b;zDUgZL_e(nG`;eP+-QB27j26>FlaqEZm&>=KhGK zaD;vqJ?Ipo-SKEu?IdEoFeO3>_vev?oj0k!l?{_3hux7RlZlB;o;TSb6C^B-C;^5< z_?l1-*%8Q=W`JZC0QvB{ITMyTrI+(%%8n@GoPjj~2{(nyeCN7G+>C@FSvG3*U6`X8 z^AxuF?LY(?l9p9@nW4=SHOucIK%@j`cmlYgWbe=55})f!aD{!O1on6;lhWi=0Ll8Z z1AMsUj7ljlBqqFaVAW}+B+pR|2=ttswkt4OdW}b=rS&q&&4}^KcCT7wc1VnGlK1-# zJ#A{Dki?+NdOo0w3CumSIMw?+<#;JmW<})viM|?aB#i>lP>QHSsZnBRX-PsE@5-Z8 zGZR197X{7+KGVg2PI^TBeZ9ipQ!CH(N@$P2c+b#!Z*frv>GIZN=>h;Y+&Nj1n)-F= zWeCG1}`8S>&^{|sA*NnRqKJsT7-n2_M0%$?vMEu&1Ma9JXSD?~z!$A-M;6@tis=ntG5l=Mn#%&`z4W@gH7 ze<-PD`t-{+FK?at45dRLc>+>zAO=Wp_dtI;X{R}3cbjNaYrI!Tzh z5RTI(b91<4T1SWtOu%t5SDpJQISdDD!_R^0o#j# z7GMk}F{CV@kmRWq00I<_(qyKIu7-IT?JVe`I)h5kQv8d*;af~AP=7uni{0aMO|4FVt!d z(=aNPhr>qSCiOw6qzHGY~Ns5<@{qAX;Cs-ZK~H zIht5z8cI$8Ms^i{RB7O8!R7Dwt{9Zqkz3j?fnzUU5bwF?kkeJmJ4RcPtpaIV~^KSoK;uKt>sGwj4lWp-9%Q?Rg`Gx^ z0cQ|#4)95Qp zockl>dDS&F-|z?G_FWH34(*Q_Hi^Jf;(|& zb89Uoq$+?QVpKK~QV9meA;QJzEY8@^H|qsle~WjI{Au79{DrM?RNt@yg1QVn3FCR=Xzd zGJkZHcF45%WKIds{SPXUy)x->V-j)Dq$fdUj(~yjQDQV0+B6{{axNF@WZ| z4iRWi$-o8i^x&fdXtZu!k=uw>rqO{zhdNqXvfPFwd3oPqV#Y^cC-qoO&Z&q(=b|I* z`M9V#tK;{%d6OSrEkEA3b}mpo0b_u<3@t--*J<$6l`6cDt<)2JdAN_g0{gnUpi4tA zLghRUBtoQWwIJmb5UcPTg}Z7;B_x=N=%}mn3SOt=puy!Zg{gZTBcOXD%hRJ8Jom3A zJOon{U5(fXK0$qyE{js{;>kQ9rgmiuj4AB07?klHuxdi5hsRD{UY^)StSvKt27#Hw z%S|j*@M`Xz`J!a6Ml-M=;8~cjz8D&}NtK*R8_+lIeBU$^qRzUtv)}FOZJc1xq+34;^>qsgydVRMhr zOoJEy_4B9zZ0CRigA&*WrVHjJ01Vo257>(pBPsfXlM97AO2UN(J<0K`i0C4bSi2}& z4!ZjKnq){$f7}~j$UaPU=ktr>lAMuMMtc;s(hNLA&I|k_Fro&Qu@EtL{490-V^pw? zY{)QuAAmg3=7K&bR$-$~D)gt`@e}@(DeMz}ZjeoO2WuO#iBrzrR=mT=47~?Ul;XMe zH&W^JD+otwV3}40^%u$hU)JS5Mq_de;^j@*3C*O5F|FlG;J#1N1nXBGW3|$uf;fBjzJPz>{rlkzmf-}_1FN{6A%6*Y5OBU}D0Lw9W?Sjbm?iQAR3OD~ zLJ7bb2GeEV_HYC$hpdhLb!V7nWo5LfKYsPQO_w>Hp3nL(3F3t%COpYmx*hA*pzjOT z1$+hb&zg9QV~CRYZP1c~7L88(ybytR8?LK#OFp%ZpG5-(y4KLY*0nd(5APO7YUk;x-5FSKH4Udb%czo^pbuI4|$L$Hq;;}Wow~?S7UETZj8;t@OZh%WBk;{jK z*j{2bng6q!DO`OF!%-??`g>nS^<-1<6hu6tPJ*kgE2&6+`OE{n9F7?8#imt|eN~siw z505n4Bq131#FCFcT)m(BooIMW*zGJLZM)g?Pl=Hd#^b}mG|LBHAlLY4wG1nbzL8PSFflB5zH!)R<2o;3HxF^z zQjk3m!V7G$7{_H~I=`*2XLUHXz{=~X;%5_`L{`oaxB4WHbjW`f{*s@H#cQ@TUF>p@Bgr(8Zx0EeiwXY}(kW+!ER?WNjjLmqP7? z#q)66sVU(sOAar|bCWELiSKWmT=+&k?c-4=$?Ad)#mlOm***ENQ9Ivgvb3Kq_{NR& zlbQ=!1`=uP(kOLIwys{olWWnMjRpChHcx`$&c=sStQ#=QER1ZpGawpWy>evKU~!mr zlex-X7U=v48TKAC1mok(38_fq2jZMIABP6iGj10>Mw1|>#<}>-9V}_fbAy6>^xuFP+8fFBE1TQ&A>0$vqCxYx1~3_Ecuwz_9HDfHlT@zqWzW|Z78k!-1S#AlB+9uT8msaTx@g0Yy#iqDujCEf>`@D6|>D^AI#UF2^?JH1o z{qUC6`=SO3ulARO>GYF*{CspN0~&*u0!^G^1Gm`B&MUJ7RWr7FFQGS($+Hz%conz2 zbnuw^95pvz^4UZrypaC{#z;@FjzfwhZop8Taj*H@sqSTw-Z0_R>i9(YvdpFEafJEWjP*V<}RVv~Aqd~q)}%GofT*ft^9y5z!$DC`$laZ_Lp)xl+E={h1o_DKVI>|~ z!DTJDsFxv>*uvQvt5is&HUBP`(QEDUQT<+gwburfzsKw-5NT#$kTPgW=7kbd0R;G& zGX=r4fQBqF=YcBgJi!4P2VN)+Ye5Q@AgIfea`7HnU6h(6WC-sMbTQDkQ^GaH#7<*; zBOo1YSw-I<|DB@dz7JLoWfO^V6xGUkYEuSe7A0cUupMQ28IX`6Td=SSylc4QApT^iI$<<3OfE!bV^tt z36%`ONR1{pvIId}0L4HFOwma4!!U}z4riXbn;UlMKyeaLLqq)(Pz3ZhIPvx(63pp0 zCvYw3`BYSvFDwRv`v{$l2bNL@{00d)6u*!cW2yHbQ6!Wuj~)Y?U7*lA=jH~p&K#Vl zC;V;lOz|fGu!-r`&a34b%;)ulDEv9_aImfjm7ts!h@t%krV8KHE@ScF6!-4cDrRyB z9Q!1g~!vE^?0%L_Q3cY&tD8vNFBm(&kdB#cffH=iA(JB6eNehEJ_|}jrYo}em5=hQL zGI5k96c1oi@EIT=m!FvqO{An;_``?0Fw{Y|h_(-L!1>K~2wj*8`xzBD>c~O^@BrWn zTr8s4%!Xb?PcJz|_vq}G|Ilvqz{gd*O);rPvXqWg>koXMXlgRC1H-hBpXILVPh+Rg z{*NbXX*;fAQij;d69Ms9R;GoFB)GnR2OO?N>K?%N3Y%OPADtCKwm6*`9^*|B`pZD z&E)$2o{vjngezC}JA#naR9BCYvgcG_1`XFQp#xq=G&(*iN=4@$hVqAq>kHls3G&qE zis#S$buzGsC2Sr^NJ3@@Cu;!~XhR(^X9h;d6~Rb>(wGU0G_>+S2JtL<%V;SLW^kxhDyq(a4E@3HZ5ism;e z${12`bMr0CbdO%w?;peigd%arTLUsyU`r>M;9T28=&=iis6q@JTyZ(mXaL4YBj;NS zUNPc-HH-1hqIIzg+@43Ww_Tgd~V z9tFtB%6h#M^cx>v3gY!4LP0#kh9py-(-NdwnxDw^6&ruRr&P89b04>eoUMe|5LFpT ze;D|_e*IcCIr3z(!vn%zz>Twm+M>~u-h7=^RhdvJ7Z(!;^-ll^pzJq>q+9WZb50(_ zF5v4tJ@*uuL5TdV7H%;pZ&559Ss%jCUuAuw!#{r)!f2rOFSimu#|pdUej_8e(y(3o z5xCgw>?eG7so*^!Hc^xKnTsY{fPxP!|LG zBtxOAsHJf7VIy-Io)*YzAt!^hpl9+DMAt~wM6t3yg2w_KVc*wZ{M@jg<1ow^9~jzz zjv$^?P(T3pC9JThq>%8O4-7oPQCIq$Mq5{dtTd{zXau^(0l^C`FT!tToA zZGOl$Nva`{$&{tJjg3(;F<909?*03SgoKc_f>%6$Xk?PtT&0pDig#aUlQ^h$0emh} zGVbrw8pOg&etzqRes9)6#{zJ%V&761)9{R&y!G!$SM0sXKL|HS*7`B--iGJo>A;2d9j1z@a_16&(wO| zXB4%P{e4?QmfG~>4YKx2;%1WAuN{AIleK(_#Z`?ytB-zUAYUz6d;u|P@Sd07EOnf! zcW!L^GoCqp+9Su n=A^&Va`Oo!F9o#uh<9OA0N3eDzV-GClZu9lj&iml+3$Y<;Aj%?fc$4Uw>ay$T?^4wdb01j4{VtzKN9aw<%v-@+VH5 z9r0V%E32g4+{VOvX65=#D|p8q(jH#hPOWlWY45dLe#Z0}ZCXN|X9D!vE06GJUfF7D z9_t)^HD>FR);HfxL-g-%~)hDfbbiQ-CbS|RV(rC4+-Qmi?SzrHi7VZru`I3Xf zJb5PW4PDnFyjWD#>fKzsnR|W=q^9I-xI_$fT)OADm5+~)n>&S`BR@Z1>zSFkxpJba zA}<#SuetGMl|rSWcZfGFbQJp$K?H|A+8;L3w4`TNbV!f zojX^_usmBu(9_em=Q;DSvGskOD>GQxwej>0r|&4_UE(y--DK?9}gP7V~-+s%VsFC$zDeJN2<9o$x_>MnPZG-q3RaLv5_kqo?OdJOrq<+1Yi4vRr%>(`bl z0i*ATaK?8`@|pVKQ$33hE~ZXSJ3uOniA=px~KH|w2!RQSv2=sD|Q zj^`_x`!p04tgNg~p7fcSiw)M@Jg6~j-BGak`Eu1cEvc%TyxoGWT6n@f}Z@ z*|xe9YbRoO`T2+HlNvjVIc4211<-B!a_&>IR%T|0hv?zMvwqwKrsm|=<2mxfXR1s0 zOU;exxhHTeJ4UU9pUU(Z4Gj%dHMOSIKr5b1pk+og5o6o(|1SOjHpdM(fMRZB4YsOAqf~ zbupe+R?GGj~qn1ZE@L)o_$1n*@i;h1IbD1f~?G3 z5)N^Py6gw>l`2uKNz(pI7cN|AZf+KLnYd_g&nV&Mq^qlo%P=%FjFfQS$;in3c^~pc zpt^2bd9 zq|Xb7-<)3=L8Lr0bGmA+!f^QQUIyon%N?R;-*393Lo66Q#6F<6qL`!(Kl>Kct_!t2a>*o&i7s8i2IMaki>Kf|=*AGpn^zkuh=bG49vFh9! zKCxmw`OmA%UIbj3k0NsYYIA%OSr%HgjY}`Q9epLo&E#clZmy}P$8Aqny$!iEE{=0V zoFKnvl>gCId-l)0pHkfiPOSKxZqYa}P&#+Hyqe?e*|TB^(yQ#~!*_^VNA!~kM45V~nf`QkB;anzNa1pUez6yFCJm!V zT~!sgfWX;kC9!D3G2L1n7afuxJ3G6?;)F_K42jfsabaf6kAYiIFMx=QTrNa8A9(BO zNz&8PJ8<-vtQG4zLJT?8b+TUF@8-=X8@v5SzWPfpP1Gt{SXkue<drjc+uD!@J>&~{?QL29oT*ry8%Za=^M1p=qn z4^^g;p#$$+M0u5*jH(tHE~gkZ-M(W74U?Fug@xqgrv$L~g zOtU!I=u5-Qv}McX~qEiJ=% z3Bz~TY#y^c3^z_jjc8WhW1+?#ynONEC{W2li$x0OxtHDT`L13pPOh$gH$ugnUwV7L z`QDZryK$LDHdgsS;QO05Zw?HYOVNth52TsbKgGSCi8-m0=X7S_Q@pj9LCN*b&Q9Ms z#?3T?B{#MNbL(wfzuxZhd{ckJNSA#&`x%kK5|_I9Q8>=3f1BRFX`Zd{67o@Guw z7dmS`sd8&NL?MPmKQuJd?lxYjhbs-WDKIP0ja5Ez{5X&y%^RN$JH(tu%LCX$TSm`aXtt8E9&19y{he$8d)VbtdxgZg4l$Mg4mTUwmIckiBh zitdJu8<}|Yiz38b4GaxeNf8=3c8UJ}{w&n%7`Wt4opM6V$1)W&2c@QtJ>)ff`t)gD zem=uNjf>x^cgf0D07t%k{rYjGd+WI9UZ#egir}{`>9aCgTCG)*%Wki)uJK|iDJj{@ z%Ifg_vvXa-87w!xX$rftwf1sSq(NSzUC6z<6=GW?W;(s!_|l{hdW9ZCO{oKc2LM+H)A8Q*oc_L{&aJ9CzfVS zq-fW!UAvK4LhQnahw`C*T7{q*4?aUUG1tr##>IT<3D{hck() zdhU}%V0^quM}fP5&aNTU@B;Vw9EV{|4Gm%EAKk}%H&#C6{hBD99G}J}TU#22$Q!6n zVpELBL#DZZf3vi7>2$lR;z0Db1M-It@$x1nCT^4TSfFBd(>E}<9~Ne5Xt;;^b=kc= zRpFv+)UT6L3Pdh;9!Y$&?5&k<9vBc%J2gzS*8Y3}hITmjg=3dzWE+MS9_!llATV%^ z*J!-tVq$$V1Gg?htn==!V-CYD^@%F+z^eI6bAyo{bNv=6`3)DUl09xB(V1zlpr@4L z5fakF@);ZVAT;YZu(EA!ZB>zyBYk~BMrC&=ChVkW>r_L@>t9{evHy{gO3 zSC=>0pryGTCDL)YnXR_1Z83kkeGBvK9{U$ArFC`uVqy!W%me~mT|?vHy?bZe z-16qQys2!SsaT9Vo)V)#x*hwJk!&qaEakCK$DF)9P?s3MLX8BNnVt@atjZo}u#$7O zOJ&I4m!oL8YKKkU*kq#~fe6RnFf@YZl{ONMnFR&yjg5|T6a7e*nDEVc|p`?zW&nH)nJ*JZ>j;d;fTqWL0Hl<%bVq4nrCQ;G~)w zJyFwTHn%w4@#^Kv)f=|+BWXn=`WQvX$tgNIdU>Hwl4|`{mUdh23`^kNGYuKD*nd~> zutt1~h+O%T^}ySX?vsxTkCPd3PIpzib{ z!ybh&;a$NM>dBguV?-%))kEH6i?sI~Y;A21@$l?FcyMB3!fiOc@!7Ly*iH*Z6jYw^ z@2jgXqC{gm7hL*!^3`82;2)k5xNgJ-=uOvlUQwh9V6u21 zFeLxo1(%STGr7?fx!CpO?6`tSMQd6Ijlj9c@oEjew z5TQ?#QhCYm{sC2}aA`6Hkpoz`h&)BlshMWomh;w+L6)w-BiniWg0^;;%bA7b#p0dz z-#;Jb$J zm)>DST76(m>GI_9V*_bEAS5dRY4^E_SzI;a&Yjo_6Sx9bSJx!w)c)aNaU^hnl;O7A z>6Ua0WtwmPme46aefks>6!hrPBO&Y04|&eN2HHtZPJSyNz$*Xr*)uV0K0M+6@87wQ zVT#+@+>!TzKW=4vEV_W`q2k8G#Jo*erj*jicbPYhJ=zsnU0GPNZ|G3@_0enI@Z?v4yXO15~Ze(mMp1l+(6RXWdqy-&%g!*a0SkHtjDB|;?$nvglY-HQF4=CxX zkI!@6{G7Zz?SbnPb-S=7i}l#CW5B9pdTn@o$K2%L^zl~mZQrF-_td&H(wJ)mk)zg;m$3Sv^dSrTPYN^wkhEgiw`E%WuM&$`-V#LJ6kUe7}R=VL%u3x7X5)!hp89_qc zPtdKs(4gA9^XNs*osu4IsA}X=Ansy^0w@z3BH`|$s;Y|I zCC3_2Ze+l&wc%NP(7=Jp;h}SFx+?FPhT_AQ$<&o(_k>mF;&^XmymJ-=rRV2fU09r( z#M)Fgs;jC#1MY%Ql1`+jhfFa75Z>D(t=R^4Rk-k@V#UhUKp*LBw?;=tX&`@M)4zTD z7OO%o3*X!Gwe<8xy1VIUX)pHI#Deb>E-#KmL`1B;*7f?@I!Gjyj*$>xpuaUq@bJ7i zF+VpqhmYjv=Z7k!fQ^Z#)8d_&lH%y#Kt%AH)quOTS65dzH3?%k)+ebq*46E&y9u1a zo9E->LuPrp`Ew|%w%KCr?B-)#Zw+X6?b?Oi?)d#P;IMXqTQ;B>%AmkxZP!Ijihzoq z=g*&GF_ThKs;a7{$HtoToG+`W)Jj6=-NttzA=GTmvlA6@adG#EJ<>}{^CQ169{(gc zqB;*4uC?RHvFqQ=#1s)07Iy#skEvE0Eltg}UM#^CD$2@~Qq=3#xqi>?YZ)>kXD)@X zEGTy4*b2(DS0NR1>E_Kqc&vFjpHjFK5*Zm89&TlB&i?Tk6Ji-CqeS6xOw91m5T(?0 z;?}JNe7`@lWIKdoc^y=ehYugp4~vV7zZDHaO5zA8KYHv~>&|;eqp#n%u_=B&Ld5=Cg4iFQB$0|xn)Y!T=Z;q`$d(dT-R2c{`J3C0~AwfZU%3Z9iy-lfxUMyh} z?m6`y3yX`P%nE+*-^*;-LTq7UV;k!LH_Q<3dyExPTj{zGQO_Scbbg+kB1W$&kusk{ zbAtp5X_U;0A$G5lYRa$*WuYE$(Z~fbH$d)HiC3_(|BJRDQ7!$|@>kpB-H#b$pGo}Ity@0px7~m6;6Y?0fo~ib7-(tHl%n;R9~NR@U`U<& z&Bm8W%;`mthvrU&bvt&1f&fWMN<>k%IxlD$DIGonWl1NY|Qgo-kw?Vd|XV|fQJE(NadNPaz zk{R!-V(7b&*-><5CAdRJUUxgPNM)$dWm{Y93HpN?on2i95cHIkSgg}CGpi~pRG3f1 zDkF)S^~W#Xdk`EPDel@(Qep%MTM^71DM>7Wn3lNYrly{0lT*>B$#83m2qhu|)KuaU zf8ElyRTp>QYRM`1`t|Em+Vj7iRa1M1MbC-L0fxZ$7c4K$w}@T>RJF51Iv#_T0D*4{ zGjrjE%I%zuTS29VzJ4A5B+cAb;GP>7cLDc;mz58g$4og}Byy0L5tpQev(s>BtN!@Lu)%T&S_|* zE&EU3oGuO_LPIliCIR6i!C@C>$6IU9A3f^z=uvZ;S?xQ2X5@~@hYy?FSjWACIJGXA znH@H(d2&D{?qO)CVuV<>_=+7ncChW;TL;PW#0hcL4S5$TL!g$RP9mc$#YcLyWM7UC z37#wtWcSl+>H#6%W988LhobvtB*?ITw z-BCyxc~dPGAQeF7WU*tF)Hf`bDQKKV6L>8LJ9`>s!{eSeQ=i2i{_QzFx-#V|AGrzJ z1r#wzGzXyH}H!LyQohD`HG}@j@xgd_D?SZb4|jN;5k2 zC{F&yjT>BCT#7`y>-Ba8gze<-N_H&si5l&=rmp?K_UrOq$eK1we~ z^Pwywg=UQ(#lvOipI;Prs&7NyaJ3o?xBm{zTNL5bLXUr~|HpXD$d;_qJtbS1J-O<=D* z5_Popb(~+%G_huOIJ2W*{(J5o={xA7oE^|0G2Xp*Z>&E)l1nS&ps1*8SIG^V{KqW_>)0XG_N+x!5qh7v?!0z3z$$!x5T7G{YvG&?gw_I!<=Cy?i~ za~; zDl$O%rl+6MC#9#SU%GS&C~D8iTTat$j$j{L?+)8`mvL%kAdkPRsNmSQuLt@Hs4x?+ z!Eq&}YLLAau~xj1*?r<(aBy&FXlvNv%g?p5AG>RZw5;>G8xXLCmX^n|>BZfS z;X<8bIt6ac<>jY|{BJ`;ZnHm(PwzR}`nM&AinD#|)>DkDm>5^RC=tXv&Fk6G7;b86 zTC;_9W`4f4smZdVAV0iuYhPukiK*$sh=?VyR(yG+n6ol1WuVM&n>L-dv5CBQFV&`_ z0I`>qB`ie?dXHp1($#f8fc&b>CtMxnIa||=D}p8m8<%Ik`b$VifVAGP=#i3=LUlXa zc$bQXX<}@QS5VMnGzu~q!1o;}RW2?r3JM>eoDR6~G0Yk09}ImOYC2l@+1c619bkc0 z3VhEK5>A~aznWj1_l~npzm;15D*mn4s&x&|b>@FmaQ6}2-Fw;CGO3TyUQI~YpRFAc z6yz{7`sK?TU#eBBAW%?yDg9Jv$iIB@+9R32(8A>&MrwjtV>9!>3xl^e)uzSW=j@;!0?fZX@h8N*y_NShZXYqT;0Qh6 zD(L*$Yr9!l<3J<;ECEXEtyfY|Xfnpcy_!}Ep}LF4${^q`iUunyE4ttj;`7*_5O~(C zS+j|9mzdaR1k*?2qc!>*(BG$~rVK(6TM4S{AbRq?Gl-_~@$px$Ug4RqlA3AlSQ13* z0y2l$`|!A_F1{VW&~Fnbp=x)ahXS5QuApjFTG$V7BFK%m&TY~w4sOfVX4zVst}0ksQZsF5*ff%UA^BpslT4GN9hw z+Zz-a$z6bFMX#4P)8z*Rw~H)I3j)3f3Ys7AM7}3qsM@RDV;rlcXf+vwu_Baa($dnC zE^KV^gN-SnAt4zq?Mz=($@QyBc&&c9hNdQva;8k|q20T?kU1eGA&7~zj0^=CnYr(| zBcDHit~0(*&-wib;%D<<9~xrlP63FK>EMG0l&e=~QT|oaVNiCWEz=6Xk zLx2_h!ypK}ST+11mC!Xr-qowP4JL6H{$0DI@*>q-d318@KD8$Y@n*P8F$IZuI(%Px zA^oY2(5=l%n_h;JB;ck z3XlbGK`$?gNv_qz>eZEl=A4}AS+3L1XF54PL7pgC_ZlIq5+~OT_=2P&X;!mWo{CZU zV(095U#OzZ??AYsq5`^_g@M5#Bxk@wpkxAUaQKF_Yi7v1g#ID%LujobhI$n@iDHv^ zu2`wbuR`cmFI_@jfI5=YxG+J~Dxw0_X7Q&t)(}a3$%~sPG@Dvl1ec3#5maN}*N9d8 zk(F26k0J%hVK-d3&`S=Y=Q^TREol%+p`KsHfA#nGLkF~0q(PF%c=bvPtXP{X1sX)U z`B`J*SQctr!vS`7WU9?Hv#E7Y+9JUl!afYe}0bZg%Vb+`qDhT;qO zFVzByW>~fMc6RFHW2`&6q9C77kB(lybBBwABNtS|B+@;@wnqlCBk=c!5P`w!=wqlx z*azqc(oFJ3C2GkV*4a%lJ;HX5i7~Xaw1lq;ccQ6Dw4j?2rx@8ju%_;1lNV}2Ow3ns zM;nL}V81gnGXfS3`~m`I+Y#b4uI)^Hsw8uef9y*!sGvGJ!1?p&AawQhvDqt`uKWdm z?g<>(yb!{%0u}4&Q*zzHk_hVAz_(#&IIg6FWjnyd^|7(B@dNSU0~CVBMs-?BMMXu# zI~iPugtWA@fb?<+3aVLlWZHB&)sImsQ zqisuLFUW77WOge#BENJK=nVQiQBhGjIU=C1I=K$w%M0T)y6)}?6dJU6`&BH8T&Q3& z5YD&iXp|T{PEFfJb5~A=D_Y_<{+G6U5@Tay*?>}5YcsRNfB+R4nYD!QShMu+7;(eh ztHm*G)5Oe!-xwG`0ksD9i^!qoqTv(jA3BFhjBFmEro?!RD_HR%&n{3P^yidI$qp#e zvJXemX7G41=O0E;qNZ$^wRLnN4V0EovIdy7Jb3spp?~b77t53Qcqq1x`jhiz_r6tc ziWS+9_eR-dQQW%2k3!%)-kVKiXP;)ICVyty@ju)VV*djj^Y3NMUvlZwkla7yQoD4X zU=hl+Ck(52mdDB8N0Pe&3IhMhw^eKP$^Y%C8%6p_O8&!NEFHUX{d(E^_cb*~5>?;# z{3tzq^`{BKDM5#6IZ9DF)I>22N;)8h^vRQiL|~L=^c@w}06gX7dO?E_RrY!n|Ba^o z;N8g2=v1%UumRny2O>Mu*8LIPIuPoFY}$u_qaHmvV1Lkwj;?5PLQ)d^2aPqI&|!h1 zuzLnakD+ON0SuY3eVEUwnynkf4kd5|8|J0`pjx8gCZdL{!hTr=V?tVaS=kIc4#AvS zLE+)zAZnTIE`#WDDN|h&y!(3wu04ZxHkzYP(0Z!7(z)pjNmjoih?AF>HzY&1!0oWG za8pUi)#-Y^Z+PQMs*MnZlj^Qed$CLmHdZw?X$P%h(lIhTyjV=dY}&6@yHy}uT)rVi zZyCl2^oTs}l^dNW&Y!1Qt)!*3gMp#1r$+#dKgSODY3NP{Vc=k&Um91S3lG&sSy|b- zJ?}7f&89skf!|O~6DwaOA5fU2Gac?5#v35OBHLOqQGdILHXXWo%G@HNqIv~x=l%*T zMa?&&kg_Lrw zV|)2>;oLw{Sy`Ec`y3Y8$=Ue^jlD*y!HJ}KSaNcH7lt3Fq}Vt(Od%jo-r9QJz@Q5( zXDJtLMldQfnq$#Q0P@(7u!j<0s_89OM~)mx`dOi6#z{ZM$H|YI*<+@-q~tj5RoIir zSp--Ib=QmKs;@6Zr&h2KCh-1-a0_KIx&PPZ*zucC;DZNXli~*t%FVZ}DqNfjg|TstOX=9L zH)QF!gJt8kLwoUrBqf*O!NUfuG|?7nTnehR@2@%Wtm8NY@ZTaE1<*V|3}Q*bB?@khQWdeXX+q@^P8?wh2a?ZQJ_$`uYY2M9hi01T4$sNJn9%K3c8mj;O&Q zAKTw3Q$bHy^-ER;q3r4F^GhN35*f&Hx1nLoOb%ErG+sb+&9$9^U(-@kok#O-)aEg8 zYSsZEK+qO{O;)LX-Sj^O-@x9)|6kynTH1{7BUKd<3Tbd=l`m48scGlAb9Zk>N1q?x z=8jvd?3@46{1bLVQrd8ra+)OD56us9HQ>%V`h)v9I6{H*%wxvH-8>>F5$1d3ktDbqRF~v&6T6OK++4 zZoreaN0(NRm-o>j-@}Z!&TZrKlT*7vg3U&>GAW)sG*|&3ieR^C@ulS^X(-6Y3)y#f-tU zDv1|i2%9`timF3@W8n~+R8&*~9zDuNlpwDtgbEI$RsZ3`2eK~(1|=vwt+j7Di@nj# zfkMO;Tmel8&Wf|=&K;mW3YRb>^$_h1K7V)#5QCIb@K^xHpHGU}+QIiQ(V zB{5HKey7Z)sKd!gNhk{)Sa5KfCx21@R-f{^LBE-Y zk1y%zQ*aToU_L&HB7zr9eSMsKXjfMkOj>Zf;EniUmDDIKCezcA@F5UD&&kQdQ2nv1 z-cFJG7I>{&w}rVF^no7x89l2x*O7d6ZSA3N-w-=csSj8WG^Rx6=ezqccW`cO0ZYR@ zyZtCL^y+_)s%kC^JeX$H)uPG|=q2lMIvL+1Rjl zExhEH?d{v}kl|Wb?$ir%NubE86o&aAElkMJ@GDTaW4kjO*+wc6kzMWd9#T5Y`OG_Z zpffno-TmPH{nyM2Zc~5bs^>>dr^O|V|CGTuswgSZ?%esg_iLQQ(#%&+PtW+@2-VWN z6+I{{WgkBRr@g96B}37o!Y^xIP{Lpik^fO}aQtE`6?j1W*1AGqh7iGhtgPlPd9PTg zLHQslGHNVJ*zOgvJD#|4E#CZX$8%E5o=R9gAcmn}!Uj$LOwKcZXx55k;QKr71^)e? z0bic`BA)TlPkW!&?IM3zHMb7uhuDoPIQvhm_^>QS{uN0j>R+21{%!xmUtAT-O1pRO z#mfZB@KPb;cE=KPCQS@#R1*7`#!5r9oVzyYptTBPKM<< zRANAi4wu1X?4SRNa+3*-)GlOD2M32gU@mwesABKV}k#12xw zhJJ?*6eRO%C}yRlrAfZEPpMqh_R}4DWcfGYJnqwtO7#9HC@A1;q~E;Rw!dbd{0gK? zBqeJA%?}TGA)Es#fETkZL?t+9IJPE&n-7JE7;J20$P^eLX6O+xlZvSO2a*f}x+ zP2m-i)^nZQ43p{q0bC~j8+bXe6=>*x1ebf!@JlZl)vv<*ovJF7O}y}&q$<7A~1I~HA;*= z#IwSEp?^s%VwjkEySg41Ok(XWj&>Gz30*(tv;MS< z%=@aULTGIE_V(l38Y|NajW2@&ZsIud30m9RK6@CI4S~=R{jfW!C#s@#n*3cC4_i|c zCTQWw5C9LTv0#oTPM(~boz2e4xdY$bXCmtosJ9K@L#o5LQWHDqSp$uj#DL3i`o|9! z9@3?TG)Q?(KhO$>ltiaD4e1;U1OH(7suyurKn4DKe?W#%7?PC}Z(YAG?D#zl><6h2 zz&YUlee@MYVSKWWjy>TgN(=N+GIyAT_^TP>rxzmmd;3yQ3l018ZCGmTHkep8?iA)R zeorT#tEHi_9#jDRuVQ)l9>7O{&0$oQKXvN5pWl`gHpvGtT%?)UAy_IMH?3=mn^!k}_Avd*wzI7Hz9Ogw$po!P^z-3+ zNB2h%pbGAO20A)R6jUg@FbCEYruBwvw_?gK%QyfQ-p@e{i||`;|rv z^!2Oro;TDe`@y|%lcr#E_~FYZ^H?mQ8p9abmPQ!Fe0s;zJG^7BSoXGwF$DyWZ@%!}RnWHaaEEGut=7r(A1oZ0oFUmVpE|Dy)tU?PX zKSoM&w~Jpf+4i@6M^|(oK&u?E6-)^FP`rHT6t?Vz3&e%*E$JNM;_gu1hx^YX;!uhp zd%)}fo&}8`#z{KLXvIhgG&bPF@nV5@lPn%vWB}{`=h`vxe;1FfJl3au%f9Bzs3W@4 z^wVj-xAeO(!`au{`@YAPb7kWL=}sD!{|KNG{}Q48zY9=_e}qsIem>!uH)m)>MbJW+ zqKwKXS#PRAUm5;zxPI%9-k|%xtiNLMe$OaX=hv^8(OCqluc=W6&3f>FZs}szEC0Vm z^~&(9))$~&aAYY#sr2^7Fqx6gH@1T(P{16OHY16ysg$pah^!Qhk(5}_yOtQjHg z6+xa*n`#Zv4CNACvW8})D4(U6TCH@1+bx-0-r|nP8zsoTG1h|Ve^{=)6yN+1m zFSznwqt!qDVuofPASefitn5mRAO%-2kMIBGfAw#^aaE*yFUd6iA7IUY1T~3&4{J(X zU^6o_Ny zeSn#+qIl(ba`J6IKZN3TUW1a{kpkDnIs0KzcCtM=1I-SYYH1{9(94J40Pfmb+Xddg zd1DA!Vc=2yz$J9HtWntE&;0QIJ=vd?ndwN3Z^YaU<{WxzQjMXSnw7G7zTm6Ipmp{WHv`n9Wz zQmW~di6Wf8pd~0Sc%g_1q+7=SL$`uyN9^Ory8$Tn?K6gsjSkyCaZB`mg^HL0jex+g zVM45;{G#gFv-yx);1{l_tdxh70JQ?F+?y@B{=%^28d93l|DNb6yzB5U&C@`N$g=BK zhTSnW5`Hrn^3+^Si3&CUrGH`_prL7e8T``;+YbeRg&Ldz1xh>XVsut{W22C$=se)i z$B!SA@5lxK@nyDDfdc#m;q6yzc9^d)9*4feKl{E%Yc(njsyl%#hrG*k;3Z>T6Fct37vKr*tj zrMGv)w_};>W29-IC#aRiBIXG2lihpvEG{gdgC>np2u!TO^dXs*d;7M$YX~{vRNJF^ zr>3PXz=RBu_4x4;kWVlfsEg32*XzP+Mt-6&nw#t2|ZcKpGxn4ZQ~ox-V0sfqybNMrO5=wQ28TA zd`-6e4P|^@c`z1G1x^7BE^=wS0Ee)Is1d-X$hCie6J&50KwTyWV%;5GUFY-i#E?4) zuBWO`@uL(ic-`OmN~7A}78OM~>ma3YQp!~?j4*5kNekQnuDKQnaqhD{!LSzPIt>M0$O8#jjWud-y?HX{zz`Ccvjv&tD8wVCFfKL5XlOJA`tV(SGJXM3iQ7C&F`)AjlTuifhI*nN?;L@wi)j68pASxp zv!pdBg@LjyJDgmq=eUGizr0d%2DHU2jtwOF8$dH$YKh&Bl$-pFOjK68F=&dUpI0 z=B427DDSeW@nSisl`$0KFA>6Tri^jCb__-VnOO9fzJJfYYu9;5FX%<$tc<{NBj|iz zyvc$f@)wCI61^wz9IP`$(eSV^bd6@-+^CXxN&IQJTF*4A@G(B|AEKl`K$1%w##z9j z(r5M*krT+MQWnL*6;M~Q^pIi$qY_yIJ|7Lqdl{}cruw?%a7k6Vn2^D~TTP>ZsU{~Y%yq(G z+s&1asW`l;A3Y2iTQn>b;^w}4Me5jx>2Ya>(-Dh=SYbYqu-M}~_39_MA-yB<73ovj zNo*oZiI_8D6I;FJ=T9U#ieG(l3>vNZ-HA&o+WULYoJ0!n{MCa;WBnig;lq;4o+s`z z9s4=HL?Xq#eHUW(jh4{gAF$tZEcEBZ3W=og>&OHWiFL&0% zF<9Q%_;Z%y;nYAwKE+CySlxhw_fC;>t!48|4Cw&Zv(w$&#rf7?3_Th3 z=i2=vBLEO1gWBZ~u2GiYn=ActQFy0Xh9i<9*3w(@Y@#Zp7L!AdjE#-m zB#6oo0U}h;YG8P{zUB+81jzKwmV%L0edDuW!QPU?03_eOfia&%cEoQmiUA=82@@K} zFyzHsR>$!;F&wx3cAUrQm`~ld*;0Eb+I~I2Jw_XfSWI2guBgX8dD4xeq(IuHrl%F< zQKsgK|d#HD#3hdo`JX#3{56I12|FvJgA}sZ<9zBl} zB2YXq^n)>3TicdYL#o*`=qE$a!=wQb;mCl|a?i>ONh2R)l@p;}Z2cUC1sO)V{M?JVL&RFr<#>qg-Qi>;eTw^jwp zFy=j0?HI|{ly&J6f~QJKrVx8N#? zSj@`KhH?Qf_m9}4(eT9V_+0enO$_k%C}$RGhRf1I_LTJjx|JcR5)Lo$BYQPT+_7t)m1$d(d*rimh0mcI6k7{_jed|k_mRB|c>VRQ|7rR8^Am|*O*!1(!!inuXr%?rJHtPL zmn4oNQcesj`gr~|f*E5W5ll~%6A=y;OcRrxV@^l|HO+8MxMSqL4gO4vHRhB9!iRS% z;Fyl z+%WVhO4*uQM8_w~a z{1vG1+EHCQ%4eSHXRbM(&Dkdeti_R7JqpXn{itT z5wH-nYN^BM5XNtD;*(%#C9r~90UAO_qp>H^27*ftN)f%^Tj+IjC3k~^9kDPNO*o8f z3UTFVG}`^TId-RYTmplFe0&I>n*NC|-sWo+_iiTpfYE6~^@0csC?^uU4R?mV174T} z*H+2Y{D@Hhdsx%r+X@nerUee2DCrwV42bU~d9k3^iQ*3kit-V}r31ly-{u<<2Wk~u z!&*{8mG*zmu-f5YN~~M6=F?%?qN_^#>G-$HFWx^HQ{H3ieUdTVn`+Zq|(7K@9OvPz?1i>|?p}uh{1abD&H*9z5`>?F2SCPGxYX zI3+6!-^M;_uZkWub#=Wwr%M=82Dj}UpM_Pado>L*%J#7);Hf)XBQS*lr6f3*VYUN> z9M&~r`24BZ8Yt#S6<#b5EBFjDVfNb-VTgPQ>yL+rMD|T#Xg!#vtm*qKuu4f!Z@Cp+ zy2TL!QOZ_(Mn&Z^f&pYV{6LIyVu(-mw)i6~)pl)gc=$s}w-pWprTi4}^Js>m(DOs9 zUMMHxn2lw4Hxi$F5Zss*pY4mBo|vGeM^ds7$K8QB8>A9Wqas%FSc|f`+i6Z?2DT&5VNT_SkVUO+{4|Dx_$_GoW`uzRg^u6cZ^gnk^^A(^T2* zi@jEf_||SNLW}@WpIf{S+Ye5IERRf&my=!bj8B1qA^1zK=t364Sy3yal~7rvP&j_9E<-sQfXoMOkNCnLBK4esV0rbV^#mGV zDcae)1InGmba9qZVIkq-lrwhNdvCtY#HMYXeyX8i<**jg0iwBR# zDpRF=BVaD|Zk#Xf2Ic$3E=j9-pSybEP$+cz3zp_AvbA-!v_yG$XoXHe-bQ|950oLF zgag=le!wj2Ut{902`(xOk>0RdK(Sk|E9r(q8_*;Uh^_0~9!ga8A?Xgcr2AD~Kz9}6 zMFV`Mii$MZW4|TF#rcHM3gR%SLXSl<``T$YW-v`62!-d^lRwt(`o;I-EtKYy;U{Ke-oP613wVb1ew!qdhTNIq%4 zP8_H`Y7(aTytOZqP>5E7FUoN83n}FaW~Dj{<a;oZ7pax(iqZZO^&73wS3AI-q;5D*GZx zE*Jtd!BZY-um$3gwBUfP;$o>b5Aw>mLS%&TJVhtB0TU+3F}k`EPl?SK@95u&j&hMf zDwc}{Gd2d7;Q#kQvLLd);FL8S`GABYDk8FX^J%1QWc~>X@`NyU}?NYrMYpJC~Rb z{6Cq*K8_j;zm~jx3$x(e)=Qjv1!6ef0Ie2Gw8B93>zKl)A2$sT4}+pf;^?=A1~qt1 zfQAS#(I0z|e39#R5rH(@>OOw7E*XW~s{rd;Kmd6f7z75m3*+Or29!+))M^j+c6UFC zjRn)^-FgcLOyP&y=2>3=Y5aE{e%)gW1ctqXXD^9-`b9Bl`&n|vK`F%=D#T+xm3)XX z01b3a4PxDf6e&~FZ$(8%AY8h-<^~6=OG&L@3KO3FO951R=a91Ja4s^KD29$Et*h{r zfPO~4-6fsyHvAE`+Af@h-Y08W{ib@Om{7tfv@#`rY;H|0+(c+12VjDHjz5M_eG z%Y-9rfC$C-Lc06=&q356^Ql%Uq~yk}4^HmfC|xTJ@DP&W$V&bA*|UQkALqEiobB!G2s*#Fs_X&>4_X3i8Wq>Jw$7s(0g`dhtz`|Eh0zC+ zba7S1wm>1v)lJ7?@MmLX#d$8dlaAgjgBtr=PAMj$+O&0o3H2?*^b0Qi;1BvlsKMij2YrN z{4VdWPTbn2|LdE!#@}%J>;R`a268d(I%^C1zoqH$uYW9ZlIvdoLXH*VXbxCFDOxf} z$9l3oHTm#6#VQh(H(IeU@P}aOd1-qitH!VOCz0O$KHC4!^u~u}r7ZHAyHEQ^AN%!% zwFZWj{C3nl4^Gn+%~bw84S+;C_{&-OufADL>$-(g*U}AHT}K$)YL~ zODM-0R618!hfJFKTKo#ztzAER_#hd#b4c{pT|y%5H?zOKg_8;Ff(wq71+L}u>Jn)@ z-=gZXBpv;$eNVz-wy|pHP+Y35-T3s;w)zj2>+89tX!-fr-`=XJ`#kkhOU&oZFM*l# z?gHJa(EtMg%O#O3ymX_G@;Aq9G4yB+X6aTeT3pZC2;4uMl7`-ZYVpS z2OS>XP(>Q$#5x=>C_pne=gP#n(HCb=9TIy2qC_A+C;Q&<{3!xkJT|0saz__wI}_9Q z!9mRAU})d{nD0s#sXq#kAzXwQ!f3X1IC0`ywBeQ1>LilK0orv}^X)?3yECu&2I5;7uX{<%H-2;V%##08*_Fpbng8)&kxHV}(nXY8 z(P))4j!+m^O(m%;>q<+Cbrg>-SB_-eNpdZf4pylgt!r($Q?8JkNJ?as`MsY;#~#1S zUwWB_dFGk#_wzo#Tu-$oK7wiD-=OJEH~xd?>P1Z16tchn7#gdf6BmX)aWj?M&^~}ndQhpAh^m0F#53;0EZ;FbgY@ydc0bHq z{dF5AB^MY>H#8H|myez1VaUGKGq7X%GDdvcxzL;p2W1=$rnb<)KqVEG@QymwK-hn6r9wJ@I3D=sTGNqp9KA5wFwC-u{u1kryv^6q4aiu-%@Xd34ER zi0ojM#hw8EEry;p?vt{808@C1kjfY$>Y&RmL6kQI!kaHW=LZsiLT3qW@RDYe7z%FoOD`=dt;X(4kf;kIn_ zc^n3ASPdjjwlbt;OT>>(zDIC}eAcqE%_ud1T5dn)i7`Vmka7$ydzK~UgZo)BKw&x4Uf4+;WuD}BE|Ut>yf z|LLquxApP$@9ds^aJs48r`UP1fHgUslycj-#CRuH?dqCm6-x(TClV1MMEH0l0N#){ zLM;Xg9BE=xk?~ZX)fWb`grWr{^Tu7;EKXZXQQdLf_i*&4kw& zCO`gp^T>h@6KOE$;Apq+c7pjIE<;yU?{}D}76xiV&O?sL3ie0v@H#rBfR;HWI91}L z*xh^gkUzl}kbYLr5Y%`;1{7B!b(;tOG3?aPbqqQB?{~y$b-tN|@w5j{CmIV8_&D@0 ziUoi-kc~9owQC$QI-VbU>OcgyZ-rixNsT>gM2@i}L^Ar}yd{GDeqToPq-&I283F0l z`(qqF_!U=`nOBE1^do<5_`P~MHP$pfF}8E_e7yOvCy+jiy83#ITcAVHV&&EQNW{_6 z`?{>A0REIzqJBVrv7DG#5mLyNl_9#xrRC*MpFDxG@%CE)gxwmYtN5=gouxj83w%fGb93{$Qhg8VHqg+i zxG=mej&^M%OkH^KVhJDpB$NHFfkWvp))T{%wgPiVaU8Gc&BO$1aw{qvFoSk)MdK&N zEVM;1TlaNzcWX~8y1%qY-L5ySW>>W=&mxN<8;_uNOUtQKry7QJ#A{K<;5V@)xpwgy zix~7`0H=3XEWBx^=8=#qiID-^%wRM=rjipcnGX+4lLcx;MMVTsE@!kJ*k*54v)JKb zvBn+b0XXwFqoaHBj@Y357On+X9_j@QcQm^`K=x^qQJzmk`Ay{e0L0;c_M1%BZK2nW5R)DfO$=|M5qVysQ5#(zw4; zYE!evW95W*a9#Tys8b5#v^)%C|0;-DG7o{70;*fbP1(rl>$VFzhO{+_v&f+x7 za^{d9tR3fK%sEq6uVQ(Sb%g-+1;-K)G-A#eJBRS;1LzD1Aws~%fFX8qbzQd8d9d@S zBARqyFnJJ`n2(S&?%fJU+MP0xIavANy0FS_0;mA<%H(UVuixTyTqhIapVVorhXCd* ztWIR(2nb_S72$Qiq`ks&01nm8$*BP9BNp-F??=n=>uOh2oV(~RJlsSKEG!E6*1}-h zsRIX9T>wImW{sum7G#)6!$X$iKSwbZpC|t5t|v7$@ID@_3D8jaN`VRCK5Xo)9(nm# znElaw(TU3+H1)YOV`5E9Hs5{PTA&0Zhs|==t|wsUAQ*XoU&0oK7X?QLD*J-3RTC@U z3ZK!6g(D1H1r{z;c-YzXAsh_C*~q653}xfv$0=(LK(9fe@2UlXyeIDf5}BHY)0VcH zO8*R&^F8qB_KY!1+9-QyyW=7;S&MoIU_M7c9?(B-Q!BwQj$q{lS5Sa2oeV>()`kfppE{vq+M0ah@1oI4gz> zKY*S4*Pm8jIsv6A`{9oS^-#C0Bv!eQ>L(~zw^e#0A6TxOwDRD*|&o{VQEPTFBd1!4G6vSiw3@E zRl|44J|;oIo9J!@K14bS*&A^bw)F*|Ne0!B=vmTqbi9IYW?U-}I+Nj`E>VnhuJ8|k zzJtJ~Nxf4n{@jouxNKNvC<^h%vAHc) zEC4|(G*QgH>QlaqZ3OXs!uf8#Ol7dXeU@*At?iE3VAE&6KCIb4H-iC4^WhlvAgWXL zAfKL;TyvJ`QjiRYevNDn5}5h_xtuX+<@{#ZZE-7K5)QRTSE+{BI($!yYb?4m@MdT= z`|p3MYaQwMy+f7_Gx`TR>P}YpP0m5PPw&b27~H9 zP@lHWZK&nY`qJ~dsa3gz!7(Zfa}J?0R_w=ntX5uJ6xG{{p3c6}H~V_;s8$k>+x(PD z>z=keYqcmJ%F<6QS>iDBU>!V|o^~d5vYoX)(m^NP^jGB@xmGdt%58_PrfnC*k9@2@ z8jmTI;LtM8#^!@TG-}Z*g@_`dIXw!S_PMhbU|7~qt-}v4N_=``5FYs`__rVEwMQ2; zUdSR`JhR`>XQ7C1C;f_y(DHjuGbkxIJlAe{zD+q}KxOuOe>$ymYDes@D(djt0nJo~ z>Z2RA>Ff(dDH66<@J(-#o}J(8J1d0{;2M>(OMl>OP8Hry9I5R)42DcBV4yyRsr+$c zrci{xS$;NRPt`aemAx&|Jbp)<_cGBj|D@P5Te>y<<{^g{CNeweay*W?q0f>Ug!Fsv z=Xn_lg@tUZdo!rY_UQ;$l`Wwjj|dIrY^?H|{JAbeoFSyuGMu+L{{uQry_jixs7+2+ zYk4%+Q?s)@&lE2EjF5jcxTNP?ov08kqwLMxE_Rn-rPyf5uI9b`yf(sacr8PJvwIb@ zFy%j9G8{e?QP-$fjx6VepL!IO09~q zr9O4&4XBERf-e%+M2Bj_V^r<>Nkxy`$x%~E*r#N%~w6niAN^E;Nma>niYmqv) zjmexfCaRHUl9NB=Q>)Dy-O%psT=pHI=yNw(Bf{ds&;i%E7YqBB z?R>J7QLfLjo z1l~pBLv``7!u2vZqJeQb=#mMKLTDQD|3P550lSr`@k*7p1Dq;R*~N`zp9T0X<#A3k z!`6DDaGjX(rn%rK5UXd5V9Fa_A|Gqq;xglXY`-yypK|7VlE#;C|)! z*%4OeV6iaU@-Z8X+et0sM;C+5N%3{Qvxz)j%B9l(q)`7|pqBQXcd4+j@X8efgHs3` zA#I2uXZI3a)F`7Hq`Zk_Pf6dEwD>nM=gz{-^|j&ZFMccHlf~qJFc6&pKM%z7Kn-esu2G_0`bkiIj{av z6jrU)$>+Lz{rXx31wuhlv8KA(851{9LcNHZe=)%S>^XCo{mEgRRy`> zl?S1QnGZw))S0uTojEzmAB@p7p(ic0_}g#W@3>e)D}m8TJltMA1qCqJ2rpgg0C0}$ zT*WK?Ns7f;Gbq!)o|D5cNQ`3&{v%lRJ8)Vset;09Sn{6H(oC*>yw*WE4vHyZuYGCh zr+W}KC&RGsUS+}rhC;nT*o2@}KoJHQmS60M&H`K8+I?RtBiAr3=Kmx#K;z(iZU3yFxaCQtm{bL7A6}rk_c;S7|caRMo*}I-z(S?F%$|9 z2YJc?NL|v_hBIW~yW6f&vmKfh?gL44U{}Mh1Lci5B(= zsK-Xo*{(@l;Z+J(=aGuExbDUUvtY z$*;I?wD%rPExOfo=oWJ|NF69JFVt#UTH@bp?zn)92Ai8R71$Owx0<@7G@mdFS+jI)BEq|8%qEiKhawEej5TL#-hYV`}%yp73HWn|<30M`!gGM1p#!Kg-_ zZNbgWtvcV?(eW$_tOEkz62SaV{xc|ONp%guym9MR-HJXEWVPC8hU%o(`#-A05k>au z?HD&zSr(n%%8(89|x8Tkf zh5tY{GE?dV{GShPv)_*3dg2LT!Hll>p?ejM`GVDMFDk4cqrqB=MDFBV`RIp0=s9E7 z4i1y>df;x#LQ_p?(4s@%kyVgD&|B6JS{U5}D#z3XDZ-B$8h%ANbiN6wANZ&n{sJf( zxgJ{nCqNaF#9Td3##ct@4`6oK9nmF6l31HIkt-9LIbTnKlq^Sf5rNV0kQqQle1)i{ zm$rIhq4x5^V}5dVh2Ia383^!j;J*;fOWW`_@eYdcQWV2RMS-eH^d8>>s!Lm(Jh7tG z>SmM=>acL|M=x|17(AiGWBrR@mGR~A#>H_Ik(3R3mD&l!70}F#@Blnh7Pp-ezNS%O zAiYuZ8%3DUZ`&#>Md2;qDgT5DPZt*vSU z!*PJm(veMB0DW7vwNduphT8$wbR46!&Csxc=tsNPfta&z%+?@-I1|zea{cykI)gGD}(j?f|H=F`(t8=qG7x+kBbR&BXUz7ZZ?XPJm>6Bl2Eep=maI1 zk3DAl>h&&;5>&3*CIF7OfAJdSKo*0q^6y1TD zaWkSudvTGp_skeq7Z=010qtrH4U1CAGY9cSHx~lD=@)jL5pH7Uf2-#usl1H+)8#W> tMz5XmmWHyQ2k^hx`6bB*f9>agFWQ;L%cIVJqL%!Lo{o`rmX_toe*vn?iS7UZ