From 64bcc7e1e956d48b08b4319caa63d21a89fa3e07 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Mon, 10 Dec 2007 08:04:00 +0000 Subject: [PATCH] =?UTF-8?q?RelocateChecker:Make=E3=81=A7=E3=81=82=E3=82=8B?= =?UTF-8?q?=E7=A8=8B=E5=BA=A6=E7=B0=A1=E5=8D=98=E3=81=AB=E3=82=A2=E3=83=97?= =?UTF-8?q?=E3=83=AA=E3=81=AE=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=92=E5=A4=AA?= =?UTF-8?q?=E3=82=89=E3=81=9B=E3=82=89=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=20=E3=83=BBincre.exe=E3=81=AF?= =?UTF-8?q?=E7=89=B9=E3=81=AB=E4=BF=AE=E6=AD=A3=E4=BA=88=E5=AE=9A=E3=82=82?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=AE=E3=81=A7=E3=83=90=E3=82=A4=E3=83=8A?= =?UTF-8?q?=E3=83=AA=E3=81=AE=E3=81=BF=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88?= =?UTF-8?q?=20=E3=83=BBARM7=E3=81=AE=E7=BD=AE=E3=81=8D=E5=A0=B4=E3=82=84?= =?UTF-8?q?=E9=81=A9=E5=88=87=E3=81=AA=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=92?= =?UTF-8?q?=E6=A4=9C=E8=A8=8E=E4=B8=AD=E2=80=A6=E2=80=A6ARM9=E3=82=92?= =?UTF-8?q?=E5=8D=8A=E6=B8=9B=E3=81=95=E3=81=9B=E3=81=A6ARM7=E3=81=AE?= =?UTF-8?q?=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=92=E5=A4=A7=E3=81=8D=E3=81=8F?= =?UTF-8?q?=E3=81=99=E3=82=8B=E4=BA=88=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@337 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/tests/RelocateChecker/ARM7/Makefile | 12 +++-- .../ARM7/hyena_rc.lcf.template | 4 +- build/tests/RelocateChecker/ARM7/hyena_rc.lsf | 2 + build/tests/RelocateChecker/ARM7/src/main.c | 8 ++- build/tests/RelocateChecker/ARM9/ARM9-TS.lsf | 4 +- build/tests/RelocateChecker/ARM9/Makefile | 10 ++-- .../RelocateChecker/ARM9/rc.lcf.template | 2 +- .../ARM9/src/RelocateChecker.c | 9 +++- .../RelocateChecker/buildtools/commondefs | 48 ++++++++++++++++++ .../RelocateChecker/buildtools/modulerules | 36 +++++++++++++ build/tests/RelocateChecker/flabObj/incre.exe | Bin 0 -> 10256 bytes 11 files changed, 122 insertions(+), 13 deletions(-) create mode 100644 build/tests/RelocateChecker/buildtools/commondefs create mode 100644 build/tests/RelocateChecker/buildtools/modulerules create mode 100644 build/tests/RelocateChecker/flabObj/incre.exe diff --git a/build/tests/RelocateChecker/ARM7/Makefile b/build/tests/RelocateChecker/ARM7/Makefile index ea91ac84..faa854c2 100644 --- a/build/tests/RelocateChecker/ARM7/Makefile +++ b/build/tests/RelocateChecker/ARM7/Makefile @@ -38,8 +38,13 @@ LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) CRT0_O = crt0_rc.LTD.TWL.o +TARGET_FOB += ARM7FLX.fob +FBDSIZE_ARM7FLX = 52144 +TARGET_FOB += ARM7LTD.fob +FBDSIZE_ARM7LTD = 40000 + #---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs +include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot ifdef TWLSDK_NOCRYPTO @@ -53,7 +58,7 @@ endif #MACRO_FLAGS += -DSDK_ARM7COMP_LTD MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' \ - -DADDRESS_FLXMAIN='0x02280000' \ + -DADDRESS_FLXMAIN='0x02300000' \ -DADDRESS_BOOTCORE='0x0380f000' \ -DCRT0_O='$(CRT0_O)' @@ -68,6 +73,7 @@ LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) do-build: $(TARGETS) #---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules +include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules +#include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules #===== End of Makefile ===== diff --git a/build/tests/RelocateChecker/ARM7/hyena_rc.lcf.template b/build/tests/RelocateChecker/ARM7/hyena_rc.lcf.template index 7925e9fb..a71ce053 100644 --- a/build/tests/RelocateChecker/ARM7/hyena_rc.lcf.template +++ b/build/tests/RelocateChecker/ARM7/hyena_rc.lcf.template @@ -44,7 +44,7 @@ MEMORY (RWXO): ORIGIN = , LENGTH = 0x0 > - check.LTDMAIN (RWX) : ORIGIN = 0x02280000, LENGTH = 0x74000 > ltdmain.check + check.LTDMAIN (RWX) : ORIGIN = 0x02300000, LENGTH = 0x134000 > ltdmain.check } KEEP_SECTION @@ -566,7 +566,7 @@ SECTIONS SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START; SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02e80000; + SDK_LTDAUTOLOAD_TOP_START = 0x02e70000; SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; SDK_LTDAUTOLOAD_SIZE = 0; diff --git a/build/tests/RelocateChecker/ARM7/hyena_rc.lsf b/build/tests/RelocateChecker/ARM7/hyena_rc.lsf index f60809bd..1eb71c3a 100644 --- a/build/tests/RelocateChecker/ARM7/hyena_rc.lsf +++ b/build/tests/RelocateChecker/ARM7/hyena_rc.lsf @@ -21,6 +21,7 @@ Static $(TARGET_NAME) { Address $(ADDRESS_FLXMAIN) + Object ../flabObj/ARM7FLX.fob Library $(CRT0_O) \ libmi_sp$(LIBSUFFIX).a \ libsyscall_sp.twl.a @@ -134,6 +135,7 @@ Ltdautoload LTDMAIN After $(TARGET_NAME) Object * (.ltdmain) + Object ../flabObj/ARM7LTD.fob Library libnvram_sp$(LIBSUFFIX).a Library librtc_sp$(LIBSUFFIX).a Library librompatch_sp$(LIBSUFFIX).a \ diff --git a/build/tests/RelocateChecker/ARM7/src/main.c b/build/tests/RelocateChecker/ARM7/src/main.c index b9ead7d9..61fcaf17 100644 --- a/build/tests/RelocateChecker/ARM7/src/main.c +++ b/build/tests/RelocateChecker/ARM7/src/main.c @@ -80,12 +80,15 @@ static void VBlankIntr(void); /*---------------------------------------------------------------------------* 外部シンボル参照 *---------------------------------------------------------------------------*/ +extern u32 *begin_data_ARM7FLX; +extern u32 *begin_data_ARM7LTD; + #ifdef SDK_TWLHYB extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void); extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void); #endif - +static u32 c; /*---------------------------------------------------------------------------* Name: TwlSpMain Description: 起動ベクタ。 @@ -96,6 +99,9 @@ void TwlSpMain(void) { OSHeapHandle heapHandle; + u32 a = (u32)begin_data_ARM7FLX; + u32 b = (u32)begin_data_ARM7LTD; + c = a+b; // SYSMワークのクリア MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) ); diff --git a/build/tests/RelocateChecker/ARM9/ARM9-TS.lsf b/build/tests/RelocateChecker/ARM9/ARM9-TS.lsf index 17f40824..0164eb37 100644 --- a/build/tests/RelocateChecker/ARM9/ARM9-TS.lsf +++ b/build/tests/RelocateChecker/ARM9/ARM9-TS.lsf @@ -21,7 +21,7 @@ Static $(TARGET_NAME) { Address 0x02800000 - Object $(OBJS_STATIC) + Object $(OBJS_STATIC) ../flabObj/ARM9FLX.fob Library $(LLIBS) $(GLIBS) $(CW_LIBS) } @@ -49,6 +49,6 @@ Ltdautoload LTDMAIN # NITRO/TWL 共有のオーバーレイが在る場合は、さらにその後ろに配置する必要があります。 After $(TARGET_NAME) Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) + Object $(OBJS_LTDAUTOLOAD) ../flabObj/ARM9LTD.fob Library $(LLIBS_EX) $(GLIBS_EX) } diff --git a/build/tests/RelocateChecker/ARM9/Makefile b/build/tests/RelocateChecker/ARM9/Makefile index cab3aab5..da248be2 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile +++ b/build/tests/RelocateChecker/ARM9/Makefile @@ -24,6 +24,11 @@ TARGET_FIRM = SYSTEMMENU TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED +TARGET_FOB = ARM9FLX.fob +FBDSIZE_ARM9FLX = 2097152 +TARGET_FOB += ARM9LTD.fob +FBDSIZE_ARM9LTD = 3145728 + TITLEID_LO = RLCK TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad @@ -46,7 +51,7 @@ CRT0_O = crt0_rc.FLX.TWL.o //MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs +include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs DEFAULT_COMP_ARM7 = hyena_rc DEFAULT_MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) @@ -60,8 +65,7 @@ INSTALL_DIR = $(SDK_NMENU_DATADIR) do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules +include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules #---------------------------------------------------------------------------- diff --git a/build/tests/RelocateChecker/ARM9/rc.lcf.template b/build/tests/RelocateChecker/ARM9/rc.lcf.template index 28106bc3..7e843ad6 100644 --- a/build/tests/RelocateChecker/ARM9/rc.lcf.template +++ b/build/tests/RelocateChecker/ARM9/rc.lcf.template @@ -658,7 +658,7 @@ SECTIONS SDK_LTDAUTOLOAD.LTDMAIN.BSS_EDN = SDK_LTDAUTOLOAD.LTDMAIN.START; SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02400000; + SDK_LTDAUTOLOAD_TOP_START = 0x02380000; SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; SDK_LTDAUTOLOAD_SIZE = 0; diff --git a/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c b/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c index 06f1e2b8..4cf960c2 100644 --- a/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c +++ b/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c @@ -27,6 +27,8 @@ #define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) // extern data------------------------------------------ +extern u32 *begin_data_ARM9FLX; +extern u32 *begin_data_ARM9LTD; // function's prototype declaration--------------------- @@ -38,6 +40,8 @@ RTCDrawProperty g_rtcDraw = { // static variable ------------------------------------- static BOOL s_switch = FALSE; +//static u32 dummy[1024*1024/2]={1,2,3,};//2MB + // const data ----------------------------------------- //====================================================== @@ -112,11 +116,14 @@ void RelocateCheckerInit( void ) GXS_DispOn(); } - +static u32 c; // メインループ void RelocateCheckerMain(void) { BOOL tp_cancel = FALSE; + u32 a = (u32)begin_data_ARM9FLX; + u32 b = (u32)begin_data_ARM9LTD; + c = a+b; ReadTP(); // タッチパネル入力の取得 diff --git a/build/tests/RelocateChecker/buildtools/commondefs b/build/tests/RelocateChecker/buildtools/commondefs new file mode 100644 index 00000000..019292a6 --- /dev/null +++ b/build/tests/RelocateChecker/buildtools/commondefs @@ -0,0 +1,48 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL - commondefs - common definitions for build system +# File: commondefs +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-09-06$ +# $Rev: 318 $ +# $Author: yosiokat $ +#---------------------------------------------------------------------------- +ifndef TWL_RELOCATECHECKER_COMMONDEFS_ +TWL_RELOCATECHECKER_COMMONDEFS_ = TRUE + +#---------------------------------------------------------------------------- +# path settings +# + +FBDDIR = $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/flabObj + +#---------------------------------------------------------------------------- +### TWL-commondefs +# +#include $(TWLSDK_ROOT)/build/buildtools/commondefs +#include $(NITROSYSTEM_ROOT)/build/buildtools/commondefs + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + +ifneq ($(TARGET_FOB),) +TARGETS := $(TARGET_FOB) $(TARGETS) +endif + +#---------------------------------------------------------------------------- +# MY BUILD TOOLS +# + +MAKEFBD ?= $(FBDDIR)/incre.exe +MAKEFOB ?= $(TWLSDK_ROOT)/tools/bin/bin2obj.exe + +#---------------------------------------------------------------------------- +endif # TWL_RELOCATECHECKER_COMMONDEFS_ +#----- End of commondefs ----- diff --git a/build/tests/RelocateChecker/buildtools/modulerules b/build/tests/RelocateChecker/buildtools/modulerules new file mode 100644 index 00000000..0b008b21 --- /dev/null +++ b/build/tests/RelocateChecker/buildtools/modulerules @@ -0,0 +1,36 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL - modulerules - common rules for build system +# File: modulerules +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-09-06$ +# $Rev: 290 $ +# $Author: yosiokat $ +#---------------------------------------------------------------------------- +ifndef TWL_RELOCATECHECKER_MODULERULES_ + +#---------------------------------------------------------------------------- +### TWL-modulerules +# +#include $(TWLSDK_ROOT)/build/buildtools/modulerules +#include $(NITROSYSTEM_ROOT)/build/buildtools/modulerules +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#fob +%.fob: + $(MAKEFBD) $(FBDDIR)/$*.fbd $(FBDSIZE_$*) ;\ + $(MAKEFOB) -b begin_data_$* $(FBDDIR)/$*.fbd $(FBDDIR)/$@ + + +#---------------------------------------------------------------------------- +TWL_RELOCATECHECKER_MODULERULES_ = TRUE +endif # TWL_RELOCATECHECKER_MODULERULES_ +#----- End of modulerules ----- diff --git a/build/tests/RelocateChecker/flabObj/incre.exe b/build/tests/RelocateChecker/flabObj/incre.exe new file mode 100644 index 0000000000000000000000000000000000000000..36ec6d3dadd500e53d2fc8719d3544843f8dbb6d GIT binary patch literal 10256 zcmeHNe{5UD9Y4n|GbM#c>qey^@tB+qG>Dqiak~w~TO30XDK%+Y5Nr41B+rQ#|B~(W z#{^rDi!{rPlxf|@1k#FDv1)Wu{^&+vNK2uTK`NsfOoO3r*#;t2JuRDW~y2k1^Kg z3$WS8cHYUZW~|-E*gX4~|0-Y0CUymg$gmdFHd)bd>!=T$hQY#HG>pYXr|Wx+`^A_h zcu4^9pvXpabjFrRz<;=Ol+3*)(zyzi46=MBOcsr?!H&X6qLdJBkt;kFt0jSKbOfYh zs92;ft{GcTKh0&5vAK?vkjH)2K|`@^MRgS&bgu6IFaL)lu)XqjxgIRPwfF>Eud_$y zO1_hCJaq1wr(@^Z=N21{WF^KsYi`FTL7g`;=W2mayiI2d4`bQ9^un}SxV#%7k8dR9 zxohxud?9drK2V7*RAUPZp90syllZB{mTB3R9}4=uu?{ks2AQY%z#;|w%vtfua(tmmjLLeSvbU?ytt`$Cp|vv1Lvb099`&0C^uLc~hXS#+HxI zw>(QS`{TdAIW#pA3Z7oI8NU zJa`*z35B+Y&rn;wlHEe>*)umC$8}}CaVd{QLchIpj%ILOWn#HH5v=T5A`O*r zXyJztiJ8TWuA$(fG(K@y*V)7MIb2We3|(9P(_)RbepcBjSn{|AOXa%I*;lPuZL}W% z)ATgaQE9Xv@$_dr{b}BJ_#gF*&nkW7%Z_d3dRui@E9`&d&1?3*1}(K{;0T(|xn~~d zz2Ki=Xf4{h4!ufwl76fE`N++SYjupQU*gT$wMgP84njjE+E$D11qr5!Rf;#(qMPS9 zN#6`_;)i%MFwL7#8~7^zT6Enc?_ZbajW)=e-Z(WPh$8=@50>kJS~N^KTZ?WI&8@V8 zYEfNBvv2~MXDJ<~%%v}XW!LjT5)edx;Q>mb=R4=h|7?{0SnJ`AR$iUuj`j#gd$^;W zzp8wD5**cUAI5K`d=ZD+&Ro?%X{Skc&zG1FNZem1lKZq|Ds5&H8M9+Gvo5vU zwD#g^R!n`(q{|7dXJ5%I-q_yJmDI-h^-ZhU9%g1oz$D7F{!x$Tf1CeU9CmsAON<>r zf6|53ft_^qZDM)x8ph^P>!{190noRhhER3XKGXr!LDV$rUQ{akWjiff!Y-GrZe|#n zL@G-%-(f~Fmp8MKFk^T4j8rB+Q80~sserMkS`wvPim|6#h7;*@ZkXu*(lWenbWbX4 zq_QQmkWHk4`TZm5v@u*Ltv8H2;+>s&vtZyQXV}Ce_ZR%h;dHKO60hk`7ED}~{mDIr zREcAE2Qs$o#{&5R#3qTBttyz-K#R-9t-d?W(w5xFMB3b($d05kuy*cHh5( zWb3Vkh=|*dH$iXdp#2EoQ>f>#XOH@@3za(fY+1C{bjJa3FKi11LXvNX{x*w&x0hle zaS96+5kii9N25*)s^3Ri)q;E(A}_uRD<}|Gu#sGrXUI=%#ER;)MEt&6R3YeHE}Kd4 zXHn<4u9fHAvPaO6U-yIK{m=3RV<_K;H3X32<7eVcHMH?Cx|9_*(tQ9u1qth3BtlP- zl155i-z1s*Qsi{gL#Kj-cY2YC?r=%TdXwZA9UA_=9qOL($_bBnk;s6BR}?=kYl|O_(0KFG3U9Z|l0s<&n6wvTo4w-Ohv=i_1c~ zAGLH@NVw07MDUhr&8duPzDe?_Cdso7m+(DIcLMI0r7M!QxiG|VgJF|g@`YEEprO?i z2md-^wafdPQ+lmXixtCDSgcUuteuU|**430?>>xi#jo)FUL+E7xMU3HnQ2tGw;D3LG!`e^JCaE_a5vKG#{)z zR&Jc)_CS|)FW5+DJpdh~`w)5x5+3j(kv4}*=KQ=P+57y=tfyrSa(G7B+7}!-a$TJC z>IzSKk;t^eC7-c>4jS={olK1Lr&9p3jM4D`t|w82U&+$gM0OnShc;rxXVLNk8ocFl ztsQy)>RM}Q_tBMSf0ogB(WW8G)gtAD9|X+(y1+ZguR(LZ_i_>hZ zTbbZn18TK=2!3^u1$-{74DY60QbEGEHX$W1(mm%zHok6oiV?;r-{YuwY~z)&-{Oi2 zh17ba)37R{I zrj1S~EiQu)rn!)PKuD@X^Btm5B>$)hc?JlrcN!47UTC6u70A5p7YNxqM1$f)y^aR))e4P{))g@tuxH1R zM^hTm^PRUC20s}}sPnaoMA~w2&8`J9k4lq7N*KEVJ;xq#@&zVK7c=BRSDeo>d1@F* z`XtX!Mo58>vmTe$N)bqu22q@d?ErE>K}Mtik(q`(;2N}b5&s_098a; zLVBDGe-eoGbV@ek%$c%9iN;SsW8H~BBahuC745Hp#=UaI(H&){lToKZb40Q5ED%a5 z$DRP0r)d8q5F&GELO>n|LZrg4E?k~aklTSAQji@)u1FpRa#*3+4`fRGNypBRTQv9#QAT&V3MW{UZBehbb0|Y!|30B&%j+< zVn%#hY@~fvx=xeKrFg*V#3CrF7Au zKmYl(VbJ#*BbOxN;c*_5l+d9L6wIPo*llv{nZ#Ff1*14IRNPlAnHgiZStzD*S!p^< z+?#fE!x=(S3NkicERAzV#h6&IhWBh+4}%8(x#H$Mf8=8K^l}p{!^g}--tCYuB<~i+ zP0P#u0$Xn?3&(Or#iLXvF=`q^iK1}6XbzXi*+e=un$4J55iA7XGX-)A?e7E^n{z(H zG7d&mnO=&3H6olCZt6R^VSUelJ&G7%P$$2Yruf6UVIV{!GTHb5!Yw=zC+67wak##c zt8)94=#-+B3e$!h1vAPXN5zgk9&!vbBPgrB1)zcqeY&uoJnq!a!%5z wp>cd)GSeHnj0DNznd$iEmM6xV^;~?VC|dAIi{9W60lq3qc8Up~#3!qN1H0Iq6aWAK literal 0 HcmV?d00001