From 229c10a2253f46b92be1df927316290bc8642b0a Mon Sep 17 00:00:00 2001 From: Lxy Date: Thu, 26 Feb 2026 18:13:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E7=9A=84=E7=BC=93=E5=AD=98=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/data_fetcher.cpython-311.pyc | Bin 19930 -> 19810 bytes .../__pycache__/tqsdk_adapter.cpython-311.pyc | Bin 19035 -> 21363 bytes .../data/api_adapters/tqsdk_adapter.py | 127 +++++++---- .../qihuo_analyzer/data/data_fetcher.py | 8 +- backend/service_implementation/service/app.py | 8 +- .../service/data/futures_analysis.db | Bin 12337152 -> 12730368 bytes .../最后交易日获取接口.md | 2 +- src/pages/config/Config.jsx | 164 +++++++++++++- src/pages/dashboard/Dashboard.css | 32 ++- src/pages/dashboard/Dashboard.jsx | 51 ++++- src/pages/detail/Detail.jsx | 39 +++- src/pages/watchlist/Watchlist.jsx | 5 +- src/store/futuresSlice.js | 204 ++++++++++++++++-- src/utils/cache.js | 198 +++++++++++++++++ vite.config.js | 9 + 前端设计方案.md | 78 +++++++ 16 files changed, 838 insertions(+), 87 deletions(-) create mode 100644 src/utils/cache.js create mode 100644 前端设计方案.md diff --git a/backend/service_implementation/qihuo_analyzer/data/__pycache__/data_fetcher.cpython-311.pyc b/backend/service_implementation/qihuo_analyzer/data/__pycache__/data_fetcher.cpython-311.pyc index 1ba04d7ba6065de75bb7b7179e4ce1b73543e020..7b25fc1ce513d3c716ca00474c491c82e0c13752 100644 GIT binary patch delta 1203 zcmZwGZD>Ou+h|t7Xl<-0($>~0>t-htrZ{6rBL?~s&yBUd zw$)ADrd4^i>g*idaIC9{xcgzPuXEj}fuJG^fkKg5H$kkreb9n>{{zEHu2sD!68BdeaSyWMv;Xc}|vJ>GhQUYODlL&)O z-Xi{}G?1%&h0+1q6i{azMA!-rfy08dt0tfk20>G$3=_ z_%gU#&P^ef&4l0|FQPY%B#KKt=q5DF8{3M?Hn3fgb|iT`6051#<9wt~RK5otf}oXu zj(9KF2hefQ!aa!n0Nv^qfu?DE95PX=Dws^eK9_NI)(MNc4!JHt+MeX~)th4}ou8tn z&}`OioC$Tv?1E8Mu#nk1#gJeIzd|%G%>JOiguTQH%d`7XkVlrhC}JJke7#tYQC;|u zDHy~1X!ZOy)<;A0e`H+-6+MuBr$jzI=GD59x@c|OY=sZgw+nNddU01a$N}hpKL*!; z2Bv~rU>cY%2r9e>@j0*poCg!YL_u)ONUzxQ$QhyQv?Equm*P>e{j@dS7~9A%nTLoD z`DGv*?=K2j*)O!CIGfq2z4$77LWz<_>lIO@{t_=eE%8q0$S;h-75q}|3*|LwC&LXyg7H|N33|0fYLVPW-f%RY&SOY!< zQP2%80P`U{N2G{mxE(lv8+d?uSXme{P9pE}Ot!!XEPp2FX4wimHg@VKYlkEezROI- zrgbi%s!AV4Ds7ag%yj=M=142aXkB$w=Pk6qvN6Z}Fh(yRNzd$yYQ-B~6JN}yQO*bY evRDSwhNS=Zk(vK@boE1z#KvEfvPS5p=leB=HZ8pb1H1mW4ksiyCLp#P}ones3Eg#!K_L zr_cM|-Sa;0-SyX4VT8F)yIdubIKDssMpta>u=@sUeebtQS#{{e8AUJEiz_f{9Z%ZK zD&>A38#8yTn3P$P)Rna?Wwx*U!OpVg`rrZkz0Zn?ydTJdr>x7Q*)4N;#9RjXJa`V| z=(|wRaS-7E$>E6OkO;LBiiK<9N0EII97EE>J%}s8c5oaFftSFrpitVKGP21&-j&u3 zegf%}G!~AqSIyb*sO-ogGh!am2IYZU74i|0o%3PnR$*PuEgn&w$Z5_(S$8U{FWr{! z#l(GJzo6jk<9agP-D~K4VHp^C3%o7RZ2Sn~=fMjA3(^$svDRUM>J3E@3%qGl4-9}bCCZ=db{8JjLkFd|^ zvT&OIu5Sy>U_f5z-6atl*p#IQT{NF)_?bB{htJT?4JX(P{kY*BHf|0z{v=nN75PHh z;&YQdsb_Sn6#f^zvax1h8dn9tDu4?3O>hMS!D?^~RDo)N=HM3*e*_)^9|J#FA<)Ve zYQ>rtHXBtJoax@4EKiB$7i@Yy{WSl?dK*w7p9G2--&AX38s(b<%t{sgbK{ z5EN1xH`1CzCSxAbAschxI|u(DB3_Y&D%u7#(^M3(iab?=M#V U*V{+8dnC5}YpMM9A4iq{0(>7#LjV8( diff --git a/backend/service_implementation/qihuo_analyzer/data/api_adapters/__pycache__/tqsdk_adapter.cpython-311.pyc b/backend/service_implementation/qihuo_analyzer/data/api_adapters/__pycache__/tqsdk_adapter.cpython-311.pyc index 31db358435a39d162926c62d27f29d252e3fed99..9cb0979b5162d7587ca7cfbd08b3304d2957f0be 100644 GIT binary patch delta 4401 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 K)^Y4K2j<_3Hw0J! diff --git a/backend/service_implementation/qihuo_analyzer/data/api_adapters/tqsdk_adapter.py b/backend/service_implementation/qihuo_analyzer/data/api_adapters/tqsdk_adapter.py index be67c4a..4a8f854 100644 --- a/backend/service_implementation/qihuo_analyzer/data/api_adapters/tqsdk_adapter.py +++ b/backend/service_implementation/qihuo_analyzer/data/api_adapters/tqsdk_adapter.py @@ -393,55 +393,62 @@ class TqSdkAdapter(BaseDataAdapter): print(f"使用模拟主力合约数据: {mock_main_contracts}") return mock_main_contracts - def get_last_trading_day(self, symbol: str) -> Optional[str]: + def get_last_trading_day(self) -> Optional[str]: """获取最后一个交易日 - Args: - symbol: 合约代码,如 'CU2603' Returns: str: 最后一个交易日,格式为 'YYYY-MM-DD' """ try: if TQSDK_AVAILABLE and self.api: - # 转换合约代码为TQSDK格式 - tq_symbol = self._convert_symbol(symbol) - print(f"使用TQSDK格式合约代码: {tq_symbol}") - - # 获取日线数据 - klines = self.api.get_kline_serial(tq_symbol, 86400, data_length=30) # 86400秒 = 1天 - # 等待数据准备就绪 - import time - start_time = time.time() - timeout = 5 # 5秒超时 + # 计算日期范围 + import datetime + end_date = datetime.datetime.now() + start_date = end_date - datetime.timedelta(days=10) - while True: - if hasattr(klines, 'datetime') and len(klines.datetime) > 0: - break - if time.time() - start_time > timeout: - print("获取K线数据超时") - return None - time.sleep(0.1) + # 格式化日期为字符串 + start_date_str = start_date.strftime('%Y%m%d') + end_date_str = end_date.strftime('%Y%m%d') - # 转换为DataFrame - data = { - 'datetime': klines.datetime, - 'close': klines.close - } - df = pd.DataFrame(data) - df['datetime'] = pd.to_datetime(df['datetime'], unit='ns') + print(f"获取交易日历,开始日期: {start_date_str}, 结束日期: {end_date_str}") - # 过滤掉成交量为0的日期(非交易日) - # 注意:TQSDK的K线数据中,如果当天没有交易,可能不会生成数据 - # 所以我们只需要取最后一条数据的日期 - if not df.empty: - last_trading_day = df['datetime'].iloc[-1].strftime('%Y-%m-%d') - print(f"最后一个交易日: {last_trading_day}") - return last_trading_day - else: - print("无法获取K线数据") - return None + # 使用get_trading_calendar获取交易日历 + try: + # 获取交易日历 + calendar = self.api.get_trading_calendar(start_date_str, end_date_str) + + # 等待数据准备就绪 + import time + start_time = time.time() + timeout = 5 # 5秒超时 + + while True: + if hasattr(calendar, 'dates') and len(calendar.dates) > 0: + break + if time.time() - start_time > timeout: + print("获取交易日历超时") + # 回退到K线数据方法 + return "" + time.sleep(0.1) + + # 处理交易日历数据 + if hasattr(calendar, 'dates') and len(calendar.dates) > 0: + # 获取最后一个交易日 + last_trading_date = calendar.dates[-1] + # 转换为YYYY-MM-DD格式 + last_trading_day = last_trading_date.strftime('%Y-%m-%d') + print(f"从交易日历获取最后交易日: {last_trading_day}") + return last_trading_day + else: + print("交易日历数据为空") + # 回退到K线数据方法 + return "" + except Exception as calendar_error: + print(f"使用get_trading_calendar失败:{calendar_error}") + # 回退到K线数据方法 + return "" else: # 返回模拟数据 print("无法获取真实数据,使用模拟最后交易日") @@ -458,6 +465,52 @@ class TqSdkAdapter(BaseDataAdapter): print(f"使用模拟最后交易日: {last_trading_day}") return last_trading_day + def _get_last_trading_day_from_kline(self, tq_symbol: str) -> Optional[str]: + """从K线数据中获取最后交易日(作为回退方法) + + Args: + tq_symbol: TQSDK格式的合约代码 + + Returns: + str: 最后一个交易日,格式为 'YYYY-MM-DD' + """ + try: + # 获取日线数据 + klines = self.api.get_kline_serial(tq_symbol, 86400, data_length=30) # 86400秒 = 1天 + + # 等待数据准备就绪 + import time + start_time = time.time() + timeout = 5 # 5秒超时 + + while True: + if hasattr(klines, 'datetime') and len(klines.datetime) > 0: + break + if time.time() - start_time > timeout: + print("获取K线数据超时") + return None + time.sleep(0.1) + + # 转换为DataFrame + data = { + 'datetime': klines.datetime, + 'close': klines.close + } + df = pd.DataFrame(data) + df['datetime'] = pd.to_datetime(df['datetime'], unit='ns') + + # 取最后一条数据的日期 + if not df.empty: + last_trading_day = df['datetime'].iloc[-1].strftime('%Y-%m-%d') + print(f"从K线数据获取最后交易日: {last_trading_day}") + return last_trading_day + else: + print("无法获取K线数据") + return None + except Exception as e: + print(f"从K线数据获取最后交易日失败:{e}") + return None + def _get_mock_all_symbols(self) -> List[str]: """获取模拟品种列表""" # 返回exchange_map中映射的所有品种 diff --git a/backend/service_implementation/qihuo_analyzer/data/data_fetcher.py b/backend/service_implementation/qihuo_analyzer/data/data_fetcher.py index 380ccb1..1b5d08d 100644 --- a/backend/service_implementation/qihuo_analyzer/data/data_fetcher.py +++ b/backend/service_implementation/qihuo_analyzer/data/data_fetcher.py @@ -464,18 +464,16 @@ class DataFetcher: 'SN': 'SN2603' # 锡 } - def get_last_trading_day(self, symbol: str) -> Optional[str]: + def get_last_trading_day(self) -> Optional[str]: """获取最后一个交易日 - - Args: - symbol: 合约代码,如 'CU2603' + Returns: str: 最后一个交易日,格式为 'YYYY-MM-DD' """ try: # 使用适配器的get_last_trading_day方法 - result = self.adapter.get_last_trading_day(symbol) + result = self.adapter.get_last_trading_day() if result: return result else: diff --git a/backend/service_implementation/service/app.py b/backend/service_implementation/service/app.py index da88e51..e14b0e5 100644 --- a/backend/service_implementation/service/app.py +++ b/backend/service_implementation/service/app.py @@ -72,13 +72,11 @@ def get_main_contracts(): @app.route('/api/last-trading-day', methods=['GET']) def get_last_trading_day(): try: - symbol = request.args.get('symbol', 'CU2603') # 默认使用CU2603合约 - print(f"正在获取最后交易日,合约:{symbol}") - last_trading_day = data_fetcher.get_last_trading_day(symbol) - print(f"获取到最后交易日:{last_trading_day}") + print(f"正在获取最后交易日") + last_trading_day = data_fetcher.get_last_trading_day() + print(f"获取到最后交易日") return jsonify({'status': 'success', 'data': { - 'symbol': symbol, 'last_trading_day': last_trading_day }}) except Exception as e: diff --git a/backend/service_implementation/service/data/futures_analysis.db b/backend/service_implementation/service/data/futures_analysis.db index d81896dad637cf5f6a59700dbd799e51d65f04ba..84e1a3b9bf4a95d73cd4dab610ecbdc45adc04aa 100644 GIT binary patch delta 251055 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

df9{AAV7FC60ZJ4 zJY5;SFIuarMb-X(^9(WgCa^ z!v|fH;3Yro{2E!s%5)q=Q%~J^3jQ6I`sl@v#*>wd{a)i>C1bbOSf=o>*K1@e1s-+L zjioX^4bmG+l#IPmW3iI4GioeSGVv=!8TeA)+{juaK6cHG`6@o~%TqG(8>nRBmn-pT zbl%9yS5f}y;6&p98K2g58v84m_~j^>`1MmVjvX5NDw+6YE1CH9Q8Mv6QOU&b1S!*? zys@{Eu{&?6_ zfFQ`kPaF^gnfQqVf*`~H@LH}oAP55S69)uACVuT@`n1K`c)XH{pEw{0@rhr$`aAIx z2L$B+yfKab4l?l*2L$EtyHOkvlw#DB#Q{N(sT{=tL6E5&-7;UI9&1V_jxHr5$F2BI0YB(T zr@puTrT&imw*FVi$ZzYPQl@&m^$#UuId1)3$;fZ(Z%RgfTYptDmf_Z4l#Kkg{;Xu; z_Y=yno=D^CO|1GUexOheuQz?6;v>IJpG%qQ@uttDJ=Nn)EbD2qr+U2U6BQr%ZTeWr z$Zyj}${zV`Vr!&5^4s)*ijU8D)B8%s^4qjS$;hup)MHo=#pes}Uf_X1kg@z~L_G!> z%Mae%kbg&h@aBb-kzb9d#}FU+!7Cf`@5m3{2$wSQgZDF}jQswG9Q3`0XO_1UHSPEu zWPoeBEA7d&A*o-b-kF+_vLWSy1Co)L?-v#B4f z&+N-zGvVbJIXM!6&pDm@w;eDP6pvWMsvck0gCG6%Wn*2B6hQ25k&{#VXSeB#dHn5g zyyHk+uWW1tBF9CB!>6Eo{~Y_saP$Kr_rVq-(le4*c_?yRR{#F?k=fKIS9d2W*n~ue z0`-hY&yM{I>PZ z*MaSkI?EEmb{WhBAqi)dbtjlk3WhhA;p#17q98*FL!sL#UmayZV=n-i5|frKVt(5o zGDWc7klQ{}to+8fES>`H;l?~p&gbL=lTvU*YOnIeJs)6NIgTVqut`q&I$q_A_XdzJ zF>h)VD;iQJ_&~_(l&?)jzIbhcg640qx*!y@aEU~rJLI!RN>}+Jk50(vCE%>GBTPG$ zFWzgxELl7+X>OIhA-_EvHoNaym^ByCQg^s|otPa;bF1tRCE3HI%1mJ&9WP6y9 zEMh#%5w5Ni^?V~=kCkTQ>;35V-_@o{FF72*&q^^C>sPhLQf8**po?8c_Kfq z5z96kg&#|q;Dezwdl-1b5t?OaPodT4Z2m3svPrnlTCp-kaOt5`dl*(fvQ}1eJbWIm zep3*V;lD&_Q3~ErI~$}4i?+foF@MH;mV*c4_Bd2f;W{#ucoc@xZD63E@T%gWHu)Wq z4;j8C7H$aDA3Dw+23|N73$nC`^p5CW-Vy5(Z;MWXV09-p9tA^w{2$@RGJIPsZ4taD zbi6$qxR;0?7S0f1sZOwvFjm+6p%Z;KY$xt@P z1h0oW*|V96FvEcgHOP%36EaMQMu%YiwwdBX@M6~z=FeL~b8w9(r4{p?N76(&4e+5(*?F@GPoD$~AiedLoL=Yv$n2@~F@X!DP13&Lok zyWY{hf6zXa3N#sjLvd|>Be$Ag1HWBQYTv(WV=}V(DK;hlDO&UGj{|Z_1C1N2wC`JN ztbiL^lTk-jC*jB(3$8?)|2{WAQ#(A&-s~LWhl>N+f{V2US7{4+fi3Vme7U^|TQf|h z#K$mL5;x)Ri(Spy;d|}PMpNP8NFAR~6bs|1>nrW>QhSq8!i3iYG`SOfVZ3XtcKBg? zlaa!N9045XCjOKbjCb9u9iDG*a+W9pas(&>N@b+$HSO>k8VE_L{n$_t2#1Ovn zk4Q@8v4|@z=kYcsd|vaehffbOv&B%oa(m^Um9JO+k(~3CZFE+#nC6F=0Qa{@TBJKz zZSS1(q^-rf8Ya*e65wro<;RhN%KAv!2{|k6qqF8^Miy|4U0GZCG5@6IJYj3H{cf28 zE{#-v4nHqf)`lDiZHG(7OeyfOMr9+Iz$ZOtxqS*VRSMj(Dx2Y_v9j^_oVNZ!lgs9h z*244;hG)FNt^BZZH+-5qI`L=e+UpdZJ5=Ro@bh8ihXKdvvtL|=Q&$}dwSYTRQh)^R#_*h`o;ZgOlROvvNe`gYdZ|*QxxcVG7`+xVTh#3Pet;9FdXpf^7=MIC zarvooK;@9iE|sTr$cfupY`+B2S1zwy*)C^`eRP&}9$(sk zJoBMhD-~L}} z`PM%ArHBr73>PRXU#xtqvR~!>{c{f3MrTtW6AOiX@bE#z8}U{~D_=Y{=MUTX(CRMa zO%SX@^1*fG&(Lf99PxJR-*!$(O=!gy@_$%}#PzxINIA5+Klkk4_A~_=OycxmZ4uY! zE{a?f0fTn^+wSy=26`m1Tc%!P&?SB`N!3`1NP=w6(y?Yq|cTp&tO9-mRXR$P-gklWB07ba6M%!OIf$dj~v zGwf~P#FI>jH*07SMWfC)YWr@tG2)Yu*}XP&FEB0t;w*qh+ zJ)i7wEQ)rJsR8hh0ou1`Ihlo?QD(fk!-T+$&tNXlzP-@FEdRkbusCor7ZZUg0@(D* z*1mDsq-4w>3< zl$;3%twc+k|2zDnT>JJ@dmA`51Ucd!h-ZfRT$WF_`R`%cw}DqofmxUT~4WDdg4uoMHZ%xn!76lgYe{|ROzim?zV05)I zLVuWlp*H^ojsITax<@3*S(R+n?D@q;_?POTuAH7G1~q=ZTRulrF_HFvKr!GmlhuI@xGs@?f=cj46=2J zEI=IbVj{oe@1w4r+5v~>I|Yq$fgkU5@cDj;&$rR_hIU|yO-h_#`sk-*JB9;bbR^*y z=V=F`HfFrsXXk9_UP!Gbt`$;2V50waJ*pjWc*qy4+K6Xkq!l=OW3hH%n|)#vRcVl8 z@FK?&Y;USeIxA+wM+drGk4_>oW7W4K@=C zpsyK8PUzaC9lXdUA$U#^ z^~7Q&^JYv>R4bXcP2r}^#w-$m-{N_k}IyICKw-%O)Ym*Y< z)OcZZKnI}OM@j641 z1f2m)TrW-N3}E6qB@@eQl}x1wohg5v9R5fYp`R2oQG_lKWJr?E04CTJ`T8xWh~*W^ zgjim#WMX+4$@1N~#HC86f`m?j-e{+nA`;O43z;ZRRx(kXq-3Iav6872p_vu-#1C3f zArn7n9ED8$pxq-`ROAbkO#IGQG8G}TMIt`&gN8=P#1HmfgiQQkV@1fs4|Yw2O#EO= zM99Ps_B(`3{KiUIROB&ACVsI0K=J84o5a~lCVsGMApTDLU`s&A#1Gc{g-rZlF<;2U z?@T2VzcZ9f{7#p$sK_IfO#Fr`naXdNl8N7GD8sR0QIT2Ru(cU*>RHs|u!>IfhANrp z4N)@DJ5|Xe2O&By@yJy8IXiNGO3r=u(OJblxxNf0 zJkzkOH8oNenc6+)0SA*c`{nvFn85#ek@jE&pUye+988+8k?YG4pVy2?k4RP|HPSxd zWOBU92lvcKzerA`Yote7&ixK4)TfIS`a%lac_Y0d{VM;8^mESol=iTX$*(u%CfvW_ zSYfY7$4IYGj%AO~C|pU5~gL+S&>;_FiLld z9#ZH$*O9RhePm=-Cnqwjd50(^SdOQq(otY^N@Q%ZlSz_F0iX7q$Q({6)rkC3Tf9vddKM+UYbHnGRHTCwFQgte>jqI=MZh* z7@JISuSlPu7AfH3FkXJJMhliO^IKG+?W?digM*GTTfEsvqpR@9!^Jt;zDYJlBNne` z^;2YHjt>IboY9dnkuxJ>{5i2UCIxxiq*E>%56EZk4C6% zjxO`G`F0#D-(>8g@hTLq{#cyblka|hB=(y~_O(8`tdMpbSKIweT8=|M1|+eM#&@3h zyWSs(EhtJM*!tKpBJmM%PycRsXa2>Z@#@WYU$4hkY`#0s;|b4!9mvI#yJeT~uUv$K z2L*7OUmmPY8>iJuGGTI!e+kclea2RiON#UIi|iwx-ZpYx9>i8fZ$=)0k^3MG7@zX% z^72Z{3XKZ@F*5!oJcqSREbC5`DK1Z+ps7qDlRnL%V(y1O54bJ`H($Z$|tvqT#%bzP+Z#DjW`Xs@o%s- zazQDqn3loygl&)u;9ANujI0Wypct-kEG;UtiOerjtWGz|0&b=pR8~}6)b{b^!S#rx zRuXynaEB+{Hrn=yfpwU&3<==~6|0Zz6PSxdrg(iVaw}L>6CBEQ0G7 z3rsN!%HT53qB2u8l`#u|Kt9IojhOr@QMh%p#PZ@5z4i$AZpKy~kGE9fx7-yL!(E~! z`Gbt-fS|B}$8VGzD3b>{AMS}PhD%(HDko#+15xi(&`&(m{mgYf*)N?Y&%)yv& zOC>a@#c<#2AoM`XzApZycJf-jY7XCD%LfH|bPPWImwN8yU(;(0JqGRU^|@$}bTC9j*{HKB8=Jg{bjiWkVcUK7460 z&Z>i8Lp&Et8}Tl6wUUYFA|(^gha@I0NC2I+gh3BAb#S@KR_ma;>$lkCVt|}KR_ma;>$lkCVt|}KR_ma;>$l^ zmx7+J`0@{siJ$oL50Hu9m69LriZqHZ|A4;}Kk?-sAQQjKRD9xhsgjA`B}yiKQVF9cbb$%{Vi8A@e3=N_zhJu@f(6NEau~s0@}s@ zEAKRc)pJpQ3;A530A4~*i>KX?)(75he>inisyk(UN>xgB^4G~rlFtbJ8hReq&qKkD z!Rv!Plio|3lT;Yk8(@Jm{lEKP@?Y$4=d1VK>^sr>iFcm&Wc_>nNxcHTTk#Fgm7Xr{ z|F~zm2WrjQEG-ifk^ix4!tqh=#lPUpNxbWe1rFy1#aXzI#2m~jd#q;}@k)l`k_n4{ zIZM6ehU;`NPZD!C8A==qLmqRlFJLAv{)G-`@);q2ylv-|ABtC%2vxUEECtNS#c%=d z4Pwy;hBMsJw1peBg`d;!PTH=xHFX>{q1j=>jQgXuaILm*3oZz5%+z*ma4>5bR7ZzX z#1#+P!sjrlSzv#Pw(CQCGkD<!z&4{I6}T)t@42@wOv2jC*(5{;x%1cI3527 zqw}Evf3`PbE9Z%Xcx!;PzzoPuPt$f;UVt~q!5fLP7qjS1xyDhJl8%FT{ zp)3a8uAmX5#1~;ZXuG`*?5Yd-u{S6NatY206T0p=ZFj)lMl%v3hqwgOf?_zQi?+L! z7b`z%c~tok9dcR-W|Y_^?$JAzst1Umbcps8#=hkSJ?4| z0KWP!jJlO-yO-J%yhX0C(=jLBxWNCAP#;&dw)-O+BPa|ywu&i{Q-DXnW(YJ%vrf@= zAG0xnqJUE*bRLq9I`NhknoMxP2V6|sGt$NgQZml1(mSFH_h<_bQ@eSqwr7rw5ifM@ zI(1qO?`Y8;%+Vekg01u(*Js+EEA8#z+=^g`jm3j*?ZF~#;jdur+OF++)!yg^@^vV5 zYAxQ=z-}S`4QB`UJZf*m^7|MJ$t|EP-orNfJx$a0yku_&$7F~h_QF_tREAqzOSL_X z_C|1)Mi^0JLH!35{B+lHZO;LFBXxR}-WTO{p0>MYxi)HhezP$ezIgu$tbWhho_(P@ z;z$cV5%RV|= z`McaZ1ry%pMP|a!dQwo{1IRVkRTf&spC#%B;fq%(juJN``ymAw^=(zvR0!zcwD1#<<;ZlO0wo zecLdziV{4{tfBSTY*tZ%L(M8Gt|4X>71ya|6&2ShCKatWY&+SkqT(8CR#9=4 znN`GokXc3SOU)``Ut(4f`(m?-*cX{q#JHCmtfIo{Z&p#^3XNFA9-2EtMeKW+Rm2{eEF%`N?`BpJ`wX*+ z*mpInhRUl}<<1)zlHXF z4W5{kNV+u19atGC_c!~a{yx42-{rn`-i_Xi^xySmdYR`l&uyMg?ppVG+E3aeaJkF} zuABHRjj%+-w5j4|CS32~t3;oQw@YRCk$7qKW4t4&)s1k*ViR5yo>>kGo*}qnSzPEO zLkUNr+ji*-2;D@d7+`G73jtun4So{lGx07j$sX%HZh{T0pusf;@yv2Q#O8hsFk%5t z!C7P{lq#_f2Qb|C0Y+R)s6q*Yp;Mmll5k!$;)=W0*H|kwM7LiRgrdP~!V!j7v2gX5 z;xL7Tv&xPzcu{y}7})S?33(FFSDJq&&Sa46aavr&tHOuz(;a}sYct#xF0Mk7h@Xjz znn-rrB28G#vPP}wA%S?6F@PkXHMGUyzFdDxZFdR8E1I$5DFNh(8j|hv28^0bjL4g% zp?&DcsQgKBl@?3|$e-H)h?6j+ciXPPLf+s#M1Ip4z>q(GB3}KLa36~+??_Iv^~AA@ zf4PEH{}Jz5%qNrBm`~TI!`<)#i$Yt|ip9TN&en8ZN2a{dhqFBRv^l`Xc$1bsU3aQS zu#&kZGt5&Z&m~g{(K@t6;m=olU=7>@1}NmXAB%=cgfqGONQD+k+aiW%K0*3D zF2}-^4zhGaBW0ECpEr1C|+yF;8{lZ7m0g7Z4DVa+|(p$FoMZMb@ysJtJFtK_6i zaIG#GHM+_RRHn$0QDXJxkm!W^drV9tMREg-?Ou@{2x4W`jG zv@7^HcrWx3Rz}_nwc6%_!x^}%I$E@mU`sCgq3ASaD`1svVW8;fobBC!LLMsjcIDoz zy!M9B>}xL{+2^{dX`lMU)Gt$GsUuUhlyxaLru0evD)|xEr~WPUVrXJ0Em$AC8AkY@ zB+W}YIq-R4Mxcv-z5fE=uf2TCR|=cd)4d(^8hyOyM^DUC=>EWcv-^1Mb#0vM2Uj(} zsOKcl#2CE$yFO0N2j7xFP0m+hXePriMYW>P9W-tZkVp6m3nl<^?-uh58CqeT$Yh8%0@%>BWw&VkRA_;9f?+KWQ~B~^ z*f8MR$y0|5%O#3cwngF2$8SK#mXDu|Mxd`nM0%+N!WV?=_EzGA19EX7-^i z3h)sZpaU7|HFpZnm!TES9W*v^3^D*CENUR-ovwtj%DNMbaRE9YQL7}s)aYwj zCB;aN5YtRUH-ivV&GyDaCrAE5&f|o=Rd#}5)r=lGuEoLZP@vd{wkZ6em&^Olp|7AB z%jcqpkw8}2JQXvt1xR%NIgChg)eokIVi=)9adR`lndg`W3~#vBEEU-zUsmR=;ZU~C z7Dq{clspg@7j4K`&}>m4OLY4=&l35uoPSA9R#`U<`K?*nA<2*76r)A<>#CX z`7y2X7?VP)Y##9&WJbpBW6jsoSrvq#vmURdH-4s2zuI^aT=X^C@4 zd^Z_NVu5{HENdy9RKew9JdgnVpa368(RMxLU^BJUNQ!$O9uk0aQg8@jR?XuJvHXzzi5Zm!a*lT&HDZ3|^IxrNNyGPZq#=24MMc7j0Lo&3p8U;fw!fJCa_9 zi#vrwMlPkFoNL-J%NsNTVo!bC*eymkip+)|u=3_yWp8q!+`h(zN{Bo^a!X`(a?TC* z(eb-uGU1JFbRGPDm+6t&{v6A_XvCHXiEoe5`+*5>`XY-W)!fYOltM&qU*jTUWCi>z ziY!Xcxz3)D`UV+Hfj4K7=OV9jGhfb)_9o}46nF<5c>#W&jy&geijLnR!%rOG3Ss0G zKz}^)Lie0I?9pKZnqLnpmI2|ty*HphU+L2N1_0hNU?--pAtNXc@xzbjog;RH?-ksVrWmC$eImd| zsSG7Bh3??5Hb_88o)!fh>Itmt$*>A4#@7_u4n+XwOk-UPkf=9kjbxRbkj}6m(Wu61 z*?J}23F&kTk{H*tUW2#DPDmrnNOEt%V)?(zX}ASRY%lyHq+w#X4=?@FIQ>hpf+<65 zp*dykG$bT^Qfx6u1pCkli8XsyO6SI21vVL4QL@U8K;^!bH0T#Mzx*$O9DIAIQAFh1 zUy31?3N8Gcs>l#a5s_~zgw}{CJ0Y=^hhBq;9%M_5)@`jJyZ^5!rx@8Hr~XE)D#_4F z&WX&)W>*v&3=+XUbV3@e2#F1bonoO(hE_Nym@)%~JX)IDhfXkq%#RCCnZfL{6(Ota zgv3_-$@c-_TQ+Ix`HfikmDX0-$(>6qrHA z!Q?9#vHu|V?WDO?c7n+>V8q;0R8l#^k}wq7!oaf{NXt|(!XjV(Ml40kP@y5Z+qR?U zh1`6RDr7tz9C$k_muGvUi(mX}U`wO9nEwG?S(A3CA*Mlz>zGSoE7C1?p_m2F{`On&W$KE>l*F73lYPx*NT zC3%JU#=H!VfniSd1Z;S~RfqhXDc=l$iG-f`*{tFe^u$kQ6|Wk4;+R>*+iX4YBdX|> znYdn*tpW7Z0)pqBrzcv>hTMnr#8H!q4(cV2m{t7Y>WRZ<6>oX;#P?Z`^9+CgXY)9n3HmivIS7sHF|I&nxqkp&pw!BcH<2+qYd~S|J+}Z466^W>S zYK}zI+0<#PEeG`yADbf)b=Fd(kcjz*7>RrmN0WNu1G9>lzi(2}IlaUV6FLspATv84 zGgNqVvIDZ$e2#QU975@d?Pe&VzRe6JN_`3t6;Oiu4igk{f5!|(rT(^AMcf-r=yXaC zt{mNUPNx*ADdJXBR-G?P276jP(O`n2SMn1HGn6Ry788`icrh&?XETl83 zSMVjap{ZY|-j&)t8~A zGWTch+uWVCb=vuw$F;$Ag?ypfF-e?I zgL=)YI!rpmVJ;b3fgKOQj(B2vry0KMoLb=>{Qsl>-<$?hb)- zqGHZ1t*x@7`}9CNU}~ylPyT(&i@Qa9&3fHkw44B zRT9oBI}y6rLWmq%TH1$BNE3w*0U>he4@4WNU@Wrj!-uk-V8BqrOh>4pU{B@FWPAx4 z!8^fRWXTsfwM4KFoscdx2nnYaZTu%9w8A;TT%cgYIjB#>#)t|nuud@N8!+V2pNM5! z6^S4qV=s87XV5g95tgtvX>yr$C0RzM+F{v5|CaQZ`p5{*KS(^B+#MyAM@ zzZTD0h7ylLr%a7EKXbfIHe4+c>_aD{a}i1G8;R3U_6RZsCnTm$w?ZM2L;o|N3JWE2 z=zoC39~vES1wQ1@Uy4)B63r@moN_kCT-xGDlr*&uZIOV`IdaWaoQIOfycCK!rbV)S zd(ZPV`xrmC3p=zl+K`=>N+y{W6_}y_@5ZQ-31bEopC+Z8N2I+xhEh-?Z9ow@w94 zR=e#N`hNE<^9}ZX?w#T7+DXg>mU#xdKX=b?chxp%7s7TsThq>84!iC17(blJJATo# z?H3i;KD1rP2bAuj9RL_Av~R_RxP-CFPB1JV&O;&@Dl%zhA3CAP!{Nm#;I zWhWRm<%G33m=*_mrImf?h*AMZD*2FH^k(+f;cC)5qVR*6h(dM$AEKl$5hzse{~^j$ zi9+@MAEN946#l41H}=m^Axy7{klZ3hP+BbR-i{$a|%=edvhNf(JVRg}m3^ zI$TY9N0bUYM+qq8y#Ek|PGbTJjm7>U3O|j>-A?pf{}5#=9-{;la^8Q2k|H{HfFbYw zR-Buaa8}u2BW#{HjR`2^y?e#DM_TU{s3bdW%*|uf%cx{Tk0oL3Lt8Su@okYP*CY@A2S^hkSM?*sxhnu7C*CV&{tD0{>kb3D zc|K!o08r$~3Q9s)LMJ4z1&JmW{|rgDAdyG^GbE1%iJbbMA-PrE5U+;s5hvRvoKGiN+#Mf^wH%CRy7Nm}YI9x399UEn z9XY{yY^M`2_q$6Khd8UXTTEv5iXoU)wuOPzXR1t)6MrjCC&+M@c)5wtbXyp{w6by* zRZsCYxHPv9olx#jBP{VM_b7m&4-*V#9E=ir5b`tBCz+W)-n7H>-$!*sLPDq>$^RuTJRvx?XknN`HT(5xc%1!fho z&o`-P+p!_ftRnUU%_?G_YgQ5alguh&KftUa_WjK&VxMDH5&M2-6|wJYRuTJbrINR@ zHS{s7i2aFX6|q0TtRnWkQN{Q20gKqPozv;80%(YQmf4QTXPQ++zNcA5DOm z-e*=3yw|KEcpX*bOQKdWO&r_+94Z^P$&Su)G-zf!Dw{`|*Wqy)FvF5b{B1VFl1cn! zRw4Dof6XeSp7_(OLh6Y>%qpaw_+6>w^=^sZ%qrxb_|>e!=lcJPQ)6TBP#SgPi9@t~ zKhKr+blSwU4ypC2Q{c7p6)EB5oyoJ3dxkcJCI$ZvJ{cUE^i9&;Nj(Fb0+alI`JeC) z@qO*P%a`N*$UBXNkJg@{!zlVprq#nPA;RN5m*MIoVkhi~cmw8;*lncHA8fICfd!Dx zK%`-aBzAQVi__i`@q01xCAnkJxINd{?&p)c9pm`HO+w<2HC%m2?5iCX;UO`&rxcD4 z9_DI7`& zq+w%)j7Y)@c=d*N?#1j`h7yTFk5lg0N__i-ynwd~;pzhdNrpRx zXA*L|pz$S%mfW%Ohxjo8LgI}{TO^4{VbIA7;M=SC!GCd_3?7_#P~XYbU-{s0F+~sl zU{gr2CL>=Q5y#K~M>wIxv&v2|rWZ%V0X7qoM6`sqNENYp@P*6r1`v7fZH7Jr(8Lu3 z#K#>pF2*+scx-H585=uvRkuOn*c|!vez8?Up$>4i)=(Oz_e3CZ;l~zh@Is61gv7G; zi4)%dL~d*~{NDwlS4D7B4Uou<{}~dS@?U-^9#Dh}i)DfXBDA8~J|Aci;VZiMS_hyA z_dSERIpD?uWuGV>lI@=pUkg-kiolmF(NXsAMU|4_0f~&EEgt})H$}pbEisjqEximS z9EFb0s~+B55v2^%VqP&NfPLr)lm%~RNFY8u`Nu%BO+e(x_Do~~j*R&GB9amL^gjeD zpI`uyPahGjj0~;7j*M2CfXJmKfPLr)q{$aF;PI1J+XKK*0+~7jO#vW0pd`NYOBy(Z zwm?ul`pN1c#vR{_9$C_|%Ffk;zc3=6nK(`+E$u^FKD?gIHUW`e+XIBFN$&_WbrD~8 zf-w*|^*=!2!m@*$U&F!rG%N;SNCau&}O z`Ln$>4Em6yEedoxz2wnSRnLssCgDG=F>F zdf)lpU%X4a#rn=(`g}dd^N#0gPr&`G`wVTLcCU7V>n+zMbW|5SngIL~| zVT%|@wBW43W7{*Jul3}I4som{Zggr9BW{UwR1B6#PI8)0u&g)ZJ!oPg?&vxuhI=xU zz!Z9&CIL5^2Df4-_?VbRsL+D!c0#(rj07G7-OMrZ6eUuNXnIKY+GY+~i0k>fbobM+ zn8b##LXwD<&=!d5wi?@tJ>eh4yzQ8n3n&=@y-rW=T9Xfmec>O(EK4F-WyiS^Ug0Xn z+hT9{C&5XEM@4}XqQ^FOP)t{wi-{VGpT*%38A?P7ZGo_u;4G}9M4g{}ViHIe7s>X; z1ViO3*^#d6x(}i!hfT)JaP?0(PS)XHgla$X2kR^Nk#uQIW4RWb^l@AHFSpYpy4>`L z#HKJ+M`;V8C}@G@gv6$9iT9vcnmEbygK)PWgxAO?M1V<7Re~RYl|a9W8{VsS^ z0+d3ZEeJTwWK&fayTZpryCo5!~=6h7y_RXC3c37iB?pG5{W{myhY5VL{8iy=4R6Il#B^DmN!57DocrmZL%kp z-g8tGI|2Hf>iT)+QWCAPd|)C}$k+(DZP!ttijHSm*SM^rIKSpq^HH{$qVtN zD`;wj7yc;Pb%{h_z%g@hgzwakY^Qz{Xyvd^&_+yOUJ-Azram|Pzcxl*BM zED6zL%ZX0)&Y@|;*Qqm8yQOSQnUMTP^0MT?q0d9NhdKx2!OEnck{*UHPJKTxHPFug zntzP%uy3JnfcHP$yw`Yx`t$mkp8cNtJbl~^?#tb}wpttJ+U=UdFQn}YTL%whsNxgf z`UGnt!e3>mGL3p~Fk#apOo%BgI*{}Xfq2*=>p|nI?TkfMD5Q?6 z!2(X?t>25PC=sl3@NJt?g3O8AN~x5DvkEtt0MhMAb_d_FM`~}*oLC7G?aWcp=}9CC zlY&k5NXMIfiAEHMh1<(T93^84Zd)YuB_@4I43VXweQ1jVrIc>Un;0S=78OqcS!7S} zUHiPXGb0K27LWX>Ty_zYYf8Z%e9s06@|I@uZ!tzbBHD8qN>`vTxWfhrGM8$mBnB6< z6&9h~{Ucz1(D=q)!z%$P#f(J${iDc?>L4u0!QjXCoRZB*I@UW+W$a4z z2?=F2ME4^;r@E^`@+ zDT-(zC4yXzAlYL(q=QlYOgvsZjE|q7XhbU_pw#5nB0C}RBeh~oBHmZFx0jP^6c z%6)d1VnHkj#JEjVs)`lt#Kx-ll(nJJ*rH-ZG$I;fV#8(CN3o)4j3oj_!4L}?c3BdW z7*mZ61#2uMMq`V=bLM-_+_}qKNcjEpzOS1n!#$rl-}{}JbLUPubMBR{2<&P3MuOAH zvEE?m4_y)1U*U?t{s*oI>@RmkVE=tr1ooG?BCx;I6@mQ>MYPb0{e?x5!heoiokxFD+2oqToKq$bwyx*z9W)8=R8*g_U9TAyR}jXRIsluIah-D zkqGS1b``<@87(&rrPiopILR|NJ48qs&?QJ~Kmfc*hj4ZH^t z^Ue8`8LrcV*6}2%N7D{MEFF9Hayk8(;*bknuDLX?HvPB~EO% zQR$S^e+R@-)wg7y2Et)mUlT|1ka`L6^tSf>d1hWoIQ)P_?WVQ;uFRZ(lP^5rucKW| z$#}+1Nc>z;70H^NMT%V)qR*K`%|A+$)iaA)Qd!A8*3+Vqttg&CvBRl?>2yg z!cYB$Q@2@DI@#q>2!EP{#NpMY-DHpFeVO)X8preEaJ$VQ_gk}tPi2E~+i9d2xdI~1 z6dv}JjgZE;wFKL?NHQ^1r!mO4C_L^*8f}nZ0urtLJt>?b#;=1Ur0UTBV7f_#gLS_z z^L9=3XaNATg~vRUik(-E#0O{5ZeriEiiiUe?6?L@KL%CM2ve*BfdR|5F1Ld9ciB1t zW_{ri51WadR}OdG=r-QbAY!P(EX=Ba;bZ>g1)(BsZ~WYL=Vce_K+tJhKC-g#o|&-* z7xwek3wQhou?`IBuSK^v7OuTOR5{x^)+3IS+SZ!J0n>#=p2{JlVJ?zbbZp;;-a)a2 zl2qa69waK~cv_M=wlO%rjR zCmgKU%KFxN;84lFY3+yz!L;9zg&YNpUuOzW`b%a4t{cZeLc&l)9ZD4;e(eP!O7b~T zYBd6aX=~&R1z0H?l(-HGOZ=4hbD~;F=&KdTpC;i9v5yEbf@Sx9x5fbr&v*z?(FR*P zA|P1yN_lD(Fn*m$LaGj3Fb8imLV{`Qkqb>K7x%S1{ zX|JhKQ0uc!~@RjH{0AuU|x2Qook6$lTr`jTp@fJh5h`+*|wR$_!_`JXZOVOr6S zT^FwL167Cq5Kkb1;89jRf9l1d2j@HX!66_#%AZReYZ?bkd6CS!oEY&`fPnBQD}X;u z#2No1i-RZGuRpE>@uE9uvhJ?3 zwlc2cOX;ID{Y=ap$PI<-{794SyM>To*UIH9@rL|NM!Y}{3Y~tW$mf-iVA%hWiI%2{ zj5L*m6#2Xo5?9r@j<4le)AS1&TL8Il;RZh^_`GsILP*B8XVqX}t7$LfR1#9PV;|Wx zB_w0qvuaTK#=d9O zqFw|cxMZCCt5CSrgF%m4#mr6Xct<4U_#!R%SE>hGG@&@X+9= zNL^bc>dm+gHTkb)ZuX@ZFmSVlIUXQlG%1?kOSGH_N+IK^7l|m5Yb))j!(hdAEUwra zIORp+K6J)*;-Ep4q&Jp1og#i7yG{a%TwMuBdSmHp6yWpNwHJu1+q$|E5W3^fC?klDfJQ5c*?v{#AhZbzL%$y1Eh)dgOmglPiKA@W6FYh`w_ht?>}0$kmk= zPGQoYi4kdPk{PArExKMgCGOjw{VX~ot9Getv>vtIa}kg6{_C5T)oas|Iv822VFLH4!Mz;mvqpz zq3$QJh#NQP+Q1cYFBEk3cST&`L03OlWGb$!uPfqbJm|8qa~R&ddAb^$T-c@Qs&_^F z_yk=xb`B{byjfSl&Ba5EpeuAmU~gmRup-#o*f}f$dmB54MPP4Z=dcLuZR{KtfxX7g zAqh5Vx@_zm7Js?Rs~%WJBI~^`cfM^hed|^QX4ymMTYuP8#{+ZhWb()JBLMv z`cfM^hed|^QX4ymMTYuP8#{+YvMp?5=dj3dU;3$2rT9eB(ob9w*#FBFf&Is>2<-o9 zM6_GU@L+GhxW*!|U+pS_{YS0{>_2owvMv09D+2rXU6HBzrGIxtVE>*g0{eGe5!k=u ziopJDR|NKNxgxNC(-ndJDn}&S!Yf@7*uUY5!2Wet1okV82(@Y^f3ycIUtFU~m0jUi zT|JP0#T9}4%dQCIUvkkwUcb0TtLfs1@}kW|B5>C)u5l(%|BIUm)b)#NoC)>*CpQ!7 zUB9@-nZW!HCKG*ejYVMof-3^^-@76(f8Ift9bx_A8bO(XC{><*ag9Zw{u>8MA}K!S zLV?6u3X_LV>&e;uB51R}m)jxGMtpMJ|?9JU+n&ERcW9RRsA*T@lFt%oTzCBaZ0*Jg2u)O&N`^bg=Y( zUe?>D<}B>-yX4_p1A_Zf4!~h2IoTFZ2n2O3QlhQ?P(xxnJi_ z%hl69|ACqJXrF&f@P2Sla8$5y`nmK4>4B+5sbcLXwKvp`u6d#6td8*;(XpSaqO&pf z^C{Mw{@3*1bL0^#YanoGPZy5$jF$*0IvYbs+$N+cM*wx1$s!rVpm3ZYX@H${5fV40 zdgVrldTs}Is4tx8M~V)|5E5GeA;=1^rh4oW{=k{S$$q5ha14FE0`rM~$T(76{a4Gn z43IO0)BH#{9K%ingv3ueagsGuJ&dQJ5O9Z}aJmQS$j+-aa28YLq?I1uQ^feS7l@iJ zIvqol_|YUvGKJLiBPlEZGlerelqPmw)vwy|#lk_n??_1IiKer|z0nG1dX)F>ysEDR z@PM{?_(_}pk~I3nG)&*H4vmJGhUq%ip-~^xFg?pUH0oj+rsG+gMqB4q1-k%4-iEL) zxW;qk>A%v2vpw}j%@-X)|iGHtUS( z!c;#J&ZD5Klh^?IO3>6I8^ly$ng@xN7pA-BBz|NH;ZKv0E{-AbkdT^6-c$ZG3CTH~ zvV%I3`4RLENl5l|3gK|4sri#qFAgm_;B*SM=_K^t$I@?WYF|>O$blD$7riLzyX^Rg z6PW_|(?lGK`@ZD?#<<0a%&$*JoD5Mf4lTw^UBj=1stSFvs&ZE;AQyU!h}O!_kNjFl z8m~ z14vVa%RETbSm!w70C64rhb);XV*I-BeLv9I1_&E{z2gH&Ar%N|;c`DvbuyiJ5gZt_ zo*>pD#jguLNWfV_I5}fJBSu$GZ&@^8YZ;6}zi>r@9(`j~?~mSjwKR%9O~jc&II``H zzS*x&k$Mb%63*$SVtJpRtOk9v?wc!M{JQW%Pr`mF7GJnaOzgcEL@Mv&&`s4KV=~1Z{QfH?& ztbL^Ru$q6?bh78~So*pb9gYxxU7b8qAJl8a9KSAX;bBTZ<7_|6Nb-tYFQh%xyctMZ zK~}ewiiR`8bzzX75?o`cIT=V=L0+{AU}LA48x*$m1MTKAl4*tXBYLb*fsiHv?dn#N zz9D-dDI(G&Bs5;w$yXY`pm|!(}m%F zr0ra!`1?{3)MXOa>B2}ql698l(!s#he^lSNAIg3nuG57vek3@{O3R6X%L0eikGiPg z4%xzv9wcK-Cc-S5PWta&NQ#Km3&c$~{&nNC&1LKL5*0lApqT4)fkt^Fci49L$Zbcu zo5NSNxb+S5)&(Vv;bCiSBOaFqgdmEtiECJUMbs}G;5y?)qP3|l&Ds=}^d#sl2JvQX%G5beml9TmtK&bEQzWzk zi+)=p#@eZX4ljV^T@|JWWD9*j$P~q&P3>7zMMmlcBD0PnT@jG1Oz8_(-vDAt08S+# zQEQ3!1R=q!bum~|9a!R3o-Z8ZX)f*~>7%b(?qTK!^6^*&@TXp!bvg^sdJdas&~>)m z29dR*pv#_}rB@lYdb*}KxvV+^|N z*;y8Wy*)e2BCxk-XITXH_UtT+z}}vnWf9ohv$HG$dwX`4MPP5w&aw#X?b%rpVNVASF5-*nhT@mVjKUW0y`??~q-^Ue!{obw!?Duj-V85p;0{ii< z2<*qXBCy}X5s4ei?yd;zcXLHxzpE<(`(0cS*zfF$z<#VN0{fj@5!mnOiokvcR|NKB z9Fg=nqg@f$k8(v|KhhO}{RmeC_QPEf*l+KOz{c>H`yBn~97{lcsG}!c&Jb4w@`GIw z$ZzS2Kz@)b0{Jam5y)@uia>rdR|N8#x*}BlKvx9zn^+NfqoK@AE97;;)|wwijst@m zo@zL{{;PTp5b(FUX?2?x9xs%`e}~m@hx{M&GsJPAF8e_CTbXwC1U~G29sb)h_Mrjh zDb`PukxX@86kJ4y{9@zzApF9welmxz&hspVv`1Ix^joyypnw2UUIjC)q3H2uHHj3s z-Dvf;_k2`Wi_J_c9e(AxHILe6;9LyfnOoZf6a!AgS%DKjjKe0fUO2S-euD14GmtSX z+IQ{^7XHUm7}|aRw%xTRZ9M<7YwgvbhC5zo2CTr(7wuJ>3NteU`B$!x@!XG_LC?&v zHb08dZkL8-)TJVzrV2Sfl07rSNU%ifK_T-lof!ZzTd4CR*)ubY#Fj{2x`LpH@#}P< z-j8I@%rFxDkC9|1rwIC#;5t=k@F0>2nOc*p{ZM%eM@SQ%^kczT;Y0ThAF{Z z_0XOLl4&ch(}lhsN`z#O%rFuR))qz(^y7fIL%Pu4kJN4_yj(}9CRro?KvS~-=0r-$@N%QW?US?N-w_;q1J4-gg3MvrG8ShYrd)>MIzrjsa@+|_-VvMPi> zO+vyE8?5Qbl+{|1*k>HjTR3`TkI?U3aN$f>OK|}J#c=`D6gToz4fQXR*OEH7 z7zG89`y=H~=oB{gXj8@FEDe?<vVD(j~WzEM-jMACsjBi$D`@w zXx2xvey6E@PJc>$$Nm{_;rKN^{y;k8g>_CjnxzQ-)C)wlRMo)oTsRq7=t`2T2J3Ps zfHQ^7JvP8d95`OANzP{JlADE_pLf;*rI{eZHFz&Z!wD^)rdm#<-pzDu``^XK`}gRh(f`}) zKd-;Jer(-e>!#LiQh2N|Dg4+*{~wTBLVmz?+558-XgI$)#`E6^vgv!%`=(Zf8UK_W zqsz*wJ~;{$zYY=^wcTV~IJjhZW2vG)_2LjC#C_-PhJa)kCYv7$q;Udpoeg~vHn?mv znip_DEC#~ME8gQp^CsC<3H^~Vu14Hq;=y%0W_`&u2Z2uRL9i?ml8}{W3pL9neE{^ ziIVlQrFN4ym;FAo0K~6T-gcwf&PN?7L7`tzRe$P5VpHO%@1`RqAXxXRUR>hW>Cpet zj;ph7HNm{!l!3RVii9-ueYJxq*{JVaO)&4*Wa6Vh@#}Qh?deMh$wqx=B$)ThvibG8 zc!B9P5bMHU`H^hYcSeGJzbfx#P5&mNJs@U7-`5}7IgP>F#8dkfhXNNJztQr61{gb`VZT zu;RD0*O0wIMMjzlS9y?lBqw3snG%dxf&8f#hbqa2d1oLP@hWjSds`XFya&MP@J$aR zLb74r83{)GmKlxG=eQ+RWTc5m7r3r zDtyn6gh=mr1Bus}26NO@k&vdnNZfKO5PP1gNxaS!z@H}J*y!&J1p9tlW(5iqzYhQI zFPe@1&Ok8lct|H|KrvDPros>WNF4ngZ!-NHx)4%4C4}pAxZ00nKkLejVBH$`Qd31z zMm{92Y<8=~Xir0XN*Ap_I*rD4_zyoL{irJwf^EMiPrmBMuhZc_{Xq7ku8aiR{=0PX z@5{tVk&x!XPy9%yJ5Px?oW)m0XvIR1k*30bd62l0#{WQv#Nu$)8z_G5#o-Qj{4onn zBmgR#IGlZ;OIqTg8NW`2pL!Urb90}j_xwr-x_)o>5=g|4K+yHP5%K;HiP)HFd;IxP zw+$2t_qimoXJsi9+gH#Pos}gK_k%&#b1oD&I`6cPwou%748G#vP5SVQN^GnB5;q+%904&tM;rciG+K{2%JhK3AjgRWl03?(OFp%fqQgTmPEo`&&rYn z+@rIyJ7NqQbVX-nNd)fESy>W+yFDvQ5>SuM%904wqqDLkl6vpI(pHv)Fo@2|QZ8_h z&dQPq+@rIyB$A4^XJvQP7zWWf&F|}gqok{ ziopJ1R|NJybwyzRkRy`K-v?b0*gxQk!2W($1ol61MPPrQD+2o;yCSf^*A;>NJ+27s z=ei=WzuOVX=I>pu2<+#$BCx;H6@mR7t_bXJcST@-n=1nQTU`;@-{OkEezq$D`5ip1<)5!m18iopH`R|NLgyCSgfbVXo4%N2orhbsd6>s%4o&$J@)#KP|HwXO*4 zuW?0Sf3+(Ddm4-2(+{+(DILz0t_bXZ#D+2q= zToKq`>WaXAhATqdU*d|ue!43H`-@!>*niIzf&E3U2<$I(MB;EV%@u+D1+EC}r@A7r zKi?IB{dukk?9VkKetD6v8ra(pM6d|#&vq5T{w!An_EQ|u|9MVsbYzGMq)u*#2yhHG z_FwHYy^q=0Zz$A1Q$MYKWZf%u7uO9c{KCZkza`u`|6=}v{J`9zT*({(+A;H|%!QfF zf~SJ>gKwmlq$j6qQ*%<|YG13JUOTwvshVSIXlY^(bIvYD|K(Go#!nhqJ+pRBgV`&$ z0lDH~HEFR*X3|K*`#ob90^U7Z^Ppf%SQ?6J{#5u_M}Awjwl#gztl9?C{I{hdk2JFyo zL}x^_hD1=@>5`+3SykixUv&)!xF3XDz@DKY4A`mN+mvSrm=-(qe;VLwoT1?b1VVzD z>c^V(K!DwyGLxk~-i9SRHSy-n<`f~pOclwWCIXE=@-gfN5)kZEsc0Gp^p=eo%^@J^ z7G!#?0RA)y2+`(wzD|tTWa%7+w6>;kKyT5w-Shwr`TU^^*25}#(#&pQ82n5)-(y7t zgab4i8%8oYwh<<(5BFQN@uul;fk%~VMdQm;VPraNRmG&^*IppvfcWxwCg>f>wW7ZA z|CDFKUK`+a_%lDHM!WV+lwi(!fJ+hL*GWKIyFjq!f69urrWUA~7lFJ$RJQ263^9T+ z+e(o>(_Wh!q{Bx&Wh12MybK}1nm?8mOig=vStTKv^D;T~V)u9HsP9BQaYFuiz4P{VMMr%2Sc_8YWIK8)aWT_a1_~6v4u9?`8WWmN=V62p z58a(l;L3Ymagcg(sEQDjN`PQ{x__(y@$1mL|I3V~+-SE*rSBB?G6jgINjMvuK7z;f zwEfFdBl6Gu-+|y0aCdwra16x;yQ6-Ox>xI_*9|T_SvV^ED!h$C0lbvIFuz&uaVHeO z)Xg#jgGE6x{b{Hn|%T%1Z12inEhxdXo&Fa5jwvUbf}F@9=TKS7g=+8X&>zg1UhLvzOJ`$H@rvV56LBQ?Jn_+2mhkx> zaX9!qTNL47DCXDK@+I*(J{qDE5?)~Ihjg5M?GO+;5j|9`fbr|l7sr`wd~%EudKA_4 zr%6c1#*omZ_z}qb%^NKV>6jQ2-eBv2M128*&+~wRstKLSYT3cDsk~fqgH-4XE=~1x zRE(2!E4`s&*GWi6x=7}oM)eWX?0ubt)E+~Uj%B@&B2QW}O0jTxt?0liPBEP8?*hs( zN@C%?kQ5PV5>m;raCuFt%f14{ufuyhl*k5(b|OV|WQ5j>kpdx2h4*@p$Oevx6;8%z zy`YpEQZEv5n&fg41D9h13ZR^DoeKTmBfL8Du%*($!fm`B^%jgBNC-mTXB&xAm(${!;&IL1QE!rv4zY$wK(KHdWKAf=uf5AGR85hCEdfa%E(>c4puVWMPI(s` z2&t+LwgdzVkIy-%Ls4LproAmk7LIuJGNl%mx86|k>m;Pe!In6|!sCim-DWy*ZP<0FRI_7?iY1O7QQUpQrIQ@TXw*V}sHwB4e!FL}GI9}awQ&FU<**#94kjw0RCyh7e? z>&GdIbjwKVZPiD0UIQmwOj70breEk%YVqq-czeS0I^x}hGTW8coBe2*tZc@wlW-8{ z)(j?W*lVjP>%Q^pB&6!7FUPxC* zac;>3mcD7p~W|1Bqf7gtD-+m z#2J5?cH83N?boN(d_yz|2cd3-5RCd08Mj-&*mdap)*MZ4sGi|G7ifhLOxk`1OlE#@;6y@m$gP(mQZpe~bZ?yawHJq0$4~7Yk(vQ{M#78Z zfQbI(wI14(IwjgMB5k&3>`BqCl+SKS<7A`JEQ|7Nxog!hUc);aUQ<*1hf!(r=hcoEC(V}L){WA2O?7i-4ZMZBCwZWIS_%p1j`}O2=Nl^ zmS8y$@w7YWmS8y$fjxrdKmzg-EC(WxmtZ*%fxHCEfe7R!SPn!WFTrvk0(l9R0};qe zupA?TlVG<5%Yg{wC0GtbATPmkAOd>{mID#kORyY>z+QsoKm_&@EC(X6mtZ*%f&B)y zu}6qwa(9161Si4ney#}YC0LHZf@5-bA2%1+H@G6OuXjaYU+0RzzTk?$K6FK3pLa#5 z`))=(aPRum6&dbbpSU8h|CcKQ z`;T1_*#FarP=Df;EMJ*3H6dZ}Ry&Gv2;w7G1oj`gBC!9!6@mTxt_bY^?ux+vJy!(w z@46zee+MFZ+3Y0FVqI^$BGmm`t_XGirYi#bRjvr^SGppwf5R1l{p+p>>{l2O4u6Pm zsr||vF$MWo9X&CeS6mUuzwC-Y{v`*UUW(ME($Nw+Y{HTFcGB>PFS?n)-F{_`GJ*PE z+)SWuzcNReQ15?oGl9DO${cYtej;6eFqyzWjOGPb1m?eYMPUBCgZ_WP$(du!%Gwxk z@5WN#bPWV{RiEJvziT+NpLNyzslinT3Agyl`Uvqx{VL_PO8Y&dBx6 zKAb%y^I>LYX8Yi`6wzf=`qlLG^x)J}sbi`~UovNC$HaOH0CtTNyq?aVuu0Mfo@K4u zpL)kqgyeY85)xa(`XcQd&BO_bt!RCb91mJTV&hw1B*%l6kl1L~7pXdwJYUV46#=oS zuP@LJZZ*l&*WYA%hoq((W01_cjvOyijifXQsk-E=g=SzbXOfciRqn-^*m=#UH3sH- zqKQ7+i$d}TeDN66#ShSN%toXa|-xn>^gbj_xbDQ zZ&^Sc8RPm@dESuZ<{r^ua~rc-d+v@Xx3Q2uzOd2`%(uZp78drvFpUUPU*CFC5x(t2hJOs zT&V;@Wv13&M`rdOm71c)Uq@z+bS{~x?bnf+-9V9<2XZE} zzYU6=*O0I0W(&74CoQPG%Z_KcNLK<3+{q4E>j1 zn>&Q($w?FsjX8N;ow)-)G)a4*9CS%?bMIktZ<>^QLt|nTBc81hViYrx)nP zd2Gn3{jx&0CD|S$Ffo zJx}r1-Mo`x`0H-o!`=L5lDYQ!KP;Bt3~tySlKX}g+sRmn@~*pi;TtE#Mc1=dbAtz* z=3jU7B9f%$Uw88!94oGE-sIvQTRR6sKPv9JTNkcrO2@WtGCW6k)alo4Z5OWjg+06mU>{_ftF43e@j?gyoCa9*G%t^{Y|yWKu{bL70RC`At6|! zB4I@0M^Lg!NRB@l6^~6tHImXKBm`?zPI!f_2PdlWy={~iqQurk=Mi+fOlm%UolYEY z4W$r`<}fKCjjX=1@uIE#0}N`NJx%Lq<`E`y^4N?&q^Nm^uN@ekU*>ETP3)^LZ@lQ6 zi6r)LNsQiU?Z7y7Ei6Xwxc1EWs^NZSfFS|ydans+r6Tp#X(9C;I!gX^O?CFXyEdzS zW88vU^XXrv?@V8mE>*k6Eg0573%BA08gxr61S3M6lWqhU;1ypwpUXB9bj#U(h|GFk zw?q?wh#$G2TcQa-#64!vEztxZ;%6Y}mS_SHu`vhTh$aADh|Q&1(O)8aeQRs03|*8i-z6eR$6W%~B7bAi*R|E=08HMlgxK5aE7Tq$gEp z?6qJs5u%J&rKju8fVi>--4Z+kH(d)46XycC04BjBNJRUBxaml&i9*CZbMXK2Rw3CO ziY>t-OywY+M7IQwfQa8YLH86}IeM79`%EjMk1(R{&%hcoDUt{_AYVv=2zCEmR}sc~ znk#~(oa&13c%0&j!2V=cgho5bi1@jZk3-UPHJRd^^ce{ezZHY-6CFh?`gfn;iopKc zt_bXpcST@-oGSwR$*u_Ok99?0e~c>v`=ebE>i#HK1olTdA}suOx4R;+uec(xFS{bJ zFS#PHFS;VIKf)D({Ulce_J_M7us_Tdf&HOYG*Wk`+guUYPjp3Ke~2pr`-5E(*dOGI z!2Up21oj8GBC!9KD+2oot_bY+cSO?n?dOWXeqUDv_WQUZu;1Gif&E^t2<-QCMPNVP z6@mRYR|NKZxFWFM-4V(5^lq*Q?00oVV84qi0{fj^5!jD)MPR>^D+2o+T@l#t;EKS0 zj4J~B(T<3YmGXl;s`}c&3pSZV&o;dk!2W8AGI3hc>k3;&-B(hc{S)(mz~%OC{ud4^ zCVG|7yATy~iKB=RX5AMW(aDA;LYQ?=!>-k(dbaiAK7$&bq0e0B>hG=Jr*384Wp&>u zEHR(Co*V9!{~&*FzAd*pcU^A#>~FHCXB#pPWeyDf9$XddkbXUVMY=K7l{zt%shwN9 zSIz4+m-6A(M)GIBw#t6rd(nMIXcQU!9HKuB_l~?~hR_6yoU}%bJgW0r#9-bVKwNSP zc_F9nG<{oEpa7f>_w^$+;20Q?xWedLk7lhmLX2Mr;r@Q4dKZZea9oECmMn-Gx)O+e z!^8YY2*WJZ#D+zIQUpN}SIXiluG8TW9we@B_Wu?jw)O}}0pn>BPH0xa1c;xJaUE}p zYon&UfQlYM)NpxBAyD0H*u+R0t~U^_gRtF$RHUMPJz(LW{rELXw!{x4A;}3VAaZnG z{A+`-?7^7Wd2KenX=Si5dSG3HW>Cz(!ioo^t@GLpe+g+Uh=|kPo3bB^G`JwRAQv9) z(WVNKaLc$gELp8Y(-m^$185tEzHg6GTf^6TZy^FxRtSIUMIufq$C5P&s~p;XN76SX zaw&lG;ZdH_5vN+mZe)k$Z8;LDNb&2?|B2RXYg|gOWR3r>>08qJ0L*%kXgaCB-l%cd zvO@S%FA`0MB@{D&V9Od1Mh^{sAcX~RI-KmOCPG3eW^`u~YUV>}bVbw;&)_;09_L58 z$f+kYl8iopq=@g!^M>nGc)SOR>ghtK>10RegEm%;5aZWgAX?j>Cb6GPJ@G2~aQ;ph zp(vV3gYZNT584yHK=y>8ZeD4m&VODFy5UrW`-TEKV%#gbE2)Ry@!XHv0$$u`3-eZ| z(6zFRq>SU&>F^{E677tfcjG3!F#;a2S&i3(@VXrPNxuFOp6<49y> zgJk9n^vV?`n!Y8$x`DWPc)lO0I({%8P5}}RyXdH%#1!~IoB$>#O%Jr{YJg^3=ff*JtsfIn`td!Lv4T-0athQ$r-^>GxTr8X{A)Nh9GG8}FXcYX zRdai0KhNHq-6yjub9rX#V0my}Fd+R{dQ$4+RA*{r?eA;Ps@6tg#A42L_j7o zB0mj;gYJ2SJnNb&9@4PCA4lD~fCNKU1b^y9qJh^K`}QVEux9;ghXTDSktA@P34Py; zBc##Rnh6QL^lLH}(e!0mvd0}Z3I};gM@ZG7|3QyPYm=z$H)JlNDVl3s2Y`ccupbD~ z6j9$2U2T<6(3Gca(^gP~N^^%W9O6OZhFel$za3NG@={a;f0_g|+?dh<078Aor!h1O zh*1oOdKl3}V*52F5>#7em4GJ_rZi?EfpUGr141*J?V=8mj0hb^{0kfuZ_^A#cs|kW z0pYqq97R(kjl`Jk93gAx@f!M!Hf$%2u11M835L+V0QOu%b z)hVkM4``0#q{0?YolxtvAc7q<%|eX{KKiDF3PBpSdX)F>ytX+Se^RTMcb&!_^=Z(A zu*r@;Ndesf#xET4RR5I(z9gF)JQ;FubE*bW}d zN*oP=dsVglFqA29D%{Rf*YxNPaR)?*UQTVTU~fr>iR&O7;Q=8_8ys00RkYfviE^8u zp}`W-G%?%sX^?FWvbIULfNicc3uSDZ`map5gNGp*!WQ-&PTJ@%SIUS6x`YwC4tMkb zQO!#XMevrzo6D)ErI5=SmDmCqz;rm)gT%JUUU0AlIVrCI{?v=ZwlMj}cj^>EKYb>Q zbZOG|Hb$QEA~7TOo)bo}P6hC%i8%c^^r5LD*%$WflbsntNjL+XMw9abYSjuDzYggv z%E%qI9X@i~kvrH$S1K4{C<-GC1$2I<0P*W^7Y`8C^+tA>LkHC`^0FU?)3q*{wgE5| z?&?R{&<=A53FfTd8`3n6oK8YApFWg{gq#+5TSk>SPt$842jL!mPW|1|!M3$}6d`_{ z3di}8@bSa_jS0wc0d28&wF8!!9}olYdU+w;U2`HW!{5+v(f;FVv-$nLc_Z^w=9bL)nZq*MXX=8tf@gy}=%~u6 zH=MF)P*ZE|;kDnZ{k-;fwLeZBnA$4Ule!~yUi#MbS?LMsEmI!{X9oKOo2UO#z4$K+ zx8@yp3K(D(ZeGA%9&d-z!CUN)ROhU^Z(wJ?y)xBb%*@m;+^%-fxv5-mb4_l1I@(tv z0DhE$7fRJBnMH%D@1+-AnV~sGc9cEWN3lDQCE5Tb5pEl8fRf1U4ZRR;fRf1cwJ$^) zpd>P#=?l>YD2dpV*j2)v@LO%j1uw6#f_Dc}`tZITGQqODC5p;n`fuenKQZxnX{)wX~XGHIFMW#UAKXyf?K;8GcB2%F5dt8wzQ1@I{WD3-Mw<|({ z?s7!3@ju5E;Sssh6@mR7uE;b;_wB9->~C{LV1KJC0{dHB5!lamMPPrkD+2qQ9Fc7N zS6va<-{^|K{svbB_Sd^2uQnZl5U!tK-D%!+#MJU5nt_Wqg(iNc$KXOGV!w+2%%5a4dVLuk#O!p6X ziDsLcCwM=0k3O&V;r-ZOG#pv~r7Y1*tJ|#b^FlfNEW9b)DgT%JW%*rl|I9s*J3hC0 z_UY`g*_zB9nLUD6>Gab!={M51qz_Adow_}>d+jUKaSy6aJhox7*^f0*b*ZGIG&=7} zdGY$wyzfhLG&F#lxtZh<5?2t71pjv=9*508U&iDF#MMfx0kSNlfbr{8-v1@JYbV=r z4xxK8Ci z_6!YZN_(`O(h`!fdfH@+(17ZtK@*LmqKO7+o5!29`7cT1$e4zCa@L{I?rNZOSephF zsUm@|jWx>B#R{{4$0gH$c^Q%gYSde3!vdkBy1mmRB#C+pAXwl^Svu1+4xIOW6p<*w zd0rk0>Pxt}6~Ui+k@%sQ^DC^uk~y+A|>{`N`<7HFXqB9fbg@~nIB;vHc?YD^&TNf>MtAPr@Yx1_k0&OP$wZFpkfPmp73l<9HPm_@L zwXe64m`+5T{x=|rHw#A6amu2%ew#WD7}og9hIq5GE-yX)eZAj1_}_rP9@b+b^OeQ*hQtX!M@|K zxN#kdgftcAJcT1pyE!c#*Jf zM3i=MDZ##95};RQwMnl57=#TTB%-vlp)}o?fCTu{y)R7_32E5J1H=RSmYVBzU_ZUj zmJLrf99{oa{cZKT)xBJIQQhV=u&;!lhqKMc1gFVIL_W*jl-()w=gj$=Wi|;O3yw(t zD}6(HOzMxRb5k4FK3aQt&Bry@v!CV8G_IdnHSuhTs7z{fYb7bo`@VI3b0b5HtIFfbW&S5u8MMGhh|h#I)Ca#B2JO3A_4K3jP{OXMy2Tr z@pl98==}4ZXOikkEC|FfUd zMfQbCNU(5q1y;oPbrMjOu zSD^TH5>S;x)ADGFj&O--%ZOU_<7pz!91d{{9I@;5!a3WmA=tJ0{cHMP5F#szyc(%w zFzYwfyEOf`u$WOHst@7fTUiHa$b(M45d?47tnXa zzyUlw|BeTU4Eqe*{Bq1LTAkBXxp-=gDAu8I5w!@~Pp~KcSVoenYX^^yjZ9=f{z@FAac@tp0R{O{M_D`4< z`&;XGt$V5NLbGDe1N)o9v9w};etwJG;#?(*f&E`HQ@5b611=1TLEm&&`g=6Ae?K)h z)t=h0c6sfL+MTLr_WSOR)!+5YZ4~U&d0lOF%7=@GG|RA{_*`)%|2Ak{^L)XWo%Zg$ zuDaw83x>4l$6F|?`Sa%9r*r0X3(n?JyubKc`aQQ*>oIGz!kC>Xdv(e9#|KqEy0d@K zA}{jd?Zuzd@BXlL&2u+K<$LB1oSmD$cxmx2`rY2&dxyO{XI@loyJx}RX6DbWOnJ?p zH#-yRU;BtDt$FtrrxrWtcWJJ5%_9@wKjVSBEPwNsEnZZ-l2oRqTTk#5nFw8A2yum) z-BHSK{*tm!tu9%)V6e%~T}$yo%1*!5HBUSkLg#D!n-^p86v|7#p!F0F87}UW4{1kS z>fda-7EdUiN54}-uL|)$*AU_gH9NA!<0&`&yxDoqg-JZ?p!jtXqbj1(ff3#yR#5?CsTYXmMiP|{KzN0$Qui7G zh+q3_n~0rTtl@> zWb=y(1}k1Es}8Hos-_arG)P3UZij>fE7k?ERk}$nDejQ*B5@~ezTJ$v##qP#_45CQ zJPBtLrymn1^fzPOjjr`+ngnD%-Hb+)-Q3WsWOJkNOiM7`DEc{izp+DhWsZ zOQ`L*VJnatI<8aR^~(Yc&i4ySHJR^a4$rg%Uk85*9tdUxrG@#A7LN<6KmOO^O{*V$ zlnOfgTwYhZPj$xkYjM4Baj+v(+ z)Tgu0xB8I75rz0}s(+>ahWdl*1Nz?IId$6<-YCp299k%ZOXw8U_W3vSx92D2>vPZM zrsYOv-^t#YEoJ*=x-%DN#su#NbA$F^!}Rj>rRlM$k5c!gj!6xueXe?1zqxy)IAMNw371-2D2v=&!X(dq*~YXS2fwk zU@%VE`K3`jkj8@FDxQ#Q9q&P>xx{E0J5qjrh$z4LYhBZa6=YVd;;9Ga<|n1NdvQ{6 z`{IFplDWSs-1&JZ?n!?Q#ocqQdwIxEQAb$rW~y>V@oZMfw(jG}PTYq_+}X5?XW*}O z%_tMXeJ7dOaNV1!%4E`@UnYrAwg1(3V=&GtX0~!!@iJ1GTxgx(Csm#EYngxar}2kr zVOF8P)(O@B^iPKk>V*wbOO`xtD%AMTnvCZcFUuyPk9bbdn+V;s@TH_gKd%OxPupWM zpP(X`k!ap}OsQm=U75o2*CT0n6I{asSLB;~DFYKCUp3}$7+%;reP+iFZ` z#YGMw)6hhQ31wT?jKzUUdj4i1WZL;cnnImdJTKMyEq@bi9T76E%(FSt@n$zQbfV69 zdBn(;RHeU@iWlX*gs8|{$&8WS@}`A3KmB>L(;dEnDIn$MJq?!AsEXzRjLV1{4CYv}Lt;^l!CovOdu(e%iWW-6)~ zW0~xv;?2$UpYK1{KE&o2U-5eS`$6%VZ0njKTVQZQn|aNFdPLK_Qz$$A8WQO*X^Sez zjE<;!?j@BendG{ro=S%CJW;1^p}`>#obXaVa7CT z)!;f>aZ1!Tn!!u)A=05=*jn_o8B>}v*SU#l=4Xn}kjg`?Ylg3pzOH}tpcyZ-;*G_n z^m}Gd>*4;J^f!;PX$kWvUq!j;*E-3cy`O#Z%@Mic9rSlq@hUGmmwL)m+P%{rsA=l^ ziubWr+G`nH>ebV*_GVnsDYNY+2XU5{njwid{(^c+`;tIPm>D$Qb{Tqy@T=1 zD*lrGo+v(@PRd@La)ufxEl!%g`j^FDv09L%lD2m+E&M|91waE0rLLv0qHt4TVj&kk8J-&s%fFGIoo~zM zb5G~a&uy1omAx%HiNbpQGIL>ORPbJKS5WR3^h+gd#f>M8x^j!$=9 z_g$1oKA}Oq{GG)siq%Z(n#ahbtDLleY?iW{Hou*E`YVf9rdroL;$^a*YS3FKyJ_>g z$iQza-kxh+^K6;Peu^by+WSVzPQSD_J3pNr8GWGX(+%c<<~Qe!)MNPgkj6>U!BBS7 z-q%xh`Xy!mPLy2+U)R&v<@(m$JP$OXpD2$Up_{hWrEXt#dWKHW%E7?vHmVxZD0oNL zg#PV_jCmYe&7@+6Tz8Se ztm1=tZ*_9zPc8_1)3W@S&|hNiw#$XR>8jV2do^Jj_NHOimYc{IZMB<*y_k5=FW0b}}7-*F!GyNrjA7;VL^Lj9C zj2v7n)q87_>CYi>?#(dHI=Of#&~pON)~Q)3-q2V@vt?LgS{^JeGjZ~Kk(-z{?3uQ-x4MizI-dRvU{Fd@2w zY2iw-LitB}7ckg*R`iiO&;%O8EY_euuLg6fy4T5#B+uZ%vM;Oi@9w{eh!`MP_Jt!dOPay5&s`CZ ztAb^pxgu`GVA;Q25w}#Z>{D07&swnT6IaB~Qn2h_u83i=D9>}kDL}qCtSoV+mQ_JNxT=+!pL1O^Bew5+;hj;i6z z+_Lwa+nM)Qu zKazm?i!KtV|J6kT_3F@jloZbDFZ;8jhqL<2{^W{4{f`b50vs%>&X1tL`~_DJ%zy8S zK>c|aN@{)ly_OZI|JKz5_1`!md6b@WMX2>(yCQJ^l`BHEFLy;C-{Xovo{A{XGsWEn z`EFMP@?A!R){$qa+IEh%7mo9jwV$me#A*Iz&pJqm53%eSR|M`$9B?yDA`@MGriB9a zr(8Wyf6^6!`V%gc)cc&XEEMW}v8#uA|G6VF(~Dr);|`RWLh#dN3&WaYqXRZj`A8|$CzQ7fM{Crmg^79;#bTbdTA{fn2jR;L>)*PukGp1_Jx#&$ZX6 z@Vo6bYWpsG4YqUaHK^Wcufg*UdyN{t-Cl#@ZT1@cZq;kCid*b8_|3N0;CHjV2EUu^ zHTYG{bx7Y`2ES_Uoc@~_Z!f9?dD+}xb-?j@s{@YJ5%k0wo#~_lp0lt}^eAs*p3%3F zf%+Pw6bf=g;hn;qLW#atyezyV+%f+l#eP3Jzj5xl z+~v95vj56Hm_0tbdFF-8m6<(*&w_cuNx|UspVHT+_ep)3dL(s9YH00WYG>B&SM#5m zM{BBwO)QK{@6*{)ZTlq;7^xY#8fa6n#J^PQPTomk2lhi+C_C2@4ZhDSPAE=lNSK^= z43%{b%Fne}ERzQPyxED&5R8W?H`j6TaLT)1v7BjLGk6s*F?Gmh2xVszq3q@_NXqVP zhL8%k5OF`8e?jY-akk7IWHW@aa|0Ilrp)xqCEkHILri6I+ZMMg?tjFa#k~h6Rp#ax zTaqc5^{y*uwQjrOb`43{qumgyf2@rxDlQ_WEBwv1cW1|@GR30&rgsXkyuGrBa(?7~@8k_UepLcS`^*ZB1-f*GZrmfeJyDq9A z)6nb4u3I96ZW?)Q*{Q{_B|^`Qae<+|hi932($YjnJ|bgUm-Ew~x1@xQ?GRd8!BWXX zl$U<~B><|Jte{hVA~c*g-uN$JfuRFiA&hPs_GZdUzf8iWen%jEF6B3^TBY3d^DZzD znY45fl-)GyWt5qIN!hC-j0ZdAHjSzd5`MRk4snmC+@?+E&>k9T6uc#6i-CJQWjAfg z+37DK_jS|794WhbXxEXw+V)2*wVET7fKCR#VFs2eu`sd@X!VPyuh*FdU0Zfu7lB_q z<9qJw;b!M#eoyxFRz!?wRC>FgfZu+!gVY7W5qEinzjq zo~h$JAttE&g{ySO5d-`N#`{8$$q2!rzpzuEJ_@=pl1tL1ooS|BCy}g6@mSxj!62OfvyPbH*rN^Kfo1%{l=~c z>^E{nV85X&LfvoRiom|VD+2p|t_bY=S`kG?g5~saMPT1xL~PHL3+!ouygz*f6C$v$ za}~k9;EKRLbg{s`I`nz|q9(AwKIbZeebyC$eZ~<luDG`Jm0$I;)xrMCVp*#wQ>&0DY~Zed!vbZY6eQmJ&@28jyn zldvsrVTRVFLrdqDzEwJPNXwcLeawo@B&Qf=cwIV?{thi2nrqo0fz*n7AK!AADTNta zmoA_`Qre_tbHBo2?k(8BN)t+#l=dlIFrZ~CzXtmz=q=d%Na4WJsM3T&%bFibFr{d7 zZ^71CI-UL|lqT%f;&(uz>HMD_*Q#aPEuC4quyj)C^bHdg*hN8F&kVGw440HnE}c2F z#qZ-tiwxwUpp9YLds^x8(mAC|`nUMqk2?->ieX;Gr75Lp{L8lZ-HAJ@GH7Us00OeRFHC;;dbd``XjB)TYQJMd9`Q8 zXLoD4%^;w(kTmEwAc@reZn;f^-$(iHE-l=$<+KD=?5d!wOoLZT_mzHFy05imN`eM^ zDoAUXZPU_KrE2N>rRtED>3)rUTvp}@pIe$+y0UcDMlEZ8@yeJX`znatnw_Fjcj?!p zGI!&aHNV|t6!vm%Va6||Crf`WJy`1Awx!cgs!9$EatkxMDa|fDO}{6HwN(8IE=%;I(FCi*+Obly%axBE4AbIV~`d}(PZ@w#dAmb?8LRrX#`R^}OBLY2Fq zv~^s%K~No)ItB#r8l$+q`2OWCFVrLp|mwB=F%J*ss6N=spyyB}q* zE%o29<%tA^DX-d6nARRZh3;4CH@4+vzrqN&DNJkkD-9@qQ5rC~CppfKKi9w2PbIIQ7k3J?Oj}18eM#`6zti$Wr9N6R#8Q9gBKqm z|8n{bX-yhd@OdmH#SKnNO^=e_@gwz#r06)7lH&HJO^(I%yJ<*kV*;u9Tj}Z)ZGxHQ zvfGLaX%Tnf28lZ`ZF(q+HaX#%U842PNyXa=-hCeIf8H8D#+hn(+#cgpNBQQ$YlUjz z;6f(+MR<1DnqQH>DSt>ln|mU6PHvm*>)D&L6SKL@lbLff!-6-0*+JW8K|cLd`n>eE zsgFi-mbiFdF%4{LerYTtN6K`6}tD} zXMi+D({H;}(~AlB;FBdihoHP4{e|U$-)MTze~*lN4{7ofSgXG2Bfo|@T_X1|6PNOt<+I30P8itqv0o$Y z+`~*<%4e6Sl_!_aoY3r_xXd!=OY|N*t|?C`Pp5mFy+gDA@t;-e-ov!{(dEm?tfq`< z9^+?KT`}95u33wtQp_w*Dj&UV^MPKCj_K|_Oq*AT)#2r{wrx%vkW&;QEr)6Ioy(Q- zsB&fV=5ze__?~+Y)8-S)6U#f7cg{9X^=njD{1I;mac(T1K@GBZd16!ZH3di6%V%ueoHPRDJr~n0kP9Mrd-RA;D<4-rr@r})gj=khueUHWm-4CfS1O;f zN%Kz<6jpq$&$!tsC?8J>hm}tq-Q4Y0INzx!GjkzE(@5+1Et~zl0?pVcB9XL(nYmDF z&!je=wt4eP|2@ui?_t{eqVmnEr$oVe|V58oUi7b!B`LN{^Km zm#!<_zH##^zs7f+av0Zy(k-NOed)1$l16ptqy=UKFCV@vT}vwT>(l(E=N7c-dMa-K zn}r{03pRDiZT`FpG#@_2aN@ZRDVP!6oYDiVvT;(mPj*UyA>FA|Q>T{ZjB5VeLyG6z zQ@+-R14Fu_X#L~J(y8BQP8gVe$0cQkbY)swI-+#ci01$JZ*iilVTN?Omrf|{UMg?Z zQt#I|!7YYq@cl~rl}49#&$aaTYmj5HEe2b9>5$SSQrWM6%bH=kjTIj6-olLG+lbU5 zr9%d_)F#|w$p~w=W&l$fPRm^_rM9hGYLYar(LtbDDK3qtzu~3f1Dn70DDbxY{Jd2# z?ad1G=gm)zcZ@9rEex6|`ku6)wnJ%reM{PN2X5{a-;xJ|H276kI-mabEbX~L(mLN! z?mbL<^TN-`rSrFF$t2u^j(*A5*Z3~br1Kgwk!$)U*3%R^{AHe2B4wJpjdbX@b5g-8 zhEy|FL`{410jIW7Th`lpy30zP2R>ldW4&2f#NAfVW4&2PBunG!&B_vPkD$kTv$BY5 zJm|6BtSrLHxbl7J<9kiw1oC&dBCx;R6@mS2t_bXJbw#N8 zTO5(>#m#m_V1KhK0{fd>5!hFah<1&rzGUy;c)#*a4~xM523Ha6uXh!}-nhW3BG}Jz z6~Ugm9PH~6yzIqY=Ze67rUMVh=$`5f(i3=iM)zFfDx&VMc12)+l`8`KD_wYD-yxf2 z%nR&)=qiH!6)GYIvKRLQR|NK#yCT&6_gxX{{xVkt_LsUMu%F?I!2S|f1oqQi5!hes ziopJRjz~J3i(C=dU+9X!ewr%+`wLtV*iUsuV1K?V0{in^5!j#WiopIHR|NKFJ0j_E z&T>UyKgAV+{h6)^?9XsTV1K$R0{ic}BCtQr6@mS!t_bW;aYbN%vLli{=OkAI_TOd!2T##1olU|BCv0F zMPOfXMPOfcMPUDbtiKWVS!YGNFyt7-rD*?d``PVBwV&F*@e1$2g_fvf7lstLjO`Ut zpd{AMh(gyD+4|txuGG z)V_E7QG**F@oPl8Fysfs(+r|?M*E>$jHeSc>@Eyxufgf*>b7lt(0^4d>ozoq>WbX4OX z{H&r~7}78;zEOKy`$p{(PH*(j+o{E67lstL#Vf1Yx1rxgqmvY(T^Q2fN4D}d{r#=7 zYC@xbzBDV^g&_@Y^2*!owXAh)(?EYQbQgy5bAwlIseDAgx3_H?=FiX3@61G$f*W&t zSB|ONO21n+Yw{nqm=*29kOsGRWgp5Wzm5G%}mAxwaY}&MQf`;zG zkODV%<=gakKxJZmlYd{GnnHGANP%0sau6x(Tlw~eO$Yh!5beT{2Df%)hswe9J1E=a z-}9ao?ZS|TY3^M~W4p=@n>6`?CGn!Q-Gw0y)7)b#M^(mFcHOYa7xIZU>@EyxnC9N4 zvU_Ex%Gf?lWq&!Ux(h=J+}`Dt?VaV7m0h-JIw3(pcVWbJt^8E^HU4eTbVh=L-Gvd) zw(>8_e;|#g1~#3Sq@lYoq`}X3`Pbz?lGZQ7ri&6ZbQgvcxV_8sNQHiNP5v!!T87nK z7}DSdFF#cNS@|dBdHtKNO}d5d!jJ|xczH4X{iOWRW=*#yXy`5sDR6t2A0UN$%ZvAJ z`e}j!@50C?g*muHMVLog4+KpQC1~&_jB0Rumlx6>X>FZIiVlLA$CXH#_I|4TtMX&z zg=3no_ut|hb_Oo7`pb8f|4hH9hBn>o*D%rX%!HaW_yMOv-(Q|nzH8^E`~4b2%sqIi zi8M@uKUjXGd{6n_J(?2UWP@E+rp2ErKU1DtesEM%hyNbtSeUXhE&fXR71DWTP}2|m z8iU+>m=<4HUP;ya%CM#xevK*}43o;`nZs}@!b1M#lgw~)_ZIwwm*>;pJ>`3HO;;w| zf@9@Li<_0g@^9$x{__03O*0cTC{&(V5TUv?Ek2JF9xDH4(63APFMZ`<-fE%Z=YI zPjy8{#FUjZ`TeAE?}kmk^xva8c_Z6^=1h||d0o>p2^v$rzH88M_Ku?)n1_5W)$Z)_ z{6oF>z((us)!b`~j&0!G&?U7~Yqzg?tLApz4Q(~Mp}bGRkDEmJsGMDy$-jJKtB1ng zowKI#*@!`{(BKD@a+^P|0>6lKn}qIQUcmQN?yHAFPcewpS*9u2yOILl zngJJU(4SXrOMAMF9qJlFs-M1B&1>5 z``OB~l_x7trW&{N6vI@N?vap&Y4GPOzbB1n>yz#g?U9g%Y4D|$=PUFJ5}QN!NJzmn z_+ym)p~_N!gA=J!&GV1ez<}$?$}^S6Dv#wGxAzw#+9aWSm=>>6A?TM%(ug)mNW--F z?8@xQWtD1>SXH`7BH@ZFH&!05bW~;+l5P=gl8}aJac+$pD>oJzNBN5pZIY0NY4P7v zYmipZINGlfZIY0NY4JZ--XNXdZ_v1lU&C&akb-IOPb;5Rx+{O~*Er6v5N(o>1~+(n zp}jylpQal9vCXJA)=d)9;1+M+nEul3g|Km7|2;S=o_RTv0zcvH{o6;-Z{zyL2?+{q z6c^9DR7k@#_$TfCEA&e@?(f%#wn<3CH2C|KPb&0FHy+^Eh_*@S5SDqwKdXFJ`Ag;f zy2gY38qqchX_yv&jWk}Wd=@qy=GWi|c~WpQ;;MW_e}AaFR%omwDd;u{-NH2ZD$<}| zq47w+2DVA?G@12e>U6%K->QupkN0at&gpay^N2q{g?OOyyA2yp^J_%T>7-$v@nw}? zSMI7jP-r|eK|`I>Nx}5#^DE0L_g9uRG@g~9V4c%R!?gILl}9UASLWxFG$QA8(l9N4 zN#(i9)XJkn8x!X*;+#$uYZ|;vkL#q$C7U*0?k9Da9jTCpY4DE9Pb#A;7-zuaBlDmD;-0VmY3SxTbKrar+uT!JC(2M8?R2dg*vBGZu5k%sH~>SeWzdJr3nhw zIh{1*9lnxYuq*mCUY4L?ozqFfwD;$gy;yia4oC_ZvdCk^w6*U}2e-zuLsBxzXZ zbW$+wy{i42v@BD*XJgWsT%FTNft$O1So<(4_o|&6FG(ncbxx;cHE!?red({Meb{D= z(-JhSb2@2odsF^%SSxJwyMfP&oYP5z8@#=<{kHbq+V|bGF=kHs)IXS)La^K(#$plMM6lc* z#$pjSda&Fc#$pk-YOvfM#$pk-Td>?7#$pk-Ot9P@#v&0Gub11ySS;eY4VL$Jc$w}o zSZ)tvaW1Z%V7Wbv#Ud_#u-qQTViDNe!&oc=dwUp*MPP3aW3dSA?O`kyfxSJ9MIvmN zEw_iUSOoU=Fcyor>4W9=Fcyoz-X6wc5&e&H*~3^Y0(*NHi$!2>4`Z|Ix6tfuE3R|M*ByCP73%ZN~9*`L>#c63A8 zo?qo=0(FgP$C<$V4Hq2LUw1{|zQTc$tul>iM^JK7_EksE3}1tuS6mUOzwAPx)-|Rb zLrJAeOgol<`HL*|5}Z(I?$Kj(;KWB%8!2;6_=ieNFzT@k9C$|IZnL=)tf zxgwD7c10lHWkfJF^fPqG95L;vJhCsZG3{6a?$25za<1W*YtZwID+2c=7MyZ{yT-Jm zPTIWwf}W>bJy3tr6@mH_E|k=}#I$25)cayr5B2_YR|M{lJ5c{OcmYi}o+0W5gq0`y zAS-{Vi9?)S-{*inei#2&3pW-HTEoTv$=tcQVc9pbv$Kb0!_1P*1(^}SJHegwjn+Qt zrRj^(qf+mt?n+fs{cC&vKknW;&dTce1HR|(v%LU{s3=I;MX(S+#D)c1j4fak@4d@U zMNN#x7_nrU4@0~ek=A38F%qh5|b+^oC#WTA9dQ{oWnMpPV4bH^aqlFJ~WblWZHGLR# zsAeYF7(s|Wnuj(Im54=6Q)m~>{xfG5d*I$63H1p=)YZH>FnH1cL*ob)06Oe8*P}R| zrjG(L2?x2EXnS(dNDT_>CkQwI0H2Ey24cg_QFAXm^-RPbyi5Njh=V~6%JWx>CR31JNBLG!(cR=uzHHEhh%q+%<7(uA2%bU9wzG&`V8`QN{ z!zW^Z(AQLR1tJgS&E++zx|2iVrawb&NY(SHlZHl`Q~#(#q?h ze6rwI0HW*WJ@660`hY6Hpr5fpNFM^PcjnWN;ubQi)G#*L*MG(GgR~J5OuC7Ss5$9h7A?ikHCtW+0 zN0NULgsOXd^Z3H2h0hwA!W$Vd0{Z-mAXMSqn#VWesZT{n{>2-i&Z;n59|}abil%h| z6M;7LkUmKRNF{W(-U}E!L4X*c9Mk9D6gnkq#&Prj^lE5Y8(<-bc(a+X(9V505W6)W zU6;lq*=!~VRrwKE$#Zb?;Z>;>_nXZGpc+32OJ)vgKB6oQkZd*+glN2Z43^A{X+Eg7 zDZGsV)$p6m1cAR{&4aLLW>E8(P14>M$!0S_sK%?BM>khB4=Qi^TS`;Ko6Q8F8n15N z39p%|nlv8CW-~!Z7cbn|ylLV5=IY%C)ur%AHk$j9niw>3)kSex@=JIFru{C3_SGZJ*#kI;iAItHyzYJ zj3{k3143WlvkJ2cGYhk#K?B2x(q=Otw3p8>%tvw%hyh_lX|ov+(!gk`yO05yUo~iO z5OMuv6IfL5xNv>p!NSzSUFE@q6mnj2rk@X1>$)`n^b;(PJkCXygKGRb04^(BUzVPJ z1P6Gtk`dJa?6kskDC4>)2%w|;r+6=G=`7zf>W9>I*4i* zn!4(zs()KOqUx_ztyM=?b*p@)@}kO-6`xcrs>oOLD1W~E((>J+&!a8xh>nXkFY73~ zqHNFXm)SpNPssLmFS)DS-o?{jJasSlxk+XRBQW!9l04e0@bk@^{t|5LnMr0x5NZMo z3#);dQ=8@)Cz%~Vs0qAZcpt{Uus*fh`|U3RPzzX7_y;1a@0X_mlFW`Eq}LY~qCB4Z z)c1Ov*%5^FddZO@3AV62tr~G=M*wO9FBH~kVl^m~ymW`p^P@JV@M;5}6h1*R;e|8~ z$EuYfzX29Zv;710{;=>#d2mDpi(}NC5tj@I8Rn6s`4*Ue1Oa$2BzYYHXqSHh06djx zh&Zn!09E%Fg)a)r3NKWqwrsrpMG&g)@8GfnRh9PYN%A^^5Pf4-vpJ&h-<1UssCPbb zwHtZ z)L>4PO`YM9Aj#(lLSN@Q!qWvR8?1zSB|L0M0IFxH#8%BarppxPa|EG!7Q~R|QQ6d5 z#Q7XSsHQWh_czU>>VnmPX&h!%r@AgfhBwok2^yc&!k;xHbyn}K0iNy`&1KnCfKTTL zKwstm002*v>b=G396|VbcqHArI+aD7&Jl#F`z_4F@zgejcg)XZI){Uex^IQYFgiU} zc&no6oq)d4P(L<<4U=oPqCB3a&?0F74vZK1h)_C?--_b+qydVZ_s5+=eK(d)DKDDv zE8OMxbqtq8>Vm?pQLqXCaD}_Cv<~8T6`p~2aep?5Kppl?>fnQa>W#o7NdpvnT$n^e z=(vgdk_OO9_+y69CFr+3i&YE&WYbia95W;cRrcdREG;}+mWD_cxC=r@@z%mycm+RR z88kuEd(TAKK%jYtVG(w#Ji+N40Hfn&M8ZOqJr~9C2?9{>WO=&)^qoBudG=|Ax#{yi zS>De01HCpZq$yldm{}Q|FhZtc=cgPr!9lgX5CA;E@(?Lm+zyfGwJpOcrG18 zLKe4+IibAvY*}QstgtLR0z#ru$zTJ7zOe5D0#C4GOBE)zCFaD1Z}*`%K0$z(Q@pla zWKvaQEdtgf+*g^Vi1>sd0jQ>5FT4)GowcbfWNkZks|r9h{b6A}Ag_mOog`^dUFoDz zTe6i)-(*TkwsPTJ#Ta{AvXx6n(zsDuvXx6n(t1%_vXx6n(ift(Gm|hlNYVmPTe6i) zN=Y4~wqz@pkfat-Te6i)NMeyuTe6i)NR&R=$|WSRs;Dj5$^{am>}|65KoLZbA^RxTk?`eTjs%;vQvTe+kZrBAkU35n7tTe*Zp>65KoLZbA^RxTk? z`n=)Dd|q3!l?$bq&}%!|mZJ3IEs4?}Wl6N0BQ1&2|ICso{SlT#>Bm_Tr5|fal>VoN zW~QTl@{iPHbrk|_OwmPF|fFeJZvV1G-Z z^!r&7rQg?*DE$~qqV)S%5~bhUk|_ONN~*(fgdd{x@zK#jq41+Ej>7Mekg(Q7{J5xX zcT1x1yCuKwSG`1S@zK%nlKqIYi^Wm)QIfq-oe0+4YP$>Iw zgYyHfP1@n#2$qwL#T5@p}ck|_HSOQP(9Es4T!Ye;^) z8DvQmzR8j(e4{1NY6e;oTYi8gQTqOtMCtok5~bh9k|=#&OQQ6B49Sl-TU!#P-^!9G zeQ!&m^jlgIrT_ojY9-0oVmT3|Z(ty6aU95cr(tHp!3{1slx=q1VRhxT57(YqyM4{N znw#|Y^2e&rsUBMOLDjsfBdcmFpQt>)a(KnZ6|EJyif-l4mQOAp6@41r79A7yDqDp( z)@Y4motWL)z2dHMV=~_s$F?4|S9HM48kNQ&kFEf{l9>Pi(s>H6;UgSExd%wJ zS>odYAYDrV00l*oIwyG@0Hot#P48=%TE12hoX>#8rpc@f2QnEsB_UL2OOx*P^t3(#m%;b&wa;u&w~b&r1wc z(;H)eI+rp!sIzMNMXkZB;hBI`0XHw{1PcJwblj?;Tqnxw-AkIt0zfsrF@S11&gTH2 zn*L|upV$%cVs+3qz@j>tRsx}#76d+N0KI}qv(#uK)%3;ykcrtGnZyAgy}G%sxlTA_ z(^%*|Ofd`T)q;>u5C9fQGDldbs((NP=!fRIw8Z5N$;p9&z~3+|bpHWc6@DlS_B!xL zk~xA)FA+tmU=0v& zrLyqH2BH%&K=Ua?0wz6v=Z_5(fU0{vBH-%_pQgt-<6{E_q3V92@IAuv>-#jl8GKJ5 zpp9b##b^OgZA(rCxrJ=g8vy_sR_|(3qXj}cw;=Ed0?@F@v4O%uJNKVa{I$aSb!mv? z*g!$3wr_$t;i+p19asRNk_~Z!(B6F$%HtCRh_>SmaR4wv^B_`v0AzzNRIoTRu~{JW zr7Z}2f&gI=9~vku^qu`6qH6$@rRgHs5GM%L_nk-#-6@Drz13*_p@D)>eNRMrJlP-* zRHOLP)o}uYL7Isuj!&?>Hk98ECmdAWix6D{pfXK+$#ytFsJ@Q@0#9vfE&O&k0jRo1 zqBx$4G(fT)P7tc@rb52ZR2Z3RQpt8WAat%!I0B!hLQ|?TlI?JUP<`)JI3@pG;fQU5 zFJfsb*$yY+EC5vBKQH_WDbT%o2h$h~XN@{ihBMK1)aKXak|fHE+Wfj)lB9b^ZGK%Y zNum%;B=xRoQl!D7wpTbIAW51uYV+%INs=~;+Dhwk{n^U+sd!zkKRP*TE3L}~NvajK zmDc5gMA=L0azUc(rFFR=QTEchT#zU`g!hYZL89=bb-5r>_|m#ukSKgvBP%160SX@>`N>OOwsK3S`vj{Y)KUU9!sL|cPmMv7WjEepPbGI3fujU z7DwUlvLp(Br~N4kpPbHzdkHD~?FQ$=tADU0%6^+AQTAIciL&2fNtFF&OQP_LEQ!J| zv?L1OYDpA+fg$;D$9zj-%g?hUNs3ZAf=ySNtAxNB~kim_UC-&r|v-7Ra{0 z&XOqowT9#en`_L^$Ae9BI^QnwXmgbXQu^Op5~aV=k|_NZmPF|SUmst{} zztoWYcyoy*(Q+nR5-sOqOQQ4_SrVnc(2^+qZ!L+^Utmd;{(MWK^#6ZI=}082l+uw% z)-IU~GTk1;_3GO;{JCLv!(k2O^^eq_UB6@92X*u6j;yPzeX{nqwL8^(Qgbsll5bkw zUj4i3J*xg$b!XM_Ra;iRSb0_DJ{A9}xToTzifzi@D4$mTv&s%D zE6+ZXJv+ODd*8LVBV0{w<_Yk_e=-yAft#Nss)G!MXbTG~^ph5?D7xQs=8p2B%C5>E zkpy)B5Jh9|x1&610hH2W4*PJpkS-{3{HQI`_Yd zkt_hD1E8>e(nQjGrF7UXcU_e~*r-8W80ZIayfWOLapKvS(faCx}L8zj?Ld@&^!e3KInOze_0HK-|1U_j!C|=@$;%KK~ zIO^uB!n=j9YJy8bQ0LMT44w$ZNrTXV;d^#AFDsN z{zr8m)h(zyx~^O8v$d0JN7Z~La;|&kxy&Wv`0~H~ zXU<|`Nh}Q$KDD&}7W5MgUII{)m?oxh>I-%ODCLy^&>^J@KviPPev;T++gvL`1tYK! zsnUuhV~POelLjcImB2xr{w@IJmVv5rP_MrWK$!w$q=rahY8$P?0W)Wna!LTG zsr?77geMAy+tEy=oDvYKYB@&;pEN*m<*V#2czLU)H&!0qWpd)?03e#i{;@&AARI!* zD0Fes=YbFxp?N!efC|R70ho0umzkohDq4!;lUDpfqXzW_Sv(!^TMJM{cfoF45ab#ikMfZGl=QwcJhSRPCyOJCP}S< zP)*0_$+v?!u^Y}xY7KxYx(mRW$shoLsv6sLAyb-l-*AQnXrGo{9ss3S_YIShW&#IQ zb-XboR0nCM_-sX~wD##C%|iY%0}(uv8y=hq8kBTQN0o5D9~fa0Z>C3R3m%hnlu(#juix&s}; zAHV=l%8rm5CYn~IL-+&MLEw`HC~dmK3SsHeI2!Q>dD3j}Sj$0O|F2OTpEN*mOm!TZ zqeIwL`Qewxb71;|U6p^S^!qx!+gN$&p0eN0cTXN)A*Wh?Rroq}qEMXZH^cdL)p87` ze1e7~mO2ib;W+EptU#CLj=!(@gf7cpS{n~9Jh-9@`Hxbo+g3XQ z53Z0{YFdSp1TXGT6?=%<{aRk6U_p|u9ku(lyd+8QjoL>tDo&CpE^7B{c}bF?HfrZu zUQ*<>8MXVhyd+5{irW2JUL`T%)$Z5wk|gi8sNJvSB}q&jzdmMBk1gs+q3nJwFG-Z$ zujM6)vTtW(=XQd2zm}J!D7#|mYk5hc@O~|?l9=ym_iK4cqVRq#FG&>MujM6) z()+c%BvE?5mX{<-@7MB@#FpR2REXON+WlHymZJ22EiXxw-mm3V5;Mr{el0Ia{CU5Y zmn1fhU&~7pf8MX^xZ9q z(s#2YO5b2fl)hd`b*K<-wv(O>i|f>ztw^HuwF%H);}^BpSQ4eLw!cN`{mFy;ElOW$ zft0?&k|=$-B~kjwk|=$dA^BdFwIoXKEQxKOu_Tqg?Z1|!(zpF!Nh*EYe=JF*Z~NYo zRQk4mTarrO_MIiE^ljf7l20RlV@WD~+rKPHrEmM%k|_OGmPF~lR1#I|cj@rtLDh!e zr1OQvQTWd-iNb$oe~QBM@y_2fa~ zDES)}N6BBeB#Qo;{V9t6|C$v}TjJ%9B}kP0g)9P1L#i&tcl1uN-}GPYw&ndbSJoU| zGr0QO>bB~Z>Qk%ttZt}!uWE7CrOReKKKa+tvew5ZKUlVG?~@0ttSHN5u*Uf9y?Pgq z{rKdHV($0>SjoLtajW7!gMMCKeBk&24GxiW!9{7?#}Br4BX5RP|qv#Gyk+HXl>g^n6Mq zNt#P$mjK8(jKca!E5Ca(&q8S#rE#a(2?9w26vsT2Fpw^(<$*~nUrKU;fvQ;;qybRp zILU?Ls^#;WFOcF<(+lAmk4k1uK&YC}$DL{Tqyds77s{)aF93(M@}h)f8#4f^F|^6>Qdi|KU6GU*7X0;%{Qg9rgTneZ)p1w9 z-{axr_f^LmD=#f1S958C2na&j0X)*6bM3vV}XD^E7qNElL!!;ykwsFk@!T%97HwDL_x3ydt`D87vWG{@x` zsGj4)`$AfSKm(J$i7IGs?gEe;1c~z6m%Aw6-!f1wcL69$hRZ8KwcJ(t_#8+Gq)P6x zJn~!oeRYkK;|)_9>$4EvZ@BA&5GNo|ywh$}zmhXI3%ZA&By#=B~=un~uyyeO)9$b%WrK;pl*Y zsClCdxEJ_#*$XTyDBsf+lu`YP`ZMdduUl6)r`YfGUk}-SLB-J(4dqXlUsOIa`XpKu z<)iLp&z4Ot8A(`m+QtxMlk2|bO_yErzi{~UtGAjaAD!XrtqDE zv$&UO2Lg0dmut5G$~MgkTf;fjE)il5a!r?ff&duY+04olAe~;$fe}EqsTg1(y_kEM zh){c&1_Yk^riEd|nM`F8p$1Vv`JWZ0l{eiIK%k|3{)q@Ri9-v80-mN@0{{r+_c9S6 zJs;Q1oCm<6QPb^Vgik;bp++GHe6me{NI`Vsa<3gn5Fwo(m*31RoK`rmrs>WA0@XOp zXhXX{5c&xMPz}GCNm*$3$6<}L@mv=*g>SyZ5P8&+zO)eT)Rt8kmlZC{Hia+OoaHw& zk%cOJN?~4MiY&vpH&6=*RSN#1k0lm{`^M*RNbv8j;A~g;qy>L zsJdsO{FQ~)%BIHy)rL&WL$MZI%^@dA%`D7J1DrsgN?C9xKrWknx^n=k+b{(kVL4yhZK%03@PkXo+cF!fFwZmeF!c- z?o&Ya_sJBYcmO03s_*Rz6AIfE4oPiWe*mN+xTfPY3_vnQ=&}wP zsD`G+VT8ZfiwM;?4iuHu(=|=uo5yDr^-l{CE7XBbeBGi?uZSD^i-K&}& zNMWG|K@y+}zYj}z@NAV7(gcLMb01C^(2OT&gfgt%yDM{qD6ih!ht2v4mPhwKjD3$HiMA&+OlS~D zHi!@oD_13PC=D!5=#CFisQ}p=AhQUFB)Zn}zy!<7h?ATG34rK&!Y=p#kPWtyAd*uc zflysPh<1H&!Y=i}AP5kp?EyfDvYY2LKPXQ&7|0PGa;cYw9e@yJH(!bJc)|!Y)Paek zi~yX*)2>8$e1a?hDD4jbK$YDEV1LU&wY@O_D#3FgcT`rR=6Ipa-_8d6SYrww`Wc*&bXt;rk*TnjoPPze2|hQ6^qiMim3g%;&J_#ZZ7!- zYk(_l+EuxBT4KaYWKU(ND@Uy?SA(eNLcAj;Au%70PM)o?<-TF1|Oq#zpsoWHj>|0 zMv_=})b96{>CgMj@x5;>l3N#yt&L-HxXUs;kEU(|kz zB~gfzEr~+>(vm2|NtQ$*eql)z;^&scRz1;@sE!jXiRw7skTi}FwI63m6!ln3qNvAM z5=H$VOQNU~EQz8vTM|VrSQ16eTM|XhB_!O6LEAstlGxDWEs4?}Wl5C&NK2yhKeHrC ze}pAb`f-*->Bm|UrT=L{^7|j6_Fr2PD|D)o8epsbnvbac@X`VX+#SJ69+n_MVkHl? zBv$eeOJXGtwj@^aCzixY9%M7wMfh1wP4&v^^QwnceN?re zYJ63F<#M(ljy;1VAdCTb5gc=b0@U!_$b_yi==WPr1u-EATAar19aP|2?}n zZuBk4KN2BEkvk%H9iGd&H9nh$z+RykAu7!6m^&KJ5t}xyPC@9kT4W&#&h3=jE9Y`M z_Gt|5kdlVtwOT|-&&<{3b~^g~+)g7K!*^cI_L&qS#1?V`a-(zET;1?ggkGyffLKbt zA>WYemm4s#@#~aY@LDZJsKb!2&ToOIp{()S6vQ~aR*ML+vwW2Am3uQ^-M8_FGz6~I zk_p!ct|!gioUgzWO>P<%1`J4M@jys7&%K;`GdDGN^W>)R_1rKiY#Gv7JP@kz#rf{J z#krS9H|-bZ(Ju)E0wD^|m*>lK3v!DuYC0i|*v3jF8qe>M|B0Z+HJuzr_{+6ebJ2MI zTzq!R@3B|Y8DWG!fsqK&c)o9b3Z8SfY5Hv#Q5+|?YZ0Ite=`4MzI(p!(M{Ke0saU^ zMd)Cae*vGn^G{Ycg|4aIUwU}i(!SdfAoVWP6lw(26ux_THghX1FSRaY3O(`E)HYoo z7OA*$oNUx1LTX*;hEJxDDNhL%&-S-#5uw%oPoY~LPg!U!PnR5i^>W1%N85+Ulw?~jlt+td<9@MbOPtdL68-52G16`Jar z<^>Q?hChmt2pQK3efdcP_$_k;$gtKGpu!}Abn{F8<3e9~f*ha=e-a}(=%99g{^LBJ z%BH!2N~neCwOT~zp!P)mbs+BV({x7|;ZI^DLiN2{VYmFP`6rHRnifX*U2}@iX()!A z-Q>wOO%EgdwOT}|!p9fJ1JScQt+)DXwTMuK9}dK!h4E!6h*^`9SH^I^Df*1U8HIfc zxDhT~4}`?@EJpHBg-=GB2B@%95=4`;7`2Ckhid#9Tv|4{Fge&Y0PuU~$U=L#0Pslz z_`P!kXbLFEYt8T3NX;nq#qm}1W?pX0b#oUUYRn(L}fje!7 zMIS|d=0`_Gb!AVMT~IbW`*C(bc6_$MJ>xENBQu|57D?uGsQSBlvle8>WmwQY%2{+ih5We12Gd-(HPdrXhT41>2Kl zI*=cl-w)5QZjGA-05Zz+W-YCT20rp<;WIQpG!5W4`4FHlHv!-i1W2z>5-WbAc>d)4 z^!(BJvvzCTJ|GhirNjylV*B}A{?z;t`IAR9rZ|d8Vg&&8;l}5W%O9T4^>1tpv(TMB z>S+L>KHQP{JhV5yF-@paVg(4*_rCdK@;m2`?2#r^DX{{C4tEps6Y_)e`)<`ZGEJ%l zvRsmFtNPwIzXCQgVV}lbQxI`t#m9o+Aitbz%e7TB?vVmW5-UK+XqS5-_j>N3+{?Wh z_YNaUi4`D3;koC5c_Q~hU1ORP9w$}+P_O;j+^XCIx#t@ij|#IWC02k?uN_s$-J5&1 zym5R0A!a*6?(jlG0U!#OI?E?m9wt@Fs{kPS&OL|X&*s{y8uI}TYPNFb5;=&vbN2v( zr>=2g3V;`E5h3c%wc~S7?w-oVlL82-geF!95N#^}pkR531P`fa?0I+*i3za(|B+e-+>$2qspDP+k8M zh`;B)3M0@=2PGM41pZXnowYRHq_hNP9 z*pv&aU*?V9a5>nKY@V&m2JE9 z?SCPTgr}x4yb^2nFk5d`_X}E;_R6msR^0tJXd=ptxPXr9+F`t$pak;>C*>ZCyNKdTp=bbyv;nv#dww zLx-0YAHKOq9rLD1QWF97KFemk|4{EZ{VJkH?bjdx|4nh>?LD?!_SOdvedr97VdXWY z$T?0T5L1iRl=kF;ByWpoO|mB!6nPy)Yldq$x(?b6r)u@5+ON`5k^=%z28n3Ruu={P zG_i|lO=;^cNYbsMHKnuzNYarZM7(tu6wzI@rnGezB(3opW`fx|%vY}2E(xY%&pxX- z#FALW!Is22Zfi-Devl+wiKoBZ%EAVuIXn%A1?9t| zkE7P;=%`!SGi4W*jm&)x>o)Wkh9gA^OwZ!IJ1^a4sDPxMV$k9EM}u3p;rrZ!iak!frO)sYBjw~W z4Y9i^*SIM+xGBPG8@KMf4Mw6EHtDPT`zb4FY&T`T{sDPSH@9v>XCub+m~d;K5uTM8 zm78*^!sL6PTX$xdRrgZ0#O&OZbMz1Low|9L*8ww&r4Xz)I`~>&_Zp|s5YGm8yLN4 zHuo(MFVzmL3?mqX6<^4|nDU$FHwWh1>Vb7(L~-1BpPm3h6pm2LFhLzU@bEB#7vgvx zqHwr1Bk>IDHn0#z6g&S`;-L!PKfk{?LzM$V^G>v_Ke~+d5QU?>e$oK`=rRIC-x~#> zZA(#DpTmv;Wdp-0vSKL;3xtfS`9@&yY&!6l;d+;%ut12$^8-;HPgNSC6omysG>-7i zw)t)H1EYZ{Q_oTq77eS>u?8UUlm!toLm&4Vb07ey!jVRmPg;37y-dQLD6ZPxSaJ0L z@$<9}feeFV-5^iJz_dA}+=e4wDN3uVk&YK{JPHC(0e^ZK5vprJ;FAX6>1DnS(zjVW z1)z2Kj;=LC5>4kmf!m8`vwY75+8F^mm1~&is!>!HK> zbGdgAW_V|-fo}(g1Eh}q77|oLHU4hyZ&(`g+-3vc4+BbDNDwO5$<&jW*FKqhw`t(V zVMJ*Q2@v}F{yz78?(y7{g9d&OMwGUY0HOW646jz8>IQxkM(7q2>8}822j4TlXYP%B z*{C!YCnfVvAhd_?k>3+51@_!>;OAi$rA;J2Xb(R&e=Jrc>`^!H?_mTtkqo0$+Qs(; zVz>OUyElejl{Iio4=%qkQ@rHGo3~r`%S#?Q(a9MO*+^%amAL6=ST@>H-1j~*cf2pl zf8Md{!$()%u)P0nHMpemwAy|(FV|dNGphRI>N(YiR{enUAdau)bGU7GqZa+q=SmiF%a@U~q14uXddqj%P8fGryc3 zG+?4+@=@552G@B>iiDlN77rg7QM0<-UEUk5i*Cx>tkREM=Y~n@xFs&#)>ldTxSR66 z{y|qSj&PkD4p@RYWadqK7l&6r+;1qFLAtpxnVMB@?`Jw(=l9_%6&F5`Xi5X&0umfV zd>bvXp`#ni*Z)Qug*tC;YCruGOjNE`aeo*UL)dR<{UhUS<$(oNk$VPqurxCU z(J(|!+KJz;a_jnrL0G&Q*DAIQF(_E>+cj?8z%Zyd=G~+(s)wgsKGlxAF<6gviIUaN zi)|Of#xo<`x~3FvpWm`V2N`wt6a!YM+4}?By5T999y_p)sKe*PDn`=Yff*6T3`^Qi zoj$b(SRf3yZZo%T=P(GNGT(l>+{aD%RBTrJ*UoO;_F+(Q%wa2HtI)8uR0=Xm%YWL> zt=lmD>Md}`5-(Z>KeA zSZtdD8$Of)6%A*qS%8lWgq`L@`+uB>s7@mt z5rtiXDBB?^B93We3#!|wb%N=kW=nQ(>vAa=cc#bCsbE-6>QwL69g~82>5^OHXr8){ z2$Cru#1F6O?$(`{0$X@;saCWL0H7~?pIYJ8{UQZ+?=F6{h3m<82%>U;N$e16-f$Wo zzfx!Xj;5i@W>i9Aa;VsbdFdE4=5HklX&R^){$LuX;w6&CYT^sN4LMRsX=3mW`Atf# zRz~;tn=Ii_x|?VNG`g4|^t<7_T*Q;u@QBR4nQlwEo!G5c!*dN6H0)6S=lbdO`__F~ zcUxVq?*EDhJf&i<@_&@KmXE{v{`W;E_KG$`xcJ<%!P&R6*Jek%zq|SFr!G?*JFM=< z5!|K=iYt#_(P#M1va*UE(6pg$+FUoS(M`KJdxd-V(Lm*ZD_%N4`U-J6s7?LeP21H? z{leh~Cb)P1mV%pDT+!FFqZjl?H?6`={iB=uedb;F?&~SAaWj_p*~zn`8+4fGK8!otHj5fETpGc_iMk;3x_kGt08YZ~?m+Q| z*eq(vg2NyDuOrTNf8I0zLu=v;b7;ZC^vx%L3HoY2BJ;HS^M>nPL|MS$D2WnIt$8Zk zN%#SHM~}=r>Hd6InBOE@J+)|QNc;iaEAydyZ?iD2=uS=4K(|QRWRZ$`L1vkIZ^IR9 zUe4bbIq4S(4(hucjhcDTy%%y=P`}fRob-*PQONH`w}X2xG$#`496qQdC(Q+lgU<0i zA@j0(FO(tx?o=x$&E*%0gNMJD`-^*TT)16+WpOkYAixjp`3rZXdvC*o9(=o;VsSJV z_+!xDH!`Ex)V-I|i%zyUdP+b5_oBG#AGx(5M-%n?rNwddd)tXyhWGt9nfKk=ABF38 zlEu+ppoas1AlzDdvUJPgV&kS~JQ|7_NG0S}>39R^b1PtDp_;WkBwKs$%#3s+U zTJ)Ic&jI@Iu5RsyS$fg6X5zk*R|pvK#fZ{$HZjp$dtaDQvB#nQZ3P%#jA#co1^leF zA+r)zosTTlkbw7@P#fQT6>jZ@XK8rxu>TZwl8}J+m@pf|AD~NmyS2}R<--ouxFPsn zgtG*Ye2;f)zYK$l6CX|*-Fr*`(2bej-K|ZT31gqD=jHt+yi9?^Yj}Qd*XdGtef}Yh zqU0|D125r{Uam7`8eDwoUu->%w5itvFBLx44c%R5k1!wXrHzH7MW8ycJ^>+QF(3>o z4nI6Gbd9*t?zC4efqXlp!Ol&L!h1{L26GZ!)w|A-DX{+ieN%A2pdq1VOR8MwhO0tj zn_c;_$8fMfX~5(g5sN)i_zeH3R4ZBqJWgPsuiFtH*)0Y3`M2yI-dh5Im}?Nm+A9S! ze0(xX_xWvT7cjK@?KSDOnm9aZK%e0jE21r--P0Ol-1$kQ!)LfrCHw(=D%yRYu#kr* zrlCua)u{ytuI(kTr=NsD#f9INcyYYgU%lwvf$Z-(j|juCkJ+1{u0>Yq(D(rDKiYLp z2!o0}zNfwGYUCIreWb7J+;E+vHwuK0_sM?{n#~y$cut z&QJ*Ufqsi?T|N9Me_uwl>Ve{HDT4G7! zjz+8QwIq2ZM5`8Cl63EA)jgIZ`iWNEZAmg#N2~s1Nz&`0Rev-jjSWYu{$NSuc$+1W zUEp2ogEoY=Pvs$dcGz3+->Qy^8(6NPdg^qVzNDZ&CW<#4i)MG{6{}$p7;wMF`u1$a-(N?dqB)0w4$#0<)r7vFkm6r=7O865IX?OQQ6b zTN0)Joh4EF%M6L@-&S2}NtFH)OQQ6XEs4@!Y)O>R(J^5ew0mPF~#u_Q`=wk1*evn+|ypJ_>y{tQc^^ph-!(w}Zgl>RrCMCngUNZ5@) z%lWk>QTkIYiPHbdk|_NtmPF}Kwj@gbOG~2kCs`7u|Ai${`kz}8r9aV-{FrlsB~kk0 zEs4@kv?NM@oF!5EW0fQ$fM4#95#aPU=58Uc4!@p1TJ=8`N8u+}5`}NJBnn?JBtPWj zEs4VCEQ!J&ZAlb3?QPl>P`yqV(e|iPDcvNb%VmtA1)pl>Tr_ zqV$JZ5~V*hA^E$DqE&ZU5;@*!NZwTMuq1N4efH@q_TK!M%5D{pS4_f9m9Lavjsqe- zif)X4QubYO{OK$9$`}Rb!5~yw=atizJNY{cF)O#LTlIFp(K%%1ob8iYEO5e4 zicjm%@8xc}>j=#(f!ogFq#4|_@fsuB7tqWPt|K&i18#`LNn0VtB~Xcxjd#Cv9nXg4 z9IQAAl0i-}2RHRq3CK-tlOWj#u4BUtzBpyzSG@PPEBcB%0GODJMs!~F-@CYu4OcvP z7;c31K_uYBuH4kA8e}&&Osarp|W4N1@6WFhH z7seG=-j{?p8He!g0^C8_pSYJp2}e=G!t0XY6Jrq)?7|;dPR+dSUJlLcfZN8(spc}R zx5J;r2l!m~@`mf=5@V_Lod_^m3j?_L zZghLNmv0HT%GQY%fTOj*I1#~xp?!}~<;&rS>YS}??Px7uNPiHUc{TGd_exr8j{75x z8tiB+5D@G>MmNe_=UzD_EasM0Of?pXYY$b9-)9!OSFQ}>wlFvbC!{se(V>c=?pN;B zABS<9o9Zz>AqZ#z-;J67x>s8RxPxIVND}yXI71YoHoz)?Jkq_|9zelVHnZFkQ_ztS`ErZVj~H|-Q{mwjD@d*jG34u^Rs9bI=kC;~49 z=-{}_*Y1r&0yxpZr0BM!RcI^J9V)r&IQPc+0T>z+%bgQ;3|i1gWRUNjxy8LPCyXn0 zK9r0rj9Q4o(K4d*%&YFrhBRE&!@e~cwGaSJW!KCf+?zFFSgmPIhArehd6lxOa9g=I z&k5sdERN#}RDc&I-hF3f9&v9z9mZALX3>E~(ny_K; z(O3YY6LEd!S@-tPFu!8w&y%+T*Pn^U0w`+ulsn(OeRmjFX5{1=G{LQ-(~{lUt*Hv* zvKB|DWwAO*;I}-p)~)Fi#yN}Q&;ov6yJ@$%X^Y)Tx8|>5T*kBuSE6}2mETJD&cQ+4 zO*mOA8Im-vp_N;&qAqvc-8-+O;D*=7y+LCiZhA)kq&e5Q$KAWL!mx{M^*FZ7b<=C4 zLrl*|zVi=Z+=UjW?;){gFw^hP+`BJ@alcjEP#tl(GEKS=%oDgn-L>xBivzeDR_wOz zPb$BwysL6TWqrk?6~C$ISN>A@W#v0X??`d*8QKxc zSKkN&ip~_IdVtCI2=_$FM4`CwISwg6={!Mf3yp&BzL^#7iH`!zAmq`ea?Dm@To9XF zEZ+yaCqhYM;Ko}VyWH1mljwLInHKkCd6?f(7N;Y$D1EG(hTikFt8q`x3*(NoI31y< zU*_ZwDjc1;!aaFU822-a(-C_5Y$t!G0iC(oJ-IH7JHp~33@yC)UYsa zoW;>tz-+0CdZ(M=p88uDH&$^p7TqwdodHm^&TJ(8pZYG0E8e?RGOy%BL28CS=|ry1 zJv~2+J3Qg%PqlQ@&r>1M|4z$1>YiR6#ue|~uf$J>=;=Kb3Zp(R^B4DYD7^=JIW%b( z@T0w~cYunu^>mSYI%SAH#Nzly|61)6Z=v<@tDZSLEa$-%M|(j}0KYfI&ic4#LThax z=T9t-Z*<7nSD2wcG`VM%g!$o|2LEbC{b(;}m(gn1>+wo|W_=j{hyf6<*xTg$7598fx7}NDzBy?w@Z{jM;Dxz3^R0V+QJ7zG z;_tlUi1y?wov&DNb2IbY^OvXK79Qk158(JpCqLjWcB9?%|4700&z5lX0P#MDdjzgm z!7+Y5B@R&>z9?3^pDv(o_yhQQ_{D9%3$w$;gh_Ak(*?L4z=^PB%UoL_jN8rPtOE#s zb2F{3Ef>b^YH=K0(9hv;3fIh=t}P`>wu@08GoAFsUF^v0>;@JCir=@BDjR`ZmDl^-yIxvhYj=Rcxo+G&5QVkmXAm?0|%c`rx zI9z-Pvlhn~IJOIWE#$l&^RHDQbBVLTXb|1a8+B|M$B>02KNEFqVMt6XbZl-(8fot6 zWl7RKqK?fhNi09==xIqZ21Xs5T9O!S)Uk;rNt;Ii!QMIjm{ z$D(r&NQy!zWLRwrkzsL0sSx>9njhEglTk;7C6QmbC9$=li2W0+kLoQl5czZR#Wulm7~RQ6T>u_SG)Ro`2Z%D(E~mZY+;`p%Gi z>hW7kVou>3OH$!i{mYV6_*Gw95~csjk|_O`mPG0QX-Sm+3rnK(pIZ{8|ICnl>hT|z zMCm`ZBuf8xOQQ7aEs4^9Vo8+#Z0h%XO8=@QQTkVuBx8i1`XY__`SO_?&+iuWnXOz zQTF1c|49l_^i@Uz%_2psUa%yJ-fl@0z0Hy+`tz2=hJP+5VYu^a9iFu$HvBV|MB$&d zBntnOB~kh(Er|{Pge6h>l}h5;5FYij3P}`g2oa0IKW1?h{!v5ns;-U+7oJf);wKvPR+K}Z&qJjy+_sh;;4OAGHZ9RV|_BymMKfv`;OpuDR$k683?i9ByoW^MBmbg@?yeL8aOt_lxa&E&a?FYlF zty@Y70^mebI-?w{F5{cof_w0eplj4pN)P}i>Qvl;I`JBe)%g!qrr~^o05DOx1}*@@ z^mlM}fm@_e^jep47%N)Y%pN;>z&d=yj56Wv0${H`#L2?9|A zaH4NF{T(;`L!AY;X8!4xza79GJhP=r)*SYcL?>`kMK}FBHzU$W(mRvg@^Eymr5NW2 zfD%h}(?4@FM#(qedAIzz05=#*DL(+5bVgw{qrpvo8BqAAD>ez^O8Eic)L6WfFUt>X z?pEv@#+C8|z|mM96$xd6|DEgURtyf~O8EicXe^KrtqJs_NOZ0^I*cpj2Y{ospfyoH z@OwG)qFZrd7+1;jQ~{c?gNphcf@CYM2;)lm0pO(LYkThFTlFTlA`}Qm5UG?O z08XuC#xZWjFBKQL@oq)96U`~c`2oPxSY`}xGcI)UeN6Ufx8mENm~%?`0pMsZXcklt z0mlLEI=AAlVO%Lc0GyhOAhrP?W)Ese_=iMWr6BJ-8 zrCnQqsjWzG1xU;+Z_Bi~M>afVNMZ@XE!njNoEnSI&0+3){h98O@Blccv}+46wH1Nk z5ATKLnTOmXKLjcVF-yC)fKyu$0TF+|lzDmPD)-1g!?@C}E#UYbLfsG&K!)^Uce#5c zB`;ChwFR8oiiC5RLcGoOc8{JG=2zOa1srV!0YE4nidctrNRM6<#+7z$0jI`-7D4_* zzH8ht_vmY3Txr*qU(KkEiBJ%#xIS~gdn`P3&MEEM0xq!@v?p3;IhH3pHb2boS4qeN zIGT&pjPLc#68BgrX(r~<|3TTnqRA*8)FDA2;K1_DQ{3YX0d|1lemcCrn3nJvQWy%5 zu(FO5+~c962w*LxJzJ2H)&f5GlQ*S^$ESXw9dv*X!|={C#oU zQ(Wr-b{trsbVP4q*H0mA_;@HTBaOmcTWk~>3xn?n_Sc-`R%QZH3Jklpbo~psaa_T0 z1Yl2mAL>@7q!CX@JTlCQxB?JP&IomN`eOad%9P0a@fJr*fqCIiLWh~}+{zTooM>@$ zSup$|Xb9YTSMOGav%hnWGZvK|1Laol87 zd4J_EDmSlquHyWP?aJ4bUst|o^y${of@o~y%9fO!P}Vd1O!nODVD}bM)_Z0?%`A}H z3w9Exx|ChO%!w~PWD=1Fffslll7e?X8mwXqvkPLLz|l_v2yaVCMP`2I?hYj(;RP0P zHjEk!U^Gtve9q-8cX#Nu2h`q)@95`unj8m1y!kF`c6Z+%7P6FD0F35|YT?xkRTMJM zyStxC!6m5$Y+GU8S*k_XIPjV7V)PRq=3_k;)BmQrc~I66u28sW5njq+rEY6?PuMAIDWw*GqpiSD@CR3^6{{N-|4*Pj*{_1nRk;q)HjBQocXa^a&`a(qb{u~$F48F`_`*hhIdg1R>Uq@9>9T{o+qQz zXW(cpvfhJP^$Dr4B2JX?LV6$RYkh-3)WMV8lE=f$^h_D`b-;|K(pQB%fR zA2RBxGO>)b6pUbKez*gD&vN&L#v^G+oGTN{NIQWC0TjLuoaFAiG$11ya$xdOhm0Im z@HT*r05&4?dv{+-{9=GnxA%~U!%JZ-)^FbTet@4!iQ{F4%S#>nXeL15eImHLyDugB zq|3?G+XRfG3R(jg`ObXmmWD;<`6pO%51cX|VAQ5{8ERQ--k8YV!DaGdS%sKZIxeb!LXU|HVLCLU&sk z9ne9NC>QtvcbnVOJm&9-OdK|8J&ypfL<9ttJPKzBK(tU7>Zkdtje1 zuC$sQI2}=B?gS`2@%31?_5d_GV$_bqM&O*~elQD+9!B{MM4B{!zyTmLzqH zI?lHw`MId$JWCRhqKNv}i#8je=GcAeIpJ7Pqu|*xf zwj^>q)so0D*(iu!ran~Ek!%zc5;>l1f#jHM6htXz8#P`yV$+Ya zBubxb6hyW0C+782TZ+;r8wI5lr9aG;qV$Ja5~V-Hk|_PbN}@J=(x~YCf&>Ua;SVx6 zZsqRyu_aOX11*WdA7Duoet%1%@cUU3h2PhbDEt^pqVW49q>=F`v9~2r`n@cPO~0ol zQToxAMCtdiBuc-#B~kj_EQ!+ZYDtuS7fYh_qYR1p&5oTdiPDd>Buc-NB~khjmPF}? zTN0%oW=WL(N0vnChguS)-_epN{SJoYN1W{~iPCRpNtAwwB~kjpmPF~dwIoVE$dV|1 zlO<95MoXgf11*Wt4=^M@l3N#yt&B~8}R zUV|P{$7u|m{gI)wo()eooP%`p{|=qqQ#-MClbWY$&aN3${YLdw)w@-FQZ)~kf4a&g zl_ysALg?&*itWqaEuU6CCi-V|EADBjE?Zu9YFXdxi`mPvBi#qC=nl$!m-!>FXDL40 zy>j<5aoOVB1IA4s6RFX7tAwKWbgc^mUJYPp#=&HPiSjfyh?$FkcXqAeZ7eNG>Oo+l zU`_|bX`Wt#T|up(HLqYdDUP2BPOL!PuCWquo%ZzwZeb`cB`#ZhUYx+hQZ$~0Ni}@7 z(by)kaEEa1eq(CqBO;t);d|^jw=iWMc$$&Y2SfnC3`@dbJG+G^hPf4AdX|UwK}sJF z0Sxm;NI7;dw=gt+M4Oyyxrym2E6g8-TOYUZ@)T~L@20bUVJ6m%!aC~&>cqp`!kGaS zTJjY2VljCXnDhV@5LLspdTeH?TNsL5Lr5kakTe$@?F7vauNl=VOmYiDzBXXRm)0`H zAuzQQ38BDE2gmbrZc#|zfSqLZMl%5h5fp)qa*MVJR1PpbCQhdP!i{Ev01={CfL*qo zTNKIyh>&s00Wd~FB-n;OfLjN-MZ1Q%Y081jd>jOjcbNF@=NA1q1;wM{R7M6uq&a{@ zySzNWEeg%Zpf_e55Q`ESX(VWT2neNLhLq%@OH$ZP{7N@235-^PxEF*3cs5$($`lmO ziz7E$$#m3^qZo}1(r zwFXc!O8V_)f})AQKA>y)&MbB}XTq?f&5)q3x%M=O3A=1{L)^`w3<}sK+s%X@jRef_ z2fbbA#<^Rjh4~$2`O!>ZjZiuI_dA)d+^yjRW(&8QQQ-`Nh{B;bv1M!ny7kTgKT&}k zBqxC{k&}Z76b{XO2=s;S)+YimRPP8C)3Z}MnSoU%N9r=6&oWQATh|3}$_|Igd3KC~ zfERG`z0Vo$w*CPa*d?3IASHt!vdUz-to@j=0~S==c3>EnY&H{|+KMb{xl(I)p*z~$ z_H-DRY&H{|TFZ<%ZpJNc#=){Grqyh`%><_-ipY64R>L^_z&`E|!@{^^vzg%3 zT7(noheo|HyREx@R2Y|RHWM8F&=;_f<{0S08Mtw50SfPaNO@r9PIvdgVHo$C!ATY=`ToJ^fIr2xySwKHaNzq&4vUW|N!uK^Uef3VELZMZX&{ zSvb%5erk}L7k0bn%Hj9=76M9bS_0MhLwNT3limEDDZF_6J(;OV%i;}$fzd1-r@Hx@ zroedoy~2EA39JAEczJ&}KeWUP4Wh^2>kAe;aAejcad-*EOKf}_H$OCPiqhir1X`q& zSORPvzysawY(82M2V56Hq zFNGTp!H=uPVGjc052&8CZvLVa6pz6tGdfeK8U`Y%V3V64&LPglZK82IdS6OLJJzhX zoBv!2Gs#NO_PsBK0SK-=up{Q(z{E&HF{?XO^9~@ zz6(3L`Jsbx#2R^fskVprrN|Aiu}yA4C?hT~++G^jj0OS}n4w7u!`y=5DK+E$rDR3} zL2Gy!hq?tRMy&Uj##N(%0E00ZBl?N`-GY5nxXI}@l6FLw@op4b1kHaMxE-4U8(x_- zKMe%s0fcE`2EHKV)u2J@lQ}V(gKtH7ukr2HkS^o!)8s^6m61-AV89LFzN6fN&^uq6 zfB2_<;tp=K5z!YdtFK!yHc+)gX3k9(uA@chLJ1$JK>Aze4!0nD@9f;_WOfUjz7)kt zKt>hceZelJV<+p@g&qD7b6Fk_kn8K*g6jfOs%;IA72y4+WLU*$ydV@O0II?&fG--6 zPG!tM+c%{!TX=QCj4zt6Wtfwc<9gKW4`Ebf8-ythW6)@b$aM@ zoumbkg%wz4s$1}V04FUnW2bnUO3%qBQzfO^-L+PPQ7&l_zjrZyKLPgUVAr~N7*_oJ zCU25}(Q{(^%lqjl*Bb8IEyZ!wzPI^Jkm4A~+fcr@bgd(T+>p4vmIDb;G!ee&v4Zuf z-Cb+wz$@_yXY@{HNL)jwiEO@lcXh3&hM8SxTZA?O=LM>kH}+81`l~RkxOnHJ`T3?{ zg8=)~_O3Owh!`?nkk|;Sme>eP3zm`@;#z+fW_G@jkt^ubIv8-QajjQ`VQ5D=d>jJ_ z0*>m8h-*ggY#q3TGSbqJD{B+2`So-1no;D}ySUcS>IH%MRqDcwCIZg@K=~fwTK^Q5 z@ocTyj+BwZ2y6;1(t+WKB(|2{uSgPG%kNht ziLK@LE0V<4^7|D@qVRsdB1sh9?^h&=()<02BvE?5Ur|Xu|LONDl0;o|zal9V{xMT) zeXB(se!n71QTRt}DGL9vB~kblmPFx~TM~tT$dV}hgCxPW{j50ZSY}BS{sBv(^!Hm5 zn|`S!QTqEViPA5zBuby`R}>*AeX?IsNR<8_3#9aS8Saj zqV#ttNiy45A4=(q&L80}Buf7W3#9b7SrVnc)&3TxPmY7fZ}~yuW&`vqE*4o5rC(@% z%dfadj)RxqqVx+akkZe$BuYQe{uZTAj)RxqqVz2mNa^Pok{={)GQZ`QTqMWAT~4qVzNDZ~3;5kAuf=`5|YT0s0|lswJ`Q zrp*|7Nx(|0xA79mPF~Vw!h`uK0Xd!ev8uo-U2E8m4@VpoGUDec7M4g zQTpFm5~aV)k|_P9mPF|R+Qwe~9a)IY^%CP~XGk{sgl?NPJlk-7!}j&>)=#S+Q}@rhTkDRV)o*$Kk#Vf- zALR?ne^y=|EsIW$wklgyHo0tg_Al94*&n-a-JQ6Its(Px<_w9Hi31%cHL!$9xT~iE z#{+)%x*o12Z6+vZ=!v%ult`%aBuoS0{nc#ZT8 zIWLWwUX4R$VtiUBL<*p_5xrc?nJF+{jYAksL>*yikeYt3<*XDKuf`#aHqshrISX64 zmW#tMy&A{ch)j+lByvJ`YDTHG!L@{QqjUY`IOIkf0k@?Jn~jDHPbuc=*lT{H0y`?Gl@a-_wf@n$8&^b?sYAp4LLF(;C6FwTRwgQR)j6xEWJf|zqz)* zkDmZWA@8hrE#ZX^bCV2)ywqqUY)R4i)~@A(K$D@;vRlFKwT3fyVX_KYx0FFB84G!kigMP7!!eSH|F*PMHG`|J}sHel%6twUT( zILkaY-pr=2d9{C{@QsLG%e7%azsOJ<1NA~zJrNC=BBQ_T9BKnhUg=CXdG+PzR;&ta_#(@Md*a*5!>mIIUS-5J+MmCX= zHUa=(2y?dPT+1_Im|l0TS_6zmf`$iDzJKmo-Vej{!gJLcV6+iwLLJD*Vzdh{j+tBJ zmFKJ*ZG=fRyc7%jy1BJsZhGZ;ETq0{WX6v*RQNt{h@0Ch4AV=`W0;O4CdhMuo4a!u zrq`bPy7>SKa!rUT$@jKy?wBylUwp20^8pk9@P|#x*LQbw4@!aY;&Z~(N+j8|n6O4S zcYF#A7oU6EVgSXXkl&h%hD>{r;_7ps8Q|{260f;Cy16Olua}?ucH}}kNf08yhVQw3 z+}!Yzj=6gMdEAa_Bf<@Tl3g6+=B6fC^a6A?h}wwq!9nx@|H93ECEOr-0eZ}hHZoKj z5#MKxaC1Ko!-~8Do!n?6y_HpW9MFHPn-`8cV))l9&=tmIb|M}s25|3F+`Kf0(C=GA zALS}LIm{X;$avh|Zr*RgGU_GhzWx2-48TCs`{E>QBu+03z%cv|*5w=$Edw_lNQ4!v z5i*|ThP!!>{hx8g|Ni%(Evl`*Jict^yi#rgb0Lmo7{f3~U~IW=Pj^$eZRZt}+yr2W zO9UjwmdmzvbE^N({BfoPV8~5qB+}2~6oBDHhKedTrz!>Z`K~-%R3>c6>kcC{xQ*S^ z&8ZK=N~sCJIFex)L&flYS`Rm8(=e=*ngEO=8TbH(?-QHcoUOvJ;v}D%0E%9-jC{-u zZRX~LBkJ=?sR_X762X(jUtb_A)0xGo3ABB(&H^sFU~Al*ZNeg!QWJpjWd}B7HlmxG zGdK(@OJ1#j(MC`;`~lo|>r`$@W&$Yu4O0kY6l`}lXNxeiQf2}ezU*Ke_!HPBZcgto ztdyAmEP2^MW2oJM&~=y_R!PK}3BYI~UdPNC#&4K5(#` zvsVf#$xHyY!Nh7X+A-zrQ_4&LmY4{uHoDHu**}F_oSE=TBSG82GF?Kq|7cQ&;}N|_13Xd@ZH zNcyB_Pd6u&;uQBQ&P)JB69G!|dDAl(e2xgq$jpRf>H(vPklA|78)1;SFs!tM9WcJ@ z1R!yR=^6C36T&bqVfWnlu0swAxf(br>(P+mG!%U1WqkXC8BK&TB8ahm3pZy{m|1B7 zyWcM0n;$7el`%B=kam3Ovv~67y`iVH_2=SyPd6uJ?onF44rcU*kR(I3mLpX*(9KCn z!j_h=1EwaT0QEMW+S|>!H(a&S@^!$}M8r7I{NT16FR16ku+s8%z-S||U?guPVb;&h zc`ghq%JOw8&F?$FNPtcQY)=ezZ7Hbu$Q)RfKZ-#*Cx^OwqP18o+7*u1~F6 zY4ti_v=ObEz~oJnQnk|Rb?gJ=tA;SC8|*lxAxo>*0ZYaaw2Hv0-JJH6CP`MW14bi3 zuNfhU*y(*?Bxx`?Fo*5$-682N>@?@QIVpanzvx_hwqGMB^8j_EIxco|J_^VP=c}}O z9Wttoi01|8S7rmabEsw408YA1ym}ol>oddKyQ;~xj7~u%tJeYJI07Nb4IX++%784l zo%;ZdUnB>o9)BVunC%i~R$9FdW@;nSiue=o8Ls7^FidYeR|g#tL$wi!o&qM{+qjm{ zdP;2&z4Kh#pNr)DVnd7z>&{CJqH^)NIKSXV8zDDYyMVabgn*C_ym&uuOh!Q2w|%sF z-y{(2+cjD}#*(CCMXUYRMFOQkqSbpRrLe+Z)6T2+vLrF~X!V|!Btk~3M_ZDNWYOw9 zEJ;SGX!Y)vB-RzJ-p!K4a-!9K>muaBGH`O-$&^x0K3eU!8?qER`t61!k)z*kND?{z z$o>{N`t61+C3YCC_S+3fVte`Rh9t4Q{B}bnF^{s^Z#N`~();a(B(c5xc0-aVz29y~ z5~cUs4N0Q(e!C$_l-_SQB#F}d?S>>#`T?fe+~K~ue?p4y1YPa78v^KWHi=emV@px` zzLrGk`&bgC-`bKW{Z^Jl>3drerQgz$D81iqNV(Yde!HQPn7du=w;Phgw)fi&Nuu3i5xl)k$qQTlF{MCltWiPF~_5_7k!>nw@V*D6WUMPHEVLHCIBvot2zb#2yrsF$H(w6D?){?Yo zI=-A$ihO8;d-!tIqhfOh=Tk|_NbmPF}4wSd zq^)a}+M?EN_j}Iw&irodo$h}2&(+~KpWM%U?>YC}b05ER&OMjhANGsL{X2dUxj*C= zk^6&w5xIZcFCzB`{33GS;TMtncE5<+zvUIVaELekB67dqFCzE9@r%g)KEH_E|JpAi z_iy+`OU4DZ^Som+u86<5|9ftP}FCd$T;e;DL4Op!;Jiqz~*u=I~sd~ex!D6qFt z98=^Gr*bzp3vjSM&BrOU%)mT2yM2c+?HfDIx7Wa%VoN3SjWEom$RkcW(0m_<%x<_h z_M&9cVVp~mN1S%4G5DN4ACVtQr`(01iX&&LxfW`+)&Ci7l5Lo;P>b`<+M;5!(QU%OxC#o6!ioU z(%M&$msaFl0E}vqBX%eujp1JE0M-< zAbNA;TtKiH-*3@2e6-h!rSY~ra?Cjw0Hcn86h(5VhcqtB1IsxV0P}SOU}Z8NEbCkV ziYkIZ3Lf#?*IgRJe)HzYxd0edWK-_EZmBeeEiTQuoOrOdI~&L&HoyVi1c`*t+%)G7 zoB>50dCG*SSm^ zN&u%mlH7?i;HV-HAwZbU_f|^Nm&35=#2H}JkyTlj^dnuQDQtno%5ga7k#U(9*x3ND zDw3x2!ql<}@w9E6Mu^g9T$;iL@a9bR#2HXj5glaaaew3(X$srFn=`o+XMp8a8^A#9 zxe{p#+rP1vPK{c|X#@%kj6MscX?UKNZOfiG12yUh=L6M#$Z^W+y1f53WgRO`VMBJa<-t=U8BkOZoIS=O zif00P6*8NsI%ZFt0mV5)2aC-go^^dvLjb@B18pM&nQ!jV6K9&22kt>Ci2mNTg&QHqJpp3e{&q@veQL#P z70W8VSpK{6yO8qwZ)Mx;nwV!x=au#^dBaj(zn8o_IU0F;9!B1t$D+oELSA=4Wz$dft6GmMDk5DndUW&aYD=Wj~GTUl2 ze1JI4Vg1ah1N6JNI%s9s&xHw7)9@342T&}H*ua;H63*%fGe$u0|z>li*rO=Xuv;W*kS3 z+adGwgQZzwddR{=@$bi)#z<^A(1pu)D^IYzEi!9!Rb%-(+W*ow(DcA*o9F%i(?5DDJe*lNZxoC3Ys4Bprb)dNMOj#S6X;mhhKh{I! zgi%uf!!Ar=wb%fLskvx!!l)=9g%2WXHqMcTu-g&l1&t;*lsf|e2zFH3596g_e1I5w zz$L{YjC&&h94yu-4XeU9mlTIM&L|*<7X$0RuCgu^8UuPRDGqTtMS)C|&DaC7F7!qL zoJ)#B95n@f4U!lMn{eIJy3qaz;iBS-*{NYaSPw8^E|(1CngytUoVdqj_g2vIcw(GkQa;eJ=P70>S!&Rd2Uk zFL(YaK(ACS3ZI@J0a2WM`_P=iMO8UXsY5RI*w-ArM1!(k>Wx8+Reu#(xY4n*E76j@yda^5SH=m<$1 zh`d)QG9C^@-YXQDC=TSjS13`9O>{)wD-^Mfk@pHkY-8lTLXl24iH^v7g(6jtL`USk zg3I2jZ@VDZoc~vjef4JM93h$Z2hZx6dH?-*QD#U{>-X5{W*JI!M4l~Z6;&hhY@vu6 z8hN%*#D0l9TPR|`M4l}av0oz37K*H2+7{*{jw0)qwmPrKMMNy{i%h55ZuW~zsoLiI zMaF&GJio}eZ=35EvD@ePMaF&GO@5Ja-!|JXBKJ4?MdW^#SL8fMwSEz~zrime_cQ$> zazDc_BKOn%B645j7m@pEei6B!>KBpwZ~H~${(7&-MORGmi^%=A{33FHonJ)mzv&l| z`)mCoazEKGBKMR0B65F?6{#MhZgS7`@hl&E`*t;=oV!9Qd0ncqqRc?C$L8)LQT`lP; zk{*cFy>60aWuB3aQf}v6$ zKDN{1%=Un}_#z`WKvsVQ{B=?v_Wre)+1~c&E(Xa+p=qEwV4~Ew1eiqQDorT5(*{ht z#l$hzXr3E;UFz=&<1)O-hB)nXNuOy#!E>aXF7;spQH#6DhB(y>qXbYK6~ulm^&x*3 z_&mYqQ+0*iCh2lifRoGhVgF8xrHjjoMF)ta(Kz%w`eEc1Qol9aJa>}~*`%&4kTgEv zbgYUc?BZ#0H`x$JUD+jRd<=b@)OUpG@g^JH!lE0fE8y`JYveAuL+YOn<9c{vp`A|q zyViQWI<{Bp!$OTxqb2r%#MrDC6LnPV>xEZ|uXday1 zWJ8$g%If!&!_{wNEX0;b{hN7Uc9RWZrYftSP!3n$FTnSf#UY;(RE0O$P?q#ouAVEa z-w=I1A#-JM__d|Q-Fr@YrYefKMOI%3DEfTyvtc&7=H`{b&SAOwR3m2323Z_B4Guot zz2~H7y0ZEhS$(Oj`cP285Lx^mVS4V~bK*=_AV^3=amU0jms>8$htqq{4Mr=Ss*3dj z@LObYo=z|Gnnx?0_BcEJWO-C>xjszJrH>;$DhsrWI(8;9{@xNg6#%i6cq&aZolcl% zY7e6Gua;X{!}KyQcW7c_(&Nm+Aq%QK;>+aLC3$dm@i}3fSTJ0lcO!PX+!i_~1U7l` zIVVoKF4L`&-Y@B`I^HYgwp#<_bXCxES{!+FU8d8rrmx_cZk;Q)JsCiOn!EO#TykE) zAO|TdUul?hZws4(TMGQnGhJCzq)r2!B5D)2<2K|ly|{>9b_{2&bGe><#2n2AMc;k6%} zuB(+hLY82)W$9rpcAdNbD@W|UMRG@YO=w=^$;6o%0OJwYb+Kl-BV>gHHJ;WYIhq;P zOfwvw>*{1_Sizd>d~!B^)T@CHVAGHRc`1C2flJYvdF46B0Z-YfJpo#wuyUMm<(e^C*jQvXHBm=Ah=Mvo$$GL0^CO=VhBf4--{{T+s2quOh zj(a3bnwY8a-104%6I#}7YSF|nhH^V3n=@_ZyiDeVY=cJ362lN?{h(y<0eH$_nG=pX zz`iPL%g1XK7riCcFf2vsugILGfu`y7zU_p^IT`@tZu%7yC16WpKbJZC!Z?@Zo?LRx z!>vG0?(DN5Pbi~$_%nc19z-Y|ZnG7&)rU76N?3yHV=Y_d+IqnJL zW*YqA1JP_j+|%6K!??(t4{}r#fUr6%mso`6z7obo=6v9&D7nRQE9lKD3ERY~jf+G}LqsR0-|FS6#t;+RtvHm?ykF3thUQNW;*$$d(UkRF%UDgL1AJ7`s#EHwBmkF0$nV$N9altT|iKhw+JRk@-8qINI`c zeg}^8yRMU}ooo8y2;Thr!?-A%8#vDIXPW~6&uIl+ z7(m#j;`z!Hsmn7IT&5T{j}r@b#X0~7OI@!3HAscw+&Y3ljq?ilgH-U`g^OJ4P7L6b zOQwn;j@p7@2a1>>TF;ld)59_E)-z|a=h-GTKvYB?la9Q}R01V{ZP3MGBO(1)~@T`qJBMU>XhUfto z(M=rn1cotC#B*#vS(s;{br+ozMm^Eh-x=1X$-?m7w&gTWQTTqL3<3voQ)Id<>K168 zDvHH)8#%sT*jt*B8#_oA^$nmPl>WILDkQ=g1uxl9k~38(Z^)u>KxT^z>LxkPC_Rit zJkPyA7S#vHDU){5IZ;%Ulg)$&RF8?WC^QX$$y0qMsVHC%e3rumf%IgHLhnw%o#NxD zC~-3ee1vE0V_Ecr0GGh^HQYe5NlnqdHUn2Y_A^;@Ab@Lq@bN^q>juRh@Hf)^D}G(E zs^Z-8Ka_7Szr4J#YWool}nQgp`yz&lV$UX7wQ6tnp6#<8a`Vi z|ISy_r9Mll7sDD3y@3B-jJ`Wpn6IKs{EAdnP{9r~=A@{i&VT2tXp~hnoJ~{ZK?V1` zR{E7$UWJ|h&R0?9{813LlaXqZS5dZtPTzSensrQTt|C>h|5HU1*WZ_U85NCi9O=x2 zinRNyy$U=19Z&k!iL3&krjZ$WW_zy-DI}e&P=nq46V-IERvVY4P>_5eph_6wk-fsX zcx}6f9bY$WrKZY^JUgPuUg6xpx>)IsPoJ??nGx~`fSk)OV~jH<%=RX>)U}=Zl7e$5xM^!&s!7%QRy!w~>PQLG3X5VW7+k^*2Nr1%;#6IHO=*08*a_TbuQ7VRF1EmDF--f`(z7 z@9HhHLNBb^0lX-cFscbu843oie13w=dM8ZmT4r7&j8h8OgEC{hZW$^!#=|gXnjwl> zf{DvbUtf|NzmNyTOf!UWMgcK24dAWAFSDP^gVLnpG+y!~u(pf+*7{YM z{Z;^_9gqzM2QBId)?f@$qxgy36ta{876pR?M=gn37Hg54?h2D*Fu2;RfuowB)9?Yh zHMU1?dNhDjoAsdB;#k*BUC-{n$smwm4EvC>q@(UMHb zS;<$EHziLi?kH|59$lO)db(&XY}JPfTMDl%EKmG2QI{A}@VkQJHy5M|y2hV{wR)($ zEBD9*=^lG7wz%Q^;|oTtZ_TtHe5mp?Q)LTjOudkLHMJx4YO>Eq9(TH-g2VJkK8xIS~sjSrpVey^j}eh*CW=PKAS=X^iMkbN|J z_JuooeV$!mHv81!)Q3R5lc?$uKwP-K6)(YWKh%reZIQx2*#A|>hXJQ##@zc*FN)U8 z^#2fGqMedc4>Qnb0VP%bCZ=9ONJ@pa(Kae_5T;&@yvk0^~)9_kW|IF5&dJh2ntMUz}+24bw z6MPCf_2TCr1Mpt5>Xd*~wG}US&y6B8u#YbrU#5J;tNu9;qIbU>Pd2U(0f2wURSnJq zcxFs)*qKco%5ew-@6gp%{)R2v41JxQ_3ZXaS~Dzqb67)%d!O!T|LOzB)_wNxf~3E# z)r!=dp%uxBZP|)w%;<17i0pTJrP>m*6(*DSex?oCinh(myYxuB+1Foj*ceZAJ=c{O9Co!p>{e4Z@8u^{C zrfQ!hU07fPJ9Ys&FZ%vpR0JtqWm0l#sS6IIq&Bs&QAKY)fSN~U{|-w@)e>4)NgIo; zLlCpGv1Gq!7a2-XCi#`-)_!4JUn*YD3+ zAiA*A-|?jX3YwhP0*=!uu#2SMv>6W}#@qk#@?Ong!wP%+Xuqhu@ z(NVFXVnq4T^83ptl$V!1S>|QQD*0~7sN`Rh4<@fo9$Wlu@%(u4fb9*t7SBj*-?VFS zT|9B|`e$8!ac(BnzHRCD5kWH!Az{@rZQEyt2l98G1(?e(PME!8X~um-Tj4orluUaf z3}b$AqU;?@$-oT^U+$zEW!m4uD3@QHFnbfXXf@+;+ovf#SccHuehi&E2=2WI)j$)mku>F;5a?Fry{QsWzyR4*vUJ?`dH z!cN@Oe@*GY^lJUz{jaLX$l@Z4_eos`K*b z+kY9L-R*_YJgEkfO(zSb8*nK=J|jmfn&59O&W~P zQ6U0~uG<|uDm9M>a2K!N<5G-U7cf9aaZpR(Mh%miKZIdSG49AwO@P4%183CLQuBTQ z1}=RAFynKS4kA6Fm*WrvQS(6n2QFQbadJsT!LY#xxZ#teCNxe#&bR+EJV*Hh3?rc) z4)N)K|JtPkb&pFkZsZuBql5qj?(DHLy)w+DZ~k@RIo*^+v#eI?Bomu8$ynx-h7ZiHPY(^rOJOfyatCle3@3YN}K&ywlB;U%kiwA zXcX2E14)`psJ6qGBa(crBk zGI-zZ&7dXKA{&H_cU1HWT9v#wP+v@DzSEhH2!ZYk^5YgDN;Y-7cnSq zlVot0JJMsXN~esU7&jZ|h^b;1a-Uow2go}llOze(=y2Fw?udP%S+19N%K37NY+%>f z$7~Io$l_=-)#(m8mr|VK*B_iYxi^c(IMZSMQAbxetJKNnLBl;B>Z--o(r{}Rh=28v zK^s)zC>G6V#Lzy%bfaU0o_^K{H!B?}zMbQvq3EGkhQXH{opCPnL8zFi$C?HWALtP& zP9i|g2_>pDva1YzI$6wc@RDOrIQ`vM&}b-m(o=?|ohXCHXB}oy*a&2d607yDcKC@X ze+BEmD2Vl~&a_B^AOpE$a6wCRfvlw+bNoz1^Jnc-LEeuARGW3eQ7Nx8RSP*nn~c3P z%y!c){4j#;8|85&m^W1#t>D1)v!6!tY{l|jyH zMJ~uwW;2+rIa0wNbo3+GI*z*FQt#>5dSRgvGJ}pmsPKx9EH1eDzex;coOApe!R#kk zT&0T#GH}*7tk@xE4Gzni<7Dtx4I7M*qbzhmviW5h#@9H8u~baydZ=(OjDgj44m(-- z6?9|_Qxa?$Z2R7{avU|q3Fws`st7&Lfj$^hYBI7zK`V^oJe*A7APMP9;m zP*^s1qzgQ2G8k-+^hTh#(2Jj5cR_a6b_V~L>ken6^>c7S`GX`1&As!P7O~jg0(^VRSQ#}nh zUf{Ze>ycdl4c9wyy))OlaJ?(nqqrW;btl(dT#w;;EZ5_>-i_<=LA|?JZn`XF3zyJI z`d{#3o_nH6t`aVZ`Jzuuf%uX|{b5g@JNh?Lp_D0g6I;d0*t6pUjmdhlc0bRZK{`DD zOR5uQ-+4oZ1R_%8;p$MX4&&-@ zuD-z47r8outEpTa$yF~`)3`c{tLa=F&DAkneTl0XTpi2Raa($X{{pj$4yoF^CAmLYM3Mw64&-iubx#ZT6z@5hi@btN zL0(0sBGZuR$P8pA@)|M=nT_NjbC9{n>qtH_51EfFKo%lzAa5dzkOE{evIJR*sK_#8 zIr0|rHnIYF2l*|s5?O_;M%EzjYI_bAF3MK+(N8fH;}q!Y?USu}S_;1tpB%SV$2g?jt_UAGuwA?z!w3Cfj! z`HH@jVaoNg0?BMfz1A#80Z(!?M@ofrid7G?|ayO9N-n-)1 zCag{SUS<%y8?c5A)+~=I9m8a38#K%;lh~y=F;uLXhdVx9-gVPvmW56C!-rAYHCq&v zRE?G4>0inmkj6)0rK+55mC2uW*bWKp&)chnXNHwR=KX*rT+a@aIDOtRGGtGkZG?l( z0U35Y*zJP0X)=QmrD;a(vm0f(STfOFpPEi#@11}hUbkuFi)~9~R~V z3TFXKe_WWQ{eIh_5w{d?_$na?Q^U2WDHB=Z%O(cyIjbFC^~tm=262HfLueCV@7Y66aI2v*#ioi|#04w^uBf5DU{9`LuyT~Y z2NW5DGJKcrk1HL6zivK0kLTxT{~35Y-JeaZO=LZkjP*ysx1;=h;mq<-ukcNYL3|Rf z+Y(#NcqY9fu(WVAc#~OQU_vG3BV0JZWpb^uASsKgMW%4YV=JN_A$Atpeal+9V zvW;~Vnx3zt2I|tWdF;P5+i%rUiMm3Nm!o&w8lm1D=m9wifq3x7)!@Jz=P`~Ss$;+| zp`GV?1QH-S0$s2q1k%Bt=9i&&VjvEh3FfgrA&?K7lh8o9rA~o8Jp!9bpW^tY$M`j` zS0JW6sc=0p5YYaS6j(^KjlBZJBAiVMjD?6k0b|EqG`yUer%#}Z1pR)fUeq3ec_5~Q zx-JL;N$&`tfuTQ7@1Ku^s+oFcZU0QY3u#w^Hnv|N4gU@MyCMNCPwElKfD&ts44H|6 zCEODTdd`t@jg-`zo{g|Kp3Ad>da%B0hnDQE)v~tp=DDTulmvx0fa&$Ww~7I=L@bbZ z$#2Rd#vXAOD@SY0&=r2O&RJg~M_E95lfoF3j@`k?=n`U4$; zX-Wvl+Hw~BlhPp;MuR9-iATgW;$&$hUTYG?pT!0` zk#?7UlD?EG*{;NdA@B}qr| zohWRkrA4ILfp0@b0+ECFJ7MoAzX@|sUWfk8p=j;i?a)i4W8a7Kt{pMf#1ObR%0Cvu z`qS>3YPLw>>0-5&RiPm$WvnL}YHcFn_L`vmJZUf}Tk*Z{p#at*-HlfhJs-A}qZZ@J zwI1LpuStT_#X@9KdSg&VFVLeCUwm(cIk>cjVmoIJC`?|Azd&{uj9cY()q;~y? zUM-@t;weZw;fT?yj_V(a|MvojXX?H4Hqx;>R&CYSK6CEf?g2`8%lTl-1)}4+)=Tzd zRIjy5E~Oa^@h699pJdloO5sxf5q_7vwwh?oU)Of-N=LF|f)>>j^3rhgYywli4dFsO zjiSDT@0qo)ZiiA#M`)d0qn^u8Yz7NT*rg<*&AMON1RQ);nox2HT6=Uzo@o<$)nS38 PMf;B^+KJ=(tA>99oHJYO diff --git a/docs/开发文档/最后交易日获取接口.md b/docs/开发文档/最后交易日获取接口.md index eacd90a..c0ecb4d 100644 --- a/docs/开发文档/最后交易日获取接口.md +++ b/docs/开发文档/最后交易日获取接口.md @@ -101,7 +101,7 @@ def get_last_trading_day(): **示例请求**: ``` -GET http://localhost:5000/api/last-trading-day?symbol=AU2603 +GET http://localhost:5000/api/last-trading-day ``` **示例响应**: diff --git a/src/pages/config/Config.jsx b/src/pages/config/Config.jsx index dc21363..2f2474c 100644 --- a/src/pages/config/Config.jsx +++ b/src/pages/config/Config.jsx @@ -1,11 +1,160 @@ -import React, { useState } from 'react'; -import { Card, Row, Col, Form, Input, Button, Select, Switch, Slider, Tag, Alert, InputNumber, Radio, Space, Divider, Statistic } from 'antd'; -import { SettingOutlined, SlidersOutlined, SaveOutlined, CloseOutlined, SafetyOutlined } from '@ant-design/icons'; +import React, { useState, useEffect } from 'react'; +import { Card, Row, Col, Form, Input, Button, Select, Switch, Slider, Tag, Alert, InputNumber, Radio, Space, Divider, Statistic, Table } from 'antd'; +import { SettingOutlined, SlidersOutlined, SaveOutlined, CloseOutlined, SafetyOutlined, DatabaseOutlined, ClearOutlined } from '@ant-design/icons'; +import dataCache from '../../utils/cache'; import './Config.css'; const { Option } = Select; const { Item } = Form; +// 缓存管理组件 +const CacheManager = () => { + const [stats, setStats] = useState({ total: 0, valid: 0, expired: 0 }); + const [cacheKeys, setCacheKeys] = useState([]); + const [message, setMessage] = useState(''); + + const refreshStats = () => { + const currentStats = dataCache.getStats(); + setStats(currentStats); + + // 获取所有缓存键 + const keys = []; + // 由于Map不能直接遍历获取所有键,我们通过已知的数据类型来展示 + const knownKeys = [ + { key: 'futures_overview', name: '市场概览数据', ttl: '5分钟' }, + { key: 'risk_alerts', name: '风险预警数据', ttl: '3分钟' }, + { key: 'ai_market_analysis', name: 'AI市场分析', ttl: '10分钟' }, + ]; + + const dynamicKeys = []; + // 动态检测品种详情和K线缓存(这些是基于code的动态键) + const mockCodes = ['AU', 'AG', 'CU', 'RB', 'MA', 'SC']; + mockCodes.forEach(code => { + const detailKey = `future_detail_${code}`; + dynamicKeys.push({ key: detailKey, name: `${code}品种详情`, ttl: '10分钟' }); + ['5M', '30M', '1H', '1D'].forEach(period => { + dynamicKeys.push({ key: `kline_${code}_${period}`, name: `${code} K线(${period})`, ttl: '30分钟' }); + }); + }); + + // 检查哪些缓存存在 + const allKeys = [...knownKeys, ...dynamicKeys]; + const existingKeys = allKeys.filter(item => dataCache.has(item.key)); + setCacheKeys(existingKeys); + }; + + useEffect(() => { + refreshStats(); + // 每5秒自动刷新一次统计 + const interval = setInterval(refreshStats, 5000); + return () => clearInterval(interval); + }, []); + + const handleClearCache = () => { + dataCache.clear(); + refreshStats(); + setMessage('所有缓存已清除'); + setTimeout(() => setMessage(''), 3000); + }; + + const handleClearSpecificCache = (key) => { + dataCache.delete(key); + refreshStats(); + setMessage(`缓存 ${key} 已清除`); + setTimeout(() => setMessage(''), 3000); + }; + + const columns = [ + { + title: '缓存名称', + dataIndex: 'name', + key: 'name', + }, + { + title: '缓存键', + dataIndex: 'key', + key: 'key', + render: (key) => {key}, + }, + { + title: '有效期', + dataIndex: 'ttl', + key: 'ttl', + }, + { + title: '操作', + key: 'action', + render: (_, record) => ( + + ), + }, + ]; + + return ( +

+ + + + + + + + + + + + + + + + + + + + + + + + {message && ( + + )} + + + +

当前有效缓存列表

+ + + ); +}; + const Config = () => { const [form] = Form.useForm(); @@ -234,6 +383,15 @@ const Config = () => { + {/* 缓存管理 */} + 缓存管理} + className="config-card" + style={{ marginTop: 24 }} + > + + + {/* 风控管理 */} 风控管理} diff --git a/src/pages/dashboard/Dashboard.css b/src/pages/dashboard/Dashboard.css index 5176a06..fe05fb2 100644 --- a/src/pages/dashboard/Dashboard.css +++ b/src/pages/dashboard/Dashboard.css @@ -3,10 +3,14 @@ } .dashboard-header { + margin-bottom: 24px; +} + +.dashboard-header-top { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 24px; + margin-bottom: 16px; } .dashboard-header h2 { @@ -14,6 +18,32 @@ color: #262626; } +.date-info { + display: flex; + gap: 20px; + font-size: 14px; + color: #8c8c8c; +} + +.date-item { + display: flex; + align-items: center; +} + +.date-item::before { + content: ''; + display: inline-block; + width: 8px; + height: 8px; + background: #1890ff; + border-radius: 50%; + margin-right: 8px; +} + +.date-info .date-item:nth-child(2)::before { + background: #52c41a; +} + .dashboard-header-actions { display: flex; align-items: center; diff --git a/src/pages/dashboard/Dashboard.jsx b/src/pages/dashboard/Dashboard.jsx index bd177a0..1609329 100644 --- a/src/pages/dashboard/Dashboard.jsx +++ b/src/pages/dashboard/Dashboard.jsx @@ -20,9 +20,37 @@ const Dashboard = () => { const [currentFuture, setCurrentFuture] = useState(null); const [pushForm] = Form.useForm(); const [messageApi, contextHolder] = message.useMessage(); + const [lastTradingDay, setLastTradingDay] = useState(''); + const [currentDate, setCurrentDate] = useState(''); // 添加ref来避免在开发模式下的重复API请求 const fetchingRef = React.useRef(false); + + // 获取最后交易日 + const fetchLastTradingDay = async () => { + try { + // 尝试使用相对路径,避免跨域问题 + const response = await fetch('/api/last-trading-day'); + const data = await response.json(); + if (data.status === 'success') { + setLastTradingDay(data.data.last_trading_day); + } + } catch (error) { + console.error('获取最后交易日失败:', error); + // 使用模拟数据作为fallback + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + const formattedDate = yesterday.toISOString().split('T')[0]; + setLastTradingDay(formattedDate); + } + }; + + // 设置当前日期 + const setCurrentDateValue = () => { + const now = new Date(); + const formattedDate = now.toISOString().split('T')[0]; + setCurrentDate(formattedDate); + }; useEffect(() => { if (!fetchingRef.current) { @@ -30,15 +58,22 @@ const Dashboard = () => { dispatch(fetchFuturesOverview()); dispatch(fetchRiskAlerts()); dispatch(fetchAIMarketAnalysis()); + // 获取最后交易日和当前日期 + fetchLastTradingDay(); + setCurrentDateValue(); } }, [dispatch]); const handleRefresh = () => { fetchingRef.current = false; - dispatch(fetchFuturesOverview()); - dispatch(fetchRiskAlerts()); - dispatch(fetchAIMarketAnalysis()); - messageApi.success('数据已刷新'); + // 强制刷新,不使用缓存 + dispatch(fetchFuturesOverview({ forceRefresh: true })); + dispatch(fetchRiskAlerts({ forceRefresh: true })); + dispatch(fetchAIMarketAnalysis({ forceRefresh: true })); + // 刷新最后交易日信息 + fetchLastTradingDay(); + setCurrentDateValue(); + messageApi.success('数据已刷新(已强制更新缓存)'); }; const handleFutureClick = (future) => { @@ -124,7 +159,13 @@ const Dashboard = () => {
{/* 页面头部 */}
-

市场概览

+
+

市场概览

+
+ 当前日期: {currentDate} + 最后交易日: {lastTradingDay || '加载中...'} +
+