From fe83261e37400cb5d801e9fdd97c834fbc615d6a Mon Sep 17 00:00:00 2001 From: sunbeam Date: Sat, 14 May 2022 15:57:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- USB2XXX.dll | Bin 0 -> 235520 bytes default.aproj | 15 ++ lib/config.aardio | 20 +++ lib/usb2canfd.aardio | 310 +++++++++++++++++++++++++++++++++++++++++ libusb-1.0.dll | Bin 0 -> 97280 bytes main.aardio | 123 ++++++++++++++++ user/CanThread.aardio | 196 ++++++++++++++++++++++++++ user/Diag10code.aardio | 26 ++++ user/Diag22code.aardio | 38 +++++ user/Diag27code.aardio | 25 ++++ user/Diag28code.aardio | 26 ++++ user/Diag7Fcode.aardio | 25 ++++ user/Diag85code.aardio | 27 ++++ 13 files changed, 831 insertions(+) create mode 100644 USB2XXX.dll create mode 100644 default.aproj create mode 100644 lib/config.aardio create mode 100644 lib/usb2canfd.aardio create mode 100644 libusb-1.0.dll create mode 100644 main.aardio create mode 100644 user/CanThread.aardio create mode 100644 user/Diag10code.aardio create mode 100644 user/Diag22code.aardio create mode 100644 user/Diag27code.aardio create mode 100644 user/Diag28code.aardio create mode 100644 user/Diag7Fcode.aardio create mode 100644 user/Diag85code.aardio diff --git a/USB2XXX.dll b/USB2XXX.dll new file mode 100644 index 0000000000000000000000000000000000000000..b7649ce0b25144411c66f06b9908ce1c53247a16 GIT binary patch literal 235520 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 P2p9wm0tSKqPXzu8qh-7h literal 0 HcmV?d00001 diff --git a/default.aproj b/default.aproj new file mode 100644 index 0000000..09c5116 --- /dev/null +++ b/default.aproj @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/lib/config.aardio b/lib/config.aardio new file mode 100644 index 0000000..a1cbfc5 --- /dev/null +++ b/lib/config.aardio @@ -0,0 +1,20 @@ +//config 配置文件 +import fsys.config; +config = fsys.config("/config/"); +//config = fsys.config( io.appData("/软件作者/应用程序名/") ); + +//不需要序列化的配置名字前请添加下划线 +namespace config { + __appName = "应用程序名"; + __appVersion = "1.0.0.01"; + __appDescription = "这是一个测试程序"; + __website = "http://www.aardio.com/"; +} + +/**intellisense(config) +__appName = 应用程序名 +__appVersion = 应用程序内部版本号 +__appDescription = 程序说明 +__website = 官方网站 +? = 配置文件名,\n读写配置并序列化为一个表对象,\n表的成员值可以是支持序列化的普通变量,支持table对象\n配置文件在首次使用时自动加载,退出程序时自动保存\n!fsys_table. +end intellisense**/ \ No newline at end of file diff --git a/lib/usb2canfd.aardio b/lib/usb2canfd.aardio new file mode 100644 index 0000000..8f0eea5 --- /dev/null +++ b/lib/usb2canfd.aardio @@ -0,0 +1,310 @@ +/* +*使用说明: +*1.创建CAN设备对象 CANHw = usb2canfd.USB2CANHW(); +*2.加载DLL CANHw.LoadDll(); +*3.扫描设备 hwnum = CANHw.FlashHw(); +*4.获取可用设备 allhw = CANHw.GetAvailableHW(); +*5.打开设备(初始化) CANHw.OpenDevice(设备序号,通道) +*6.通过SendMsg和GetMsg发送和获取报文 +*/ +namespace usb2canfd{ + //参考 http://www.toomoss.com/help/index.htm + + + //初始化CAN的数据类型定义 + class CANFD_INIT_CONFIG{ + ctor( /*输入构造函数所需要的参数*/ ){ + + }; + type=me; + /*对象的所有成员必须用分号分隔*/ + BYTE Mode; //0-正常模式,1-自发自收模式 + BYTE ISOCRCEnable;//0-禁止ISO CRC,1-使能ISO CRC + BYTE RetrySend;//0-禁止重发,1-无限制重发 + BYTE ResEnable;//0-不接入内部120欧终端电阻,1-接入内部120欧终端电阻 + //波特率参数可以用TCANLINPro软件里面的波特率计算工具计算 + //仲裁段波特率参数,波特率=40M/NBT_BRP*(1+NBT_SEG1+NBT_SEG2) + BYTE NBT_BRP; + BYTE NBT_SEG1; + BYTE NBT_SEG2; + BYTE NBT_SJW; + //数据段波特率参数,波特率=40M/DBT_BRP*(1+DBT_SEG1+DBT_SEG2) + BYTE DBT_BRP; + BYTE DBT_SEG1; + BYTE DBT_SEG2; + BYTE DBT_SJW; + BYTE __Res0[8]; + } + + //CAN信息帧的数据类型定义 + class CANFD_MSG{ + ctor( /*输入构造函数所需要的参数*/ ){ + + }; + type=me; + /*对象的所有成员必须用分号分隔*/ + INT ID; //报文ID。 //| (1<<31);//扩展帧 + BYTE DLC; //数据字节长度,可设置为-0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64 + BYTE Flags; //bit[0]-BRS,bit[1]-ESI,bit[2]-FDF,bit[6..5]-Channel,bit[7]-RXD + BYTE __Res0; //保留 + BYTE __Res1; //保留 + INT TimeStamp; //帧接收或者发送时的时间戳,单位为10us + BYTE Data[64]; //报文的数据。 + } + + class CAN_UDS_ADDR{ + ctor( /*输入构造函数所需要的参数*/ ){ + + }; + type=me; + /*对象的所有成员必须用分号分隔*/ + INT ReqID; //请求报文ID。 + INT ResID; //应答报文ID。 + BYTE Flag; //bit[0]-帧类型(0-标准帧,1-扩展帧), + //bit[1]-FDF(0-普通CAN帧,1-CANFD帧), + //bit[2]-BRS(0-CANFD帧不加速,1-CANFD帧加速) + BYTE AddrFormats; //0-normal, 1-extended ,2-mixed + BYTE AddrExt; //当AddrFormats不为normal时,该数据放到CAN数据域第1字节 + BYTE MaxDLC; //每帧最大数据字节数,一般设置为8 + + } + + + class DEVICE_INFO{ + ctor( /*输入构造函数所需要的参数*/ ){ + + }; + type=me; + /*对象的所有成员必须用分号分隔*/ + BYTE FirmwareName[32]; //固件名称字符串 + BYTE BuildDate[32]; //固件编译时间字符串 + INT HardwareVersion; //硬件版本号 + INT FirmwareVersion; //固件版本号 + INT SerialNumber[3]; //适配器序列号 + INT Functions; //适配器当前具备的功能 + } + + + + //调用函数 + class USB2CANHW{ + ctor( /*输入构造函数所需要的参数*/ ){ + + }; + type=me; + /*对象的所有成员必须用分号分隔*/ + + //初始化全局变量 + DllHandle = null; + + + + //加载DLL + LoadDll = function(){ + try{ + DllHandle = ..raw.loadDll("\USB2XXX.dll") + } + catch(err) + { + import win; + DllHandle = null; + win.msgboxTimeout("加载USB2LIN的DLL失败,请检查USB2XXX.dll和libusb-1.0.dll文件","错误",1000,); + } + if(DllHandle == null)return 1; + return 0; + } + + //刷新硬件 + FlashHw = function(){ + import console; + if(DllHandle = null){ + //DLL为空,返回 + AvailableHW = {} + return 0; + } + var arr_temp = {int value[] = { length = 10/*可以使用变量*/ } }//类似动态数组 + HwNum = DllHandle.USB_ScanDevice(arr_temp) + AvailableHW = {} + for(i=1;HwNum;1){ + var devtemp = {}; + devtemp.devnum = i; + devtemp.channel = 1; + devtemp.hLINHW = arr_temp.value[i]; + devtemp.name = "dev-" + i + ":" + tostring(arr_temp.value[i],16); + ..table.push(AvailableHW,devtemp); + } + return HwNum; //返回有效硬件数 + } + + //获取设备信息 + GetDevInfo = function(index){ + if(index > HwNum) + { //如果序号大于最大硬件数 + return 0; + } + DllHandle.USB_OpenDevice(AvailableHW[index].hLINHW); + var DeviceInfo = ..usb2canfd.DEVICE_INFO(); + var funcstr = ..raw.buffer(100); + + var ret = DllHandle.DEV_GetDeviceInfo(AvailableHW[index].hLINHW,DeviceInfo,funcstr); + + return ret,DeviceInfo,funcstr; + } + + //获取有效硬件 + GetAvailableHW = function(){ + return AvailableHW; + } + + //打开设备,包括初始化通道 + OpenDevice = function(index,channel){ + if(index > HwNum) + { //如果序号大于最大硬件数 + return 0; + } + var ret = DllHandle.USB_OpenDevice(AvailableHW[index].hLINHW) + + canconfig = ..usb2canfd.CANFD_INIT_CONFIG(); + + canconfig.Mode = 0; //0-正常模式,1-自发自收模式 + canconfig.ISOCRCEnable = 0;//0-禁止ISO CRC,1-使能ISO CRC + canconfig.RetrySend = 0;//0-禁止重发,1-无限制重发 + canconfig.ResEnable = 1;//0-不接入内部120欧终端电阻,1-接入内部120欧终端电阻 + //波特率参数可以用TCANLINPro软件里面的波特率计算工具计算 + //仲裁段波特率参数,波特率=40M/NBT_BRP*(1+NBT_SEG1+NBT_SEG2) + canconfig.NBT_BRP = 1; //参数来自官方上位机,默认500K + canconfig.NBT_SEG1 = 59; + canconfig.NBT_SEG2 = 20; + canconfig.NBT_SJW = 2; + //数据段波特率参数,波特率=40M/DBT_BRP*(1+DBT_SEG1+DBT_SEG2) + canconfig.DBT_BRP = 2; //参数来自官方上位机,默认500K + canconfig.DBT_SEG1 = 29; + canconfig.DBT_SEG2 = 10; + canconfig.DBT_SJW = 2; + + ret = DllHandle.CANFD_Init(AvailableHW[index].hLINHW,channel,canconfig); + + if(ret == 0){//调用成功 + Hwconnected = AvailableHW[index].hLINHW; + Chconntected = channel; + } + else { + Hwconnected = null + Chconntected = null; + } + + return ret; + } + + //关闭设备 + CloseDevice = function(){ + //console.print("-----------------CloseDevice ---------") + if(Hwconnected == null){ + return; + } + try{ + DllHandle.USB_CloseDevice(Hwconnected); + Hwconnected = null; + } + } + + //是否连接 + isConnected = function(){ + if(Hwconnected == null){ + return false; + } + else { + return true; + } + + } + + + //发送报文 + SendMsg = function(id,data){ + if(Hwconnected == null){//未连接 + return 0; + } + if(#data == 0 || #data>8){//长度不对 + return 0; + } + var msg = ..usb2canfd.CANFD_MSG(); + msg.Flags = 0; + if(id <= 0x7ff){ + msg.ID = id; //| (1<<31);//扩展帧 + } + else { + msg.ID = id | (1<<31);//扩展帧 + } + + + msg.DLC = #data; + msg.Data = data; + var ret = DllHandle.CANFD_SendMsg(Hwconnected,Chconntected,msg,1); + + return ret; + } + + //从设备缓冲区获取报文 + GetMsg = function(){ + var ret = 0; + var retdata = {}; + do{ + var msgbuf = ..usb2canfd.CANFD_MSG(); + ret = DllHandle.CANFD_GetMsg(Hwconnected,CANIndex,msgbuf,1); + if(ret == 1){ + var data = {}; + for(i=1;msgbuf.DLC;1){ + data[i] = msgbuf.Data[i]; + } + var msg = {"id"=msgbuf.ID;"data"=data;};// + ..table.push(retdata,msg); + } + }while(ret > 0) + + return retdata; + } + + GetDiag = function(data){ + if(#data<2){ + return 0,1; + } + var UDSAddr = ..usb2canfd.CAN_UDS_ADDR() + UDSAddr.Flag = 1;//使用扩展帧 + UDSAddr.AddrFormats = 0; + UDSAddr.ReqID = 0x18dadff1; + UDSAddr.ResID = 0x18daf1df; + UDSAddr.MaxDLC = 8; + var req_data = ..raw.buffer(#data); + for(i=1;#data;1){ + req_data[i] = data[i]; + } + ret = DllHandle.CAN_UDS_Request(Hwconnected,CANIndex,UDSAddr,req_data,#data); + var res_data = ..raw.buffer(4096); + //sleep(10); + var ret = DllHandle.CAN_UDS_Response(Hwconnected,CANIndex,UDSAddr,res_data,1000); + + return ret,2,res_data; + } + + + + } +} + + +/**intellisense() +usb2canfd = 图莫斯CANFD驱动 +usb2canfd.USB2CANHW = USB2CAN库 +usb2canfd.USB2CANHW() = 创建设备对象\n!usb2canfdUSB2CANHW. +!usb2canfdUSB2CANHW.LoadDll() = 加载DLL +!usb2canfdUSB2CANHW.FlashHw() = 刷新硬件 +!usb2canfdUSB2CANHW.GetDevInfo() = 获取设备信息 +!usb2canfdUSB2CANHW.GetAvailableHW() = 获取有效设备,需要先FlashHw()刷新 +!usb2canfdUSB2CANHW.OpenDevice() = 打开设备 +!usb2canfdUSB2CANHW.CloseDevice() = 关闭设备 +!usb2canfdUSB2CANHW.isConnected() = 是否已连接 +!usb2canfdUSB2CANHW.SendMsg() = 发送报文 +!usb2canfdUSB2CANHW.GetMsg() = 接收报文 +end intellisense**/ + diff --git a/libusb-1.0.dll b/libusb-1.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..5377cb454afc6395709cffea5333fc773458ad23 GIT binary patch literal 97280 zcmeFae|#I&l{Y-HWk(?bDc}SHE+`O#Lw=b!KpZC!$CiIIv8_ajln@dj+j1nwv4u2~ zI5Z9pifNQVE$s5}wEL7UEU<+w&n|Q!xCMekvN35Xb$~)z*p_W+J3-mjEhZ6-i{9_K zcV;w_9cZ8T{e0ek9>Zv6?vHcNJ@?#m&pG$pNz-lj3;BW|m~o}kf-s0X{jFfXpZ_z8 z?2E4Y!9~JzQ-3^b(6su;v(^PeQAaq^vo+%1?r8IOclU^n)_@}-bvr`cj@lNtV|!0~ zV8MkKUNBn)z5TI~(41EfE!D1%e*EjDbMfx@!Q7>@*nR2J*)0E+rMI*9`Ae^7_jyap z*nRm@KkgTqht&7$)%!wrUmI!*5^Sv}E~g-@HkpN+eiz-KrF|ge&6;MKDhM8vAl$)I zA6kxQJD$V1(-S@C2|}S@Vpjp~>~9oz5U*;)1UjzZFI1K)usgrGnoPpo#e(osok>_m z*+V8_KM_6m4{%;Xy*s80LP>6(;eAPW&KRK%wSK<81!ACAMCMP{qY&Xmea&g#fo2!9 z`$a#pkJjLa`d*0pZMYl$Rsj12k!Yk1X{-* z%B@7||NZ;_fdVtZmw#Su5`K&89b7-e^)#->aqY*|jmv{;8LsPb72~qv!Xy$tT4fU6 z$Mr*8&*6Fm*L}ElWFQYA7Z{vCi*W&Q zU5l$2mlfBUM%2Ugb6l_EdI{G*<9Y~JKdv3PZpTG`D{;RGR~fFExU9JHaHSed!tZhY z3fDa%_64QoH??m@TKSUR&5nts0+C2h1Z8*nBi*6ytpaaB5ZVK+(pIEP z-P^i*b^;mv&Hw-S?*axDc#5IzfvD);9tNUfFcR>$H`Z=;bokpsT_JIoqbsl@(B;_F zA$7Njp`LCm8eLtR9m`NB>fai;g@IY!xN^OFrLWexa(z94z5e?3&8wPQyv^5NFQ|F$ z^))q4x7)GMp(dG0IN77adsuV$UkPNN2SbJ^)2<;L8$np@WS>RQ$}XK2LX8i=6Mho>6|mz}<@ z!HJG!r4elRdY7wZt#J%=_)X5H?DCDx>yWwL#Y*SEay8QOE!-7|^f=mjx;sK!rHG%{ zCOXft-M_e4Zrx3s-A5Qz%(;!s~4{z$~X%K?>#phUNWb&d75`+I$1f7>>Ih@w$J zXzP)>+8v}5MFL_Z1kQK(!S%TD&H&qJTO4L&6P!@ACmWWUFLg%(9a?u#U5xbX zQakM^g@9;B*VVpFRj5oPIJkPnWXk&qa`)C_e6GWFWJ0{)0z zZPI!)skLf7;XpTUnK~&&x}$hQdn&$^Eo90F!rH+0o*ft{G2-uzb_61h(y*f=(zD$m z1_RI;=XZ34wgyEiCJa1q1C8I_Q9~p*Hk}J9;9Hok6IJESYl%jV%Eu>B;|c;8P{=Tn14coZ50* z&-QRvKty}3lBmHlw!nKKwDgqz*X#Ajf zw?S?O+UK#xsCSue@Pc5p?m!!%gSs7lARl$?3^-^V(8ox}BbzxnF985}tV08mk4ononw-u8EQ-`>p!BmC5#w#@U_{30WInhSt zqv&LLS%p=c)bedz{?K+GV|pw-n2Y*jb~$LP0e>`LESc4&Ud`w4!n6*EqRJY22H-i6 zr)DweIu10Gg2+Ta0^RN59#nFa_G*2K1gKZ4Xj1EdQax=xOzVJudzAXGJ~~PzMlz$fL>I~RN-vHWDj)t+9QxQ5g#8|t=;y3=x+=9vWjSVe(}6{jvb}a0`31&Laq&1 z5^J>wI{Z=>xEm12*Ov01SFbG6Uz9*;jT~{pR`?p4$%?q*{-o~)WO7tz>-v8 zoJ_>LkpPqk|2E8jRsKx|ULdLadHE{XKre7?4@KJ`lp=w48jYwAxM8>ip*w)ifnP)2 z)KdteHb3M$v>5bVtxr75QS*_=B0k&U?+Ud$^zm+89q8UF1|4Ok?Q>{6u~I=k^AJPbT(2gU?6JSSr(l$;PF;mqy0W zHys7FbI8+Rt5CBLrx8`rRL6&x(!?Xj-GI*|)ZxnjWE7XvJ$!)Ff@J$+GIfA&BmSLW zEsZC#+Emv8$IcK~+PD@>oDUh6AsV1B#yP_!lG+k$n4@GY!y7hcGJ3TK zdQ}yf0Fl@v=4&F2 z36@WN?4r^6f$)3+HJ_?v6-H5}Tk)}isF)8S!dPtLU>R^k*L;h7uTMuF!ZBI<~QRcLfJ@P(1Ds!#TUso4#h|cHdmzVdKeecAL_=s5+Z@A z36=~!v|eU0Ghl!gI?Y;pqB*ma@d%S!e7>Rt>TtSI=}b#Tf!Wa`b+nfAOR4-eW7{&mNW_1sG3~9==BCtACnF-}Ke^;9X1vKCz8);QVH9(F+HlgXF2C5wN1YEYuX-QXpc~NwQ*x>zLt(6T6$D!-5wHs znH;Va>uQ)bZ}lmww#kbb>S+*2&4x~p5K0S6|&!cg;R{owvMZ%LcT%m2OXf)@Rd#-f-JKjLnkq^%SQvi z4IFR+=@>oT0Y{(<>w8A~clg0iswt__n3+=0=b)j30KT4W2KpQFCg@v?Y!N9e@;wAG>N@c`NufWFD)ol4iqNUG61EJeaFpaLya z%)dY>Bp;w@a2a!5ln*aCA2Ko;iBaG$I(9)sM5QqKSuoTv(!D^eXD7CmAW&lk)sK{kw<} zASM_@UA|_qgEkP_1ffA5d3fack-?D{M!q-l{E59M?iqP`h z42|3~85vLw{Ib_5dNnaSy1dGg%A#$iEovks>ew z+mAfe3D7-lZ4$aj=m<`=BP5R^J<<+;YZps*fdrv&kbdu!s26%}7NUR%)tB69N1kG1 zRNdBgvA@wvl|>2@=319fI8Kp#o7c02P?gqkBhBS9=dsfq-LcAQ+Ig zGA}4xprLK8em@^?s?r+ifx^H>CJ@-}_jgBn0%1X@52zX8P$ymmFX{jkWY2gGff!VAxSyK(W?Y$Wck*0F zI2Y2d;MZp;wn|;wGBs2^N>!MB7!~N8-1`Z18Ml!-s4Ab19L1V?lve+E?=ruzu%xh0 zHRD1(f|s@jNSf9#GorBvo5*B)H7;z?y3Cxe1i=aKlva$MS2@=T+~XTiH86&j*1TgrkfyP~KHk<4sfsYl z2oGi(a!0cdDy`7d4Re7EHprT_Uf)`0buFz_c=WDqT<63zr$tItCl@#xI~==uB;biz z2>iL$PvsYSG0nEaYwhob#UAZ~+Q(aQP+|ykn;8%K)>IT+ts=gF@X~xlgcF?Rf$e0w zI9x5OS7Q?v2$BX(mIvmhL&c2ECaRlVzOgx{IO~&NEzSB*XrrD4nW8DmWLbj*x_!dR zu?;==4M-O0JM1vjX&aIe4vYb%AN}Vd1_UR3XciIeDTC|C+{na4!7SBn06#4<4UM&q zYF8uptQ&ju^SeUZ0`$)8pc;6Rv9xBRNnjyc@@LcU~T1SOgnZ|1N=v=q9rCCi}*T^60 zR&QviX>1VI8tOJ1p0!8ZSp|N_ddMvkweOm3P_EiTtEgFFe$OjQkKTEG-GRTmGU)&9 zzg=g4<^3nh18+{h|0-dq<@;;?d;diT{%AciGJXFH;gREohfWryKmK&qzdq7%ptOJb zcb>Z8XUh-|A_yiS{WHXZ{86x9_B$R`cH75-{eR-R_D_P{hWlFF{|(o3c>W!(d1He8 z7r5@hW%@+0&&I_NGW^scO}kp~yy%Qze*;$l&u`qwV_6nenC$cN1z{h8Qp(i2;-U;J z=LIJF^6v=tcg_m-v$$rY1p7_6ytsOCeG}IYaJ`3X9M_jV73{a*^5N>oMX@ejfcM~? zCc6#K|8L>t0mkisHv)JBTZ311waI=0*Q03DdyUB+!}UE}L!~DBfon~6Gw!Xpeu1VOB-oK(u^1D zIEJ>I2wl-SqHc~wsTr-E$?~a*&&!`IucIe3o<^7*J%FZ;VRm|^4fLa?%O8yb&u9(} zGU?g<&ZO(O@+C*8S?zADtwTVG8xc3%TUlRo(pdj;(u9`PPNw)YM!h{dZ(0mCCEeF6 zWWQJEyhCSV8|_?Y0w>i_WQsbKpp)zGtWCo^<*ktdkzF3zs&e*v3DMj%s+5~X{jF}_ zf!^{qYnptZpO25Rud$X0I3W#yCZqw5n&u9*lE==Q^Io0vu9vStR7yMHtJY`lgsbr# zuiCrIAAu2+!Hd6VaN_S&zGLh5tr6a@t?I@)f+T%vh_XykaKv;(CXG8E_NV0)RQ z!C;Z59YTrJeE50Q;B@d8#18BO&6Pdhp@w5_kG6L&*dA(&^hA3)#0A*KTNvn`FGVR% zGvbfzTDU!WbLFDS@*5WTqv2k%Yj?uF-3l!*quX+AjT?1r1Dat|#toP`OtH#F%UGA| z{mk#6ZeLI6%L0Mu!E8nXk8LRu7^HN4Ar9@*_U*eSMPVX6^#;yIP3W%hZ)~NF18y9Z z!-=rHwFjXbNa)_iNY2(9HJer{rbDh4)(cUgRUid!(!TgQLS5W!6!@N=76{;=6^&Hn z40f=yvSDD)S1S(q+9R*2o4^EvBL8$aC@Pdi0(0~}Wmkl~pcf_6PJp{zD?vsTZ9H;@ zQza`E+R1f9ABU-9#q{IMSh4*>zP}A7)^<>ra$}#hwXAvl>eaVojjts3%x7^;xxM%t z9!F?o532(US%M8j1{=J36j6z>)FEO#ja_BkqHSJ^{E7tN6r<16RDQs|2 z-SP^0rhK}4pab}EuUO<@?HI>0+S3IOO6}^^y3rLC*vT09Y{(l(hMKmk0rAn?vMyty z5^S=zB-pKBI8~5D;gt(xhdRK7n8s5qpbF(PZL210c5&4nfw%~Xq%9iCLsAAJ4o_q4 zLKo~fpw&=Q3zuCh55c^yGOnX4EP}R#N5d3r2Y18y_-CnBlA0i|WE<@>vf0Hpc*#3W zoJ{=mSHqy7Kh>$4p$}FTuqV8E=qx$=X#$gm5!ue870Wz}_;T9LLw5Bc68Mq;2Fao= zV!hODMoMOc0FH*rq*7o$bU~@WsHv?6+Gh!WJx(;#28d{c1}0MHa=)A0ZvL%M_OQcFh-dnw&Lg!)q!0MRA)km4D4->jM$4jLIM!FV%>$SY zOuumOkXQkZvo?Kk{QQFB3J!S4Fh?{46Dk9jti+Z?4|VLR4?)C?=_NlGuF5HFa)<^1 zu+xH-6n=k_;^52xeEoWGCPk7!dWZ`Qe3bD^>v&;pLd*!0-N2doMs*5i`pKAhQ)$EDnPMA&T6BB%B z+A;qY2Vo$nI&&`oQVq2zf!0bhJP@!(LELi$!)`-&VCQ+u3yh0MYh?aoJ<1Bk7wJ#H z45GLU5a5;9C6@~A);WfG!3GaMQaAM(vR)Swgd=OEjJBJJlR!hnwq(OZyqMUwAR8iL zP7p<1zrL}SPqU0{pe;6#mq3R)d|RbZ`%;Kl#9epyAaqFEk2^n4>!*YWI9uatg@CX_ z2nlVtHwxW?h5C{Py`2JFB9C@0a4Kd z1y3I`RXgIcNLw+Dyu-%;Oa_HiJN81GP;5(tS7RL~n(E?5Fl6M&-AI5IXu^OFwnU@Y zgDj)nEYy{V-rD3b;y@8H>^zg$B?*b`ChI9gYDLp;F0v6}4~2yEX0W61Uma0lP&b!fFk z(&x!44R>1kMT{jjV6c6P6KqsZYdbfnQ`4C=Bh*2Q9kUiQb@&clX6MncXXMlHGNjS| z40iRvsB9WiiR&C?`UYp_NS(TFGJDQYUq8fTNXvoAju$bz!ca!lBw_Vro5+w4nLVy- z+%%=iP~!_wHNfI#t6}9a*&zm&<3q} z1;@v0Y9!=quc7Zb{GL<#3tBS3K~KWFbjqpTXhVKZI}=NPK~qAVey)HP0=5poLDb6N zk^!TqBHF}|%=V#ifWu42cqvwhNbSYGJks0&(M48|i(Io54`fJ3Nj=$+ULzsgu3M}o zFKjo|34kE2AX9fOP05^g)*{rIC8_Y)o<>d?me#1Pv?^E{En}Tpbwd)%5Vx~4`HlMO zm`STYPyZ-=vi>2RBB;6$R2FDQM-bzow~st**=Yx{v)cGVnxJlVG}_Y^0>Rq#K4xIl z;f$u%&$=!t8qA?h4WA_I)YH&9PSs=wXk}N2T3697j|-bp)!hAo5Pnh|xYkd~IQyo= zDsn;!!X)KYophB$bxA@cqtoL2f1s<^@o<+V;%-PIG=OCa0>a)10K#*)BFpiG%1+Kt z)l&2C06Q~%H-Pw;Kx7_|z&XD%%yl7H7?Kzb!S6z0EpRlbF>b(ZXQ&(DEjSbpMj%{` zSmic4&%xAgihu$W16v1i8AX?5;AnbKMjxdVO`n9<0ikXgmp=C*@Q4_4(FVAGq)(9{IBZ2)2zDNAFL83WBUGLT+195Q8y1Gu7`?apCnk*GAl%N|qB z2Kfp#ioeWwW_Cdg$dx;=F?6Ry2RLZ___j+a59v}lit|MVH(tirKdsG73t0sCYud=r zH0MA&`RMsPD4$=BKkCy~XiO{$Goyu0&@0G|k|T5+oE98g*bgLFhyk==rhhFvjepEYTBQ8WxRgOw)XmSyRWsT+o^B@O?lgvs9W)&@nS!Rt7OMm%wcx zF=O5g!1-G2CZVV)Jm?dKi57|MuIO~jXx^kZX)cJrx;^3p27+jDeqV_e38`bNemezm z3fdxe9{h4NGDCmL!qh9x)lb3{E_bFSX>&?nOc6c(MP)O1d~sQgmyK2h=LOK3aR^TB zGwGg*0p)vBM->u#9c)W7#4g^T@TwIkoSMP`Ggr5eaG(E1hM+ZUSqC{B~3t@al9OlV$?*%C2ROAC;gwf=eAZwoa=T z@eKQ36f3Oe>mG;m^8JxMRl91xSDCxX>g?_SV*1x`^R2(7yfSKtl zo9qmKH3~he&kP?7tAk96QB09Y*qZNBUC$IW* z@>G1$P8~iK0&h=-E}66}eAIFrCi*|2UM4M5FO#O%YnHY%QmkZqp*-eIqg_s37Mz?s zg2#A5WrwVHs%XqNj)OZ8fuaIv_==PkipJVUzbEEpXgD!1Lqq8Q?NXblf#ZDzysUH} zrL~iluJI1aH~G6Igb~qrOu%hoUIw>`d1_l^<+w1Z=^G;LwfLxn$}bbrRag_!jW}n4 zG4#cdp4CS~x}lGtK|S35S^TD^WyTw{P}B5wszrFVAwvUT8I6vavg zn~aHP+6KZ&c}@{7jLS4|S(KtR!vP_ueJKobl^wc)6@uz80sLuF0W zl3>mdo%x}&;V_knYHPmrZg$FpK0xaz+ZNc>+Jn<<6!^0pD`kLfPVr;DOnZazN#m&d z$j?V_tV>~hREf4*s4avvV@6W&4%RwY$GRK8gUdSsa6tsp71)in!L(e1j!x}@Zkd!E z-!ait*RG5on_`-}ek6n}x{TA=aSO8vKBpf>EkV;M*@1O71lsr63~E=dj!ZU^%Ay)S zv2mdpVAQ2^%9WR+6zenpXvGBGm@T6OfC7|2WW=9gQ_6q{2A=90^;`BniJy)FE0}L2 z6LOWIC4I;bjK(!7%o{XBfo|OQk)b%Ttja1VPy1mgi;)kp536O$T?0d*j1ZoL+c>YP zyYQOlSv90}-y#b6`B@_By_&1*`wkIj7}=-gfJLTNKB4seX$^J`RVU;d{mE!IlW(Ld z{6gxtIM-!9k7-D&X=$!&tf#(Z%DLCAZEVg-15vWdtaZ}&A+zhb8aBEcYpS6s>Uv@( zG}36t8lSm5;!ZSu01dn~k;47A{PY*kK5SaA>bCss9Y4KCfvWHpv9Awgr8~;%m|L<5 z8}Il^sT!uKR+@uvvm#Uibu%(e-Cf5~G<-0OHhCjBJBDvnh-8GR{8ie8PrAWHjt|lp zGXW=vVm=<)CuFK&Zqvltg*!Va7+``l(`F`)fmjp#lhZ2T>L`%3>X5MOhws;DNX+5w zQX#^D%4TA$%GeJ5jwsuyr%CSWiHhsk=Ur8zAn<%*TJQX>^K@n3RS}{#4g&WY@-jhWavew-WZMO5Uu`k2}~`xeMCbW zs^FPWlp9V^J)P{c5?nkPN~z*RwXd=op%zr%x`rpik3K(21%3QW7c|1>hflsReq2wp ziM{9%7}brz?+UcEb|M5RM`{}Tug1{()erRWNF#D&U^xb(MSE0_0r2S{8x<=b3yYu= z#9cl9_FHutXW>rcm&+TUPeMVDD$$)PEVLn$uE)1(Uq>-~?+44i`Vj!;P9U0P>_6Iz zArqUHWv+#hu0d`I=tX)>(2va}9S=Gz%LRaTi~#e2fA)tTq~%KnMFuj@56Y^-03i$P z(^D+wT^n0%am6v+t}go64rrw1sRxwx91`24Rp9%Ny5PrmN}yoSVn5+yDY?ha4gAfc z_n?d+n2yAOh6Q6$_E{L9k&B0Zo)iIiZR~Rc`~xyP#**h!G#sLWSv-6Y9#X8LYzAc< z|Da1QVwrgd9)}9WwOl{G76CTi#W`4=LYRW*otyY1EPW@E3&Kpel+nLM+EUhR(;Atl zCetZ*Qq8+@l0C{!!22UO%58+9##Lv5F}7x$M`~F{8{UtsYRvgb{~!X0(nhgq&=NrR z$q82m%LqzHcN4qGe&%3FjfxU;_o_5Ocy8^zhjk#50GXEoQlYu&%x+W3cSo;$VrpJt7GwmN?4 z2PUMqEmhsw+N~#gdrxa;2LeQP_J)1EOK!S7RDmC^%+0@HLHUAkJEDDySKu4-H3Y%% zC#ToTr)8(*zzXZ;SIxrf^p{DyaFVp532E|*;_S58X{+sEgE1K;~?aJ6tQPn%UN7K%6**P9N zTwGOe-u+J6nUbBU*s!I_Ikx-z6+^x)n~rB;>yagkM>$=G)Bkm5k5UAsNH(BGB?6y!SrU>Fq z4dS))@o$d^;w25Dxnd|;_9!(|O6?>|v}co$v{wvO7CeJ2+k->N{EDF!+5KFz#w~BQ z47?|<_IMM{lq)^sb^N;>vNSIDr8>BoZ5DFj!nvZ8#8Ty3;Bc4M6C6b5Aps;!42&bo z15%Vx`J;~H6~V{PmsupI2GYCDRiEw7t4ODxCnC$gNIy@MPwZPxfadW$rb@{z>qC3#hEM5YXWhI8L@hdVFGAKuszzpsEQay(qh>A$4Yo8+c( zU&W8NC|iCc2*+P7GEA3*vlvWLl$Pw6ZQvH=7bw5^NS6GGrT$|3`okcVZQuR)jipj| zZxUN#sfWcCvDBD&LoD@)cy%mwM!Y1JI%^v^j533d6bbfIFVWLJdiowch3V-@dRj+M z-=?P(^zKa0h&)H%@_ON~o+4%(5M>={g5f?II#L%R6~U#Ht` zgM)N)$A9F_ZkG>Q=!Ve- z17Wm>=vFZJ9Bwpa5{<%gfV&A7KH+4q#kC68T3j1(-GOT>E=I7y2Qf$n+L1K$%6lw{ z`eN5`-7?0jBh?Uzbr#uG6dST9noHuQ_!_h9GRH57H<*zT8!C1w@1szsNx2K-2thc5 zk_YbtX#{aS}zYt5r{p?a)incz|W9#08hv0K^5nsvx%&?48B$juHk z7wafNIfvj@w($n1PS#)^8hm*xDM`3Ws!mABq{XG|_!Lvz?Mx-Vo0&kigU%vMF`8dWF9g-*SM7%RM>I@0 zEiR9;jM1^LB-lkDT?CSmZ@mii;SI^F0Rufyu1XPKV0}BcC26+35H{1q{aJ~+)*Abp z0so(u(J*P?zoCOagCWQ0bOQXBRq#V+GvMdhUT{G{Xvnv{@Txo-`>*`HzfDg8cYSIS z3u2$!zE{@*b!MpWt~Q?UUTLgLOqN z{8(MV*Qxh|gdQ=+28La6dWT*4chK%p%VMS);)sIuv@8KZ8gfL`UT-F`q}=fz0C&`i@`DwG4RoTu1vD1gfVebllpkSk#g3ME zlrpTcUgdGL2BIb(g!+=$GTW_uvJAoovc+Xiv{)e3;wC27+>kWN1ytB+jW1D^MkA9# zO{ED5F}cj8JOd!|&Lwi4Ire+NSsYW$i9Kdesp?bPz9DoanGc0D(L4|8Y~^LPfd`P3 zs4H{Dohd~`-7|Hw&C<%?H!j71?8gr#5xCOMP`4v9PrN8tu4m>Yt-%p=&`|U@U@ANtD0jBa^VkPO~#J!{j zRNhO=wnWM>>AC4TvFeC~sh9wE48)}X;ZgR@2JFo+3Z{c;z^e6$JzZYqhd6(fZWd#E z!Vu}AbSYBS1yRkg)<^auEj^W9l zN)o#UWx(QFd^rXOHLSL4xlG0KTb~d;i}W@tsZFc^Z{T#gp&hJZo06AMWACFe`Q*TR zQo-4GXHjcEMMZP06mxdjYnxm4uE@s%m+Ybi!a-@#HeD0>ZMlOwN?*~ zu_-M#fW?YpyU+-u=LHxw*Z>~_N;dL*D(=&&?=)1mXR1#@U4_*(`U04uZVf&|2z*0> za3ewB=JU~F)=P8ec=EDGPop{(gNtOnr7s4#Ehe?gBsUBtvU}Vfhz@n1*qc7Ro)cN z1IqkGpw_s(MyvP5GMJNYh}Qkv!s(p|BP!g%eoNadBw$;%*?1;fA~ z*v`=KDtG;fFEs_T35s$%ffzb91x_bV@DYd|tX(tgw8)Qc+*oy1vJN}P!Q<&uM@K4^SS_XelI71%)Imk~XfZ9Zvt7!6v4?V(a*`gl*yEeb@hh<6$5)u+v%-?vFi=q{k>-zK|XhhrR)Pv3|yaGPpY?Y>nuVbO!yC5V{gi+CD4mYi9_aS|FRR?(@-P6!LAXEOmT{uQ%w8{m;E zv{tsH^I;m32f-+DADs>9=OMSDQSc0$VLIL|9_3dUHn1jUBG)>T3hA;P#X=nZ45ziz zq>7(--E8F*w1v3}#qCdoC;5PlO|4nu@phJR6Q<(K#;RlD)Oh*u3N!TsmH_56)= z!eO@tQ&wJ*s5f<*u}+hO-nbE&=x;&iC%)vO*z7^rwR=iCEt}-gxhFBEaKI(Z73swm z<);c7E{q*Br<*Ji2$&+Lvk4~DCK$*C%29YjNC(XJ=aO|akQT3t^;re+GI}+74Y3`>55nZy(+|^R~==N34x~ zG+kUc_Z{gj`9$njru-kq`icaxphLDN32B!JKTA3e{|YF-+Yz6he=PrvWD9J)PoH?= z33&6Kh#j^kZ#7nhJWO7RiutyK;XKrv_6{CQ>O(oZ$EU}J%-DoU79OzgpI*J9roT$C z4cq|=`nJqxC|HrwysK)6@*kDJ8>{o{G!oc?i>IGc532*6?V!DloZ zxBIQOtlYuD0Xh7H=&l<_t zX}hQ544gn@z*km?w^v5ZacOkVy0|nZSL91$@Oh=*tr*%^S!Wf?AYGQ!nRhrKvgA7K zXN{*tlQsP=+%#tF$;F)GMU~Ff#@)Y$Z!7(7+Bu4O8*`2oSJjv|?tZr7Ou8cd?nYm{ zV#{&EiW56s6l*%2hDK45#z0J!A*fPVCv5j!1`SlMG0PPzw!s^%E-O$$hi&_|W4Pt0 zdE1#{Z~mw!X#Nsh5?EdGmA`|1-oM9Wwhe4SkpqRxrrPe=i6;;iV#D@z8PEND%nsXE zAHq|*#vJQAod)6Jdy3+FtkM*8B`@wgZ97^z-v`aXn_8;cw&qziA63W?kFPeu$h{yrl!=KCOa`(-@n6foZB}lUXvMA zSV^{h4}(oHrlT%p)A!UdEjmzV-Z!+vhaPmogR9ATVgm8bSYV90BkWiK6p8m?&6AH8 z&lY73P-HthP2v@%KC7uOHK)(c$7(F*9K~3T?fwxaymM?n+*~02?p3JY-)n;B%64!? zUX}B-R9TTe)r$$BEw)%#lp}0$NZt)lwDj=FJEqV5xxZx$i!~*AJLu>NzD=?rlRu5+ z7m=6ZIm#z~e?~8omwb^>bOpbGq~vRCa)|W!vNktd^!BFez*D7CY>!p&idR-(>_Lo~ zZg6L!B&A#iObJ?jRciO?P2ft-=ip7^>Wv$HS$s%CGu0!H_Ra2`N=Us9t_lv~hs!kg zZ*-YX8{?kS3| zPc8A7ZTHSZX52aUBH^ua?k0oyCD!eR7gA&0?}FiM2UAsGjIY0lXX4r$h=1o1>t08! zdo>em8vu`agOyburqf_2NHwq%j2#v;RG35cm0#1CFkYIk@rRvdGuinF%Pv0P zOo78?r`@-Si9cfEA95!C?~L2Z(^;%Kvqv{Vw}1|{A-Nfo(XcD|7FB}k)prdn>nlmd z;)ip`jc7`pB;ycbOF}WPcizX&7Lh|B?$%`j$ zGpHWh4b)3o(_FuzMbm=ejvXt5w($haypAV)sFAK_HA zz0mijDoW*(8_9P^qjv)}#)#;JW6w34aTshG1u(pB+B(T6Eg+@&uc7hM9yM)IzxXt5 zQD>{Ki;aD=ZCg~M_j=nAoa>4`0+A&IT+?eOSjC3SUS&bV0+Cu1R%u9 zhywSh6u3g8030EN;`<-yy>DfGf8Egc$6zC%?{DbKh*N=XK>IL%muNb@#>;!p+8~$a zZt(Jl0OBSZ0JfR<`6Rul+cZaLi+)SRk2fhlfMm$lo3T)52;e@T_8dEytmmiE>EP@5 zVI9AYAzjqJXNGXhIV$Y9p7pvg;T(gwAJzC8{oZ}?lFgrrvp#c<9&nB>t(y^f2QeEq z*oP__6)GC=d5*@Xz*hK8X2Pyn!vL``qTYFeN4%cqPE%@4qG@~$1RW?l4=t=@rw2Y4FXt4M{jF?P{h83<8;9v>#}|VRc-nd=+w3 zTNg0_bd#HfP+7qnc8?skdnwZC8XDpzskx(2tou#?5p{RB|I@p((-{{aA}Dx@W(S`RQt0q7O*f~!YzM^l))XBai2l@Ev_UfkV;LU(k=ev2?b{b4o>w)^bW%)n{W)GTS z=m-uCodMnqM`y~i3xLiA8FVt`HXG3KbY3uFg#bF9;26;HDl=7dn9FQ(bj&~p``8*f zOLTP3yw7^Ap;H8OiZbYA%DutMQ53^mPiN8O=#&GjSNSUJVWQ3?=z#6j8K2Fzdry<& zHZ#lnVdxVdli?5DL#ZaV2WE02K^51y4mhn|<)2x_-R}OE|ANGP35@vDWG01?aaHaVyNm* zd*;i1MJ-jseWeHPn?VKk9q+aEzchntVY6euH9u)SX3oEL#mbck7;Aq! z+C*q<&OdhAR3$hA;aUzMd3Ar^Xh9UVA*u)avs=kyWymZ$^&!aSwH@pmtva`77PiiE z@HzQ&9iQ)`r0wA5v4r_y=552|(o6#97{mc{MLmc@z!^3ZaJ?H&Q&XRPPG1p4U=F;u zCnWcc!CwcjLjG=%bq#jSZs10x*PwKN-(T!f?*SM$`4MROqg7H7kGz7kquIDI4%d%u zAMJTl3ohkfpTNJoBH8Ciuyw6u2|`qCPVIge+tde|Qv2bMCGV1|vKI-R`OvEPyk`_+ zy3yFrSRa!=0<3j7@nTE5tWCUadHB>2x*tmy^p&DmXMs0p$u2mX_lHLJA(V8J_&@Cm5(`m-ih{O?EwFt5 z-sKIBApJ#ZhAY{>J(*5-ny{>sTMyxTFz+;@|I1z#+XW0;v<_b&NkwM%DTHJ(t?Q{| z5yu`*NlN^CfP}70rPS4aSdYki{jpqiXU!Ufj4j4aITqbhU!@L^i<~XEokIHlex#5_ z(KjbO!weMD<#OFT+Kvtq71rtGx{^04A4xjp;fgn3ppyXBP9+AHwBL7pM(_|uPc&|eDiENURR9JET7SLAYaHdWFECK zW!sQ7e=o%bxU@+@J62e#uVaxJwm?-13$pQfe!=6pJ?`TE>$Oc}>y4n@Ctw zEPko#t-CLSQog3R%2Rx|O>VTrPMH&H%vB@O&yx9xY6h>G?}^ysUpB`rn`kDgrY{>c zgo$_)z017H_bN+JurF_xn=KRp(qTq?o&{SdKSDO@8mwlxZLl^VEM)~YL@ZuT zrxBG-iJfmNUwVfTH+E#1TiJx_Y$y;s)`Dlm!I;DuoqyiqR_??rDPtkrF`3s;OrU)1 zSlw*lSY4^09A$JuxbJB4Ew@sOLYfZQ#kT4%>TjNHlBcA@cIDg&=yRmjp%5aR3zW<7 zE+3gBP=lP#khL_luUM|el1bcdhvxRBo{^sV|iBW2Y=t%_ZWD z;4%h<`nUix*fNXh_WWrbo^= zr&!>|2k0_^Dfo=n_AT9@BBF#IpNal&5xvUmc<>Fpw@JJrXuk%a zQyS7XH*jVP2*!G~7+qro zYkiXu4A#WN69m~^Pzm)F0!f5=jDgG$%B6v{0VHP+#Lv~aCZUS~O}^dMrPX~46C2~l zke`kQVu;$37RL67f;1;9XzPlspsfo%!*yYJk|F0IioD7c!Y!v^Oe9)e`5BC%4KC%` zBHH*d&Z`MUUisW2iG~faq1$PrOq#aFrCfud0Ua-gRf#tQ{((DoTPuz)UyW@d+k=PY z!}`qbZ!XOvdd~AI>qxVqNTfm}nvf`O+m-!*`cp zopFvK?e2>eH_6o<7K)FoGb8Bk4IlhKoAl)w%^Josu?MTmrc1yd$COr7^va`3A6|Xf zlQk?Sz?UKccY=o@7c8BB-f(IcFmodm3dwg8%Wvs&D;J~YnYys)m9kPCaoP7D7~P-+ zkKF6>FFyfd_x2+Z>;f=0xKYWXjr}vF2^(Ql9;DqiU2$e*(bc<&_yA-)q71-TALvDhl}H(z7}bxyu4^d3FspB#8o zG}XYLGameKwnl)bpcsP_D3#(zuPg!cy?5$UNFuB~Y01X9rcSB-2VgdVGWA1Xs7abO=Tinzi?D_~XO91`A? zO^|N7ACg&ecUHWI&3W-EC^ML%4K9pMY{;UkAH7gNFzfu4n@7b)BLldVr(Vw(}S7wV<3}p#ZCYDHX#F;K>EE8an@Igzw(T2wBmmui6 z>acW;Tk+sMcoefc_%wdl%JkZg7}LNqIfHSI4UH$QXI7Nv(?JZ1cTTv>IEeAz$xAB3 zMUY_OVsWY*F2cD)jICQK1Uw2#meBt($rcndpxw#GbrI?2Mh;Y_tF=yYiUu4xT35-^ULdw&_5=BfirN{WN|R1Qe6ybr+IR&`YuUSw>2li9q=c zWfkb_R$M41*R8Ot2j^IVU7JB!roH#nsgdKf`VS(gZijRhQ%>dgf)x(Z&*h# zm7v*jD+zJ(9abUzbrRk3Pn5rhf=T5cLV49qEZ5g=q;)O56FmU>O#d{hw!saAb}fEj zKcMa}UsD-9TN!~E7evJNPVU8nqn@eAiMnN8X23i%jYzy2&ne|`_PhblW6C$!^X+&Z zRSp145>nXwR{AM@&pNL%bP**kRs$=0`JG8>^^q7RvBlzMugV;(QEJ*o zDm=T%GE#!TNTPtdcRruCQt!~ z(=lAe`9|H0lu@|$J<2(>L_U5TF<@<&aR(J#%H06MwB{Y`0UF+R_HesP`2l-?Xy1ef z5`GJ*rGx$G8C(aJ^Emj|tRX=`Lo^pk8piZGxhW;DA0Id_O(nyeOaX^nSoPZODbht% z9&_JRoX_x@!D@x^DX^?@?xkXALR2NQNJ-z5zeI7PaH+c!eJSMtdW9H%$opZ@Dj#7x zUZ=hf1l>yA$LaK;^6RiIu*9vDLv4Y_m(ImjE|KnbD{ID>d%@#YmLMxQ4!%NgidWfx zjIotlnS$z&21hfst_r@dm1^assH5`7%Iy&NK*6napbm{hRq#2j@$;X-*V~;A421%3f3LI8}moZ8eJD=N6*)=eNl3sF@hs74o6M| zY4<{}AH%~pV*}i|XMgF;`14Bkh>nXKEUXQJ1M7y3i z{1K9-?r*|wGp=|zZ%aqKp%5Wq#sLIJ$PFdKCQ`!E;iBNv3n0k8fgdLMFFne{X9gK^ zKCmN@^3IavA~5Ju5FWDQIy%66wM&_T3hL#vmIP;F`<^+;eaByQAhhg-&5lHkg$_!yeI~Z` zZ-W!rt9(kOk8RnM{3%5%G&!*5$m@&2V#>3?6`L2c`}aGqk?hdD5Vna!pHCvv0se2< zIUDmhUXL~ISbc$TtiDi)?{r|#y^!y@JFWYhF0{P>MPP`|!C|xC8?P@Jt}nj)-vs-y zdUKxgPp26zrpTkGBup3Ps_5^#reB(o-dQBqJ4g*gqsq-{gDqD1Fnu1NzCpaTLA<#^ ztZWeH<5K|*;#G2ueNC`-A;>rnKip6}@G2u@=fla1a7Oe39MdT5JPW7DryG(9+H%=1 z*B2#Y86UbDmjJ&d`CEvx?_%qL)-kfrUc-PBaknAlPbcoFXOViqY1v<2K*0|66qp;Y zchGhe>oFWcB?p`(-uTUGzxUS{D&Hl7lTY~qM5`0DBgro1O^9?vwV|~Fxupo}?dNs2 zPV4L)dS@R#e4fs3Nlw8A0@jl=UgaWc?HCJ=D>j^p1xJBmQVI4*^e_zmYJgm6DaY%)I{xs6D1YXGuFHk;TUPWgQv6&rfLqNT@i_n*n z>*sOcAQ<4sh5%psCj$Ks0Kt}Pqo{!1s5|IWaL}iv%YqLQi}uo}F}>$^uh6L3liR^D zOqao;>9mr*h=o(R1W+s9tn`GXS(P3Uv(I2WN*5WuKO(8HP%U{0QZSdqD{ICxN&s4j~Qm&JZx zh82CG`#dKPv|)Hd-Z76VP-*F{O{AKX09fvVflmF)i)_)i;1JfSxn$<|6{S6c5Zh_7 zV8B@<&5HFEv&Uj-W~{FyElxe_EI}^zf@H}7S0vjB9>olYvX8HbXzGf$vpi>9*=8hp zXDHZp>udpor-_3SatSkWK%!wMWCVg2XD6cNp7>Re6bc>ucr-;zV*&j_ULqJt$^uXw3dpUoKoJ;v&sB0$ zvAn)WE_$Hij9VVAQ#Ql)O*_$kQI)e~_kR%!7AqIPAeWs8Q6a&D&lNyvp_qr+2Khj0 zI3h-7;z+zlzVRqNp#o`Yf+{oPH9Rv;PQODZvp-@HQpTB@sd^!)K2YSTI(-|)Sc=#V zo8P0nkr^%*mZ>3>ix-|fdBsrdgR$6X~Y*Y-z<^kgj+!6*?oB?NM9!A3UKMps>{_D@N!!zZ>{F^zs9fC-? zBz;qQ#&arOv1`dSnhyld-xV7(FlfP~GhUz5h1HcS%%Zu|o*aYN2wSm-X@)Z{IgcWe zS&Ou*brFPFA?d()ghh8jw5g4a7XG?NWFTON$^kXBvD8msbSwuEM7;qyS%X3sYdF)!$6^3>3A zdfJlz8o5EMQIq1nlm}Twa5H$pl5$XS#{GE5tehUSj`C|me#|}O6 z6~NhDE+2Xv4>3shQVhc^`JpHA3VK~Cf9+{{Ixb!;-}?+bL8HTYTGCMJ9wj7@P`DO* zbIF@IyB_{^L1pZvzsJeai_!-PXnF=*n)YOIa51n9mf@!}5BSYt_(7UsY&9gY3x#vx zUm__-k^c3E8qh#;Dl|tfE#cvR3(MRe`j@Yu?n|qbw=jw?QfoMGN?nor#$)hOLjCA0 z+?c5O@X#RW;rjTA^o;!gio*xRu_KPXedCXy%I-Ih6%ZT~YX&PXm#@TYMuebiQjpQ{ zBP{aP`wCTMWUIVVx)=&hKLA%=DPD!geR#xI$YRHeW5bTUpRq=MhPpUVaRlDKajZfim!`^x(nYbmp$%BzfMA$__E78+Um0iQ zC+aiG& zcx8N-`S9-wVqYHwy6NG5q6*5Vgyen7T& z7QRS~xl#T&(WiX;gjArUpxd7tx(pp(4&Cuqg z6K~=?RSePaF(Jez*iTuTISgXqYk(28y~n7V;7J`lkT^MP+RQ#+13)0jx_z2{_3QRV6!?u|n#2oZgKYBJ2BstZ z%&TTCCC@gn94UJ%Nw7$l$xcOXgm34=v~w(O&5JJqwm7K(U#&9*kq;+W9%cgQ2L^&5 z=Cdeesjup@+U{Azcof`k+ZO^fI;CM7@Uf>cD0J)b1h-Z`#1AGki_jZO&j_>mV!O|Z zTx=BCVuXm?bXqp=g^Mk*_^^DXa@(gAA>M56h&LBP@}U3#+3uqN-NPRg6c~ijDKf=S zuhX)jBVPL{qQfa7FZj|8BuVhonKvw8_XI1D^7Ut!KsogTssUqtcdD=>_Ww|JKJZZ$ z*W$nV2MYu@XhNd~jT$T#UW*1aA;AWdg`fmC1`;TLLLiAZAwW!a1607^W^Fc?Reb(= z_C0B};;U_aeYORqPsQ-33ADC9M4n=?7F%p@y0ndzVwA}KzGv>;%`V`dmru^!duPs> zIrD$!%$YOJ2{uK?5Jg3=#^GDdTnYh+rsv-fsuhHHn2g4uD=emZwG{XWG5eH6^=j-2Xg&@e`Zo4!##GtX_Y9M4ePbaf`80Vy z$vY#m>L_F9fJ3c$HRgC^>1v+lMM<14iUco-4ozW(E}fL!Pv`^jjXb8qh_(j2VYeRY6vxkRVmi(b?C%!hE5{bUnf*u1ub*NfBu)`1Pbj|F{?tq z$`}?#cX*hXMO`~a1=1wxAJ(f$gJBlQAYzRnY@JKHT)K!eJkg~2X3q)x_7vqFrd#Xo z9Mf5jkwZt|!8Dc(o#lyv2Pg2dd$L$RyDK^P^K`y`#9#f78ZqLKUhOMQ4hP(Wfyte2 zN5GvLaAV3e^LDRUZS0AvtcY@rF|#!Hn0Y z3l{A|o+K;6Dt!x{ZsY}TJoT#Of33a&r>Y@`481AN!P)T|mE}nZPG20QJ`|yzV|Yyel$XT0w>|zcF52V#W^@Tz67v;aegiuUUwwC$8B=kAw%zsb8vR_G8cJL0@61`srN^yn`~s;Awypr z=iuxJK&`uRgqy93%Gn_^KD{U!*uz#}SLl;%TH9f?o*m<$XIg=D+JRgrfjFXpY>9Am zD$mLv+aW_g9_Qff_>gW-KY}A1J!S{?Hmeo=CEToP@^~b$?KZ9LkfCphb8vS2kiedl zP;^g}`iThjVjJ0Z$k0pT9Go3ZQR)d%>g^F~hmCAIWa#EiR>~{~XUA8g)cf(VIDaNW z{e+EdJ7nk^;vAeEGU2f}UmT@=HbPx!BijxcdRCl+v*V{x>f|W(a~Ad0`pFwDMs0^N z`jI#X&pIpK=Ww;S-VvePVk6oPV{|>v!E>`kSrVn(6`{rkOWZqlgBk z{t}&r{tOQ#BR4;KTE_lNA(cX7wHEpzQ<>;EZjUi>XNob-^EPWkj=#H(u#X_>5r^_O zrmr2{cyUz~U9rWW;X2ZowTN_0A>QRyluX>UFC@~MIH7YjUDm|elL5C>3U~8#m^K)dT5b~x;IItP*B1_ zMGOnxtE$W&FR_z3Cq9I`tT@?s&C&a%h=$myR9keIbQd`nwaBttS9Z_DvUjN z<*2As1(qgLrH!e^KPa|9+5Y?`s>CYb&@QopGoCyYxYB!vpHrLS^ZZ%LtHOM5acp^c z?egk%9aps8BNd-oX3~3Am`_LOtuo_?(@}Q?&-gOC4&0bBt1wqb$W)niP~KLVUH_C- zW=FS4InMh~(_|)U>znZ3?R*Sa!7BTJJ#Zj%DK&pvOAfKE z1U3=euzBO#8tk`TN4SP}zg{b;8&hf7k+0N?_(aRPqH}4Qd5elQC+t0dbQN;L^=hQz z3?*=!LOQ?Vs6*!SSH;vERc$t(6ph58nuA;UQq0&7Do>9*c|KWr3vz`zni>>MDx?>ne+h#!b%W=b}8x9T#KJ5iBao%k;R^ zH5RXJIAvd4(W9=hz(9_=)WW*P0`n&O-1-T!S3e+GE^_{NpHP)U_526-A>U+;km%O8 z$05B0lDN}>hK|Ncb5hmf1ht$6NbT;%sKkJ~BCzC?`HkHoHpFV7=L(K}PA9@;JkUil z?;_tu5@Dg^e2Tml+)N z!f1$+ge$BhVEYFZzn8lSzbCXwPHIL@lFG3;=DeKR{2hVh9_yT$l~~y6d~&8+Pm7CX*LNik&~m^65&0m?sJ#;593q5}BMY)^RaC;h zk~>=o24Z)WP%vZjtq0rAJ+4o<`9nk)G3s32;jEZN@k?#+oMghC78U6m7jO`u4mw$Rfq^}SQ@4LT)y4q z;fzxfxM+xy%KL;=4A<-vb0Cblk>I`GXR%J|VruK6zQrUouJB2OsP8jyC&`9mo>85K zNoVA56s9rRx#gD>FrLZI2fBIF-7N9U7cp1iKkW?4^#{49ef#DGCexosmHO0xq|LXf1Qz;KJ#B6tJ6FEk z9RB*g+5;V@KJ^Zgr+av)_BlgwnjS)5t%_GMS5DO|jl&tIa562X4H$@rHUVYvf41v&gCZD~@J z(i{cm5KgZ`73FThb9RhnQRREN88YOdlUeE*{#rhK1H;x{!m$AGd@t+D_ujwqVN72@ zlt`@-D=H9NY!lpoe+OIz9@)h+bTbjlIZbR)m=E5mVh-;VAImwsQ{nDZD2XIX6ga~f ziwP929mT#gBiddLdGl4kt)qQUOWayOeG)6uGTOkKhGGdDVOE^^F>#JNKTb|Ik~I=z z;N@52qMPLlk7(N)8Wym^Qz_3q<{NN2zcpTJta9cflaJhkGp3b&eEGpW$CF3-g{v99 zftsf@?yPY>a4$LIsWA@u{^IuBcB?1Vq3al&6{ zv4xc^SZ)GIwZ1j^F0$SSsIH+YLw={^JIC@nDesxqyU9DYWk*_H$N36ulhVx}Cre(> zwL!mp(XV?bQGUcVUtxHlk=lC{8bjp?lcDK$)!TIhSN6HNkRdI+Q_#XYC6B{9rGjC$ z1NX)@J&n{v?y|`WRauzz`Ae|==zO8f`=758lAnN+p+~%Y^n8fM(!Pa;1Kmbp9`X~-z2f457a2RYD-Viy)pk@ zF2oPV5buf*FBSVfmYz#b==pF;vQ$$4x2P`W7J5_N!S`+zqw2ug6&)%EQdu<*aqmQUlUMWMM?-?j1>ny6Fgz|33zs(SuQ^wJ1+o`oH{W_J;TRu#kSSYMBO^VvhJ zV>k43Zwm_!5fgh8X=BrcDb0I5C!ucIT>^d-{fMByZ(i{}kz~@pn||iHR_wcp9fD!u z(LybI=_;jeGS&D%Z4?fTe&yvoGcyu6Gw-PCxo;l5+{HcjiC8M3=e|1iGxL@NV-r>r zyqD?AiYS5-9-?7<*T1QeM-0)cqms(tUk;w(wWSzBCoV=Tw7b2W`jdU3`xX-%uLGek zgQ1_25>a7s3CnoG+O={V{uY{?dQC6lV<|MEOBNLas(Lj=4bJ^t#Tm?T0~=2=n^IbK z6^UZ*qdV5Zt51Z;==h11r+04X&MVGnyTo`%9G%Y}INKd4?3z}b(el?yZWrO|j#Iny zZb6A*<4MnG*&4BCxJ1xZ7M^xnhST?VI=K9er=0#jNl(`u-1w@tg`xdpwUUXe4#6H>8?3jt#nA<;lz}`D&Rd^|%hT_qbkTGpdAq zqt-J>-gvuOx?r1qhEy|jX8X-g9+5oH>{}?k?nZO0)1S{H`hM>_8nDG{2|zeUZ> z%?`ASx-I*VSOZ!}5-7l{WyZNng+_(wH~(9Omd@OP8Gg9WA@q`t;gk}L&l)C-i#GBJ z&J&cLst?>gGFWDoyQ{Fk5n+5*ayxq4LyUjPZEl=vGrrD>s_zy;H_A=~XR)U}P*7%i zHzF%ftS>10t+y2eikJZu#^zYqAurYxv2(f+Q(Xs%OHWnqGCdAIEVCFkEQ=D|d;Xkg zE1?@wn1N)cp^7?b0Q(=zpPU`zC04;MO=P-xlX=rJHOhuqf^mNc^)&RLygkgDox9&9 ze3^ZfoeH0Ip~BJk!6$P3Vkye+u`^)b$s!gDZ*eG>Hue>CP_8xRmbB+5s7g8LQMue+ zB2yn8ST{6hS>akTDKU@LjsZsR60{h|4|nJ)#3qAg_oJ|jy1gg0{T_TTt1{c@Cs+f? z}QFQ!K%)gspfPDyJn`+Dp2}J)g4h>N`0_z z6`^((r;5IL@r=&m(Ool(&USYe7m4awT3&Iw(_aZj``txaqhn!kWA_JC?;kolCQ+vw zH56YpOid@zrzCQn4h_9XIu(qWi_VnyI+)osM~c6#R6ki9%>zl`449ne$Z|2-8otK$H7Zn6^K5*mp?_7Ove~}_Mj8kE z9wYF4uM+yC>YY(!NxHdPA*Y943%)2lUC_H<%<|Pg-Q|<6uCq9!%k@TQG3GqGnVlAA zxb?+RddcQ{thmTiDUfD{2o@isdWtdIrUKBcp<(%kMwTklJDi|zXiWPN7F&~P{Q;VQ zjJv_I6XkAnTG%x=FjKZzbpedmcGJJcZ5G^Sx1h{u{44_o&9e`x#D+$m=KQWFxySV; zy#kby^j)ISwp*%PeZK3hwoCLA^klO616_}zOY3sIB_*9+nBcuce`3h{`<6FF@}_aX z*Qa@=&GvkCw&&{E9(t$_g{PvwN8zQ1zSdiuDWZ_jwY-pVT4)?E)DJC`&I{d$#%*68 z^c1Hjn2)hBUtw;h?8!FiT_k6VzFs^FNA*vG|0-WW|1qA-ySJN} zNHTi;qPQu^>GdDyEekT6_5`1h1^s{KMG^d&A-30VQpGsY&D%-d976>CeAYj`9TWdS z{|CHRxy_wW7>cJro}uFRIcNqsbh;Ny5Uzn!6j|=EpuZcgICxC%1$T@Swq>?1ZsF%e zjlocf4eyk6ibAm^IQQJ?+bzDy-fUYybCJ;#yB<&4*VB>m7Bmc3U8%!3bCn)UPs-bp zA#R>ge6#m9te`0LhsyBtG6LwPbQec?$l13o4_Gyh2u1$u8yM}my2|{IQmLO7dUq`P z5(~X&n6`OeDuHc2lS8RF@4W(^QTIi~nVgZdagpWqTk?|j5vwufoBq@5Rw@qK-UWuwzQq!2UTG; zeiFLV9T7LBvCqAc?GX?sL=m3{ktRZ3rl<{lY(}}nx{QP>=ACC|dMA(zn|ov={r+%Jl}ha=j^eiDseiC}}@eO+nO#&|P34tvtN z+zHdl6TAoyXUt%q9F_f03hMqxrE^{xMxuvor#G{}HMrq_ET-79=bTmQ%7dAKlIz{Z z{lcj8`PnHrxO+>kpV!R9I)Yi0;?}dH{7WW(a|?Ngb$FRfWS*VL5hZ0OR|H<7^{i`g z*mJ;EgWiHzapUHbr|2!?J2S+!#{&Kh^cwJnqFunB&3kTlV^Lt+R^Eayi=y@iKUx~} zxATHXU>-lc{#2d|ZbR9}FN&CM^_I?Csd~%gt%$e4wo={#+t#V)9QABcPmerz7OD3_ zo`gs&(NuUd>WCRYahS;~6>IHaYR2ek1d5^^w0*_!Tetje5yP z{!U4Rc*$?n%SzcKoB}(W)w4uB^LXa(l-QmAJR&#z!W7kN%+F;E%?}DE&W>Stv3&8= zvAD(|xN{!Q@D7zdLBAAO0~iJQDnROkdtA z3%*2~?rUADC+T|t3g63fz)E)d{*wo5+grBRS7IYixqS0A62j!SNVm%u)?;3 zX?ZysUM1l%ztY=DTF^fUMA+Ug1h$;tgCs$|^<6O6w-k?HP|(cVe<#dKE*A7K%dn6( z2vR=YhAPTnF_}976b|mJtqJ-U^XhI)4*JE-9rRCD-&xW8Qh68|yGHn47W`z-gi5pY z7U{!P0qTWuxili6nowWEFmfq41p>}GPV7O5$E&mB2AP*8E}FQ{*&<`F&C)HOfkk z@DO3;>I<`Soz03jJAbF(d!~ieug%fGY|5>okF_^9R&JXy#Of~PVV7rhr{Xl|7bb~O z801G)m7rge&g}yzto3bTz(T-?gUmbnHuD(_3cuyM+Hr6PR6Yj%&sqUknK9W$6%#TE^?Cijf4Hw>-rN-HSBA0VwXI5Hu-F%F8%^-3q^>PF5<~VAiadf7I z#oF&pWHjk^_P1LRRPg!A@YqIQT!XGvMe0JvU-$RTbLC(Mx% zH(Iljuc6R4KHQoUZqCu4jpEN%`06^??POqJXO$}6jD&pkMC zkF(=lGPu;)af$V_lM2dL3SWjQBTA@CD@^vJaz}-KK4BLod%r?r^aatB+|yy_WfR`U zK07x@(4s^6f;l;gIUh_zb)D3;@J{Iu!m7WrMlWW)szMo5=`*0-B?t8Pl{Qu4-c!m9f^iBwgY-L3s1OXjX5P?e2g zC@dMe_ZCZty#8yI7Zg8#m+sa4_Ahx1b4A3@U;hQxKSb(GC?a#Vg)?xQ`|E1+ek3`u z;#@gxh)$9yx@_(dv5X~?@nvgbA}?O8iMf1NS?aXX42*r8<=Uopk^Rv{=W;DoFu7AS zg(t89i^z{q(+hsnnrOU_wF;y)`NXOgIjIDUJ}$eUXBNcYD1qrG!bks^qy2%g*g)%4 zvg2Q}(80`oPFGPzMW<`jw7qQ^&gb`X_@HY+$}~=+q@CS6ZT_g15J+<5IgPc%VI%dy zz(pdb44oVjVIUOhnsEzKIThYl(QgUPciiDFH#gBzu`QS-5f}8pb3cZn9jqrzAA%q; zk|9^I#aiUX+K6!r<_=0&6mj`D(`kJ%55`JN8y>w!nuaW}Lc{K0%2J*guW3&rx%t$X zUE&tctn)pK(A_TTDoTXaQ7lHtFv)on$vteMZPl*>$=); z)}_31ln;B(BV?m<^NW&DZ&K&d#B=Y5l?7RMrqb#+S|yySVButARyKtj)t$H#-3fA~ zXBO6OXC_y`y_@SWyj(w%T47Fk$F@)!E2{nCp<+vfQ~PK?*a35tUDk7GL!?!hM}KFB z9eYB8;uQZGl35HM<-*RSb8_YaD3i}ai4S5*v^=ml5GQvgpUoFIt{+8EIzXr^U{d%d zYyUp!!%B0_FX?b*X2oV4=7G`EF)vXY>Ok#iJob*9AuEL!3GbI*}oL2p;U4f7mS=CleBcrx}l@nb4OuEy`gZTA)3YW!JSk*e=w@ZjICPV_ zkOmf_Hho5Vi=@11KP0cr=Ib1DA!L77=?xtRJ-4=9)BaIX+sO8hlD(HoJhvI8lQ z?kEG{WCX!^KEgUdaPv^%|LvPm2JGHZ?-ztuBM849LWo4MU@i!SJX8qJo{z9g5FU>p z7()nl$D&WT9R!Vs3Ze0QgvSJ7T?AqF`3Md-2qz*46V69iCkP98s3?Y?k8oTNx+4gG zS|81a2$QAdAWYz)LioiHf}Ic8n2hbr*sGUwWbA8Al~Wc~`aBWyykSg#m@gDamJG1g zaq0W#VRwHAj|$n3Of^?o;p!y{o82s#!am46PIoILwhdCvQaf_4^pWjceF9#)B@pZC zzw7KUGKE5vZ9F-$LlQnD2i3%~pvmU7K2Qh}q)z<_=wyrS&A`k-43b=45u7>b4$mJ{ z-WTbeQSV`);f=$&9LV;<6lTz^)LS*BPrS;*S3jT?`+63zC*s^PMHU#Yfv2+9iru?dea$DuiS~3gD-US} zzVYIK@n<4w)bw`IV$7JKW|-%goGoXrS83dpCdN8N@77U;Vzd_{xhU^xLj`ihYb2Y)|N_EWg z?aTCqvp4LuHxeAMW={JmQm`rxm4-bxx%JffuSCfgIOw>3IO)^*uzP0k$0^f_03{(aF9quqL)}EhO<(=v4$qKGR zDIzsnT!**kC3(5DB$=c|j7&VV6*9Fx*{Z>kADn}Oa)GVhn!zPf(w!xW*G z8xG7L#J&{AFXwYZu-CEj^a9^*l}1GHpDgGT^ZLHBfiOEANqgGYWue)8%6Y%skXTXm z%Hm4;NzR&|!ZxR5Q}PYR5Tg`jcV#8Wbv}$ENu5h*AN&u7A3Z=8Fl8F66tS})wS+^9 zTdfMZaR4!*r8Vooj%7Fb5Og`+veYDm9+#7e$GM>#r24zOaQk}<2>eV|GXe40-`?Rp*Wn#M#X#v+c(JB{P~!5|Fu-L;_QHH|0~ZCHn*>1 z=Q8ZQ!6?oOmhDFa=Fw+WkvTg=VVNWwuKl_POp$AN4+M&{&F|i&GLji!(6cZ5tXwB5 zi)ZYez7*d2utn{^iI_QaWbX%~g47{9|NrtNfwC=W&T)23;hQ$x_7xG6bAHLKBB4MI znA24ZnSIlkkT-tZmug|oiC{Xw)P;Mloj4?Hln(8g1yd;x25(A08QK}aX0gWR7g z$!RA`xdu!1p{U%bE>yI~Y@Hh}z6*P=BBMuN2cCH7$5lI2IsN(?Da*{z&5`nxJ}cqixxE>5yZ0t`D6mwUR639daS`E`gpcOkqWe{S_ zkSaZl1+!5kBau&yLz*=ZjVF66gPzy2jf=3-bP0{eb5VJCtE8LyYDW+wPr5ZNIO`ME zY?ZQgbz|_ZbToEu<*J}TjB8x#`#9`LH^%UKk-UyD=;$skc+>OcA}%rzvql5i8;*p= z>itq<-8(_9YE6*CJy-0*>zPulD7?O{`XFnhy6%MO7kxS|UXIyE%D`A(LSFBQh6 zzJ0@29!m|*m}I0Sy=9bU2j-tL?nvW6Io(aA(INwRU_M8}Rp*{$+&X9F!3DmbtI+{l zBh~=1g35qRo`sf`lrtYZjiAWa=LnQJHh-k0XNSL((L zPSG)YMb+qszY!4+M&-_gikXM&o&{vkJRa;5n>V9-W|U#fC)Fq+H}GQTrknq_i)thFjuxnvE4u&$VRnv=18 zD|U0dhYa$wQ>uFG98Jk^C_s_u&5$cF9n?3bDDFAN-k2JmEJ_`lF+E8-Hc26TLpqZ= zuVqu!^Q5Zhs)hX4{T9zxxy=uAgv~?3=ChLhTuAWBO4Ywpl|osxhfIA-tnZV`Hw{tW zIl@NY$wF%&nbQzJ};+@daay<0DeB2c0JiqK7D zBplQ!IpCnbJ6(KzyJ(OvY*;Obxn#E&Ka87qxJnsXf680%pw>% zu3S6MZFNW;-;fT89{X8NPYA0Udb8Q`l;U<*g&*p$m_-TuCszrxO`z+FMlrk=A~0e2 za@CCThP>}Ezo9&(8J*Y6Q5+^N1g>euZS<*w)Lg5%+!ogt%jKa=);H2zeESyry0bY9 z+>dMpmBDP9f0fjBOq!*-L#T@#l~!{7cTn2kG_KjYLxyUOQgpk`UA#-jv+=0W|H0F~ zjYqY64oT%twf6VLhL*GAPXyRrpgHgV9WO>Px2+~mcI$bID9>yjR(XEwPBO{zlMEsP z2IKJ7pmS`TA#Zey^qISkoBL%SIwW|`P zb4eWK<3p7HTd(4E?oOIn(C^%G4Y}fT4M^n=m!Z9{%;qtl=sW@w)l2C^ImXy;$WD?& zM&=}U_%)WJ@hwTJNm*J#DP3p$rW7|w{EyQ356u7D4TpXC7kAF@@0|aB=lp-v8)@|n z!}W$ck>At*BRi|S40LV1jKQRH{>NQgFXyGJJ&R|L>*U2fuD>SqxIQTAoPVa%HOK+W zgtlS538E+(zFt|8L;rBi^>XxpIbzW{2K}X_vm20)sOvQ6GeK;QH3Y!1Y~YIxp!dPDnCF z%${BD_U+@K$4@6mm}kB>aDEdx_fFm1!;Qmx)YZAedi-*G?GrtIxga;(qwdQc(c{@AUjOO+Dhw~iY z<7e3*Un6*Wd;BB$arF2{@$*QJe>6XvJ0D@;6PDn|dYaLz9fXq+{0d`XcDG4@1|5 zDo8O6VYsp=#Yp{C9vmW7vr0aG$aS5Tt3#JUbNi2&P@nUaMk^=rC zxhjeDj_nz)g>xxGlIS)|CaE-H(3%7YQc=yT5v5?4_qp>;6$`eeS=U?co?b$ptxnlNO`EM=*Q?= zEh4vht%_OnB!mo;)kPr=pV(zV`jxj;76Cj<@%6j<1jKW{@nB!<>v=KgNy8x?$2u4Ey~79+wZl~ej%D!YxP@}9J_#qW(qlVh z=$Ua2&W^_j;7JKlcSNa0&6o(T)lV(6sBH&qJ;ga-Pcuq=03R!EGeZ5Gjchw)=#RxY zI6Gwgwc>7%QlE@a>o&6OkfFQd9Go5RAjYz&r$njyBh;BTvh9$e4^~@Au^gNoPeiFt z;A3%qDnk9Ljchw)=sV&ZoE^)f)Q?4}2O`uPY-HOZLthr>;OxkWQoEzngAwW?8`*Zq z&?m<^FnOfmTItS=Qfq3JA&(cF541;~bnFlcLn~qSUDo>O33ScEBW7oP)FDZ!{>orbemLEb1%t ze)>bH=eEOW{b-DXMb(XqmEQCS)iXAd?J!#38slJ5wMVHkEvl>aCL76i7^5$UbMTZ} zlqFHhtO(^~8_{+cqi4lAcrNNq$pM#aVy>w~bJa^D+xRL_rpgx~iL|zrq}75Kr+KjX zJ`CY6x!oyFe;MU zrzLx9%58aSxh+q%g{g>lMY5QuA6ic7i9q~W^Fb@v-0m0|teb%(L-w#N0?+JT&bX0G zqimPqdX8%^4u)Mje6HuzGJE5W>>Wv_K-&`H&h<<;Q z@5XGgAiOA)m~@OD9s#)BF#EYKe&XKO2Hg5Gm3FMkRG5z}lq^LA@r-cJX>QdgI6LZy zC4b2?&W^>r1YIxT`wR#8@tv-5CzofWK3Nh}j4vmVPX=7={9wJRgP(zbtFzbju!9T; zy4tUEJseoF-EeJ3v)9;?!lF4`9$cK#9?lJvZPn8(R>+i5aALR~wod6J?epb0So&@; zk{GCwk>B@cLThB3HFDy_^#raRKax!LKEtlGcY8QP>bPRh>Hk+epdCnX-uo?Ha}O5m z36wn+D0`ebfxo z*A_kz*_>cAW8-!dYkL{ABSl-r3GGrlNG=@P%h%Yb-+sO_t*@^8ms80)J7t|`xwP++ zckLBflX}vseBGB>MJ>ZpXqd7$eOZKdg`$qmu?kr+{t7z)k( z^-_}y)!8hF6%~m=3~c0ZOo+W5(S?lOR)Gw)?jUFTqk?Hud!vMv@17^b!$siJnscd4rFc4lgPaNoG3j{ zCSiqR1#)Ao;JBYdei|2BAk8R3^FTV%hgC-^s-xTHtE_H36*?#(#;TmkK7;H!ix9ZN zxXjvZKG8RK*gQ4QV)RU(L1m(7kVMXm zNQV^~hgbg}NFvw4RQQ|&Vz3DLUS?I*_;yG*j_vASfF@9p96M(NV%c{^TxRqmFgujn z{lU}uu0z}g!ZnovQB==&^?SaOKf~c+H!IaxSI9m^%u?znw!(1R9B)FA+pN2iq!(w=O|hcEQbHkt>Q>_EIbW-gEMh9JLamAfnMaT+ zdiX7iS zEX_f7fxgQyN)z2<#z$}BZAFZ~ZQ154S!xmPtIrm%*qS41$qCh2l#SAHiQVl*$Hj+Q zi>0|U7qhKcQ#kdbAJNBPZ#?%fQL#G_4$jD|zQriT(%%SQACsclDDKZ6#P)!?7BD$5 zFW9fFkiUJyG4xb?8~puP5=W&WBX6oq;n>^oUVe68`&XA~zN%$xtI_B|}F z;)fN{yrCkoC#ra}xoXV*(NY*|b$=lY z&Em}HZQj2KC*+6nft^Vo$<3{?l}mR1%2Gv*U`84hiS3-Ey@p%Vcr(Ly-qm78vC16F zwl7(|tZONoRs-g{|3%Sx2e>owx2OPwMmk?;OWyn^5n}kxUb%K!rT#=6TBaL#Shn#T zw}-=+Rt$P>E@Ig9ZDKgTj9fEjria@y!*0>s9@*!ET+xUctFO0~-AH5Osoc}K-TAXl zdbl=b(3_b*+>_2BMk`>q`P^J-Lg}GvD)pR*+vB(yv-)u+hVa@`1n(O-<()87l)Et7 z_nd6YZyZeA@IAesCV;UK$N7J#M`?^TLYELk;Ua{TkFqaPnd@=aKd2f{S$>%k2nM))Zw<^8)Zl$@t zSN7>3lX=7*DDO~dMj<{n!C#b&8{A{bFhm;dN(kTXO=!5Z*Kg2)h{B@N>NOm_CBaiN zD$#S?>iuJ+=QyQ#Ql;mZM?hYiA zN9*y6=^b`IPV;j$1Oxmo%}+w2pM=y@QMki9Ou>ce>sU zy8htnx!fIGvOl;ngfT4ku3lry%zL=Ub%YJE{{`N}K-SS4dR%Ye_uJ&o`M>LNy_3}I z+K*KM&3qY-(J^wqFeAO55hkm&#}yjRhFS_6YMXmpe@nvh*57+v?~e>_{0B&51u3(% zXZY}*SqUjUvl0_~W+j0$E1CO;xya_#{K;g=`}+34G)?Z_tdmv6P&u+L%*?js0=Z*hO(3;}V zei}uq0N4gc#c4iMl%l3b6`N{}OB$1_%|E;q zQEWQ3(TQTyDL22pt7W>VUG-6# zaED4_uDQF{4#s;koOR7Nu}M$vc9uIrUy+lLMn$%9VDq~&%(L}ygwVo2QC3v;I`)_j zYyz7vu-PDb8W^$mW-#fe_ZiaHDoqZs{ziGh|2Jvt8wa{X{YBKODCDw%&Ka3~@8B_{ z7ssxnT-AzYIx$>?@!<(IKF+MP#ZLb<{beqGeB_R5Ln<7E3adwNoC zS|?(IiwgF5FLl1KcQjeq9!m8e-ZaYk8r}|Byrm_ParOjDqt~_UY1EAWH?eFm*e=mv z)=W0R*mOZJUTR!8V={cf;S`HQdZdf#YaDtu{K@@}GBt6EgCpvYX7d%A5Fd3YBiJdC zbd72Mc%&z#{o~QzVLb_2>3Xi;;ZF8*y6x!;ByHH};rPLGgspGqArl$a|1MSUC^~e& zk~MuXnC5poar{j}W70z3*%56SxrdFO58r3cXw-}u#vbQ??;MN2?W^+%d#KYOeS}?S9bv-cl=B-zHg+U^tuo zrf`I}pXFE-9<&k-&bN5I(m5Wz)Uv*2;9`)h<0L~MNEM{^KfB1fd z@mo6JgklvzF!`uK)x$ot|FE;;7$FqA?v>ljqvouQ_vtvh#!MS)n=~pipzp0P1S5=nst-ukL|KvQF@fr&XYo*D$+2Quhsu-O!@;}GaBq@0dlR$Ns&~n3Vh&v-bOe8Ei)N1HeYL(HC)wDs9meQ8 z;vBf^L_*THM=9MA%7<-4+hL5}5$C{NCyKH;N;xk=x!6Xu9oS=!bBMX?By!hjB`RK1 zi=g+^R#xhX(&bDo;ggxG3eCzpjjlCNQYJx*lJ2)>sO+Odu+b)w=aF|g zkP=Yt0Tpblp0n>{4pLTZ4egSi&h5sge5up_AAITSV(~sKvI^Kzq(vjzYsx|si^ozsrWX>SF)oj1 z6@nJj1qRIjLM&ojR8kO{O^>>R1mJao{=1G<3Q|l1V-f= z=Qf{Z3GUY2Q5K{+w<;deb5E;0ekFkvSJ?@c3c_v@#-*rr+X}>?{$^tACRZH_1Z=hj$#MGIJ)_a+((Vw zNU}{tP?hFgicoB}p?8^CY2K&8ew%c%afNE@IpId`_}*3>DvqqmOBuU%P7V^0Vb`^WWJiTY0dSI~YWfeST^nF>osvP*~HSp&a8trZ;tW(@J91 z^LR4S$OhJtnDTE`kQBX>2Qx|%vyWbvsZD62Eas8-xz(DfI&}Ha33Y|6EJ!@6 zkkjK=ryLPhm%0XL<>VgYLX=a1C1|CdFn`w0v~7tae@UA2zLR9J$UXyJhL?2b{W8`$ zUzs@!vjO^qCKyWNAsIJC#gJK_zjT;qeYh+=IIGZYHV~4rHjl%`!RjfYj7sy0Jvboo zWp=F2Xl|v)&YAQ@XKut&Urn$4okOq;ZdK_nm zmtVNUS0I#_RpGokJ z%so8gme>E_Kjb-Gp4+Y05^&M$#|c}s!pwy##Pllutp3S3${kE&s?0jpG8p#-TOG&H zWmu}J(EoltKcF5bMw;wXGI(LI`$|1aF{~1uVkH`7H5q{V!W1BV6Wrz~HtCj*Qn4y! z@r3=8X)1>rMH$aBV&fUEKaPLsCw2g#xmD(y9|$+=6q$umOd}_zf64IV}jt3NpMf-f&XlulTSCQLYS(VS800Rf2qsK_&!j)-$uB{#G-j!#A}#pquY ze_{f1B-}kG0ffqoagvvu+nQ`lmkjmw%6P0NS^L9>P(5^gml^76V8sGkm0QR37W+!^lIpP1Kju!-X?_GE*!!dLV$e&p~_1j zO4ac0;h6u7W8x@5IL-^gs#}jkDeU+k;)Rfy&1jWs2+Sp%5Vug+Z*Ft4A9O|Jw4m2`l4o zC+k?mct`Zz zauN0gie(t9tL`>ObE^T%={8|(-pgEQFbNEoGQyk%$;cGS?)33Vsp*- zB}cX1l6aQJ=by#ptFJP*u(K!~PBZ6YZme9-EJ{eL4Ns-6*qaUe0|Z+e;9w)wrzB^x zn1q^>Gb#5{&WHKVp7j(E#uVSjXFbUU|7iPaa7tTn@z2r_#+Ih~?oQUcuj-=6#PtW} zPszQX^R7Pj^AUQk_5pqvGWKUOMD8QlgOFP>oc%EFzG7iY+9x%OB;rWK18E#IM z+pC+?&6}yY$lRAG97;NnxJ$Z}ee(&%VO$r!D=U0gX85iNW`>Q3%xZomg6hABxtH9- zZ2yJBuVJ5h$v)#R$XNC?CYVmxQN9Q94~PH6987eBWHtB-`BH8!0s&T+5KB{z3U zh_uYN8Al_vedyOdR_oYRhJp9`eAMA(24&1BOxm+K&+TF*`}f?#KOaScI7OU^4F+Sc zJ#VtYu;^JBmKG)*kZmP4uU@!oSnlDfV2LBsf4c2*(U~YsE%>Nq1g$0Mt%5TxBe}S6 zLctp?NWNA5Q6V)t^e1FY{}y>GThp>(lU8XiCIvDbnN9_o*yFA=4RH{ciAGV*9`ni% z5BZKK*xh<4TZTK$VD>$o%Gu4?R%4G0+_ryix4DX7tv)_H{%ABu!sCxb-kEAd_8Rq% zi=*wImX#K0%1H|X6OYpn)Q;ZuuEE@2xC3>ZgXRXj$ml|yW1Uj_6j5pWkl)ubE8%Zp zwN-=4W5yVC4x*C>{l9KTEG9jy*~9opM-V%eMckpH^wn`Eq*$P;dS&jPie7w?Ay97W z9qr%e8S&wvr%pj0T7-Z_#5_uH!1_&Y^%J|6x&2%jYyYOIUu!+3#6hl8xoD?xeWl0Y zAE)~Hl-;)zLtv_WeE3FSs)Q})W@Gr@d~yOE%~Se%)=8sl<(aWep5qqFbLs+lPM^oK zeoIEX`Wfv}KjYl$CuNTM8DFY?{-uPU#~(;p$B*ICo@!FR$xk)&8+19I+92Ql<77^6 z$}VOB3G7ZhDV|Sx`07p3d2;ZsyEmmt`P$ufK;5M9q_7|GzYVoqoW<4x_Rm;3g)@@n zRp_FNItMOxGO3&u2LUZv>+kvhk(2v<@cohetBU++SdSaU&gP;et&@9r|kFr{2sO6M-bjPJ4`pfwf1`? zzN0bm-%hhw0lYd(x^L^xJv%|84QT^2huo%=@vbcnSDV;8CC*Xag1l@^=frHv$uYu|O)22n>`a zXnzC#02~E=1MCHM0Y3(|1OEQsu9_wFxPpde*Gev~MWaT5q%FOlfUhQL`Fe zuN2?a5{@&WdU@TQq(CR;+PZZjgRWk%qS-UEp~*v-|4Uj|H+Xnmr6nX(*Q{#2v$}3w z16;3aZClae`D$%b6a9a}tU6D{`c_Zfs(B5o>SnY;T_~-dMN7qx~%L zj=HA0npO)<)2`Qwo7S|}mDa4TZK~6flPc;wuC}_>aCMsxx@=qmU~|Ov9ShT5;l>x|+80oV7=e*vaY3}em&1t(lmQ@{Tgr@ z#g+UkUbDKEG_P4*R@1stdq+aH5nUAXj!1b{)UB#%*4MPq9(23pqE3WXcz$XqzD{zZ ztzkvo>@~#VX<5^RHLlBy_$IziF?llW_D)vFfL zsBNoiJY{56&7F{IwsC$F`N?HLIFyTI!-rM(a(y!_zc> z_1cEjwb~JhXI{gKm5L!vyLE{7NbzfnlIE|bwb4|h-PJWqv5fM?q@E`we!9NH`;PDrKMm%Z33r}d8z%ZW$M;_KR zfn*zcA4NCvWxxfj0KNtM2-pW41O5&qElAKN151D)@G|fk@E-6n z;N(WmJfH^f13v)v0lx!207iU+`4>&E1J41y z!0&+%fw7Adw5fm_SPA%m{{a3Acm+5Nyax;dmn41lRXIZzMW4Lkrm1^gV~UR+GQ zB%$Dtq7BoAYYuIMHc}g+8f-%~~+9g`LmZ6Q+zNBSpmui=3mup$tIPD7U zN-bNvO1oOSM$6I0Yu7S^nV?;#eMOt7P162F`>OUeZ8Ed18?;<)iZ)fdQM*aY)AF@x zT7g!G4TYPzh`LCdq1~btYbBaXo2kvxO10VAt<1ybXl2@5MrOBGuHB(kX!ErBS|!E_ z7ibH$Z)l5{`7P0wYSr2@twvj}t7+O^Hvy_!$!(EQqc+P9b;1hg(B6I-;PcE9$3wpDvj z`&aED?P2W^=2!owJ*ItI`*-a>w8yn=+IO_?YENiSYTwhI(za_)YyYWzUwcOTf%Ze~ zM_NFeO9a4xlF_Bm{FZy0R#u-I*aaP#_cJd&5BJlYn`#l+L*B6;)*SA9);`6(w(isO>a+dYs##N6g%#nXw(c_=)jG{i zQ3Ns8jb+)Img?0tEOTtE3%JO#guId2S4(vb(|?wL5$rGK$3m!@h1~f>=Xl7fEP@pC zE*w`cU(;G$Ti3dxrJ>ow)ZRw>Jg*gNR@XP&`Duio>+7j$SWTiEYCj`{&&46*nd(p^0_DX9WI#!;kNLR0_}Okd)iG{lcd^O7u5WPiA3{utFAdpT_DJLAv=(Z29~#_ zM#%=wBfqf6XEhu<>d!;5YG|Z05TZ|Wsjji59x=?>_50I(&hKxAqPRc>i}8$Y?4R%4 z+FVyxdwwda&vRc@v#z?Kbxn114I(H{bt{6ISh6qR{TY;>;40wr-!qgT8QSnhS0p`^PHo7=Q*LA@7`SF(c@T^u+Me;qJ5{t z_J73vqTQw)^#2LngIG6q=&P=2UD41Gn_BwZ&qMj5{pAN=TP zL<{Wm9n}yh62@plilg~FZ%e2fVJn{Wv;59!81aN(#PjnQv%|O$T5I*t&^*NX1zp#8 znwz{*8CnpPBjj#@w5e%1-AI)1i=%vQ7@vwD(#1%G@$azI;%)X=#U7b$4xxTQ?{g;% zYW}anJ=Z60p>ocw_Otw?F4#=2Ma)lajxhN}d@g_-bz0M07i|{jzT3lE_1XrHUfsrY zw7DT#%?0Myj$w(?Z6}HypW69**Jf-)naXVT*w2N{dwV@?d3;XC`VV4Bs~T$)lpwZBm~+m|IcLrq#MTC}hguTEQb9xr8hdCEdn{E;Xb_~e z6b({>P}(4NDq;&wsil@ni<{r~ys72a+xz+4`_KK$yr1uT)|vCnGtV~XnK!|t=*7eT z!>dk*3ZwkLtNU-Rj_&nJuU^V*bkyIT9x>$Ay}kaTo&V{zm(O^;!fPl0Rr*H^`PXyK z!+RmoQfMh&@aZpS@!spdE6$rTrzAFX^PB@D0P(;CAOZ*h{D5cvSi}pQ12Ta$AQgxO z1^|A558ws31NZ#gJTrheAR6ch1OR?ORRAy2JaZbL9Uv7*1`>c#KoC#?c=myt=Vc%Z zNC#4Z2%sb23E+jC=fnEA4x|7B0KBI2JXa6T2I7DLKoIbxF3tlJfDqtCzp<>qRk|Q; zG&E+oPp2V$!;!Fp$N%3J=ij&m0nR^Yqktda3wQyg0e9e;2)+XOKn{=%WCCfxCLkGD z3cTJ{B90S)IKb(Vvu0ASrP_ucm#t}=@{`zvo}9j&tOWSan=d&{>)Hc0vEz_Nh>**%`uzFv7&Tkl(w1BNX; zyP#>A;xp@STpsZIo}|Fr6U)t>IB7?~9^>?yV+F0MkJ@)KVCcci3BOD@++yeal*Z{( z26d{-XFiU+9NQ%Q;;h`?mp#2TZhgC^D{qXvmUX{=qqvE60_%CcxBki3p4Sd!{tahp5DmfO|KK6|Ip%o4ljO{w@a(Dt=g|H4<-y*WPR1AA=h%DnWxvCXqD zcCz|>S|Y1f$C$|lb0?Z}|Iob0^r_uc$VfG6OgpYlYOyHI?fF?fCqAT9mCgCrrmiWb zAB=0(q~!L`M<^E>YSOT(Cu&^~@3flJjj#D^cSe_=R!>^9YMXd!X8e&+h7;oRPb4?9=>%)t3Jp->u7BV^8qpnqF-_3h(`V^6ZTz633R! z^Uqyz^u!_ei)+rk`QodkFG01Q{A<+Z*4=JtGr@Y#Z(wj9f|>?jH?m z!f=E|7bp>EsW);f!|~nF)p}uji%}DqxIdp0h`Wa)OXEC05_AkidqZ6Ho5C^{wh@I^ zqtLpKi=rrOV_f$;cRMuupyp7ViN<}sUDW#^C)5GiBOhdcoR&x8DNe4($5q3}MOEP$ zhw?ryiZ$f5UeVS0&l<1j5zq?)h{#(t1e}kPxpGQFwX{fWhnNeT(moUDIB%o z2nu|VD{F)P`=I?6$dUzNZzQO8X!ddO$>D1lp5btyp+gRGULX8FdOG4tm@9KO7~3dh z&9D#x#i1-3lxoP|HNq%3pN61#2xw{OYP&zqJH2&yIs~}qEuYB~LD0=gW| z^u;w9Ubyi3P!}Kj;EsPMuP@q1HRK{4xp3NjRqwCT@q(JalMNrV;pkW-=;;G$oZh`o zSD@>9XPl3E+3Q!@=Z5^LV-yNU#NlY+*u9cV5BE)fV>M9aP5Iw&00!T&`9Z=QVX2TL zIL7fFj+3MmDOK7erAg`d5k{tTNXnA3rBl*5DMz|2%LcFr7R^Sn2`rAqvjjGWC9=hADNAC>EQO`AO>8SmW9d$C8|sEN0Qf19 znQcZ}qpaT?hZ6}OSj5e(93do>EFxc$EhLvvp|Q|im?eB6tQ5WyN{i)1Z?UeZh;76O zakw}}oG8YNtHm^NpLkjrzcs7MuR(PrRK2ilE>fj2|x zNIH>Dq0{J0I+re>pVMV@CEY+bv+e9SJHw{S%j8w^J^7K`R_UnRQ64CzRYC2o_E(eD zb?Q&*uj+5AH&^)pKAtm8)7ooYv`{Tvo3Aa=JoIXMpx#RNGX$ft(cM^V>^CkN?xu%X z)f7#|j5XJr8_i$L%2su2q&3G{V5M8ftW(w#tE^qgR_xw(e>>jZWN)+2*iRk4OaQ#75wqB{miNh}q&9@rGDdsw63rA+?l(r4Xr?^ru$oyBR*bdL+GiD5 z{`PcxoqfaU{~WAX#>SIWBy|WQ8i^+VAWsPq+6#k(NN7;9utUfd+{N1B2Vw_tu$Ukw ziQkHs#NtwQ$yW-J7D(REk2pFDW4x8_fP@Q7W?flNHk!?38SDVdXSZ1?xvJb&?kLB| zvGO8$gM3`RC0|soD(-4^)mLq*wp0hJQR)}!CAB1P$2;?3JeE)7JNXm-oY&CmXf3o} zT3;Bsed>cxz5Mjf+(ImbM2=9+I=A6TlDVf|p8v8vjt z{f(Vw-*x($RJd-j3@J}Kk;&wHl1F|aUV{9Dtjq4l~84zGFdsVKt#7PGHnpSe(e@SFZ4>+q za;O|H?~wE5vPwH;zj9frss^i* zp-WrTVmyoA<;B52TWh7Y)k0ic{6vccC&y}&v@O~$?Fa3YmaE;>3bazXr(Q{aU$3b* z*Ms$s^?~|GeXKrD|3Y7eU%^pTrQ%n);mIo(`rt}(ZoC(SEnK4kKVS=92de5?jme@Nvj^nJUv z-#Ttxwr)XFi`pJ`RlBzRfvww}?e6v54E#0%JgNc7 zZA99TaPkQmMW&MZWC=+p`^Zsp3x7s$3Vgse;d`N|=phD)v&DsCs<>I)F6N5Y#C)-+ z96EW`l;SnB5C1B;s!pc$F0y-N*r^1#c!IJH!2k15W5BikW zV2m|pAF+0M%7%ov2P%=RwZDR5z*H z)II7UHCsKeUQzF;57g&s30{W3$E$NcE^wU(@*v&``u_>EVIrTw6ZulUntuhY*aKT| zg8#&?@mtW40$y6Hq*d4IYD7~tQw!AEX&*ydBD4`0<>}g7ZMl{LYq3MyhtWQ(rA&W>K*hDy|+F{AFjvhar#_nSdwe(ck27}WBMsQSN~bRt3Sb# zFb|`Q;bqh?>Kme=8BHM#?TwF(K1PHQZOk+hjbvk;vEA5Z9D-E*WLz?SHOfFgnHglZ zGy9owu+fJh4Y$qW*1J}H%dP%GS;WX-b{S$kox&s%q`hn9ye*~Zz7WxB#4YA<6yZrlOM??@)!%*N(j}2dV;^uL>Mf5E_^3k7sAC) z#OWCSGvWoYf>clPhc?ZU=1V1MB`Q-JX{(i*iu$R8_Tw+F1=(qt(yUg&56rHA_9G=Bp2}Y_1Hi%B8@w5nQd%})!^IzTVSYjd;(+6HZ#b^v2^QM;}^)ynI2bgF-- zch>vpqxE=wfqq860PYttY8rKoNyZN2dxL|cpP5UbQ^hUG`pD{MC0XmSSg*JpYKPki z_FVg>?RFXKqQN$I;sIWDBfZFQ@)=2h{mUXx5CgOjf?)qf36q6Y!Vf|Nk%%GUWO1js zN4zE86B|gqrCo@ZPD(eWyHZcupN^s95z`!}A~V?_HW{949XroT%VpuYg5-2L3)cM) zxj?S13{gfYlavG{L-|4Z36`lqsRpj~R>#6Bu7*WC&#OUR*J;PJe65cjrBBhnK_7pH zjVWWOMl&PQm}C5A3^m7_$IT*E7i*vuY5izDvhLVUK=%ZF@+M752l(n^mo&g_r#YV4Dia6r$R+mutu-+KQM6wOG?m4L; zbP>i1iNadMB-aqj$)YX}fWMw3u7bV$4z}*DSXUwvhYuMk&4Xv#j!5pl^ceno0G*E5 z^fp}wf9)Zckq60Icf$_Ax``o79l3)ZZc`i+{V=Bn4#o2nE{L(OGmMT|w8n;*E&0PVdvlv5xa!3A#6As3wu6`En+JWU2kT)SSHJ2r`bhzlig*%v!bvI<>e}J zJ$PV64v<^Q?c}acT&$N@Jy!(njf^^icXiV`7x?E`Bdkl9Uu>v$6v|{i2eOIN3vO2&>Zsu~IL!uR2xT zfDy=1tMht1fOq6yLZ6QD+x&NKYs0hzSP>6h(A(%c^#^(*#L7L5>Bbi0obk5li70WB znPPrr7PBhB2e-32W0o-1x@lFheIRWk>@oHddj%rIy@fHNPZ766kU4i!fk-5dq>$Z+ zir+;{tRhP60^2c8xFB2>e8d$ZkxbeIT>pY@gopG)#5A4FX4en{o|g^uqB{5G25-!} z^1(a`9_@2zQwG1p^Y~lZyIN~)f;JES>54|+k*?|q#(cy{YmB|dJEkvmMTfQPYDSsM zT-1LLn^3}f+p6q}BqYnQ!mL47l(pPSv9=+O@UR;oc8Ijc+o^V@{mgcpMkr*>v4i!Y zKP^cJG-xOy-b9i_){qTkCt|H1$VqYmk>Ri85&46-3-1UO;Y;cWjRY!Ku$66v5Xj{? zVWu!&SRt$yz81a_4hmVWnLsWg$hXA`Vm;Ac3>G_yBgI(g-!^f-cv3tkK6A|n+DikZ z&oB>ICar=7W=KCuKS6@aP+!cOM$m8JeeP0sR+&v=pRtXY)0LOK|P;c2K(jPvoYT(BIL$V9!*& z9pb_m#0IHGeN!^y&5c&3m2EA9tUy2lus$D~ZRC)UjaktrVri+e6f4D}uRA3tlJbXM z_JCFnqobjfi!cL9r3aypCon(G#r*gdbnf$jc>pX|H0Br+5ECcJiSlB3tDNS%5{$&}TCpib zN)u1Wu@|XIe26csjvr>kl&HiY0VEJI5k!JXM@U9@%#-_)0hkd+LPAE7STX^!9}mAd z2lBEQmMV!PLl;uXCbE^JA>zy+ndA`cS2j6C&XF8)8B&xFIl4z4l6WBjbE!mOvFnXQ xGUEAEVH5mRnvjl}WG3d4S>V|z%qDZ7NqOKNh<#JuaNrFG-f-Xz2mUJ#{2#cHQ(OQ5 literal 0 HcmV?d00001 diff --git a/main.aardio b/main.aardio new file mode 100644 index 0000000..56a9299 --- /dev/null +++ b/main.aardio @@ -0,0 +1,123 @@ +import win.ui; +/*DSG{{*/ +mainForm = win.form(text="CAN_Bootloader";right=599;bottom=399;border="dialog frame";max=false) +mainForm.add( +btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4}; +btnFlash={cls="button";text="开始刷写";left=152;top=180;right=272;bottom=205;z=10}; +btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2}; +btnOpen={cls="button";text="打开文件";left=31;top=180;right=131;bottom=206;z=9}; +btnReadF186={cls="button";text="读取当前会话";left=19;top=293;right=118;bottom=321;z=14}; +btnReadHw={cls="button";text="读取硬件版本号";left=17;top=263;right=116;bottom=291;z=13}; +btnReadSw={cls="button";text="读取软件版本号";left=17;top=233;right=116;bottom=261;z=11}; +btnTest={cls="button";text="测试";left=173;top=355;right=272;bottom=383;z=12}; +cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=3}; +cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=1}; +edFile={cls="edit";left=27;top=141;right=281;bottom=165;edge=1;readonly=1;z=8}; +edit={cls="edit";left=296;top=8;right=582;bottom=383;edge=1;multiline=1;z=5}; +static={cls="static";text="设备";left=1;top=28;right=61;bottom=52;align="center";center=1;transparent=1;z=6}; +static2={cls="static";text="通道";left=1;top=66;right=61;bottom=90;align="center";center=1;transparent=1;z=7} +) +/*}}*/ + +import win; +import usb2canfd; + + +Display = function(str){ + mainForm.edit.print(tostring(time()) + " " + str); +} + + + +CANHw = usb2canfd.USB2CANHW(); +var ret = CANHw.LoadDll(); +if(ret == 0){ + Display("DLL加载成功"); +} + + + +mainForm.cbbChannel.add("通道1"); +mainForm.cbbChannel.add("通道2"); +mainForm.cbbChannel.selIndex = 1 + + +mainForm.btnFresh.oncommand = function(id,event){ + mainForm.cbbDev.clear(); + var hwnum = CANHw.FlashHw(); + if(hwnum == 0){ + mainForm.cbbDev.text = "未找到硬件" + } + else { + var allhw = CANHw.GetAvailableHW(); + for(i=1;#allhw;1){ + mainForm.cbbDev.add(allhw[i].name); + } + } + mainForm.cbbDev.selIndex = 1 + ::PostThreadMessage(thrdId,100,0,0)//自定义消息 +} + +mainForm.btnConnect.oncommand = function(id,event){ + ::PostThreadMessage(thrdId,101,mainForm.cbbDev.selIndex,mainForm.cbbChannel.selIndex - 1)//自定义消息 + /* + var ret = CANHw.OpenDevice(mainForm.cbbDev.selIndex,mainForm.cbbChannel.selIndex - 1);//通道为0和1 + if(ret == 0){ + Display("连接成功"); + } + else { + Display("连接失败"); + } + */ +} + +//CAN通讯线程 +import thread.command; +var listener = thread.command(); +listener.$Display = function(str){ + Display(str); +} + +//线程函数 +var CanThread = function(){ + + //线程函数内部要添加自已的import语句 + import win; + import console; + console.log("线程开始运行") + loadcodex("\user\CanThread.aardio");//加载线程程序 + //在子线程启动消息循环 + win.loopMessage(FuncLoopMsg) +} +var DiagReadDID = function(did){ + ::PostThreadMessage(thrdId,110,did,0)//自定义消息 +} +var Diag10Req = function(num){ + ::PostThreadMessage(thrdId,111,num,0)//自定义消息 +} + + +mainForm.btnReadSw.oncommand = function(id,event){ + DiagReadDID(0xF195); +} + + +mainForm.btnReadHw.oncommand = function(id,event){ + DiagReadDID(0xF192); +} + +mainForm.btnReadF186.oncommand = function(id,event){ + DiagReadDID(0xF186); +} + +mainForm.btnTest.oncommand = function(id,event){ + Diag10Req(0x03); +} + +thrdHandle,thrdId = thread.create( CanThread ) + + + + +mainForm.show(); +return win.loopMessage(); \ No newline at end of file diff --git a/user/CanThread.aardio b/user/CanThread.aardio new file mode 100644 index 0000000..81889b1 --- /dev/null +++ b/user/CanThread.aardio @@ -0,0 +1,196 @@ +import usb2canfd; +import thread.command; +import win.timer; +//初始化CAN句柄对象 +CANHw = usb2canfd.USB2CANHW(); +CANHw.LoadDll(); + +DiagReqID = 0x18dadff1; +DiagRespID = 0x18daf1df; + +//注册一个消息钩子函数 +FuncLoopMsg = function(msg){ + //console.log( "收到消息",msg.message ); + //console.dumpJson(msg); + select(msg.message) { + case 100 {//刷新硬件 + FuncFreshHw(); + } + case 101 { + FuncConnect(msg.wParam,msg.lParam); + } + case 102 { + FuncBootload(); + } + case 103 { + FuncStop(); + } + case 110 {//readDID + FuncReadDID(msg.wParam); + } + case 111 { + FuncReq10(msg.wParam); + } + case 112 { + FuncReq28(msg.wParam); + } + case 113 { + FuncReq85(msg.wParam); + } + case 114 { + FuncReq27(msg.wParam); + } + else { + + } + } +} + + + + +FuncFreshHw = function(){ + var hwnum = CANHw.FlashHw(); + if(hwnum == 0){ + //mainForm.cbbDev.text = "未找到硬件" + } + else { + FuncDisplay("找到硬件") + } +} + +FuncConnect = function(dev,chn){ + var ret = CANHw.OpenDevice(dev,chn); + if(ret == 0){ + FuncDisplay("连接成功"); + } + else { + FuncDisplay("连接失败"); + } +} + +FuncDisplay = function(str){ + thread.command.$Display(str);//"线程" + +} + + +loadcodex("\user\Diag10code.aardio"); +loadcodex("\user\Diag22code.aardio"); +loadcodex("\user\Diag85code.aardio"); +loadcodex("\user\Diag28code.aardio"); +loadcodex("\user\Diag7Fcode.aardio"); + +var RespState = 0; + +FuncDiagPro = function(diagmsg){ + //console.log("诊断服务") + //console.dumpJson(diagmsg); + select(diagmsg.sid) { + case 0x50 { + FuncDiag10Pro(table.slice(diagmsg.data,1,diagmsg.len)) + } + case 0x62 { + FuncDiag22Pro(table.slice(diagmsg.data,1,diagmsg.len)) + } + case 0x67 { + } + case 0x74 { + } + case 0x76 { + } + case 0x68 { + FuncDiag28Pro(table.slice(diagmsg.data,1,diagmsg.len)) + } + case 0xC5 { + FuncDiag85Pro(table.slice(diagmsg.data,1,diagmsg.len)) + } + case 0x7F { + FuncDiag7FPro(table.slice(diagmsg.data,1,diagmsg.len)) + } + else { + } + } + RespState = diagmsg.sid; +} + +FuncStop = function(){ + stopflag = 1; +} + +FuncWait = function(sid){ + for(i=1;40;1){ + sleep(100); + if(RespState == (sid + 0x40)){//正响应 + return 0; + } + errsid,errnrc = FuncGetNrc() + if(errsid == sid){ + if(errnrc == 0x78){ + FuncClrNrc();//等待 + i = 1; + } + else { + return 1; //负响应 + } + + } + } + +} + + +FuncBootload = function(){ + +} + + + + +timer1 = win.timer(,1); +diagresp = {} +timer1.onTimer = function(){ + if(CANHw.isConnected() == false){ + return; + } + ret = CANHw.GetMsg(); + for(i=1;#ret;1){ + //console.log("id = " + tostring(ret[i].id)) + if(ret[i].id&0x7FFFFFFF == DiagRespID){ + if(ret[i].data[1] == 0x10){//首帧 + var data = {0x30,0x00,0x14,0x00,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + diagresp["sid"] = ret[i].data[3]; + diagresp["len"] = ret[i].data[2]-1; + diagresp["data"] = {}; + diagresp["next"] = 0x21; + table.append(diagresp["data"],table.slice(ret[i].data,4)); + } + elseif(ret[i].data[1] <= 0x06){ + //console.dumpJson() + diagresp["sid"] = ret[i].data[2]; + diagresp["len"] = ret[i].data[1]-1; + diagresp["data"] = table.slice(ret[i].data,3); + FuncDiagPro(diagresp); + } + elseif(ret[i].data[1] >= 0x21){ + if(ret[i].data[1] == diagresp["next"]){ + diagresp["next"] += 1; + if(diagresp["next"] >= 0x2F){ + diagresp["next"] = 0x20; + } + table.append(diagresp["data"],table.slice(ret[i].data,2)); + if(#diagresp["data"] >= diagresp["len"]){ + FuncDiagPro(diagresp); + } + } + } + + + } + } + +} +timer1.enable(); +FuncDisplay("正在运行"); + + diff --git a/user/Diag10code.aardio b/user/Diag10code.aardio new file mode 100644 index 0000000..b1cde35 --- /dev/null +++ b/user/Diag10code.aardio @@ -0,0 +1,26 @@ + +//发送 +FuncReq10 = function(num){ + if(num >= 1 && num <= 3){ + var data = {0x02,0x10,num,0,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + } + +} +//接收 +FuncDiag10Pro = function(data){ + //console.dumpJson(data); + select(data[1]) { + case 1 { + FuncDisplay("进入默认会话") + } + case 2 { + FuncDisplay("进入boot会话") + } + case 3 { + FuncDisplay("进入扩展会话") + } + else { + } + } +} diff --git a/user/Diag22code.aardio b/user/Diag22code.aardio new file mode 100644 index 0000000..4a33976 --- /dev/null +++ b/user/Diag22code.aardio @@ -0,0 +1,38 @@ +var diag22state = 0; +//发送 +FuncReadDID = function(did){ + if(CANHw.isConnected() == false){ + return; + } + var data = {0x03,0x22,did>>8,did&0xff,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + diag22state = 1; +} + +//接收 +FuncDiag22Pro = function(data){ + //console.log("诊断22服务") + if(#data < 3){ + return; + } + var did = (data[1]<<8) + data[2]; + select(did) { + case 0xF192 { + FuncDisplay("硬件版本号"); + FuncDisplay(string.pack(table.slice(data,3))); + } + case 0xF195 { + FuncDisplay("软件版本号"); + FuncDisplay(string.pack(table.slice(data,3))); + } + case 0xF186 { + FuncDisplay("当前会话: " + tostring(data[3])); + + } + case !=0 { + } + else { + } + } + +} \ No newline at end of file diff --git a/user/Diag27code.aardio b/user/Diag27code.aardio new file mode 100644 index 0000000..0c647e9 --- /dev/null +++ b/user/Diag27code.aardio @@ -0,0 +1,25 @@ +//发送 +FuncReq27 = function(num){ + if(num >= 1 && num <= 3){ + var data = {0x02,0x28,num,0,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + } + +} +//接收 +FuncDiag27Pro = function(data){ + //console.dumpJson(data); + select(data[1]) { + case 1 { + FuncDisplay("使能接收,禁能发送") + } + case 2 { + FuncDisplay("28 - TDB02") + } + case 3 { + FuncDisplay("28 - TDB03") + } + else { + } + } +} \ No newline at end of file diff --git a/user/Diag28code.aardio b/user/Diag28code.aardio new file mode 100644 index 0000000..e1ba67b --- /dev/null +++ b/user/Diag28code.aardio @@ -0,0 +1,26 @@ + +//发送 +FuncReq28 = function(num){ + if(num >= 1 && num <= 3){ + var data = {0x02,0x28,num,0,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + } + +} +//接收 +FuncDiag28Pro = function(data){ + //console.dumpJson(data); + select(data[1]) { + case 1 { + FuncDisplay("使能接收,禁能发送") + } + case 2 { + FuncDisplay("28 - TDB02") + } + case 3 { + FuncDisplay("28 - TDB03") + } + else { + } + } +} \ No newline at end of file diff --git a/user/Diag7Fcode.aardio b/user/Diag7Fcode.aardio new file mode 100644 index 0000000..d1d9fe5 --- /dev/null +++ b/user/Diag7Fcode.aardio @@ -0,0 +1,25 @@ + +var errSID=0,errNRC=0; +FuncGetNrc = function(){ + return errSID,errNRC; +} +FuncClrNrc = function(){ + //return errSID,errNRC; + errSID = 0; + errNRC = 0; +} + +//接收 +FuncDiag7FPro = function(data){ + //console.dumpJson(data); + select(data[2]) { + case 0x78 { + FuncDisplay("服务正忙") + } + else { + FuncDisplay("错误") + } + } + errSID = data[1]; + errNRC = data[2]; +} \ No newline at end of file diff --git a/user/Diag85code.aardio b/user/Diag85code.aardio new file mode 100644 index 0000000..b3975b0 --- /dev/null +++ b/user/Diag85code.aardio @@ -0,0 +1,27 @@ + +//发送 +FuncReq85 = function(num){ + if(num >= 1 && num <= 3){ + var data = {0x02,0x85,num,0,0,0,0,0}; + CANHw.SendMsg(DiagReqID,data); + } + +} +//接收 +FuncDiag85Pro = function(data){ + //console.dumpJson(data); + select(data[1]) { + case 0x01 { + FuncDisplay("DTC - 01") + } + case 0x02 { + FuncDisplay("DTC禁能") + } + case 3 { + FuncDisplay("DTC - 01") + } + else { + FuncDisplay("DTC - TDB") + } + } +} \ No newline at end of file