Commit 3d903a46 authored by 崔立宝's avatar 崔立宝

Merge branch 'LBW' into 'dev'

Lbw

See merge request !7
parents cb75a710 071055e0
/code/EF01_Data
/code/bin
......@@ -58,7 +58,7 @@ These capabilities are defined as follows.
to send, before waiting for an authorization to continue transmission of the
following N_PDUs.
-----------------------------------------------------------------------------*/
#define N_MAX_BS 8
#define N_MAX_BS 0
/*-----------------------------------------------------------------------------
— SeparationTime minimum (STmin): The minimum time the sender is to wait
......
......@@ -198,7 +198,7 @@ RoutineControl
#define stopRoutine 0x02
#define requestRoutineResults 0x03
#define MaintenanceReset 0x62F1
#define MaintenanceReset 0xE420
#define CheckMemory 0x0202
#define CheckProgrammingPreconditions 0x0203
#define ECU_selftest 0xDF01
......@@ -385,7 +385,7 @@ typedef union
#define DTCNoTestThisCycle 0x40
#define DTCNoError 0xFE
#define AgeingCount 39
#define AgeingCount 40
typedef union
{
......@@ -489,4 +489,6 @@ uint8_t Write_Base_DATA_FROM_FLASH(uint32_t Adrr, uint8_t *Data,uint8_t len);
uint8_t ReadDFlashData(uint32_t u8BlockNum, uint32_t u32Data[], uint16_t u16Len, InitFunction initFunction);
void Ser2EToDFlashInfoInit(void);
void ReadAllDflashData(void);
void DTCAgeing(void);
void UDS_KL15_init(void);
#endif
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/******************************************************************************
文 件 名:CLOCK.c
功能描述:时钟系统初始化库文件
作 者:张暄
版 本:V1.0
日 期:2016.11.2
?? ?? ????CLOCK.c
?????????????????????????
?? ???????
?? ????V1.0
?? ???2016.11.2
******************************************************************************/
#include "CRG.h"
......@@ -23,24 +23,24 @@ extern void Data_Mileage_Rolling_Counter_Update_ISR(void);
extern void Data_Fuel_Consumption_Count_ISR(void);
/******************************************************************************
函数名:WDT_Init
功 能:看门狗初始化
参 数:无
返回值:无
????????WDT_Init
?? ?????????????
?? ??????
?????????
******************************************************************************/
void WDT_Init(void)
{
//配置看门狗
//????????
wdt_reset();
COPCTL = WDT_PERIOD; //配置看门狗定时周期
// PLLCTL_PCE = 1; //看门狗在Pseudo Stop模式下持续运行
COPCTL = WDT_PERIOD; //???????????????
// PLLCTL_PCE = 1; //???????Pseudo Stop???????????
}
/******************************************************************************
函数名:Clock_Init
功 能:时钟系统初始化
参 数:无
返回值:无
????????Clock_Init
?? ?????????????
?? ??????
?????????
******************************************************************************/
void Clock_Init(void)
{
......@@ -53,10 +53,10 @@ void Clock_Init(void)
uint8_t Result; ;
//使用OSCCLK作为系统时钟
//???OSCCLK????????
CLKSEL = 0x00;
//计算时钟配置寄存器值
//???????????????
Result = 0;
REFDIVVal = 0;
while ((REFDIVVal < 64) && (Result == 0))
......@@ -88,7 +88,7 @@ void Clock_Init(void)
if (POSTDIVVal == 0)
{
/*========================================================
当POSTDIV为0时,fPLL等于fVCO
??POSTDIV?0?,fPLL????fVCO
fPLL fVCO
fPLL = fVCO fBUS = ------ = ------
2 2
......@@ -101,7 +101,7 @@ void Clock_Init(void)
else
{
/*========================================================
当POSTDIV不为0时
??POSTDIV???0?
fVCO fPLL fVCO
fPLL = ------------- fBUS = ------ = -------------
2 x POSTDIV 2 4 x POSTDIV
......@@ -123,9 +123,9 @@ void Clock_Init(void)
REFDIVVal++;
}
while (Result == 0); //无法生成所需的BUSCLK,在这里停机
while (Result == 0); //????????????BUSCLK,?????????
//设置时钟配置寄存器
//??????????????
PLLCTL_SCME = 0;
PLLCTL_CME = 1;
......@@ -147,7 +147,7 @@ void Clock_Init(void)
POSTDIV = POSTDIVVal;
while (!CRGFLG_LOCK); //等待 fVCO 输出稳定
while (!CRGFLG_LOCK); //??? fVCO ??????
while (!FSTAT_CCIF); /* wait for FTM reset to complete */
......@@ -157,33 +157,33 @@ void Clock_Init(void)
//FPROT = 0x9C; // Protect 0x7F_C000 to 0x7F_FFFF (pages FD and FF)
DFPROT = 0xFF; /* Disable any protection set on DFlash */
CLKSEL_PLLSEL = 1; //选择PLLCLK作为系统时钟
CLKSEL_PLLSEL = 1; //???PLLCLK????????
#if CRG_USE_PSEUDO_STOP_MODE
CLKSEL_PSTP = 1; //Oscillator在Stop模式下持续运行(Pseudo Stop)
CLKSEL_PSTP = 1; //Oscillator??Stop???????????(Pseudo Stop)
#else
CLKSEL_PSTP = 0; //Oscillator在Stop模式下停止运行(Full Stop)
CLKSEL_PSTP = 0; //Oscillator??Stop??????????(Full Stop)
#endif
CRG_STOP_MODE = 0; //系统正常运行,不在停机模式
CRG_STOP_MODE = 0; //??????????,?????????
}
/******************************************************************************
函数名:Enter_Stop_Mode
功 能:进入停机模式
参 数:无
返回值:无
????????Enter_Stop_Mode
?? ????????????
?? ??????
?????????
******************************************************************************/
void Enter_Stop_Mode(void)
{
CRG_STOP_MODE = 1; //进入停机模式
CRG_STOP_MODE = 1; //?????????
asm ANDCC #0x7F;
asm STOP;
}
/******************************************************************************
函数名:RTI_Init
功 能:初始化RTI
参 数:无
返回值:无
????????RTI_Init
?? ????????RTI
?? ??????
?????????
******************************************************************************/
void RTI_Init(void)
{
......@@ -199,25 +199,25 @@ void RTI_Init(void)
RealTimeClock.LeapYear = Determine_Leap_Year(RealTimeClock.Year);
PLLCTL_PRE = 1; //1 RTI continues running during Pseudo Stop Mode.
//Real Time 时钟频率设置
//Real Time ??????????
RTICTL = 0xDF; //Real Time = 8M / 800000 = 10HZ (100MS)
CRGINT_RTIE = 1; //开Real Time 中断
CRGINT_RTIE = 1; //??Real Time ??
}
/******************************************************************************
函数名:RTI_Timing_Service
功 能:RTI实时计时服务
参 数:无
返回值:无
????????RTI_Timing_Service
?? ???RTI?????????
?? ??????
?????????
*******************************************************************************
注 意:该服务函数必须每100ms被调用一次
? ?????????????100ms?????????
******************************************************************************/
void RTI_Timing_Service(void)
{
uint16_t Counter;
uint16_t SecInc;
if (RealTimeClock.Year != RealTimeClock.BackupYear) //曾经修改过年
if (RealTimeClock.Year != RealTimeClock.BackupYear) //??????????
{
RealTimeClock.LeapYear = Determine_Leap_Year(RealTimeClock.Year);
RealTimeClock.BackupYear = RealTimeClock.Year;
......@@ -309,10 +309,10 @@ void RTI_Timing_Service(void)
}
/******************************************************************************
函数名:Determine_Leap_Year
功 能:闰年检测
参 数:Year:年
返回值:1 - 是闰年 0 -不是闰年
????????Determine_Leap_Year
?? ?????????
?? ????Year????
???????1 - ?????? 0 -????????
******************************************************************************/
uint8_t Determine_Leap_Year(uint16_t Year)
{
......@@ -333,12 +333,12 @@ extern uint8_t DiagnosticReceived;
#pragma CODE_SEG __NEAR_SEG NON_BANKED
/******************************************************************************
函数名:RTI_ISR
功 能:RTI中断服务函数
RTI每100ms发生中断后,其滚动计数器会自动加1
RTI中断还可以将处理器从睡眠中唤醒
参 数:无
返回值:无 2017年5月27日16:47:20
????????RTI_ISR
?? ???RTI???????
RTI?100ms???????,??????????????????1
RTI???????????????????????
?? ??????
????????? 2017??5??27??16:47:20
******************************************************************************/
void interrupt RTI_ISR(void)
......@@ -363,6 +363,6 @@ void interrupt RTI_ISR(void)
DiagnosticReceived--;
Data_Mileage_Rolling_Counter_Update_ISR();
CRGFLG_RTIF = 1; //通过写1清0中断标
CRGFLG_RTIF = 1; //???1??0???
}
#pragma CODE_SEG DEFAULT
/******************************************************************************
文 件 名:Communication_Over_CAN.h
功能描述:基于CAN总线的信号收发函数库头文件
作 者:张暄
版 本:V1.3
日 期:2017.5.31
?? ?? ????Communication_Over_CAN.h
??????????????CAN?????????????????????
?? ???????
?? ????V1.3
?? ???2017.5.31
******************************************************************************/
#ifndef _COMMUNICATION_OVER_CAN_
......@@ -15,35 +15,35 @@
#include "CAN_Communication_Matrix.h"
/******************************************************************************
CAN通信参数配置
CAN??????????
******************************************************************************/
#define CoCAN_RX_MSG_FIFO_MAX_DEPTH 16 //接收FIFO深度
#define CoCAN_MSG_NUM_CHECK 0 //报文数量检查(Debug用)
#define CoCAN_RX_MSG_FIFO_MAX_DEPTH 16 //????FIFO???
#define CoCAN_MSG_NUM_CHECK 0 //???????????(Debug??)
#define CoCAN_TOTAL_MSG_NUM (sizeof(CANMsgAttrTable) / sizeof(CANMsgAttrStruct))
/******************************************************************************
CAN通信收发使能状态
CAN???????????
******************************************************************************/
#define CoCAN_DISABLE 0
#define COCAN_PSEUDO_DISABLE 1
#define CoCAN_ENABLE 2
/******************************************************************************
CAN报文发送请求状态
CAN?????????????
******************************************************************************/
#define CoCAN_TX_IDLE 0
#define CoCAN_TX_REQ 1
#define CoCAN_TX_ON 2
/******************************************************************************
CAN报文发送请求状态
CAN?????????????
******************************************************************************/
#define CoCAN_MODE_NORMAL 0
#define CoCAN_MODE_INIT 1
/******************************************************************************
CAN报文发送FIFO结构
CAN???????FIFO??
******************************************************************************/
typedef struct
{
......@@ -54,7 +54,7 @@ typedef struct
} CoCANTxMsgFIFOStruct;
/******************************************************************************
CAN报文接收FIFO结构
CAN???????FIFO??
******************************************************************************/
typedef struct
{
......@@ -66,61 +66,61 @@ typedef struct
typedef struct
{
CoCANMsgStruct Msg[CoCAN_RX_MSG_FIFO_MAX_DEPTH];
uint8_t Iptr; //进队列位置
uint8_t Optr; //出队列位置
uint8_t Iptr; //????????
uint8_t Optr; //????????
uint8_t Depth;
} CoCANRxMsgFIFOStruct;
/******************************************************************************
CAN报文快速查找表结构
CAN?????????????
******************************************************************************/
/*** 发送报文查找表结构 ***/
/*** ????????????? ***/
typedef struct
{
uint32_t Identifier; //报文ID
uint16_t Offset; //报文发送时间偏移
uint16_t Cycle; //报文发送周期
uint8_t Rsvd; //保留
uint8_t Index; //发送报文对应在周期性报文表中的序号,0xFF表示非周期性报文
uint8_t TxReq; //发送请求
uint8_t DLC; //报文长度
volatile uint8_t *pMsg; //报文寄存器
const uint8_t *pInit; //报文初始化值
volatile uint8_t *pStatus; //状态寄存器
uint32_t Identifier; //????ID
uint16_t Offset; //?????????????
uint16_t Cycle; //???????????
uint8_t Rsvd; //????
uint8_t Index; //??????????????????????????,0xFF??????????????
uint8_t TxReq; //????????
uint8_t DLC; //???????
volatile uint8_t *pMsg; //????????
const uint8_t *pInit; //?????????
volatile uint8_t *pStatus; //???????
} CoCANTxMsgIDLookupStruct;
/*** 接收报文查找表结构 ***/
/*** ????????????? ***/
typedef struct
{
uint32_t Identifier; //报文ID
uint16_t Cycle; //报文超时周期,用于掉线判断
uint8_t Rsvd; //保留
uint8_t Index; //接收报文对应在周期性报文表中的序号,0xFF表示非周期性报文
uint8_t DLCMax; //报文最大长度
uint8_t DLCMin; //报文最小长度
volatile uint8_t *pMsg; //报文寄存器
const uint8_t *pInit; //报文初始化值
const uint8_t *pTimeOut; //报文掉线值
const uint8_t *pMask; //报文屏蔽位(决定某一位在掉线时是否更新为掉线值)
volatile uint8_t *pStatus; //状态寄存器
uint32_t Identifier; //????ID
uint16_t Cycle; //??????????,?????????
uint8_t Rsvd; //????
uint8_t Index; //??????????????????????????,0xFF??????????????
uint8_t DLCMax; //????????
uint8_t DLCMin; //??????????
volatile uint8_t *pMsg; //????????
const uint8_t *pInit; //?????????
const uint8_t *pTimeOut; //????????
const uint8_t *pMask; //????????(????????????????????????)
volatile uint8_t *pStatus; //???????
} CoCANRxMsgIDLookupStruct;
/******************************************************************************
CAN周期性报文管理结构
CAN??????????????
******************************************************************************/
typedef struct
{
uint8_t TxNum; //周期性发送报文数量
uint8_t TxIndex[CAN_TX_MSG_NUM]; //报文对应在发送报文查找表中的序号
uint16_t TxTimer[CAN_TX_MSG_NUM]; //发送报文定时器
uint8_t TxNum; //????????????????
uint8_t TxIndex[CAN_TX_MSG_NUM]; //?????????????????????????
uint16_t TxTimer[CAN_TX_MSG_NUM]; //???????????
uint8_t RxNum; //周期性发送报文数量
uint8_t RxIndex[CAN_RX_MSG_NUM]; //报文对应在发送报文查找表中的序号
uint16_t RxTimer[CAN_RX_MSG_NUM]; //接收报文定时器,用于掉线判断
uint8_t RxNum; //????????????????
uint8_t RxIndex[CAN_RX_MSG_NUM]; //???????????????????????
uint16_t RxTimer[CAN_RX_MSG_NUM]; //???????????,?????????
} CoCANCycleMsgStruct;
/******************************************************************************
CAN通信控制结构
CAN???????
******************************************************************************/
typedef struct
{
......@@ -132,9 +132,9 @@ typedef struct
}CoCANCtrlStruct;
extern CoCANCtrlStruct CoCANCtrl;
/******************************************************************************
函数声明
????????
******************************************************************************/
void CoCAN_L_Data_Indication(uint32_t Identifier, uint8_t DLC, uint8_t *Data); //必须由下一层函数引用
void CoCAN_L_Data_Indication(uint32_t Identifier, uint8_t DLC, uint8_t *Data); //?????????????????
#define CoCAN_L_Data_Request(Identifier, DLC, Data) MSCAN0_L_Data_Request(Identifier, DLC, Data, 2)
......@@ -147,7 +147,7 @@ void CoCAN_Tx_Enable(uint8_t En);
uint8_t CoCAN_Search_Tx_Msg(uint32_t Identifier);
uint8_t CoCAN_Search_Rx_Msg(uint32_t Identifier);
void CoCAN_Signal_Update_Service(void); //必须每1ms被调用一次
void CoCAN_Signal_Update_Service(void); //?????1ms?????????
void CoCAN_Transmit_Message(uint32_t Identifier);
void CoCAN_Modify_Tx_Msg_Cycle(uint32_t Identifier, uint16_t Cycle);
......
/******************************************************************************
文 件 名:main.h
功能描述:主程序文件
负责系统初始化、任务调试及电源管理
作 者:张暄
版 本:V1.0
日 期:2016.11.1
�� �� ����main.h
�����������������ļ�
����ϵͳ��ʼ����������Լ���Դ����
�� �ߣ�����
�� ����V1.0
�� �ڣ�2016.11.1
******************************************************************************/
//20210422 修改完友达屏时序
//20210621 修改软硬件版本号
//20220115 变更TFT背光频率(61194芯片换成9967芯片)
//20231114 TYW-2023-0695变更:增加天然气报警灯、天蓝液表改为天然气表
//20231122 修改波特率为500k
//20231204 取消RVM报警灯
//20231205 修改变更测出禅道问题:35470、35462、35101
//20231206 修改燃气表指针指示误差大问题
//20210422 �޸����Ѵ���ʱ��
//20210621 �޸���Ӳ���汾��
//20220115 ���TFT����Ƶ��(61194оƬ����9967оƬ)
//20231114 TYW-2023-0695�����������Ȼ�������ơ�����Һ����Ϊ��Ȼ����
//20231122 �޸IJ�����Ϊ500k
//20231204 ȡ��RVM������
//20231205 �޸ı������������⣺35470��35462��35101
//20231206 �޸�ȼ����ָ��ָʾ��������
//V00.10
//20240122 修改采样点,增加燃油外
//20240123 去掉油压关联配置,修改诊断软件版本号
//20240130 修改首帧报文外发时间(控制在200ms以内)
//20240201 修改需按OK键多次厂内大计才能清零问题(历史问题
//20240227 同步诊断修改,按追加变更单取消时钟和室外温度显
//20240228 去掉时间设置菜单
//20240305 去掉 20240201 修改需按OK键多次厂内大计才能清零问题(历史问题),恢复原样
//20240307 修改燃油不走问题(诊断屏蔽了3300配置项
//20240122 �޸IJ����㣬����ȼ���ⷢ
//20240123 ȥ����ѹ�������ã��޸���������汾��
//20240130 �޸���֡�����ⷢʱ�䣨������200ms���ڣ�
//20240201 �޸��谴OK����γ��ڴ�Ʋ�����������(��ʷ���⣩
//20240227 ͬ������޸ģ���׷�ӱ����ȡ��ʱ�Ӻ������¶���ʾ
//20240228 ȥ��ʱ�����ò˵�
//20240305 ȥ�� 20240201 �޸��谴OK����γ��ڴ�Ʋ�����������(��ʷ���⣩���ָ�ԭ��
//20240307 �޸�ȼ�Ͳ������⣨���������3300�����
#include "main.h"
#include "fuelconfig.h"
......@@ -51,10 +51,10 @@ uint8_t AverageFuel_HH;
uint16_t TankLevel_temp;
uint8_t RESET_ODO_count;
/******************************************************************************
函数名:main
功 能:主函数
参 数:无
返回值:无
��������main
�� �ܣ�������
�� ������
����ֵ����
******************************************************************************/
void main(void)
{
......@@ -63,17 +63,17 @@ void main(void)
if ((NVM_CONFIG_FUELBOX == 1) || (NVM_CONFIG_FUELBOX == 2))
{
FuelInitPara.FuelShortCircuitR = 5;
FuelInitPara.FuelOpenCircuitR = 2900; //1900必须小于2000
FuelInitPara.FuelOpenCircuitR = 2900; //1900������2000
FuelInitPara.DisplayZoneBoundary[0] = 1101;
FuelInitPara.DisplayZoneBoundary[1] = 1101;
FuelInitPara.DisplayZoneBoundary[2] = 921; //
FuelInitPara.DisplayZoneBoundary[2] = 921; //��ֲ
FuelInitPara.DisplayZoneBoundary[3] = 621;
FuelInitPara.DisplayZoneBoundary[4] = 471; //
FuelInitPara.DisplayZoneBoundary[4] = 471; //��ֲ
FuelInitPara.DisplayZoneBoundary[5] = 321;
FuelInitPara.DisplayZoneBoundary[6] = 258; //
FuelInitPara.DisplayZoneBoundary[6] = 258; //��ֲ
FuelInitPara.DisplayZoneBoundary[7] = 172;
FuelInitPara.DisplayZoneBoundary[8] = 96; //
FuelInitPara.DisplayZoneBoundary[8] = 96; //��ֲ
FuelInitPara.DisplayZoneBoundary[9] = 30;
FuelInitPara.DisplayZoneBoundary[10] = 10;
......@@ -92,17 +92,17 @@ void main(void)
else if (NVM_CONFIG_FUELBOX == 3)
{
FuelInitPara.FuelShortCircuitR = 5;
FuelInitPara.FuelOpenCircuitR = 2900; //1900必须小于2000
FuelInitPara.FuelOpenCircuitR = 2900; //1900������2000
FuelInitPara.DisplayZoneBoundary[0] = 1102;
FuelInitPara.DisplayZoneBoundary[1] = 1102;
FuelInitPara.DisplayZoneBoundary[2] = 922; //
FuelInitPara.DisplayZoneBoundary[2] = 922; //��ֲ
FuelInitPara.DisplayZoneBoundary[3] = 620;
FuelInitPara.DisplayZoneBoundary[4] = 470; //
FuelInitPara.DisplayZoneBoundary[4] = 470; //��ֲ
FuelInitPara.DisplayZoneBoundary[5] = 320;
FuelInitPara.DisplayZoneBoundary[6] = 247; //
FuelInitPara.DisplayZoneBoundary[6] = 247; //��ֲ
FuelInitPara.DisplayZoneBoundary[7] = 169;
FuelInitPara.DisplayZoneBoundary[8] = 97; //
FuelInitPara.DisplayZoneBoundary[8] = 97; //��ֲ
FuelInitPara.DisplayZoneBoundary[9] = 31;
FuelInitPara.DisplayZoneBoundary[10] = 10;
......@@ -119,21 +119,21 @@ void main(void)
FuelInitPara.FuelCapacityBoundary[10] = 1041;
}
AFC_Init.CalcAFCMaxNum = 100; //50公里或者100公里一更新
AFC_Init.AFCMin = 30; //油耗最小值十倍
AFC_Init.AFCMax = 300; //油耗最大值
AFC_Init.AFCPreinstall = 150; //始值 8 20200310
AFC_Init.CurODO = NVMODO.Sig.Value * 100; //总公里数100倍
AFC_Init.MaxDRMileage = 999900; //续航里程最大
AFC_Init.CalcAFCMaxNum = 100; //50�������100����һ����
AFC_Init.AFCMin = 30; //�ͺ���Сֵʮ��
AFC_Init.AFCMax = 300; //�ͺ����ֵ
AFC_Init.AFCPreinstall = 150; //��ʼֵ 8 20200310
AFC_Init.CurODO = NVMODO.Sig.Value * 100; //�ܹ�����100��
AFC_Init.MaxDRMileage = 999900; //����������ֵ
InitFuelParamter((FuelStruct*)&FuelInitPara);
InitAFC((AFC_INIT *)&AFC_Init);
SetFuelSensorRecoverGroupCnt(24); //检测
SetFuelSensorOpenCircuitGroupCnt(24); //
SetFuelSensorShortCircuitGroupCnt(24); //
SetFuelSensorRecoverGroupCnt(24); //���
SetFuelSensorOpenCircuitGroupCnt(24); //��·
SetFuelSensorShortCircuitGroupCnt(24); //��·
Read_CZSYBKPILSFR_FLASH(); //调表指针角度
Read_CZSYBKPILSFR_FLASH(); //����ָ��Ƕ�
Task_Scheduler_Init();
Stepper_Motor_Reset();
......@@ -144,11 +144,11 @@ void main(void)
Power_Management_Service();
Task_Scheduling_Service();
DoCAN_Communication_Service();
UDS_Server_Application_Service(); //诊断
UDS_Server_Application_Service(); //���
EEPROM_RW_Service();
TFT_LCD_General_Table_Write_Service();
if (SYS_IGN_OFF_DISP_MODE)
UDS_KL15_init();
if(SYS_IGN_OFF_DISP_MODE)
{
TFT_LCD_General_Table_Write_Service();
TFT_LCD_General_Table_Write_Service();
......@@ -167,14 +167,14 @@ void main(void)
Stepper_Motor_Speed_Control_Service();
APIBGNMEnable = 0;
TSzhen_mode(); //表针调试模式
TSzhen_mode(); //�������ģʽ
TASK_1ms_ALL CoCAN_Signal_Update_Service();
TASK_2ms_GROUP_0 {
Randomcnt();
Analog_Signal_Conversion_Service(); //AD信号采集
Analog_Signal_Conversion_Service(); //AD�źŲɼ�
SaveDTCsToEEPROM();
//DoCAN_Get_Multi_frame_Recv(); //广播帧接收服务--hyq
//DoCAN_Get_Multi_frame_Recv(); //�㲥֡���շ���--hyq
}
TASK_2ms_GROUP_1 {
TFT_LCD_Display_Update_Service(); //tft
......@@ -183,57 +183,57 @@ void main(void)
}
TASK_10ms_GROUP_0 NVM_Data_Update_Service(); //eep
TASK_10ms_GROUP_1 EEPROM_Access_Service(); //дeep
// TASK_10ms_GROUP_2 Telltales_Left_Right_Management_Service(); //转
TASK_10ms_GROUP_4 Sound_Play_Service(); //声音播放
// TASK_10ms_GROUP_2 Telltales_Left_Right_Management_Service(); //ת��
TASK_10ms_GROUP_4 Sound_Play_Service(); //��������
TASK_10ms_GROUP_5 {
Data_Engine_Speed_Processing_Service(); //转
Data_Engine_Speed_Processing_Service(); //ת��
enableDTCTimer(10);
MsgLostTimer(10);
}
TASK_10ms_GROUP_6 Fuel_Process(); //燃
//TASK_10ms_GROUP_7 Radar_R3_Receiving_Service(); //雷达
TASK_10ms_GROUP_9 Startup_Animation_Play_Service(); //开机动画
TASK_10ms_GROUP_6 Fuel_Process(); //ȼ��
//TASK_10ms_GROUP_7 Radar_R3_Receiving_Service(); //�״�
TASK_10ms_GROUP_9 Startup_Animation_Play_Service(); //��������
TASK_20ms_GROUP_0 Sys_Status_Update_Service(); //源状态
TASK_20ms_GROUP_0 Sys_Status_Update_Service(); //��Դ״̬
TASK_20ms_GROUP_1 {
MSCAN0_Bus_Off_Monitoring_Service(); //MSCAN0 Bus-off状态监控服务
BL_Management_Service(); //背光控制
MSCAN0_Bus_Off_Monitoring_Service(); //MSCAN0 Bus-off״̬��ط���
BL_Management_Service(); //�������
}
TASK_20ms_GROUP_2 {
Line_In_Debounce_Service(); //硬线
//Menu_Processing_Service(); //菜单按键处理
Key_Status_Detect_Service(); //按键服务器
Line_In_Debounce_Service(); //Ӳ��
//Menu_Processing_Service(); //�˵���������
Key_Status_Detect_Service(); //����������
}
TASK_20ms_GROUP_3 IO_Management_Service(); //界面管理
TASK_20ms_GROUP_4 Gauges_Management_Service(); //车转水油显
TASK_20ms_GROUP_3 IO_Management_Service(); //�������
TASK_20ms_GROUP_4 Gauges_Management_Service(); //��תˮ����ʾ
TASK_20ms_GROUP_5 {
Data_Vehicle_Speed_Processing_Service(); //车速
Data_Vehicle_Speed_Processing_Service(); //����
}
TASK_20ms_GROUP_6 {
Data_Coolant_ADblue_Processing_Service(); //天蓝液 LCD
Data_Coolant_ADblue_Processing_Service(); //����Һ LCD
}
TASK_20ms_GROUP_7 {
Data_Coolant_Temp_Processing_Service(); //水
Data_Coolant_Temp_Processing_Service(); //ˮ��
}
TASK_20ms_GROUP_8 {
Data_Coolant_Oil_Processing_Service(); //机油
Data_Coolant_Oil_Processing_Service(); //����
}
TASK_20ms_GROUP_9 {
}
TASK_50ms_GROUP_0 Flash_Sync_Signal_Generation_Service(); //
TASK_50ms_GROUP_1 Telltales_Management(); //指示
TASK_50ms_GROUP_2 Sound_Scheduling_Service(); //声音
TASK_50ms_GROUP_0 Flash_Sync_Signal_Generation_Service(); //��˸
TASK_50ms_GROUP_1 Telltales_Management(); //ָʾ��
TASK_50ms_GROUP_2 Sound_Scheduling_Service(); //����
TASK_50ms_GROUP_3 {
Data_AirO_Level_Processing_Service(); //压1
Data_AirO_Level_Processing_Service(); //��ѹ1
}
TASK_50ms_GROUP_4 {
Data_AirT_Level_Processing_Service(); //压2
Data_AirT_Level_Processing_Service(); //��ѹ2
}
TASK_100ms_GROUP_0 CAN_NORMAL_TIME_PRG();
TASK_100ms_GROUP_1 Popups_Management_Service(); //报警逻辑 显
TASK_100ms_GROUP_1 Popups_Management_Service(); //�����߼� ��ʾ
TASK_100ms_GROUP_2 {
Drive_Info_Display_Update_Service(); //
Drive_Info_Display_Update_Service(); //��ʾ
}
TASK_100ms_GROUP_3 {
/*if (NVM_ODO_VALUE < 29980)
......@@ -273,40 +273,40 @@ void main(void)
}
TASK_100ms_GROUP_4 {
RTI_Timing_Service(); //时间定时器
Data_IGN_Off_Timing_Service(); //IGN_IGOFF
Drive_Info_Import_Export_Service(); //车速输出 报文外
RTI_Timing_Service(); //ʱ�䶨ʱ��
Data_IGN_Off_Timing_Service(); //IGN_IGOFF��ʱ
Drive_Info_Import_Export_Service(); //������� �����ⷢ
}
TASK_100ms_GROUP_5 {
Data_Drive_Info_Group1_Processing_Service(); //ODO/TRIP
Data_Drive_Info_Group2_Processing_Service(); //瞬时油耗
Data_Drive_Info_Group2_Processing_Service(); //˲ʱ�ͺ�
}
TASK_100ms_GROUP_6 {
Popup_Scheduling_Service(); //报警调度
Popup_Scheduling_Service(); //��������
}
TASK_100ms_GROUP_7 SaveDTCsToEEPROM();
//TASK_100ms_GROUP_8 Warning_Processing_Service(); //报警逻辑 状态
//TASK_100ms_GROUP_8 Warning_Processing_Service(); //�����߼� ״̬
TASK_100ms_GROUP_9 {
Factory_ClearOdoM(); //生产清理大G
Factory_ClearOdoM(); //����������G
}
}
}
/******************************************************************************
函数名:Fuel_Process
功 能:
参 数:无
返回值:无
��������Fuel_Process
�� �ܣ�
�� ������
����ֵ����
******************************************************************************/
uint8_t Fuel_Seg, FuelStatus;
uint16_t AVYOUHAO;
uint16_t DataDTE;
uint16_t FuelConsumeSum;
uint16_t DataAvgFuelConsByLF; //平均油耗
uint16_t DataAvgFuelConsByLF; //ƽ���ͺ�
void Fuel_Process(void) //清平均油耗的同时续航也会清零
void Fuel_Process(void) //��ƽ���ͺĵ�ͬʱ����Ҳ������
{
uint32_t result;
uint16_t DataAvgFuel; //平均油耗
uint16_t DataAvgFuel; //ƽ���ͺ�
wdt_reset();
......@@ -322,10 +322,10 @@ void Fuel_Process(void) //
FuelConsumeSum = 0;
AFCPara.CurODO = NVMODO.Sig.Value * 100; //G
AFCPara.CurODO = NVMODO.Sig.Value * 100; //��G
AFCPara.RPM = DataESpeedActual; //转
AFCPara.Speed = (uint8_t)(DataVSpeedActual / 10); //车速
AFCPara.RPM = DataESpeedActual; //ת��
AFCPara.Speed = (uint8_t)(DataVSpeedActual / 10); //����
SetAFCPara((AFC_PARA *)&AFCPara);
......@@ -340,12 +340,12 @@ void Fuel_Process(void) //
SaveSampleVal(AnalogFuelSensorRes);
FuelFSM();
FuelResistanceV = GetFuelResistance(); //燃油电阻获取
FuelResistanceV = GetFuelResistance(); //ȼ�͵����ȡ
FuelStatus = GetFuelSensorState(); //燃油状态获
FuelStatus = GetFuelSensorState(); //ȼ��״̬��ȡ
/*if (FuelStatus == FuelSensorNormal)
DataDTE=GetDRMileage(); //unit:km,accuracy:1续航里程
DataDTE=GetDRMileage(); //unit:km,accuracy:1�������
else
DataDTE = 0;*/
......@@ -357,15 +357,15 @@ void Fuel_Process(void) //
}
else
{
DataDTE = GetDRMileage(); //unit:km,accuracy:1续航里程 //更改续航里程为0 2021.1.19
DataDTE = GetDRMileage(); //unit:km,accuracy:1������� //�����������Ϊ0 2021.1.19
}
}
else
DataDTE = 0;
DataAvgFuelConsByLF = GetCurAFC(); //平均油耗
DataAvgFuelConsByLF = GetCurAFC(); //ƽ���ͺ�
DataAvgFuel = DataAvgFuelConsByLF / 10;
AverageFuel_LL = (DataAvgFuel << 1) & 0xFF; //系0.5
AverageFuel_LL = (DataAvgFuel << 1) & 0xFF; //ϵ��0.5
AverageFuel_LH = (DataAvgFuel >> 7) & 0xFF;
AverageFuel_HL = (DataAvgFuel >> 15) & 0xFF;
AverageFuel_HH = (DataAvgFuel >> 23) & 0xFF;
......@@ -375,10 +375,10 @@ void Fuel_Process(void) //
Fuel_Seg = GetFuelStep();
}
if (FuelStatus == FuelSensorOpenCircuit) //2021.2.8 取消短
if (FuelStatus == FuelSensorOpenCircuit) //2021.2.8 ȡ����·
Fuel_Seg = 0;
/*if ((Fuel_Seg >= 20) && (Fuel_Seg < 40)) //系1
/*if ((Fuel_Seg >= 20) && (Fuel_Seg < 40)) //ϵ��1
TankLevel_temp = 1;
else if ((Fuel_Seg >= 40) && (Fuel_Seg < 60))
TankLevel_temp = 2;
......@@ -392,7 +392,7 @@ void Fuel_Process(void) //
TankLevel_temp = 0;
*/
DataFuelVolRemaining = GetFuelCapacityVal(); //剩余油量
DataFuelVolRemaining = GetFuelCapacityVal(); //ʣ������
TankLevel_temp = DataFuelVolRemaining;
if ((NVM_CONFIG_FUELBOX == 1) || (NVM_CONFIG_FUELBOX == 2))
......@@ -420,10 +420,10 @@ void Fuel_Process(void) //
//FuelConsumeSum = FuelConsumeSumData / 10;
//FuelConsumeSumData = 0;
AFCPara.CurODO = NVMODO.Sig.Value * 100; //G
AFCPara.CurODO = NVMODO.Sig.Value * 100; //��G
AFCPara.RPM = DataESpeedActual; //转
AFCPara.Speed = (uint8_t)(DataVSpeedActual / 10); //车速
AFCPara.RPM = DataESpeedActual; //ת��
AFCPara.Speed = (uint8_t)(DataVSpeedActual / 10); //����
SetAFCPara((AFC_PARA *)&AFCPara);
......@@ -438,12 +438,12 @@ void Fuel_Process(void) //
SaveSampleVal(AnalogFuelSensorRes);
FuelFSM();
FuelResistanceV = GetFuelResistance(); //燃油电阻获取
FuelResistanceV = GetFuelResistance(); //ȼ�͵����ȡ
FuelStatus = GetFuelSensorState(); //燃油状态获
FuelStatus = GetFuelSensorState(); //ȼ��״̬��ȡ
/*if (FuelStatus == FuelSensorNormal)
DataDTE = GetDRMileage(); //unit:km,accuracy:1续航里程
DataDTE = GetDRMileage(); //unit:km,accuracy:1�������
else
DataDTE = 0;*/
......@@ -455,15 +455,15 @@ void Fuel_Process(void) //
}
else
{
DataDTE = GetDRMileage(); //unit:km,accuracy:1续航里程 //更改续航里程为0 2021.1.19
DataDTE = GetDRMileage(); //unit:km,accuracy:1������� //�����������Ϊ0 2021.1.19
}
}
else
DataDTE = 0;
DataAvgFuelConsByLF = GetCurAFC(); //平均油耗
DataAvgFuelConsByLF = GetCurAFC(); //ƽ���ͺ�
DataAvgFuel = DataAvgFuelConsByLF / 10;
AverageFuel_LL = (DataAvgFuel << 1) & 0xFF; //系0.5
AverageFuel_LL = (DataAvgFuel << 1) & 0xFF; //ϵ��0.5
AverageFuel_LH = (DataAvgFuel >> 7) & 0xFF;
AverageFuel_HL = (DataAvgFuel >> 15) & 0xFF;
AverageFuel_HH = (DataAvgFuel >> 23) & 0xFF;
......@@ -476,7 +476,7 @@ void Fuel_Process(void) //
if (FuelStatus == FuelSensorOpenCircuit) //2021.2.8
Fuel_Seg = 0;
/*if ((Fuel_Seg >= 20) && (Fuel_Seg < 40)) //系1
/*if ((Fuel_Seg >= 20) && (Fuel_Seg < 40)) //ϵ��1
TankLevel_temp = 1;
else if ((Fuel_Seg >= 40) && (Fuel_Seg < 60))
TankLevel_temp = 2;
......@@ -490,7 +490,7 @@ void Fuel_Process(void) //
TankLevel_temp = 0;
*/
DataFuelVolRemaining = GetFuelCapacityVal(); //剩余油量
DataFuelVolRemaining = GetFuelCapacityVal(); //ʣ������
TankLevel_temp = DataFuelVolRemaining;
if ((NVM_CONFIG_FUELBOX == 1) || (NVM_CONFIG_FUELBOX == 2))
{
......@@ -516,10 +516,10 @@ void Fuel_Process(void) //
}
}
/******************************************************************************
函数名:Task_Scheduler_Init
功 能:任务调度器初始化
参 数:无
返回值:无
��������Task_Scheduler_Init
�� �ܣ������������ʼ��
�� ������
����ֵ����
******************************************************************************/
void Task_Scheduler_Init(void)
{
......@@ -535,64 +535,64 @@ void Task_Scheduler_Init(void)
*(p + i) = 0xFF;
}
/******************************************************************************
函数名:Task_Scheduling_Service
功 能:任务调度服务函数
参 数:无
返回值:无
��������Task_Scheduling_Service
�� �ܣ�������ȷ�����
�� ������
����ֵ����
*******************************************************************************
意:该服务函数必须被实时调用
ע �⣺�÷��������뱻ʵʱ����
******************************************************************************/
void Task_Scheduling_Service(void)
{
ScheduleUpdate.TaskFlagAll = 0; //清任务更新标志
ScheduleUpdate.TaskFlagAll = 0; //��������±�־
if (API_1ms_Timer_Update())
{
ScheduleUpdate.TaskFlagAll = TaskScheduleTable[ScheduleCtrlCnt];
if (ScheduleUpdate.Task.Flag2ms) //更新当前2ms任务组编号
if (ScheduleUpdate.Task.Flag2ms) //���µ�ǰ2ms��������
{
if (TaskGroup.ID2ms)
TaskGroup.ID2ms = 0;
else
TaskGroup.ID2ms = 1;
}
if (ScheduleUpdate.Task.Flag10ms) //更新当前10ms任务组编号
if (ScheduleUpdate.Task.Flag10ms) //���µ�ǰ10ms��������
{
if (TaskGroup.ID10ms >= 9)
TaskGroup.ID10ms = 0;
else
TaskGroup.ID10ms++;
}
if (ScheduleUpdate.Task.Flag20ms) //更新当前20ms任务组编号
if (ScheduleUpdate.Task.Flag20ms) //���µ�ǰ20ms��������
{
if (TaskGroup.ID20ms >= 9)
TaskGroup.ID20ms = 0;
else
TaskGroup.ID20ms++;
}
if (ScheduleUpdate.Task.Flag50ms) //更新当前50ms任务组编号
if (ScheduleUpdate.Task.Flag50ms) //���µ�ǰ50ms��������
{
if (TaskGroup.ID50ms >= 9)
TaskGroup.ID50ms = 0;
else
TaskGroup.ID50ms++;
}
if (ScheduleUpdate.Task.Flag100ms) //更新当前100ms任务组编号
if (ScheduleUpdate.Task.Flag100ms) //���µ�ǰ100ms��������
{
if (TaskGroup.ID100ms >= 9)
TaskGroup.ID100ms = 0;
else
TaskGroup.ID100ms++;
}
if (ScheduleCtrlCnt >= 9) //更新调度计数器
if (ScheduleCtrlCnt >= 9) //���µ��ȼ�����
ScheduleCtrlCnt = 0;
else
ScheduleCtrlCnt++;
}
}
/********************生产清理大计***************************/
/********************�����������***************************/
//extern uint8_t ClrOdoEn;
void Factory_ClearOdoM(void)
......@@ -623,7 +623,7 @@ void Factory_ClearOdoM(void)
//Checksum = YGV642_Calc_Pattern_Memory_CheckSum(ROMDATA_STARTADDR, ROMDATA_ENDADDR);
//if (Checksum != ROMDATA_CHECKSUM) //YVC_LYR_NUM_CPU
// TFT_LCD_Display_Sprite(YVC_LYR_NUM_CPU-1, SN_R_bmp, 0, 0, 64); //光标
// TFT_LCD_Display_Sprite(YVC_LYR_NUM_CPU-1, SN_R_bmp, 0, 0, 64); //���
}
//NVM_Data_Update(NVM_USER_SETTINGS);
......
......@@ -110,10 +110,10 @@ Search15=GUI_ADAS_Display
[Recent Applications File List]
File0=H:\EF01\\原程序\bin\WuZhengProject7.0.abs
File1=H:\EF01\\新建文件夹\W3_EF01_BootApp_BV1.2_SV00.10_HV1.07_FV0.08.s19
File0=H:\EF01\������\bin\WuZhengProject7.0.abs
File1=H:\EF01\��\�½��ļ���\W3_EF01_BootApp_BV1.2_SV00.10_HV1.07_FV0.08.s19
File2=I:\GIT\DEV\WZ-EF01\s19\W3_EF01_20231206_BV1.01(500k)_SVa00.09_HV1.07_FV0.08-12V_ALL.s19
File3=H:\EF01\源\03-程序源码\wuzheng_a901-master\原程序\bin\WuZhengProject7.0.abs
File3=H:\EF01��\03-����Դ��\wuzheng_a901-master����\bin\WuZhengProject7.0.abs
LoadFlags0=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main"
LoadFlags1=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main"
LoadFlags2=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
S04C0000443A5C415F576F726B5C415F50524F4A4543545C454630315F57757A68656E675C454630315C77757A68656E675F656630315F626F6F745C62696E5C454630315F426F6F742E61627376
S123FC00CF2100C6055B134A8789F84A8600F80001FC15FEEB21000843070F170F070F17CD
S123FC200F270F972704580430FC3D34B785871810B750303D87D7B7C6270718444656045C
S123FC4036F93DAC8418AE82311B8405404151184104A401083D415118413D04A401083DB8
S123FC60830001188200003D3B341B9CEC8CED86136C826D80EC86ED8A13E3806C80EC846B
S123FC80ED8C13E380B745EC821B88EDB5054035B7C51813B7D4EDB12A09185013B7E50727
S123FCA0AC200113B7E41AE6B7E43D186982EC8C261DEE8EED86EC8811280CEC8618C71125
S123FCC06D82B746EC88116D846C881869863D972709EE86B7C5CD00002008EE8DE686ED06
S123FCE087B7C61135ECF010133B35ECF012ED8413E3B130B7C5CD0000356581A38CB7C502
S123FD0018A38A310446113669AF3137323433EEF01011B76532201F252A046403044539F7
S123FD20E78E2706EE8E87C7200BB7C5363469AFEEF013313A1810083A34A3B1B74620A41B
S123FD40310220A04151B7C5415104A40108AE8E22EE2505ACF01024E7316D841869826C9D
S123FD60886E863D3B341B9C16FCAB30ECB5EDB5054018610018600226031862003D3B34E9
S123FD801B9CE78A2C1B1A8A07E8E7842C0A1A8407E020111A8407DA16FCAB1A8007D32036
S123FDA007E7842DEF16FCABEC82EE801B88EDB505403D180A30700434F93D30E6E605E53B
S123FDC03037E1310460022504E61F2002E6E51AE5330500EE8097260CE1002208E1222287
S123FDE0FC2702EE801B8205E30001EE8097260CE1002208E12122FC2702EE8037E6011AB5
S123FE00E5E6B205001C02F201722210F62210C1142506C601877C221018722212C6328746
S123FE204A8A37F80BC6807B01061F010680FB3D1B911980CEFE25C60F8716FDB319801504
S123FE40401B8F3D1B9CF601466B83F401476B8251F401477B0147C6016B816980E681E435
S123FE60822733F60149E481270C073E35EDE2293535C6012009073235EDE2293535C74A1D
S123FE80B407F8E6A3875959CEFFFFB7466EEA2937086EEA293568816280E680C10325BDD3
S123FEA0F60146E183269F1B840BE682875959B745EDE229373D1D014501F6016087595931
S123FEC0593BF60161545454545487EA81AA803BC7873BF6016CC40F37CC01644AB3DDF83E
S118FEE01C0144011C0145011B870B00042100FFFFFFFF000076
S105FF7EFE057A
S107FFB0FE44FEB653
S10BFFF8FC00FC00FC00FC000D
S224F880000000102120423063408450A560C670E781089129A14AB16BC18CD1ADE1CEF1EF63
S224F88020123102103273225252B5429472F762D693398318B37BA35AD3BDC39CF3FFE3DE23
S224F88040246234430420140164E674C744A45485A56AB54B85289509E5EEF5CFC5ACD58DE3
S224F88060365326721611063076D766F6569546B4B75BA77A97198738F7DFE7FED79DC7BCA3
S224F8808048C458E5688678A70840186128023823C9CCD9EDE98EF9AF89489969A90AB92B63
S224F880A05AF54AD47AB76A961A710A503A332A12DBFDCBDCFBBFEB9E9B798B58BB3BAB1A23
S224F880C06CA67C874CE45CC52C223C030C601C41EDAEFD8FCDECDDCDAD2ABD0B8D689D49E3
S224F880E07E976EB65ED54EF43E132E321E510E70FF9FEFBEDFDDCFFCBF1BAF3A9F598F78A3
S224F88100918881A9B1CAA1EBD10CC12DF14EE16F108000A130C220E3500440257046606762
S224F8812083B99398A3FBB3DAC33DD31CE37FF35E02B1129022F332D2423552146277725622
S224F88140B5EAA5CB95A88589F56EE54FD52CC50D34E224C314A004817466644754244405E2
S224F88160A7DBB7FA879997B8E75FF77EC71DD73C26D336F2069116B06657767646155634A2
S224F88180D94CC96DF90EE92F99C889E9B98AA9AB584448657806682718C008E1388228A362
S224F881A0CB7DDB5CEB3FFB1E8BF99BD8ABBBBB9A4A755A546A377A160AF11AD02AB33A9222
S224F881C0FD2EED0FDD6CCD4DBDAAAD8B9DE88DC97C266C075C644C453CA22C831CE00CC1E2
S224F881E0EF1FFF3ECF5DDF7CAF9BBFBA8FD99FF86E177E364E555E742E933EB20ED11EF0A2
S224F882000000000077073096EE0E612C990951BA076DC419706AF48FE963A5359E6495A3D9
S224F882200EDB883279DCB8A4E0D5E91E97D2D98809B64C2B7EB17CBDE7B82D0790BF1D91F9
S224F882401DB710646AB020F2F3B9714884BE41DE1ADAD47D6DDDE4EBF4D4B55183D385C719
S224F88260136C9856646BA8C0FD62F97A8A65C9EC14015C4F63066CD9FA0F3D638D080DF539
S224F882803B6E20C84C69105ED56041E4A26771723C03E4D14B04D447D20D85FDA50AB56B59
S224F882A035B5A8FA42B2986CDBBBC9D6ACBCF94032D86CE345DF5C75DCD60DCFABD13D5979
S224F882C026D930AC51DE003AC8D75180BFD0611621B4F4B556B3C423CFBA9599B8BDA50F99
S224F882E02802B89E5F058808C60CD9B2B10BE9242F6F7C8758684C11C1611DABB6662D3DB9
S224F8830076DC419001DB710698D220BCEFD5102A71B1858906B6B51F9FBFE4A5E8B8D43358
S224F883207807C9A20F00F9349609A88EE10E98187F6A0DBB086D3D2D91646C97E6635C0178
S224F883406B6B51F41C6C6162856530D8F262004E6C0695ED1B01A57B8208F4C1F50FC45798
S224F8836065B0D9C612B7E9508BBEB8EAFCB9887C62DD1DDF15DA2D498CD37CF3FBD44C65B8
S224F883804DB261583AB551CEA3BC0074D4BB30E24ADFA5413DD895D7A4D1C46DD3D6F4FBD8
S224F883A04369E96A346ED9FCAD678846DA60B8D044042D7333031DE5AA0A4C5FDD0D7CC9F8
S224F883C05005713C270241AABE0B1010C90C20865768B525206F85B3B966D409CE61E49F18
S224F883E05EDEF90E29D9C998B0D09822C7D7A8B459B33D172EB40D81B7BD5C3BC0BA6CAD38
S224F88400EDB883209ABFB3B603B6E20C74B1D29AEAD547399DD277AF04DB261573DC168347
S224F88420E3630B1294643B840D6D6A3E7A6A5AA8E40ECF0B9309FF9D0A00AE277D079EB167
S224F88440F00F93448708A3D21E01F2686906C2FEF762575D806567CB196C36716E6B06E787
S224F88460FED41B7689D32BE010DA7A5A67DD4ACCF9B9DF6F8EBEEFF917B7BE4360B08ED5A7
S224F88480D6D6A3E8A1D1937E38D8C2C44FDFF252D1BB67F1A6BC57673FB506DD48B2364BC7
S224F884A0D80D2BDAAF0A1B4C36034AF641047A60DF60EFC3A867DF55316E8EEF4669BE79E7
S224F884C0CB61B38CBC66831A256FD2A05268E236CC0C7795BB0B4703220216B95505262F07
S224F884E0C5BA3BBEB2BD0B282BB45A925CB36A04C2D7FFA7B5D0CF312CD99E8B5BDEAE1D27
S224F885009B64C2B0EC63F226756AA39C026D930A9C0906A9EB0E363F7207678505005713C6
S224F8852095BF4A82E2B87A147BB12BAE0CB61B3892D28E9BE5D5BE0D7CDCEFB70BDBDF21E6
S224F8854086D3D2D4F1D4E24268DDB3F81FDA836E81BE16CDF6B9265B6FB077E118B7477706
S224F8856088085AE6FF0F6A7066063BCA11010B5C8F659EFFF862AE69616BFFD3166CCF4526
S224F88580A00AE278D70DD2EE4E0483543903B3C2A7672661D06016F74969474D3E6E77DB46
S224F885A0AED16A4AD9D65ADC40DF0B6637D83BF0A9BCAE53DEBB9EC547B2CF7F30B5FFE966
S224F885C0BDBDF21CCABAC28A53B3933024B4A3A6BAD03605CDD7069354DE572923D967BF86
S224F885E0B3667A2EC4614AB85D681B022A6F2B94B40BBE37C30C8EA15A05DF1B2D02EF8DA6
S224F886003B4A86D1F84A9CF5F810EF4A9BFCF8CC0104CE00104A99F2F86C808C3AA32705E1
S224F886208C8AA8264C1686BCEC808C3AA326288602C77C26C2CE32017E26C4C6F47B26C655
S224F88640C61037C737CD07DA35873BC6053BCC26C24A95C1F81B88CCFFFF4A9BB1F8CCFF55
S224F88660FF6C80C6027B26B3577B25B07B25B220498C7AA7270614104AC00000073E203AED
S224F88680C6555B3F585B3F4A8701F84A8A26F84A93A5F8F629284AB1FDF81F2209040DF678
S224F886A0220B26084A9DD8F84AB41FF81F220920CFF6220E26CA4A9DFEF820C44A9CF5F8B3
S224F886C04A86DEF84AB429F84A8985F84A9C64F83D14104A87FBF84A8809F810EF0A7922AA
S224F886E008792209CC220A3BC78737E381B745C6FF6B0032428106B70125EE4A87D5F83AEB
S224F887000A7922094A87F0F804417DF62208CEFC19A6E57A22091F2209020FF6220A270557
S224F8872079220A2005C6017B220A1F2209040FF6220BC109250579220B200372220B1F22E7
S224F8874009080FF6220CC109250579220C200372220C1F2209100FF6220DC109250579225D
S224F887600D200372220D1F2209200FF6220EC109250579220E200372220EF62208C109251B
S224F88780047922080A7222080AFEFC11FDFC0F270E35ED31EC3169700434FB310326F2FE77
S224F887A0FC13EC31270BED31180A30700434F920F10A6CACEC876C82EE892008ED82E67055
S224F887C06B306D82ED80341A5F6E8218D73026ECEC891B840A1C02F280CC03207C02F41CAC
S224F887E002F2021C02F204C7877C22107C22120AF622112705792211C6010ACC05555B3F2A
S224F88800585B3F5A3C4C3A020A1B9479003969886989E68987C30001B74D3B348612C7CEA3
S224F88820007A16FD7E6C866E848342401882000FCD17C035CD02533516FC431822009F69D7
S224F888408A0688D8E68A87B746EC86EE845918450216FC8F6C826E80834800188201E8CD03
S224F88860C60035CD053E3516FC4322608648C7CE01E8AC8218AE8022536B8B204BE68B26B7
S224F888801FEE82EC80491846CD480035CD01E835B7C516FC432605C6016B888F628B202290
S224F888A08759593BC7873BEC86EE8416FD64CD480035CD01E83516FC432605C6016B888F65
S224F888C0628BE68BC1202404E68827B1E6882602628AE68AC1402406E6881827FF66E68851
S224F888E026026289E689C1402406E6881827FF22E68827FC4D3A014C3A80866CC7CE02DC7C
S224F88900AC8218AE802504E68A201686B4CD04C4AC8218AD802506E68ACA402004E68ACAD2
S224F88920C05B34CC8480CD001EAC8618AD842504E6892027868DCE005BAC8618AE842506F3
S224F88940E689CA40201559CE00B7AC8618AE842506E689CA802004E689CAC05B35E68B5BB5
S224F88960364F3708FC1F010680FBF601002605C6077B0100C6FF7B01094C39804C394079A1
S224F8898022141B8C0ACC70F65B025A004D0C01C6FE5B03C60C5B014D0C02477A0242587B2D
S224F889A00240790244790245C6EA7B024A79024879024C79024DC6FC7B025A790258517BF8
S224F889C0025C79025DC6CF7B0262790260790264790265C6A37B0273790271C6187B02773F
S224F889E0C6FF7B0282C6107B0280790284790285C6FF7B02927902907902947902957B0269
S224F88A009A79029879029C79029D7B0252790250790254790255C6F07B0272790270790239
S224F88A20761D0240200A4A9193F84A923BF84A8D05F84A90C5F80A3BFC23E0E3B17C23E003
S224F88A400A6CADF623D32609EC8027058C00402312EC8A3BEC8A3BC609874A8B76F81B84A8
S224F88A60068B63EE8A7E238FEE887E238D7C2391C72010EE8637B746E6006BEA239318627F
S224F88A8087335287AC8025EB7A23D4EC807C23D7180BFF23DD180B7F23DF8C00082442C631
S224F88AA001877C23D9FE23D77E23D5168B661D2251F0F62251F823D8C40FF822517B22513C
S224F88AC0F623D8527B22596A82200CCE2393A6E5CE22526AE56282E68287BC23D725EC20EE
S224F88AE062C30001CE0007B7461810044106EC80C300088FB764CE000718107E23D9C606EA
S224F88B00877C23D5C601075EF62251C40FCA107B2251F62251C4F0B623D7840F37AAB07AC2
S224F88B202251F62252F623D87B2252C6087B2259C787B74537E6E223936BE222533352C1B0
S224F88B400625EEC6014A92F3F8FC224DFE224F343BF6225937CC22514A8BACF81B85C690D2
S224F88B607B23D31B830A7C23DBFE238D7E224DFE238F7E224F3D3BEC873BEC873BEC844A9D
S224F88B8093BDF81B860A3BEC873BEC873BEC844A93D9F81B860A3BEC8B3BEC8B3BEC8B3B34
S224F88BA0EC8B3BEC884A93DAF81B8A0A3BEC887C2234EC867C2232C7201187EE8037B74650
S224F88BC0E6006BEA22361862813352E18525EBE685200887B7456AE2223652C10825F4FC25
S224F88BE022343BFC22323BC60837CC22363BC6014AB312F8C6017B223E1B890A3736FC224F
S224F88C0034AC872605FC2232AC852602E6812658F623D3C1912251C1206B80250DC1222283
S224F88C2009C0208716FDBB575764F623D3C1902706C19127142074FC23D90424022012C642
S224F88C40034A92F3F8C6A0203DFC23DBBC23D926197923D34A9353F8FC238F3BFC238D3B32
S224F88C60C7874A8B76F81B842041C6034A92F3F8F623DD2736F623DF4A9357F8202DC60646
S224F88C804A92F3F8C6117B23D320207923D34A9353F8FC225D3BFC225B3BCC22613BFE22DD
S224F88CA05F34C609874A8B96F81B883A0A3BF6222FC10224470747EE88B7466EEA2217EE94
S224F88CC0866EEA2215C72016370733B745E680871AE6E381B746E6406BE222193352E18531
S224F88CE025E6071AB745E6856BE2222172222F722230F62230C10225037922303A0AC60DB8
S224F88D00B62230123D4A8D49F8F6224C273AF62243C4F054545454C10322268716FDC00459
S224F88D2020040A101A4A8DA2F8201A4A8E21F820044A8EDAF84A9045F8200A4A8F96F820AC
S224F88D40044A90C4F879224C0A36F6222F2751C60DB6223112C32215B745ED00EC027D2238
S224F88D603F7C22416980C60DB6223112B745E6808719E63BE6EA2219316BEA22436280E620
S224F88D8080C10825E1E6E222217B224B427A224C73222F722231F62231C1022503792231E1
S224F88DA0320AF623D3C480C1802775C787CE07D2BE224118BC223F2705F623D32662F6226A
S224F88DC043C40FF1224B24581F22430F53F62243C40FC107224AFC223F7C225BFC22417C2D
S224F88DE0225DF62243C40F877C225FC7200E87B74537E6E222446BE222613352BC225F25B1
S224F88E00ED7A23D34A9353F8FC225D3BFC225B3BCC22613BFE225F34C7874A8B96F81B88D5
S224F88E200A3BF623D3C480C180182700ABC787CE07D2BE224118BC223F2605F6224BC108F3
S224F88E4018260094F62243C40F6C80E6816B806A81F62244EA81AA806C808C00082579C617
S224F88E60017B23D4C606877C23D5EC807C23D7CD00017D23DB037D23DDC300011A471810C3
S224F88E80044108FC23D7C300082006FC23D7C300011A4718107E23D9FC223F7C225BFC2270
S224F88EA0417C225DEC807C225FC787B74537E6E222456BE222613352C10625EEC6044A928B
S224F88EC0F3F8C6107B23D3FC225D3BFC225B3BFC225F4A8B86F81B843A0AF623D3C1112662
S224F88EE00CC787CE07D2BE224118BC223F2636B62243840FF623DCC40F18172714168F8BB2
S224F88F003BFC225B3BCC22613BFE225F34C6042066187223DB7323DDFC23DBBC23D9241FE8
S224F88F20F6224BC1082657C787B745370751187223D53352C10725F0C6064A92F3F80AF63B
S224F88F40224B87B746FC23D7B323D53BADB1232EC7200C87B7453707263352187223D5FEB9
S224F88F6023D5BE23D725EC07223BFC225B3BCC22613BFE225F34C7874A8B96F81B880AE69A
S224F88F80E22244FE23D56BE222613D7923D34A9353F8FC225D3DF623D3C1A02708C1912745
S224F88FA004C1A12635C787CE07D2BE224118BC223F2607F6224BC103240CFC238F3BFC231C
S224F88FC08D3BC6092066F62243C40FC102225316FDC0034E032C36F623D4265EF622442695
S224F88FE007C6017B23D42006F622447B23DDF622457B23DFC6910743F623DF4A9357F80A8E
S224F89000F623D42635C6A107320AF623D4262BF623D3C1A02624FC238F3BFC238D3BC608EE
S224F89020200AFC238F3BFC238D3BC605874A8B76F81B844A9353F87923D30A7B23D3C6032A
S224F890404A92F3F83DF623D3C110261EFC225F8C012C230EF62251C4F0CA027B2251C622E8
S224F8906020061D22510FC6202017C1112655F623DD2650F623D4264B7923DD1D22510FC61C
S224F89080207B23D31879224DCC07DA7C224FF62251C40FCA307B2251F62252F623DD7B2287
S224F890A052792253477A2259C6024A92F3F8FC224DFE224F343BF6225937CC22514A8BACF7
S224F890C0F81B850A0A3BF623D3C191182600C24A9397F80421BBFC238D7C224DFC238F7C61
S224F890E0224FF62251C40FCA207B2251F62251C4F0B623DC840F37AAB07A22517323DD1880
S224F891007223DBFC23DBBC23D92424C6087B22596980F623D6A680CE2393E6E5CE22526B2A
S224F89120E4187223D56280E680C10725E52047262BF623D8F023D66B81527B2259C72016EF
S224F8914087CE239337B746F623D6E6E56BEA2252187223D53352E18125E6201A4A9353F87A
S224F891607923D3FC238F3BFC238D3BC609874A8B76F81B84201BC6014A92F3F8FC224DFE49
S224F89180224F343BF6225937CC22514A8BACF81B853A0A1B9CFC23E06C82BC23E21827000A
S224F891A097FC23E2AC822407EC82B323E2200BCCFFFFB323E2C30001E3826C80EC827C23CC
S224F891C0E2F623EC272EFC23E62605FC23E42724C787EE80BE23E618BC23E42411FC23E640
S224F891E0A3807C23E6FC23E41883000020037C23E67C23E4F623EDC102263DFC23EA2605A1
S224F89200FC23E82724C787EE80BE23EA18BC23E82411FC23EAA3807C23EAFC23E81883000D
S224F892200020037C23EA7C23E8FC23EA260AFC23E82605C6017B23ED1B840AFC23E626036A
S224F89240FC23E41826009DF623ECC1062273538716FDC0068B06172F3F576EF623D3270F22
S224F892601692E53BFC238D3BC601204EF623D3271607793BFC225B3BCC22613BFE225F3438
S224F89280C6012055F623D32757075A3BFC238D3BC6022026F623D3274707513BFC225B3BF9
S224F892A0CC22613BFE225F34C609202DF623D3272F07323BFC238D3BC609874A8B76F81B07
S224F892C084201DF623D3271807223BFC225B3BCC22613BFE225F34C603874A8B96F81B88FA
S224F892E04A9353F80A7923D3FC238F3D7923D3FC225D3DC1062250538716FDC0064906097A
S224F8930013233037C6018FC6027B23ECCC61A82018C6037B23ECCC24F87C23E6CE0001204F
S224F8932022C6047B23ECCC23287C23E62020C6057B23EC2015C6067B23ECCC49F07C23E674
S224F89340CE00027E23E40A7923EC187923E6187923E40A7923EC0A37C17F220D87CD03E876
S224F89360137C23EA7D23E82027C0F1C1082215E68087B746C6643BB70534B76416FC687C84
S224F8938023EA2009CCF0187C23EACE00017E23E8C6027B23ED320AF623ED37042103792355
S224F893A0EDE680320A4A9440F80A3BEC893BEC893BEC893BEC864A8A41F81B880A04640919
S224F893C0EC853BEC853BC72008EC853BEC853BC601874A9415F81B840A0A04640FEC893BDE
S224F893E0EC893BEC893BEC893BC7200EEC893BEC893BEC893BEC893BC601874A9416F81B56
S224F89400880A3BEC893BEC893BEC893BEC864A93AAF81B880A0A046426C6017B2520EC8940
S224F894207C23F0EC877C23EEEE83097E251EEE8518C72007E6306BEA23F202AD8325F50A16
S224F8944036F6252018270177C6017B25B2F623F2C1851822013BC1346B802512C137220EC8
S224F89460C034875905FF951195919526953B87F623F216FDD48595911094931195652294A4
S224F89480BD2794D22894E72E94A83194FC3E957A859550FC23F03BFC23EE3BFC251E3BCC28
S224F894A023F34A9EC7F8207CFC23F03BFC23EE3BFC251E3BCC23F34AAEB2F82067FC23F030
S224F894C03BFC23EE3BFC251E3BCC23F34AA046F82052FC23F03BFC23EE3BFC251E3BCC231B
S224F894E0F34AA20DF8203DFC23F03BFC23EE3BFC251E3BCC23F34AA424F82028FC23F03BA4
S224F89500FC23EE3BFC251E3BCC23F34AA5F4F8207CFC23F03BFC23EE3BFC251E3BCC23F345
S224F895204AA851F82067FC23F03BFC23EE3BFC251E3BCC23F34AAA2CF82052FC23F03BFCAE
S224F8954023EE3BFC251E3BCC23F34AAD21F8203DFC23F03BFC23EE3BFC251E3BCC23F34AC1
S224F89560A535F82028FC23F03BFC23EE3BFC251E3BCC23F34AADE7F82013FC23F03BFC2374
S224F89580EE3BFC251E3BCC23F34AAD5BF81B86202BFC23F08C07D22623FC23EE261EC6112E
S224F895A07B25AEB623F236860136CE07DA34C7873B523BCC25AE4A95C1F81B8879252032DF
S224F895C00A6CACE68D2745EC8B7C2569EC897C2567C67F7B256BA68E7A256CEC877C25AB41
S224F895E0186982EC80B745200BE630ED826BEA256D186282FC25ABAC8222EEFE256934FEA8
S224F89600256734CE256B34C300022040EC8B7C2523EC897C2521E68ECA407B2525EC877C32
S224F896202565186982EC80B745200BE630ED826BEA2526186282FC2565AC8222EEFE2523E2
S224F8964034FE252134CE252534C300014A9402F81B8A0A3BCCFFFF5487CEFFFFAE8718AC25
S224F8966085250BC67CB706AD8718AC852304C60220171E01068004C608200EEE87E6865BB5
S224F896801018A600EE806A00C7300A3B34838000188200F0CD3FFF6DAC6C82C7873BEC841F
S224F896A016FC4322091697F31889FF8B20651697EB188200F11697E022091697FB1889FFBA
S224F896C08A20781697EB188200F21697E02207EE821AE18A20501697EB188200F31697E07A
S224F896E022091698031889FF89207A1697EB188200F41697E022091697F31889FF882065A3
S224F897001697EB188200F51697E022091697FB1889FF8720741697EB188200F61697E02233
S224F8972007EE821AE187204F1697EB188200F71697E022091698031889FF86204C1697EB08
S224F89740188200F81697E022091697F31889FF8520371697EB188200F91697E02209169716
S224F89760FB1889FF8420761697EB188200FA07702207EE821AE184205A0770188200FB07EF
S224F897805F2208077E1889FF832052075E188200FC074D2208075C1889FF822040EC8483D8
S224F897A04000EE82188200000736230FEC8483C000EE8218820000072722090C837FEC845F
S224F897C0EE8220190725188200FE0714220BEE821AE1816E82EC842004C787B7451B860A72
S224F897E0CD3FFF3518C73516FC433DEC86838000EE843DEC86C38000EE843DEC86C3C00009
S224F89800EE843DEC86C34000EE843D3B341AE184C60AED8216FC351B840A6CA834E68D267A
S224F898200A8612C76C88CEFFFE2008860AC76C88CEFFF86E8686FF536C84EE8218A4866EEF
S224F8984082E481A4806C801F010680FBC6307B0106790102C7EE801884007F18AA887E0166
S224F898600A527B0102EE827E010A141016FE3010EF1F01063004C60420091F01060303C672
S224F898800521C71B8A0A6BA9E6F010260B8611C76C8552876C83200A8606C76C85CE0007AA
S224F898A06E83186981EC8EE484A483EE8118A48CB746C7873B3BB76416FC432704C60320B3
S224F898C0481F010680FBC6307B0106790102C787EE8C1884007F18AA857E010A527B01022B
S224F898E0EE8E7E010AEE8A200C37527B0102EC317C010A3352E18023F0141016FE3010EFB7
S224F899001F01063003C60421C71B870A3B0F880704C60320471F010680FBC6307B010679F4
S224F899200102C7EE85188400FF188A10007E010A527B0102EE877E010A587B0102EE807E87
S224F89940010A141016FE3010EF1F01063004C604200A1F01060303C6028FC601300A1B9813
S224F899606BAF2648204BC6555B3F585B3FA6808108253BC60137EEF01134EEF01134EDF020
S224F899801135C6044A9886F81B870441022060EE8C1A086E8CECF010C300086CF010EC8EBE
S224F899A0C90089006C8EE680C0086B8020B8046003C7203BC7871A811AE6436A0052C10833
S224F899C025F3C72010871A811AE637E38DB746E6406B003352E18025ECC60137ECF0113B07
S224F899E0ECF0113B1A8634C6044A9886F81B871B890A6CAA346C861A106E84C60AED821647
S224F89A00FC355B17EE82188403FF1AE20800EC001B880A6BADC1012504C1042304C6062020
S224F89A20740F8B0104C603206CEE8A34EE8A34874A990CF81B84C102260220591F01068052
S224F89A40FBC6307B0106790102C787EE881884007F188A11007E010A527B0102EE8A7E0138
S224F89A600A6C81EE86200EE682527B0102EC317C010A186281E68087AC8124EB141016FE18
S224F89A803010EF1F01063004C60420091F01060303C60521C71B830A3B340F830104C603F7
S224F89AA0203D1F010680FBC6307B0106790102C7EE801884007F188A12007E010A527B015C
S224F89AC002EE827E010A141016FE3010EF1F01063004C60420091F01060303C60521C71BE0
S224F89AE0840A37C6555B3F585B3FA68081042533EE8834EE8834ED8835C6044A9A13F81B28
S224F89B00860441022035EE841A086E84EC88C300086C88EC86C90089006C86E680C0046B22
S224F89B208020C0046004B7012011EE8834EE8834EE8834B7014A9A13F81B86320A6CACC617
S224F89B40555B3F585B3FEC80496B83698220278759E3873BFC26B6FE26B44A99F2F8306CB4
S224F89B6000FC26B6C300027C26B6FC26B4C90089007C26B46282E682E18325D31B840A3BE9
S224F89B80C6555B3F585B3FFC26B63BFC26B43BEC893BEC86494A9AE2F8877C26B8ECA5F36F
S224F89BA026B67C26B6CC000018F326B47C26B43A0A3BCC0104CE00104A9A98F8046113CC87
S224F89BC001043BCE001034198435B7014A9A13F81B863A0A8603C7CE00104A9A98F88704AB
S224F89BE064198603C77C26B6CE00107E26B4CD27BC35C618874A9B7FF81B820A8603C77CF4
S224F89C0026B6CE00107E26B4CD27BC35C618874A9B3DF83AFC27BE8CA55A2608FC27BC8C92
S224F89C207AA7273FCCA55A7C27BECE7AA77E27BCCD42547D27C7CC53577C27C9CC3A307CC2
S224F89C4027CB862E7C27CD527C27CFC601877C27C0C661427C27C286617C27C47B27C64AAE
S224F89C609BD4F80A8607C7CE00104A99F2F88C7AA7270DC7877C27D47C27D64A9CB0F80AC0
S224F89C80CC07027C26B6CE00107E26B4CD27D43558874A9B3DF81B82F627D72605F627D6BF
S224F89CA0270DCC03037C27D6577B21057921040A3B8607C7CE00104A9A98F8877C26B826A0
S224F89CC032CC07027C26B6CE00107E26B4CD27D43558874A9B7FF8CC7AA76CA1CE070034B7
S224F89CE0CD0010351A8434C6014A9AE2F81B86877C26B83A0AC663877C26C0C77C26BE7B84
S224F89D0025B07B25B17B25B27C25B37B26A87B26A97B26AA7C26AD7C26AB527B26B30AC18F
S224F89D20032275538716FDC0036E0317667925B07925B17925B20761169DC625FB7921075F
S224F89D400A792107169DCF07587B21067B27D87C27DB7C27D97C27DF7C27DD7C27E37C2739
S224F89D60E17C27E77C27E57C27E97C27EB53437C27F5C7877C27F77C27EE7B27ED53437C91
S224F89D8027F17927F0187927F3072B073925FC0A073D0705073025FC0A07067C27F7071660
S224F89DA03DC7877C25B37B26A87B26A97B26AA7C26AD7C26AB3D4AB28CF8CCFFFF7C210227
S224F89DC07C210018C73D69EA2108028D01003D7925B1C6017B25B23DFC26C0FE26BE16FC09
S224F89DE05B7C26C07E26BEC6F087CEFFFFBC26C018BE26BE2207C77C26C07C26BE0AF6210F
S224F89E000504212C722104F62104C1642522792105792104F627D7C1022505C6017B27D773
S224F89E20F627D6C1022505C6017B27D64A9CB0F8F625B0042190F625B20421067925B27937
S224F89E4025B17225B1F625B1C132257ACC0104CE00104A99F2F88C7AA72707C6015B3C795B
S224F89E60003FCCFFFF7C21027C21007926A87921077921067925B17925B07926AF7926B0DE
S224F89E807926AA507B26B3C7877C27DB7C27E37B27D87C27DB7C27D97C27DF7C27DD7C276D
S224F89EA0E37C27E17C27E77C27E57C27E97C27EB7C27EE7B27ED7B27F053437C27F11879A5
S224F89EC027F34AB28CF80A1B993BECF0106C86EC8E6C84C632877C26C3CE01F47E26C57A20
S224F89EE025AEE68D6B887A25B1C76C822010EE8218AB80E600EE826BE226C2186282E6884F
S224F89F0087AC8222E90421F8F626C2C1012704C181264E427A25B0C6337B25B116A02C0425
S224F89F202118C61037C737CC07DA3BC7873BC6053BCC26C24A95C1F81B88CC0104CE0010CB
S224F89F404A99F2F88C7AA72715186982A7186282EC828C07D025F5C6015B3C79003F06A001
S224F89F601CC1022645F626B3C1032704C102261E7A25B1427A25B016A0394816A02CC10218
S224F89F80265BC61037C737CC07DA3BC7205AC101230304618716A01F2604EC842721CC10A8
S224F89FA07E7B25AE36C601372060C1032704C1832640F626B3C102260C07642604EC84279B
S224F89FC05BC67E203D4A9D1FF8C6017B25B27B25B0076686037A26B3F626C2C103263DC60D
S224F89FE01037C737CE07DA34873BC6053BCC26C22024EC868C07DF2604EC84271FC6128F51
S224F8A000C6137B25AECC01103736CE07DA34C7873B523BCC25AE4A95C1F81B881B890A420F
S224F8A0207A25B27A25B0EC888C07DF3D7A26B3B7014A9D1FF8F626C23D7926AF7926B07926
S224F8A04026AA7926A93D1B973BC7876C846C82EEF0126E84EEF0106E82E68F6B887A25B11D
S224F8A0607A25AEC76C862010EE8618AB80E600EE866BE226C2186286E68887AC8622E9F63F
S224F8A08026C2B710C73BF626C387EA81AA806C8BE68AC1021B822705C61306A1204A9BFCA3
S224F8A0A0F8EC898CF170270C8CF18327228CF184273D205FCC56317C26C4CE2E337E26C697
S224F8A0C0C62237C737CD07DA35873BC606203ECC26C43BCE27C734C60A874A87B2F8C622FC
S224F8A0E06BA2C737CC07DA3BC7873BC60C201ECC26C43BCE27C034C607874A87B2F8C62246
S224F8A1006BA2C737CC07DA3BC7873BC6093BCC26C22021EC848C07DF2604EC82271CC63113
S224F8A1207B25AECC01223736CE07DA34C7873B523BCC25AE4A95C1F81B881B8B0A1B943B0B
S224F8A14034ECF013182700B7ECF0156C8AECF0136C88C7876C866C840F88801016A2036E9F
S224F8A16088E883A8826C8A18A880200316A2036E88EC86EE8416FC5B6C866E8487C7CE006A
S224F8A18023AE8618AC8422D06C866C84E687871A881AE6198C341AEE34EE82E600306B00B3
S224F8A1A0EC88EE8616FC5B6C886E8687C7CE0004AE8818AC861B8222D3CC29293B35B7549A
S224F8A1C04A87B2F81B84EC828C5D3A2613EC808C1CBE260CFC292B7C292FFC29297C292D56
S224F8A1E0EC828CE5432613EC808C2CBD260CFC292B7C2933FC29297C2931C6017B26AA1B7B
S224F8A200F0100AEC8CEE8A5918456C8C3D1B973BC7876C846C82EEF0126E84EDF0106D8285
S224F8A2207B25B18E07DF260604660306A3F9E68F6B88C76C862010EE8618AB80E600EE86BF
S224F8A2406BE226C2186286E68887AC8622E9EE8E8E0001182500E2F626C2C1052706C106D8
S224F8A26018260179F626C2C1052704C106260BF626B3C1022704C67E201DF626C2C1052759
S224F8A28009C106182700AC06A3D2E6880421AAF62105042105C63706A3DFF626A9C10327D3
S224F8A2A004C104260F8605C77C26C2877C26C47B26C6206F7227D74A9CB0F8F627D7C10255
S224F8A2C023067926B006A3C0F626AA2614FC26C06C89E689877C26BAE68A7C26BC427A26C7
S224F8A2E0AACC05017B26B07A26C2F626BB51CB317B26C3F626BD51CB237B26C4F626BBCB8B
S224F8A300567B26C5F626BBCB717B26C616A412FC292B3BFC29293BCCE543CE2CBD4AA13D57
S224F8A320F81B84C62737C737CC07DA3BC7873BC605203DE688C1052704C6132008F626B0A2
S224F8A340040105C62406A3DF16A4127926B0F626A9C1042628FC292B261CFC29292617185C
S224F8A3607927D6C62737C737CC07DA3BC7873B523BCC26C2207D16A3FC25532043FC292B19
S224F8A380BC29332637FC2929BC2931262FF626AA042129CC06047B26A9187927D67A26C26E
S224F8A3A0C62737C737CE07DA34873B523BCC26C24A95C1F81B884A9CB0F8203D073E250EFA
S224F8A3C0CC36017B21057921047A25AE2014C635200DEC848C07DF2604EC82271CC6127B85
S224F8A3E025AECC01273736CE07DA34C7873B523BCC25AE4A95C1F81B881B8B0A7926AA79E7
S224F8A40026A9F627D77B27D64A9CB0F8F627D6C1023DCC29293BCE26C334C604874A87B26B
S224F8A420F81B843D1B983BECF0116C84EC8F6C827925B1F626B3C103270FEC848C07DF26F7
S224F8A44004EC822747C67F207AE68E6B88C102255D1869862010EE8618AB80E600EE866BE1
S224F8A460E226C2186286E68887AC8622E9F626C2C47F6B89271E04011BE689C1022715C13A
S224F8A480032711EC848C07DF2606EC82182700A2C612202FFC26B18C0190250CCC85227BF1
S224F8A4A025AE36C601372023E688C1022704C6132011F626C3C1012720C102271CC1032716
S224F8A4C018C6317B25AECC01283736CE07DA34C7873B523BCC25AE2053F626C2C18322521F
S224F8A4E0D7254FC10322088716FDBB161D242BC180253FC183223BC0808716FDBB040B1253
S224F8A500191E26C2802C20131E26C28025200C1E26C2801E20051E26C28017C62837C737E0
S224F8A520CC07DA3BC7873B523BCC26C24A95C1F81B881B8A0A1B993BECF0106C84EC8E6CD1
S224F8A540827925B1F626B3C103270FEC848C07DF2604EC82277DC67F207DFC26B18C019074
S224F8A5602504C6222071E68D6B88040104C61320661869862010EE8618AB80E600EE866BBB
S224F8A580E226C2186286E68887AC8622E9F626C2C182223616FDEB82330108021281048272
S224F8A5A00EC6017B26A71E26C28046200AC6027B26A71E26C2803AC68537C737CC07DA3B53
S224F8A5C0C7873B523BCC26C22021EC848C07DF2604EC82271CC6127B25AECC01853736CE03
S224F8A5E007DA34C7873B523BCC25AE4A95C1F81B881B890A1B953BC7876C846C82527B25A2
S224F8A600B2EEF0146E88EDF0126D868E07DF260604660306A82CFE26B18E01902505C622D4
S224F8A62006A812E6F0116B8CC76C8A2010EE8A18AB80E600EE8A6BE226C218628AE68C8747
S224F8A640AC8A22E9F626C3B710C73BF626C487EA81AAB1B745F626C204010306A8058E02C2
S224F8A6600227118EFF00182700BD8EFF011827011106A7F6F626B3C1021826010CF626A9F6
S224F8A6801827010EF626C587B705B781C7B7563BF626C687EA81AA806C80F626C787B745B4
S224F8A6A0C734373032C735EA81AAB118AA806C80F626C887EA81AA806C866E84FC2102FE18
S224F8A6C0210016FC567C21027E2100F621061B822630FC2102AC842617AE822613CCFF01E5
S224F8A6E07B2106507C21027C2100507B26C5200979210616A8477926C516A82F79280306B0
S224F8A700A82CFC2102AC84260DAE82260916A847507B26C5200616A8477926C5C63137C748
S224F8A72037CE07DA342050F626B3C102265BF626A9275FF6210604212ECC800137C7CE00AB
S224F8A740FE4A968BF84A981AF81B81046111CC7AA74A9BB1F8C6017B21077B26C5200E79A3
S224F8A76021077926C520067921077926C5C63137C737CC07DA3BC7873BC6043BCC26C206C9
S224F8A780A826F626B3C1022704C67F2067F626A92604C633207CF6210604012FCC01FF7C48
S224F8A7A026C2C77C26C416A82F4A9BFCF8C7877C27E37C27E17C27DB7C27D97C27DF7C274A
S224F8A7C0DD7C27F753437C27EB2061792926C6017B2927C7877C27DB7C27D97C27E37C2795
S224F8A7E0E153437C27EBC7877C27DF7C27DD527B2928C678201CEC888C07DF2604EC8627C6
S224F8A8002BC631200DEC888C07DF2604EC86271CC6127B25AECC01313736CE07DA34C78765
S224F8A8203B523BCC25AE4A95C1F81B881B8D0AC63137C737CE07DA34873BC6043BCC26C23D
S224F8A8404A95C1F81B883DCCFFFF7C21027C21003D1B943B6988E6F01286017A25B2B626C9
S224F8A860A92604C6332052B626B381022704C67F20476B8DC10A26281869862010EE8618E0
S224F8A880AB80E600EE866BE226C2186286E68D87AC8622E9F626C22607F626C3C1442704B0
S224F8A8A0C6132015F62106182700C2F621072707F62925C120251FC6707B25AECC013437FE
S224F8A8C036CE07DA34C7873B523BCC25AE4A95C1F81B8806A9AC16AA1B3B16A9AF4A968B28
S224F8A8E0F87C25B77E25B516A9D93B16A9F77C25BB7E25B9698CF629251B8426046988205F
S224F8A90003536B88C609A68812EE84B746AEEA28072608EE82AEEA2805272BC609B6292524
S224F8A92012EE84B7466EEA2807EE826EEA2805FE25BB6EEA280BFE25B96EEA2809C6016B1D
S224F8A940EA280D72292516AA0D37C737CE07DA34873BC6033BCC26C24A95C1F81B88C601BA
S224F8A9607B26A8C7877C27EE7C25B3203F16AA1B3B073C07643B077F6C8F6E8DC6017B261C
S224F8A980A87B27D8EC887C27FBEC867C27F9EC8F7C27FF7E27FD077537C737CE07DA3435F0
S224F8A9A01A4334CC26C24A95C1F81B8C1B8E0AF626C587EA83AA826C82F626C687B745C748
S224F8A9C0076435EA81AAB118AA826C82F626C787EA83AA826C886E863DF626C887B781C750
S224F8A9E018876C82F626C98718C7EA83AA826C82F626CA87B7D43DB764072BEA83AA8218C8
S224F8AA00AA846C84F626CB87EA85AA843D8620C77C26C2C6E27B26C4C6343DF626C4B70522
S224F8AA20B781C7B7563D34373032C73D1B983B36CC55017B25B25A3F485A3FF626B3C1025B
S224F8AA402704C67F2007F626A9260BC6337B25AEC6363706ACA9EC8E6C851887B75618ABBD
S224F8AA6081E6006BEA26C2028D0005B76525EDF626C2F126A82707C67316AD092010EE8500
S224F8AA80097E25B38E00E02308C67316AD0906ACA81869832010EE8118AB83E601EE836BB6
S224F8AAA0E226C218628316AD0F22EB180B55003F180BAA003FB745F626A86B897226A8F646
S224F8AAC02106264518BB28017E2801186983200FEE83F62803EBE226C27B28031862831611
S224F8AAE0AD0F22ECB745CC26C23BB75418874AB2BEF83AE6897B26C2C63637C737CC07DA5E
S224F8AB003B188734083406ACE01869832010EE83E6E226C287F327EE7C27EE186283EE8577
S224F8AB2009AE8322E9C6555B3F585B3F1869832010EE8318AB81E601EE836BE225C518623A
S224F8AB408316AD0F22EBCE26C23418874AB2BEF81B82F625B8C4076B8A2742873BC608A38F
S224F8AB608087C325BD6C89EC80F325B37C25B3FC25B7A3807C25B7FC25B5188300007C2547
S224F8AB80B51869851B82200CEE8718AB83C6FF6B00186283E68A87AC8322ED2005CC25C53C
S224F8ABA06C8716ACEB3BCCFBFF34188716ACFB1B842307C67216AD09202ACCBFFFCE00F800
S224F8ABC04A968BF8BC25B718BE25B5251A16ACEB3B8680C734CE00F816ACFB1B842508C690
S224F8ABE07216AD0906AC7FFC25B7FE25B54A980BF8CE2108A6E5263786787A25AE86363638
S224F8AC006B81C60137CE07DA34C7873B523BCC25AE4A95C1F8C6016BA6FC25B7FE25B54A4B
S224F8AC20981AF81B8104615116AD172002204AC6555B3F585B3F16ACEB4A980BF8CE210885
S224F8AC40A6E56B803687E6B02643C6787B25AEC636374236CE07DA3418C7350235CC25AEC1
S224F8AC604A95C1F8C6016BA616ACEB4A981AF81B8104610516AD172014CC36727B25AE36BA
S224F8AC80C60137CE07DA3418C735872027FC25B73BFC25B53BEC8B3BF625B44A995EF81BFB
S224F8ACA086044116C672076136C60137CE07DA34C7873B523BCC25AE2029FC25B3F325B75E
S224F8ACC07C25B7FC25B5C90089007C25B5E6897B26C2C63637C737CC07DA3BC7873B523BA0
S224F8ACE0CC26C24A95C1F81BF0130AFC25B3F325B7FE25B51889000006FC604A968BF83BC7
S224F8AD0034EC88EE8616FC433D7B25AE86363DEC87830001AC853DC601CE2108A6826BE4A7
S224F8AD203DC6017B25B2B626B381022718CC7F377A25AE37C60137CE07DA34C7873B523B72
S224F8AD40CC25AE200F863736C737CE07DA34873B3BCC26C24A95C1F81B880A1B993BE68DFC
S224F8AD606B88EEF0106E86EE8E6E84040104C61320321869822010EE8218AB80E600EE8223
S224F8AD806BE226C2186282E68887AC8222E9F626C22727C1802723EC868C07DF2604EC8422
S224F8ADA02742C6127B25AECC013E3736CE07DA34C7873B523BCC25AE2024F626C2C180266E
S224F8ADC006427A25B2201D7A26C2427A25B2C63E37C737CE07DA34873B523BCC26C24A95AD
S224F8ADE0C1F81B881B890A1B973BECF0126C86ECF0106C847925B1E68F6B8AC101254018AB
S224F8AE0069822010EE8218AB80E600EE826BE226C2186282E68A87AC8222E9F626C2C10110
S224F8AE202704C1812662FC26B18C0190250CCC85227B25AE36C601372063E68A040104C648
S224F8AE40132052F626C2C1812704C183260AC6017B26B35B3C79003FC61137C737CC07DA8E
S224F8AE603BC7873B523BCC26C24A95C1F81B88CC1F406C8821A7EE88191F6D880475F6C6D6
S224F8AE80015B3C79003F2027EC868C07DF2604EC84271CC6127B25AECC01113736CE07DA3D
S224F8AEA034C7873B523BCC25AE4A95C1F81B881B8B0A1B973BC7876C846C82E68F6B887AC6
S224F8AEC025B1ECF0126C84EEF0106E828C07DF260604650306AFDE1869862010EE8618ABD8
S224F8AEE080E600EE866BE226C2186286E68887AC8622E9F626C2B710C73BF626C387EA819C
S224F8AF00AA806C8BE68AC1031B82257EFE26B18E01902504C6222074EE898EF1841826004E
S224F8AF2096B626B381012211EC848C07DF2606EC82182700A9C67F2053B626A981042704E9
S224F8AF40C6332048B626C581012509810C2209B626C681012509811F2209B626C781202504
S224F8AF6061817F225DB626C881202556817F2252B626C98120254B817F2247B626CA81205A
S224F8AF802540817F223CC1092704C6132036CC27C03BCE26C434C607874A87B2F81B844A3B
S224F8AFA09BD4F8C62E37C737CC07DA3BC7873BC6023BCC26C22021EC848C07DF2604EC8221
S224F8AFC0271CC6317B25AECC012E3736CE07DA34C7873B523BCC25AE4A95C1F81B881B8B0B
S224F8AFE00A1B996984C7876C856C826C8086800765046145E684876C85CC80010758046181
S224F8B00038E6866B856986E68487EA86AA856C857C27F7CC8002073E04611EA7CC80030782
S224F8B02035046115A7CC8004072C04610CA7CC80050723046103A7201ACC01317B25AE37DB
S224F8B04036CE07DA34C7873B523BCC25AE4A95C1F81B881B870ACE00FE4A968BF86C846EB1
S224F8B060823B341A8AB7544A9653F81B843D1B9837C7876C816B888680CE00FEBC27DB186C
S224F8B080BE27D9220FC640BC27DB18BE27D92504C6016B88E680C1011826013CFC27DB2680
S224F8B0A005FC27D92708FC27E32605FC27E1276516B1F64A968BF86C856E8316B1F6BC2700
S224F8B0C0DF18BE27DD246EEC853BEC853B1A8BB7544A9653F81B8404613D16B1F616FC5B8A
S224F8B0E07C27DB7E27D9C6555B3F585B3F186981F627EBE887876C81FC27EB16B1E67C2765
S224F8B100EB186981F627F1E887876C81FC27F116B1E67C27F12037CC31227B25AE36C6013E
S224F8B12037CE07DA34C7873B523BCC25AE4A95C1F81B882019722926F6292687B745F62927
S224F8B140258300013BAEB12C08C6017B292706B1E34AB28CF84AAFE1F8FC27F7BC27EB26EF
S224F8B16034C7874A9BB1F8CC01FF7C26C2507C26C450404A9BB1F84A9BD4F8C63137C737E1
S224F8B180CC07DA3B1887341A0434CC26C24A95C1F81B882025CC01FF7C26C2C77C26C4C64E
S224F8B1A03137C737CE07DA34873BC6043BCC26C24A95C1F81B884A9BFCF8C7877C27E37C6A
S224F8B1C027E17C27DB7C27D97C27DF7C27DD7C27F753437C27EB200BC10226022004C103B2
S224F8B1E02601A71B890AB710C7EE831848E8E28001A8E280003DFC27DBFE27D93D04218BFC
S224F8B200F62926F129252475B6292704206FC609B6292612B745E6E2280D042160C6027BD4
S224F8B220292719E22807EC407C27DB19E22805EC407C27D919E2280BEC407C27E31AE22819
S224F8B24009ED007D27E1F327DB7C27DFFC27D918F327E17C27DD860AF6292616FC2B0461F9
S224F8B26023CC31787B25AE36C60137CE07DA34C7873B523BCC25AE4A95C1F81B88F629279E
S224F8B280C1022607F629284AB06EF80AC737C609A68012B74518C76DE228076DE228056DC9
S224F8B2A0E2280B6DE2280969E2280D3352C12025DC7929257929267929277929280A6CACD1
S224F8B2C034EC896C84202CEE84F62103E8306E84875959B746FC2102FE210036343330872E
S224F8B2E018A8EA82027E2102E8EA8201A8EA82007C2100EC82EE80343B16FC606C866E84DB
S224F8B300C7873B3BEC84EE8616FC431B8426B81B860A6BAE1F0140101EE687C1082218A64E
S224F8B3208081022212C60116FC236B812702C78FC601F401462711EC8A3BEC8A3BC6014AC5
S224F8B340B407F81B8406B3DBE680B7465959B745EEE2293704A50CB7645959B745EEE22952
S224F8B360352719E680875959B745EDE2293735EDE2293535C6014AB407F81B84E680875951
S224F8B38059ED8AB7456DE22937EE88B7D46CE22935E6817B014AC603EE8816FC357B0170E9
S224F8B3A0C620A68B127B01711D0171101D017108C720128737B745C3017418AB86B746E62D
S224F8B3C0006B403352E18725EAE6877B017CE6817B0146F60147EA817B01473A0A3BEC88DC
S224F8B3E08C07D22604EC86270BEC888C07DF2615EC862611EC883BEC883BE68937EC854A94
S224F8B4008CADF81B853A0A37EC868C07DA260EEE84260A3B34E6844A8BFCF81B84320A1F92
S224F8B420014D01041C014D010A1C028001C6017B01401F014101FB79014B7901507901516E
S224F8B440790152790153CC40FF7B01547B01557B01567B015779015879015979015A790112
S224F8B4605B7B015C7B015D7B015E7B015F1C0141801D0141401D0141101C0141081C01415E
S224F8B480047A0142C62B7B01437901401E014101FB1F014010FB7901471C0145011C014537
S224F8B4A0801D02800118792941C787375959CEFFFFB7466EEA29376EEA29353352C1032598
S206F8B4C0E90A9A
S9030000FC
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment