Added Motor-Test-Mode: Sweep motors slowly forward and backward without any input.

Better config-validation.
Fixed board temperature calculation and serial output when speed > 50.
This commit is contained in:
larsm 2019-05-31 19:06:47 +02:00
parent 2c666c8cb4
commit ffda2219f1
3 changed files with 478 additions and 427 deletions

View File

@ -12,7 +12,7 @@
// ############################### GENERAL ###############################
// How to calibrate: connect GND and RX of a 3.3v uart-usb adapter to the right sensor board cable (be careful not to use the red wire of the cable. 15v will destroye verything.). if you are using nunchuck, disable it temporarily. enable DEBUG_SERIAL_USART3 and DEBUG_SERIAL_ASCII use asearial terminal.
// How to calibrate: connect GND and RX of a 3.3v uart-usb adapter to the right sensor board cable (be careful not to use the red wire of the cable. 15v will destroy everything.). if you are using nunchuck, disable it temporarily. enable DEBUG_SERIAL_USART3 and DEBUG_SERIAL_ASCII use asearial terminal.
// Battery voltage calibration: connect power source. see <How to calibrate>. write value nr 5 to BAT_CALIB_ADC. make and flash firmware. then you can verify voltage on value 6 (devide it by 100.0 to get calibrated voltage).
#define BAT_CALIB_REAL_VOLTAGE 43.0 // input voltage measured by multimeter
@ -47,7 +47,7 @@
#define DEBUG_SERIAL_USART3 // right sensor board cable, disable if I2C (nunchuck or lcd) is used!
#define DEBUG_BAUD 115200 // UART baud rate
//#define DEBUG_SERIAL_SERVOTERM
//#define DEBUG_SERIAL_SERVOTERM // Software for plotting graphs: https://github.com/STMBL/Servoterm-app
#define DEBUG_SERIAL_ASCII // "1:345 2:1337 3:0 4:0 5:0 6:0 7:0 8:0\r\n"
// ############################### INPUT ###############################
@ -58,13 +58,13 @@
// for Arduino, use void loop(void){ Serial.write((uint8_t *) &steer, sizeof(steer)); Serial.write((uint8_t *) &speed, sizeof(speed));delay(20); }
// ###### CONTROL VIA RC REMOTE ######
// left sensor board cable. Channel 1: steering, Channel 2: speed.
// left sensor board cable. Channel 1: steering, Channel 2: speed. Use a very short cable!
//#define CONTROL_PPM // use PPM-Sum as input. disable CONTROL_SERIAL_USART2!
//#define PPM_NUM_CHANNELS 6 // total number of PPM channels to receive, even if they are not used.
// ###### CONTROL VIA TWO POTENTIOMETERS ######
// ADC-calibration to cover the full poti-range: connect potis to left sensor board cable (0 to 3.3V) (do NOT use the red 15V wire in the cable!). see <How to calibrate>. turn the potis to minimum position, write value 1 to ADC1_MIN and value 2 to ADC2_MIN. turn to maximum position and repeat it for ADC?_MAX. make, flash and test it.
#define CONTROL_ADC // use ADC as input. disable CONTROL_SERIAL_USART2!
//#define CONTROL_ADC // use ADC as input. disable CONTROL_SERIAL_USART2!
#define ADC1_MIN 0 // min ADC1-value while poti at minimum-position (0 - 4095)
#define ADC1_MAX 4095 // max ADC1-value while poti at maximum-position (0 - 4095)
#define ADC2_MIN 0 // min ADC2-value while poti at minimum-position (0 - 4095)
@ -74,6 +74,11 @@
// left sensor board cable. keep cable short, use shielded cable, use ferrits, stabalize voltage in nunchuck, use the right one of the 2 types of nunchucks, add i2c pullups. use original nunchuck. most clones does not work very well.
//#define CONTROL_NUNCHUCK // use nunchuck as input. disable DEBUG_SERIAL_USART3!
// ###### MOTOR TEST MODE ######
// slowly move both wheels forward and backward, ignoring all inputs
#define CONTROL_MOTOR_TEST
#define CONTROL_MOTOR_TEST_MAX_SPEED 300 // sweep slowly from -MAX_SPEED to MAX_SPEED (0 - 1000)
// ############################### DRIVING BEHAVIOR ###############################
// inputs:
@ -149,6 +154,41 @@ else {\
#error DEBUG_I2C_LCD and DEBUG_SERIAL_USART3 not allowed. it is on the same cable.
#endif
#if defined CONTROL_PPM && defined CONTROL_ADC && defined CONTROL_NUNCHUCK || defined CONTROL_PPM && defined CONTROL_ADC || defined CONTROL_ADC && defined CONTROL_NUNCHUCK || defined CONTROL_PPM && defined CONTROL_NUNCHUCK
#error only 1 input method allowed. use CONTROL_PPM or CONTROL_ADC or CONTROL_NUNCHUCK.
#ifdef CONTROL_SERIAL_USART2
#if defined CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif
#define CONTROL_DEFINED
#endif
#ifdef CONTROL_PPM
#if defined CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif
#define CONTROL_DEFINED
#endif
#ifdef CONTROL_ADC
#if defined CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif
#define CONTROL_DEFINED
#endif
#ifdef CONTROL_NUNCHUCK
#if defined CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif
#define CONTROL_DEFINED
#endif
#ifdef CONTROL_MOTOR_TEST
#if defined CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif
#define CONTROL_DEFINED
#endif
#ifndef CONTROL_DEFINED
#error select exactly 1 input method in config.h!
#endif

View File

@ -67,6 +67,9 @@ extern volatile uint32_t timeout; // global variable for timeout
extern float batteryVoltage; // global variable for battery voltage
uint32_t inactivity_timeout_counter;
uint32_t main_loop_counter;
int32_t motor_test_direction = 1;
extern uint8_t nunchuck_data[6];
#ifdef CONTROL_PPM
@ -77,7 +80,9 @@ int milli_vel_error_sum = 0;
void poweroff() {
#ifndef CONTROL_MOTOR_TEST
if (abs(speed) < 20) {
#endif
buzzerPattern = 0;
enable = 0;
for (int i = 0; i < 8; i++) {
@ -86,7 +91,9 @@ void poweroff() {
}
HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, 0);
while(1) {}
#ifndef CONTROL_MOTOR_TEST
}
#endif
}
@ -218,6 +225,14 @@ int main(void) {
timeout = 0;
#endif
#ifdef CONTROL_MOTOR_TEST
// if (main_loop_counter % 2 == 0) {
if (motor_test_direction == 1) cmd2 += 1;
else cmd2 -= 1;
if (abs(cmd2) > CONTROL_MOTOR_TEST_MAX_SPEED) motor_test_direction = -motor_test_direction;
// }
timeout = 0;
#endif
// ####### LOW-PASS FILTER #######
steer = steer * (1.0 - FILTER) + cmd1 * FILTER;
@ -252,7 +267,7 @@ int main(void) {
lastSpeedR = speedR;
if (inactivity_timeout_counter % 25 == 0) {
if (main_loop_counter % 25 == 0) {
// ####### CALC BOARD TEMPERATURE #######
board_temp_adc_filtered = board_temp_adc_filtered * 0.99 + (float)adc_buffer.temp * 0.01;
board_temp_deg_c = ((float)TEMP_CAL_HIGH_DEG_C - (float)TEMP_CAL_LOW_DEG_C) / ((float)TEMP_CAL_HIGH_ADC - (float)TEMP_CAL_LOW_ADC) * (board_temp_adc_filtered - (float)TEMP_CAL_LOW_ADC) + (float)TEMP_CAL_LOW_DEG_C;
@ -310,6 +325,8 @@ int main(void) {
if (inactivity_timeout_counter > (INACTIVITY_TIMEOUT * 60 * 1000) / (DELAY_IN_MAIN_LOOP + 1)) { // rest of main loop needs maybe 1ms
poweroff();
}
main_loop_counter += 1;
}
}

View File

@ -1,23 +1,23 @@
:020000040800F2
:1000000000C00020913D0008753D0008773D0008C4
:10001000793D00087B3D00087D3D000800000000A0
:100020000000000000000000000000007F3D00080C
:10003000813D000800000000833D0008853D000868
:10004000D93D0008D93D0008D93D0008D93D000838
:10005000D93D0008D93D0008D93D0008D93D000828
:10006000D93D0008D93D0008D93D0008A135000858
:10007000D93D0008D93D0008D93D0008D93D000808
:10008000D93D0008D93D0008D93D0008D93D0008F8
:10009000D93D0008D93D0008D93D0008D93D0008E8
:1000A000D93D0008D93D0008D93D0008D93D0008D8
:1000B000D93D0008D93D0008D93D0008D93D0008C8
:1000C000D93D0008D93D0008D93D0008D93D0008B8
:1000D000D93D0008D93D0008D93D0008D93D0008A8
:1000E000D93D0008D93D0008D93D0008D93D000898
:1000F000D93D0008D93D0008D93D0008D93D000888
:10010000D93D0008D93D0008D93D0008D93D000877
:10011000D93D0008D93D0008D93D0008D93D000867
:10012000D93D0008D93D0008D93D0008D93D000857
:1000000000C00020293D00080D3D00080F3D0008FC
:10001000113D0008133D0008153D000800000000D8
:10002000000000000000000000000000173D000874
:10003000193D0008000000001B3D00081D3D0008A0
:10004000713D0008713D0008713D0008713D0008D8
:10005000713D0008713D0008713D0008713D0008C8
:10006000713D0008713D0008713D000839350008F8
:10007000713D0008713D0008713D0008713D0008A8
:10008000713D0008713D0008713D0008713D000898
:10009000713D0008713D0008713D0008713D000888
:1000A000713D0008713D0008713D0008713D000878
:1000B000713D0008713D0008713D0008713D000868
:1000C000713D0008713D0008713D0008713D000858
:1000D000713D0008713D0008713D0008713D000848
:1000E000713D0008713D0008713D0008713D000838
:1000F000713D0008713D0008713D0008713D000828
:10010000713D0008713D0008713D0008713D000817
:10011000713D0008713D0008713D0008713D000807
:10012000713D0008713D0008713D0008713D0008F7
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
@ -31,9 +31,9 @@
:1001D000000000000000000000000000000000001F
:0401E0005FF8E0F1F3
:1001E80010B5054C237833B9044B13B10448AFF369
:1001F80000800123237010BD88000020000000004B
:100208007046000808B5034B1BB103490348AFF318
:10021800008008BD000000008C0000207046000827
:1001F80000800123237010BD8C0000200000000047
:100208000846000808B5034B1BB103490348AFF380
:10021800008008BD0000000090000020084600088B
:10022800034613F8012B002AFBD1181A013870472E
:1002380081F0004102E000BF83F0004330B54FEA8F
:1002480041044FEA430594EA050F08BF90EA020FFC
@ -354,7 +354,7 @@
:1015F800624412F8100C13F4803F05D10C4B03FB26
:1016080000F007B010BC7047084B5B68C3F3404359
:10161800634413F8142C074BB3FBF2F300FB03F0FD
:10162800EFE70448EDE700BF8846000800100240D5
:10162800EFE70448EDE700BF20460008001002403D
:1016380000093D0000127A00594B1B6803F00703AC
:101648008B420CD2564A136823F007030B431360EE
:10165800136803F007038B4201D00120704770B56F
@ -378,12 +378,12 @@
:1017780023F46053296943EAC1035360FFF724FF48
:10178800084B5B68C3F30313074AD35CD840074B85
:101798001860002000F03EFD002070BD0120FCE72D
:1017A80000200240001002409C4600080000002073
:1017A80000200240001002403446000800000020DB
:1017B800014B1868704700BF0000002008B5FFF70C
:1017C800F7FF044B5B68C3F30223034AD35CD8409A
:1017D80008BD00BF00100240AC46000808B5FFF77E
:1017D80008BD00BF001002404446000808B5FFF7E6
:1017E800E7FF044B5B68C3F3C223034AD35CD840CA
:1017F80008BD00BF00100240AC46000830B4036AC0
:1017F80008BD00BF001002404446000830B4036A28
:1018080023F001030362056A4268846924F07304C3
:101818000B681C4325F002058B682B43104DA8422A
:1018280003D005F50065A84205D123F00803CD686B
@ -551,7 +551,7 @@
:1022480008B5074A136843F0100313600320FFF72B
:10225800CDFD0020FFF7DEFFFFF7DAFF002008BD05
:1022680000200240024A136801331360704700BF20
:10227800E0000020014B1868704700BFE000002014
:10227800E4000020014B1868704700BFE40000200C
:1022880030B583B00190FFF7F5FF0546019CB4F126
:10229800FF3F00D00134FFF7EDFF401BA042FAD307
:1022A80003B030BD7047000030B482B00023019302
@ -729,7 +729,7 @@
:102D68003046FEF785FF21463046FEF7ABFF0421CB
:102D78003046FEF7A7FF39463046FEF7A3FF2B681B
:102D880001221A633268136843F00103136019B013
:102D9800BDE8F08F00100240AC0100203C03002089
:102D9800BDE8F08F00100240B00100204003002081
:102DA800002C0140003401402DE9F04186B0424E2C
:102DB800B36943F40073B361B36903F40073009318
:102DC800009B3E4C3E4B23604FF48073A36000256C
@ -747,9 +747,9 @@
:102E8800019B114B1D60C3F80480104A9A60104AD8
:102E9800DA6040F6A2221A601A6842F001021A604B
:102EA8002A4629463846FEF7B3FF3846FEF7E4FFC0
:102EB80006B0BDE8F08100BF001002407402002097
:102EB80006B0BDE8F08100BF001002407802002093
:102EC8000024014000000140080002404C24014059
:102ED800E8020020F0B585B0284B9A6942F4806278
:102ED800EC020020F0B585B0284B9A6942F4806274
:102EE8009A619B6903F480630093009B244C254BF3
:102EF80023604FF48073A3600023E36063614FF4A1
:102F08006022E2616360052626612046FFF744FBE4
@ -760,394 +760,388 @@
:102F5800FFF7AAF9072303930197029601A92046D0
:102F6800FFF7A2F923689A6842F480729A609A6817
:102F780042F001029A6005B0F0BD00BF00100240A7
:102F880028010020002801400D4B1B681333262B15
:102F980014D810B500240B4B1C700B4B1C7005E0AB
:102FA8000A4B1C706420FFF76BF90134072CF7DD1E
:102FB800002220210648FFF796F8FEE7704700BF79
:102FC80094030020A8000020B4000020A4000020E2
:102FD8000008014030B597B002250C9501231093E5
:102FE800102311931395002414944FF46013159330
:102FF8000CA8FEF7FBF80F230793089509944FF4E4
:1030080080630A930B94294607A8FEF715FB0195E0
:103018004FF44043039301A8FFF770F8FEF7C8FB8D
:10302800084BA3FB00308009FEF732FF0420FEF7AF
:1030380045FF224621464FF0FF30FEF7E9FE17B064
:1030480030BD00BFD34D62102DE9F04F85B0FFF7BA
:10305800F7F8B34CA36943F00103A361A36903F034
:1030680001030393039B0320FEF7C0FE00221146D1
:103078006FF00B00FEF7CCFE002211466FF00A003D
:10308800FEF7C6FE002211466FF00900FEF7C0FEEB
:10309800002211466FF00400FEF7BAFE0022114626
:1030A8006FF00300FEF7B4FE002211466FF0010036
:1030B800FEF7AEFE002211464FF0FF30FEF7A8FEE5
:1030C800FFF788FF636923F001036361FFF772FC70
:1030D800FFF772FDFFF768FEFFF7FCFEFFF71EFC27
:1030E800012220218F48FEF7FEFF8F48FFF7B8F92D
:1030F8008E48FFF7B5F9082405E08D4B1C70642055
:10310800FFF7BEF8013C002CF7DA4FF0000A884BB5
:1031180083F800A0012204218648FEF7E4FF864BCD
:10312800188AFDF709FE0190844B01221A70D346D4
:103138004FE14FF47A7861E14FF47A7473E14FF418
:103148007A7642464B4620462946FDF777F80446EC
:103158000D4600227A4BFDF7B7FC80B96AA3D3E984
:10316800002320462946FDF791FC00285DD1204622
:103178002946FDF7B3FC074603E0724EE1E74FF43A
:103188007A77714B1A68714BA3FB0213DB0803EBC8
:10319800830303EB83039A4249D00AF13203BB420B
:1031A80014DDAAF1320ABA4510DA0BF13203B34240
:1031B8000CDDABF1320BB34508DA654B1B68042B09
:1031C80004D8644B1E607B42634A13600221554851
:1031D800FEF782FF38B1614B1B6823B9604B1B684F
:1031E800002B00F082805F4B1C685F492046FDF78A
:1031F80099FF28B15D4B1B681333262B40F2818061
:103208005B492046FDF78EFF002800F0BD80564937
:103218002046FDF7A5FF002800F0B680444B0522A4
:103228001A70544B06221A70BAE0464FA9E7019863
:10323800FDF762F936A3D3E90023FDF7B5F9044693
:103248000D46DFF8F480B8F81000FDF775FDFDF7BE
:1032580053F931A3D3E90023FDF7A6F902460B463B
:1032680020462946FCF7EAFFFDF760FC0546019079
:103278004149FDF7AFFC4149FDF7B6FD4049FDF76F
:10328800ABFC0446B8F80E10002000F029FDB8F891
:103298001210012000F024FD3146022000F020FD2C
:1032A8003946032000F01CFDB8F80C10042000F08B
:1032B80017FD34492B4B1868FDF796FDFDF75AFFAB
:1032C8000146052000F00CFD2846FDF753FF014696
:1032D800062000F005FD2046FDF74CFF01460720BB
:1032E80000F0FEFC00F002FD57E7144B00221A70B4
:1032F80002210C48FEF7F0FE0028F9D1FFF744FE42
:1033080071E7FFF741FE4BE00000000000408FC06E
:10331800AE47E17A14AEEF3F7B14AE47E17A843FC3
:10332800001002400008014074020020280100201B
:10333800A4000020000C0140E8020020B400002096
:1033480000408F4018FCFFFF7C0300201F85EB51D5
:1033580004000020C8000020C4000020D000002085
:10336800CC00002008000020CCCC064294030020AA
:1033780000000C42A800002000E0CE44083748BEF8
:1033880033330F420000C842734B1B6813F1320FEE
:1033980080F2CA80714B05221A70714B01221A7093
:1033A80087EAE773A3EBE773322B06DC86EAE6735A
:1033B800A3EBE673322B40F3BD806A4B00221A6000
:1033C800684B1A68684B9A4201D9FFF7DDFDB3468E
:1033D800BA460220FEF754FF644BDB899BB2B3F573
:1033E800805FBFF4A6AE614BDA89D889FDF7A8FCE7
:1033F8005F49FDF7ADFDFDF7BDFE80465D4BC3F8A7
:1034080000805A4B5B8A9BB2B3F5805FBFF494AEE1
:10341800564B5A8A588AFDF793FC5549FDF798FD93
:10342800FDF7A8FE0446544B1C60504AD3899BB252
:10343800B3F5FA6F94BF0023012350490B70538AE8
:103448009BB2B3F5FA6F94BF002301234C4A137063
:103458004C4B00221A604C4D2868FDF73BF838A306
:10346800D3E90023FDF7A0F806460F464046FDF7CE
:1034780031F835A3D3E90023FDF796F802460B4649
:1034880030463946FCF7DAFEFDF728FB0646286089
:10349800314D2868FDF71EF829A3D3E90023FDF76D
:1034A80083F8804689462046FDF714F826A3D3E919
:1034B8000023FDF779F802460B4640464946FCF7DB
:1034C800BDFEFDF70BFB2860FDF704F800222F4B2B
:1034D800FDF76AF804460D463046FCF7FBFF00226C
:1034E8002A4BFDF761F88046894602460B4620467E
:1034F8002946FCF7A1FE06460F460022244BFDF79D
:10350800E3FA00287FF41BAE11A3D3E90023304669
:103518003946FDF7BBFA00287FF42FAE304639460E
:10352800FDF7DCFA06460CE600230C4A13700C4A39
:10353800137035E70B4A13680133136040E700BF87
:10354800CDCCCCCCCCCCEC3F9A9999999999B93FF0
:103558000000000000408FC094030020A400002059
:10356800A80000207C03002000710200E80200206F
:103578003D0A83409C030020880300209803002014
:1035880084030020040000208C0300200000E03F9A
:1035980000408F4000000000774B02225A60774BB2
:1035A8001B68B3F57A7F5EDB2DE9F041744B1A682E
:1035B800744BA3FB02139B094FF47A7101FB13238D
:1035C8000BBB714C2068FCF797FF65A3D3E9002378
:1035D800FCF7EAFF06460F466C4B9889FDF7ACFBF3
:1035E8006B49FDF701FCFCF787FF5FA3D3E90023D4
:1035F800FCF7DAFF02460B4630463946FCF71EFE5A
:10360800FDF794FA2060614B5889624B1C68001BD7
:10361800FCF760FF56A3D3E90023FCF7C5FF00229F
:103628000023FDF733FA002852D1584B5889001B64
:10363800FCF750FF4EA3D3E90023FCF7B5FF0022A7
:10364800554BFDF741FA002852D1544B1B68052B06
:103658004ED8534B1B78002B4AD0524A536C43F434
:103668000043536449E00133444A1360474A908851
:103678004D490B68034403EBD3735B100B60D08890
:103688004A490B68034403EBD3735B100B60108843
:1036980047490B68034403EBD3735B100B605088F6
:1036A80044490B68034403EBD3735B100B605089E8
:1036B80038490B68034403EBD3735B100B60118923
:1036C8003D4A13680B4403EBD3735B1013607047D8
:1036D8002E4B5889001BFCF7FDFE25A3D3E90023D8
:1036E800FCF762FF0022354BFDF7D0F90028ACD07B
:1036F8002C4A536C23F400435364244B18892E4BF3
:103708001C68001BFCF7E6FE19A3D3E90023FCF7AD
:103718004BFF00220023FDF7B9F9002852D11B4BBB
:103728001889001BFCF7D6FE11A3D3E90023FCF788
:103738003BFF0022184BFDF7C7F9002852D1174B61
:103748001B68052B4ED8164B1B78002B4AD01C4AF9
:10375800536C43F40043536449E000BFAFF3008067
:10376800AE47E17A14AEEF3F7B14AE47E17A843F6F
:103778007B14AE47E17A943F00000240B800002075
:10378800AC000020D34D621008000020E8020020A1
:1037980017B9CE3C0C00002000002E400400002089
:1037A800B40000200034014014000020180000205C
:1037B8001C000020200000201000002000002EC067
:1037C800002C0140904B1889001BFCF783FE8CA34A
:1037D800D3E90023FCF7E8FE00228C4BFDF756F9ED
:1037E8000028ACD08A4A536C23F4004353648949B7
:1037F8008B6813F0200F0CBF012300238A6812F096
:10380800400F0CBF01220022896811F0800F0CBF05
:10381800012500258049886810F4806F0CBF0120BD
:1038280000208C6814F4006F0CBF01240024896800
:1038380011F4805F02EB450203EB4203774EF35C21
:1038480077490B600B6803F102030B600D68754B39
:1038580083FB0572A2EBE57202EB42024FEA4207D4
:10386800A5EB07020A600CBF02220022224400EBEB
:103878004202B05C6C4A1060106802301060106838
:1038880083FB0043A3EBE07303EB43035C00031BE0
:10389800136009685C488388644A12689A1AC38866
:1038A800634800681B1A052934D8DFE801F00323B0
:1038B80026292C2FD31A5F4A13605F4A13680133F5
:1038C80013605E4A14684CB35D4AA2FB0312120BE4
:1038D8005C4909680131B2FBF1F001FB1022EAB939
:1038E800B3FBF4F204FB1233EBB910215648FEF790
:1038F80000FC18E04F4B1A60DFE74E4B1A60DCE71C
:103908004C4A1360D9E74B4A1360D6E79B1A494AD9
:103918001360D2E7474B00221A60CEE7002210213D
:103928004948FEF7E0FB494BD3F800C03C4B1B6805
:10393800052B2BD8DFE803F00312171C2226CCF145
:10394800000064469C46424B1968374B1B68052BA0
:1039580052D8DFE803F01F3F43474B4E6446CCF193
:10396800000C0020EFE76046CCF1000C0024EAE7E9
:10397800CCF1000460464FF0000CE4E7CCF1000401
:103988000020E0E7CCF100000024DCE7002004463A
:103998008446D8E74E420F4619462C4B1B68002B2D
:1039A80040F398802B4B1D681D4B1B6805331D4A3F
:1039B80082FB03E2A2EBE37202EB42024FEA420E01
:1039C800A3EB0E02052A00F2B980DFE802F0456A8F
:1039D8006F74797E0F4649420026DEE70E4649425B
:1039E8000027DAE74F420E460021D6E74F4200266D
:1039F800D3E74E420027D0E7002637463146CCE7CA
:103A08007B14AE47E17A943FE802002000002EC004
:103A1800002C0140000C014000100140B446000891
:103A2800BC000020ABAAAA2AC00000201400002075
:103A380018000020B0000020AC000020A4000020E6
:103A48005917B7D1A800002000080140C400002081
:103A5800C8000020CC000020C5F10008AE4615467D
:103A6800654474444044964B1B68002B40F3D78050
:103A7800944B1B68944A126802F1050C934A82FB26
:103A88000CE2A2EBEC7202EB42024FEA420EACEB04
:103A98000E02052A00F2F980DFE802F058A8ADB25C
:103AA800B7BCAE466D424FF00008D9E7A8466D4254
:103AB8004FF0000ED4E7C5F1000EA8460025CFE769
:103AC800C5F1000E4FF00008CAE7C5F100084FF035
:103AD800000EC5E77E4B1D68C5F1000E7D4B1A68C8
:103AE80001327A4B83FB0283A3EBE27303EB4303BC
:103AF8004FEA4308A2EB0803052B1AD8DFE803F0C6
:103B08000323060A0E14A8461D46A9E7F0464FF0FF
:103B1800000EA5E7F046AE460025A1E72B46754600
:103B28009E464FF000089BE7A84675464FF0000EEA
:103B380096E74FF00008C646454691E74FF0000863
:103B4800C64645468CE74FF0000889E7C3F10008F0
:103B58009E461346194407EB0E0206EB080305F5CB
:103B68007A7540F2C676B54200F397800A2DB8BF41
:103B78000A25594E756304F57A7440F2C675AC424D
:103B880000F38E800A2CB8BF0A24534DAC6300F5AD
:103B98007A7040F2C674A04200F385800A28B8BF44
:103BA8000A204D4CE06301F57A7140F2C6708142FB
:103BB8007CDC0A29B8BF0A214848416302F57A72B9
:103BC80040F2C6718A4274DC0A2AB8BF0A22434905
:103BD8008A6303F57A7340F2C67293426CDC0A2B4F
:103BE800B8BF0A233D4AD363BDE8F0819E465B42D5
:103BF8004FF00008AEE798465B424FF0000EA9E789
:103C0800C3F1000E98460023A4E7C3F1000E4FF05D
:103C180000089FE7C3F100084FF0000E9AE7294B10
:103C28001B68C3F1000E284A12680132DFF89CC0F5
:103C38008CFB028CACEBE27C0CEB4C0C4FEA4C0896
:103C4800A2EB080CBCF1050F1AD8DFE80CF003232F
:103C5800060A0E14984663467CE7F0464FF0000EBD
:103C680078E7F0469E46002374E71A467346964660
:103C78004FF000086EE7984673464FF0000E69E76C
:103C88004FF00008C646434664E74FF00008C646B2
:103C980043465FE74FF000085CE740F2C67568E707
:103CA80040F2C67471E740F2C6707AE740F2C67116
:103CB80082E740F2C6728AE740F2C67392E700BF15
:103CC800C8000020D0000020C0000020ABAAAA2A0B
:103CD800CC000020BC00002000340140002C014032
:103CE800014B23F81010704704040020F0B587B08A
:103CF8001A4F64220021384600F090F818490A88C3
:103D0800B1F802C0888800B2CC8824B20D892DB2DF
:103D18004E8936B28B891BB2C98909B205910493C1
:103D280003960295019400900FFA8CF312B20D4994
:103D3800384600F07BF80C4B5B686BB90A4C23687B
:103D480023F0010323603846FCF76AFA6060E760F5
:103D5800236843F00103236007B0F0BDA0030020EF
:103D680004040020BC4600081C0002407047FEE71F
:103D7800FEE7FEE7FEE770477047704708B5FEF7B5
:103D880071FAFEF7ACF808BD002103E00B4B5B5855
:103D9800435004310A480B4B42189A42F6D30A4A58
:103DA80002E0002342F8043B084B9A42F9D3FEF79D
:103DB8008FFD00F00FF8FFF747F970472447000818
:103DC800000000208800002088000020180400203F
:103DD800FEE7000070B500250C4E0D4CA41BA41086
:103DE800A54209D100F040FC00250A4E0A4CA41B4C
:103DF800A410A54205D170BD56F825309847013565
:103E0800EEE756F8253098470135F2E71C470008D9
:103E18001C4700081C4700082047000803460244C6
:103E2800934200D1704703F8011BF9E70EB46FF015
:103E3800004100B59CB01DAB02900690079104911B
:103E48000848094953F8042B0591006802A9019311
:103E580000F066F80022029B1A701CB05DF804EBB3
:103E680003B07047240000200802FFFF2DE9F04747
:103E78008E6882469E420C469046994637D88A8973
:103E880012F4906F31D00223256809696F1A6569A9
:103E980005EB450595FBF3F509F101033B449D420C
:103EA80038BF1D46530530D5294600F035FB064678
:103EB80050B90C234FF0FF30CAF80030A38943F003
:103EC8004003A381BDE8F0873A46216900F0B4FABF
:103ED800A38923F4906343F08003A38126613E44C1
:103EE80026604E466561ED1BA5604E4500D94E46DD
:103EF80032464146206800F0AAFAA36800209B1BBE
:103F0800A36023681E442660DCE72A4600F05EFBB7
:103F180006460028E2D12169504600F0B1FAC8E708
:103F28002DE9F04F9DB003938B8980461D060C4602
:103F380016460FD50B696BB9402100F0EDFA2060E9
:103F4800206128B90C23C8F800304FF0FF30C7E0D3
:103F5800402363610023099320238DF829303023FF
:103F68004FF0010B8DF82A3037463D4615F8013BD6
:103F78000BB1252B3ED1B7EB060A0BD05346324680
:103F880021464046FFF772FF013000F0A480099BEC
:103F9800534409933B78002B00F09D8000234FF099
:103FA800FF32CDE90523049307938DF853301A9314
:103FB8002F46052217F8011B4F4800F02FFA049BE3
:103FC800D0B9D90644BF20228DF853201A0744BF20
:103FD8002B228DF853202A782A2A15D02F46002024
:103FE8000A25079A394611F8013B303B092B4DD970
:103FF800B8B10FE02F46B8E73F4A3D46801A0BFAA2
:1040080000F018430490D3E7039A111D1268039136
:10401800002A01DB079204E0524243F002030792B0
:1040280004933B782E2B0CD17B782A2B33D1039B1E
:1040380002371A1D1B680392002BB8BF4FF0FF33DD
:1040480005932E4D03223978284600F0E7F938B158
:104058004023401B03FA00F0049B013703430493F9
:104068003978062226487E1C8DF8281000F0D6F9EB
:10407800002838D0234B13BB039B073323F00703D7
:1040880008330393099B4B4409936DE705FB023200
:1040980001200F46A6E700230A2519460137059394
:1040A800384610F8012B303A092A03D9002BC8D01A
:1040B8000591C6E705FB012101230746F0E703AB9D
:1040C80000932246104B04A94046AFF30080B0F19C
:1040D800FF3F8146D6D1A3895B063FF536AF0998E5
:1040E8001DB0BDE8F08F03AB00932246064B04A930
:1040F800404600F081F8EAE7E8460008EE46000886
:10410800F246000800000000753E00082DE9F0475F
:1041180091461F468A680B6906469342B8BF134604
:10412800C9F8003091F843200C46DDF8208012B120
:104138000133C9F800302368990642BFD9F8003026
:104148000233C9F80030256815F0060507D104F1D7
:10415800190AE368D9F800209B1AAB4229DC94F8C5
:1041680043302268003318BF012392062ED404F18D
:10417800430239463046C047013021D02368E568FC
:1041880003F00603042B18BF0025D9F800204FF0D0
:10419800000908BFAD1AA368226908BF25EAE575BA
:1041A8009342C4BF9B1AED181A344D451AD100200A
:1041B80008E00123524639463046C047013003D152
:1041C8004FF0FF30BDE8F0870135C2E73020E11835
:1041D80081F843005A1C94F845102244023382F8AF
:1041E8004310C4E70123224639463046C047013010
:1041F800E6D009F10109D8E72DE9F04301F1430CB4
:104208000C46097E85B06E291746064698460C9AD4
:1042180000F0B38022D8632936D00AD8002900F0EC
:10422800B980582900F0838004F1420584F84210CF
:1042380032E0642901D06929F6D12068136805069F
:1042480003F104012AD51B681160002B03DA2D2223
:104258005B4284F843206F480A2239E0732900F052
:104268009D8008D86F2920D07029DDD1236843F0BC
:104278002003236003E0752917D07829D4D1782347
:10428800654884F8453055E0136804F14205191D66
:104298001B68116084F8423001238CE01B6810F021
:1042A800400F116018BF1BB2CFE713682568181DAF
:1042B8001060280601D51B6802E06806FBD51B883C
:1042C8006F2914BF0A2208225248002184F843109B
:1042D8006568002DA560C0F29580216821F0040171
:1042E8002160002B3DD1002D40F08E806546082AC4
:1042F8000BD12368DB0708D5236962689A42DEBFC1
:10430800302305F8013C05F1FF35ACEB05032361CB
:10431800CDF800803B4603AA21463046FFF7F6FE5B
:1043280001304DD14FF0FF3005B0BDE8F08339487A
:1043380084F84510136821681D1D1B6815600A065E
:104348000BD5CA0744BF41F0200121601BB9226880
:1043580022F0200222601022B7E74D0648BF9BB228
:10436800EFE76546B3FBF2F102FB1133C35C05F8D6
:10437800013D0B460029F5D1B9E713682568181DDA
:104388006169106028061B6801D5196002E06A0699
:10439800FBD51980002365462361B9E71368191D09
:1043A80011601D6862680021284600F037F808B1DE
:1043B800401B606063682361002384F84330A7E7EB
:1043C80023692A4639463046C0470130AAD02368B7
:1043D8009B0713D4E068039B9842B8BF1846A3E72D
:1043E80001234A4639463046C04701309AD0013544
:1043F800E368039A9B1AAB42F2DCEBE7002504F171
:104408001909F5E7002BACD1037804F1420584F8CB
:1044180042306CE7F94600080A47000810B5C9B2EF
:1044280002449042034601D1002303E01C78013086
:104438008C42F6D1184610BD10B5431E0A4491426D
:1044480000D110BD11F8014B03F8014FF7E788427E
:1044580010B501EB020307D8421E99420AD011F8A1
:10446800014B02F8014FF8E78342F5D98118D21AB7
:10447800D34200D110BD13F8014D01F8014DF7E703
:1044880038B50546002943D051F8043C0C1F002BD1
:10449800B8BFE41800F0D0F81E4A1368104633B9C4
:1044A800636014602846BDE8384000F0C6B8A342EF
:1044B8000BD921686218934201BF1A685B685218C9
:1044C800226063600460EDE713465A680AB1A242AD
:1044D800FAD919685818A0420BD120680144581815
:1044E80082421960DED110685268014419605A602E
:1044F800D8E702D90C232B60D4E7206821188A4218
:1045080001BF116852680918216062605C60C9E7E0
:1045180038BD00BFD400002070B5CD1C25F00305C0
:1045280008350C2D38BF0C25002D064601DBA942A5
:1045380003D90C233360002070BD00F07DF8214AB8
:104548001468214691B9204C23681BB9304600F005
:1045580063F820602946304600F05EF8431C24D1F9
:104568000C233046336000F068F8E4E70B685B1B07
:1045780018D40B2B0FD90B60CC18CD50304600F057
:104588005CF804F10B00231D20F00700C31AD3D0F8
:104598005A42E250D0E74B688C4216BF6360136002
:1045A8000C46EBE70C464968CCE7C41C24F003042E
:1045B800A04205D0211A304600F02EF80130CFD0A5
:1045C8002560DBE7D4000020D8000020F8B50746B6
:1045D80014460E4621B9BDE8F8401146FFF79CBFC6
:1045E80022B9FFF74DFF25462846F8BD00F026F80A
:1045F800A0420FD221463846FFF78EFF0546002815
:10460800F2D031462246FFF717FF31463846FFF70A
:1046180037FFE9E73546E7E738B50023054C054697
:104628000846236000F012F8431C02D1236803B146
:104638002B6038BD140400207047704751F8043CC3
:10464800181F002BBCBF0B58C0187047044A0549F7
:104658001368002B08BF0B461844106018467047B3
:10466800DC00002018040020F8B500BFF8BC08BC26
:104678009E467047F8B500BFF8BC08BC9E46704718
:1046880002030405060708090A0B0C0D0E0F10108B
:104698000102000000000000000000000102030405
:1046A80006070809000000000102030400000201D7
:1046B80004050300313A256920323A256920333A46
:1046C800256920343A256920353A256920363A2566
:1046D8006920373A256920383A25690D0A00000013
:1046E800232D302B2000686C4C00656667454647D3
:1046F8000030313233343536373839414243444556
:1047080046003031323334353637383961626364C4
:0447180065660000D2
:04471C000D02000882
:04472000E9010008A3
:1047240000A24A046400000000002042D0070000F8
:10473400D0070000D0070000D0070000D007000019
:10474400D007000028000020000000000000000046
:104754000000000000000000000000000000000055
:104764000000000000000000000000000000000045
:104774000000000000000000000000000000000035
:104784000000000000000000000000000000000025
:104794000000000000000000000000000000000015
:0847A40000000000000000000D
:0400000508003D9121
:102F88002C0100200028014010B50024094B1C70BA
:102F9800094B1C7005E0094B1C706420FFF770F9A1
:102FA8000134072CF7DD002220210548FFF79BF8A4
:102FB800FEE700BFAC000020B8000020A8000020F9
:102FC8000008014030B597B002250C9501231093F5
:102FD800102311931395002414944FF46013159340
:102FE8000CA8FEF703F90F230793089509944FF4EB
:102FF80080630A930B94294607A8FEF71DFB0195E9
:103008004FF44043039301A8FFF778F8FEF7D0FB8D
:10301800084BA3FB00308009FEF73AFF0420FEF7B7
:103028004DFF224621464FF0FF30FEF7F1FE17B064
:1030380030BD00BFD34D62102DE9F04F85B0FFF7CA
:10304800FFF8AB4CA36943F00103A361A36903F044
:1030580001030393039B0320FEF7C8FE00221146D9
:103068006FF00B00FEF7D4FE002211466FF00A0045
:10307800FEF7CEFE002211466FF00900FEF7C8FEEB
:10308800002211466FF00400FEF7C2FE002211462E
:103098006FF00300FEF7BCFE002211466FF001003E
:1030A800FEF7B6FE002211464FF0FF30FEF7B0FEE5
:1030B800FFF788FF636923F001036361FFF77AFC78
:1030C800FFF77AFDFFF770FEFFF704FFFFF726FC16
:1030D800012220218748FFF706F88748FFF7C0F943
:1030E8008648FFF7BDF9082405E0854B1C7064206D
:1030F800FFF7C6F8013C002CF7DA4FF0000A804BC6
:1031080083F800A0012204217E48FEF7ECFF7E4BE5
:10311800188AFDF711FE01907C4B01221A70D346E4
:1031280044E17B490A6801320A604BE14FF47A783E
:1031380032463B4620462946FDF780F804460D46B0
:103148000022744BFDF7C0FC88B963A3D3E90023C0
:1031580020462946FDF79AFC00285DD120462946DD
:10316800FDF7BCFC044604E0DFF8DC81E0E74FF43F
:103178007A740AF13203A34215DDAAF1320AA24594
:1031880011DA0BF1320343450DDDABF1320BC345C8
:1031980009DA614B1B68042B05D8604BC3F8008023
:1031A80063425F4A13605F4B1A685F4BA3FB0213CD
:1031B800DB0803EB830303EB83039A422ED002213F
:1031C8004C48FEF789FF30B1584B1B681BB9584B68
:1031D8001B68002B73D0574B1D6857492846FDF7CD
:1031E800A1FF20B1554B1B681333262B72D95449C4
:1031F8002846FDF797FF002800F0B0804E49284682
:10320800FDF7AEFF002800F0A9803D4B05221A709B
:103218004C4B06221A70ADE04B4CAAE70198FDF71B
:103228006BF92FA3D3E90023FDF7BEF906460F4635
:10323800354D288AFDF780FDFDF75EF92AA3D3E90D
:103248000023FDF7B1F902460B4630463946FCF734
:10325800F5FFFDF76BFC074601903C49FDF7BAFC0A
:103268003B49FDF7C1FD3B49FDF7B6FC0646414623
:10327800022000F001FD2146032000F0FDFCA98991
:10328800042000F0F9FC34492A4B1868FDF7ACFD1E
:10329800FDF770FF0146052000F0EEFC3846FDF70B
:1032A80069FF0146062000F0E7FC3046FDF762FFA3
:1032B8000146072000F0E0FC00F0E4FC7FE7134B38
:1032C80000221A7002210B48FEF706FF0028F9D1E8
:1032D800FFF75AFEFFF758FE0000000000408FC0BD
:1032E800AE47E17A14AEEF3F7B14AE47E17A843FF4
:1032F8000010024000080140780200202C01002044
:10330800A8000020000C0140EC020020B8000020BA
:103318009003002000408F4004000020CC000020D3
:10332800C8000020800300201F85EB51D400002036
:10333800D00000200C0000208FC221429C030020F6
:1033480000002842AC00002018FCFFFF00E0CE443B
:10335800083748BE33330F420000C842664B1B682B
:1033680013F1320F80F2AD80644B05221A70644B62
:1033780001221A7084EAE473A3EBE473322B06DCAF
:1033880088EAE873A3EBE873322B40F3A0805D4B27
:1033980000221A605B4B1A685B4B9A4200F29C80D1
:1033A8005A4A136801331360A246C3460520FEF744
:1033B80067FF574B1B68012B3FF4B3AE55490A68AA
:1033C800013A0A60534A176887EAE772A2EBE77284
:1033D800B2F5967F02DD5B424D4A13604E4B0022E8
:1033E8001A60DFF84481D8F80000FDF773F83CA3B1
:1033F800D3E90023FDF7D8F804460D46474B186873
:10340800FDF768F838A3D3E90023FDF7CDF80246A5
:103418000B4620462946FCF711FFFDF75FFB0646E1
:10342800C8F80000DFF8D080D8F80000FDF752F89F
:103438002BA3D3E90023FDF7B7F804460D46384619
:10344800FDF748F828A3D3E90023FDF7ADF80246B5
:103458000B4620462946FCF7F1FEFDF73FFBC8F86E
:103468000000FDF737F800222D4BFDF79DF80446C4
:103478000D463046FDF72EF80022294BFDF794F84B
:1034880006460F4602460B4620462946FCF7D4FE60
:10349800804689460022234BFDF716FB00287FF45F
:1034A80045AE13A3D3E9002340464946FDF7EEFA9B
:1034B80000287FF459AE40464946FDF70FFB804689
:1034C80036E600230D4A13700D4A137052E70D4A71
:1034D8001368013313605DE7FFF756FDAFF3008013
:1034E800666666666666EE3F9A9999999999A93FC4
:1034F8000000000000408FC09C030020A8000020AE
:10350800AC000020840300208038010080030020E4
:10351800080000209003002004000020A4030020DD
:103528000000E03F00408F409403002000000000AE
:10353800774B02225A60774B1B68B3F57A7F5EDBC4
:103548002DE9F041744B1A68744BA3FB02139B09D5
:103558004FF47A7101FB13230BBB714C2068FCF705
:10356800CBFF65A3D3E90023FDF71EF806460F46F7
:103578006C4B9889FDF7E0FB6B49FDF735FCFCF7D0
:10358800BBFF5FA3D3E90023FDF70EF802460B4605
:1035980030463946FCF752FEFDF7C8FA2060614B09
:1035A8005889624B1C68001BFCF794FF56A3D3E9AB
:1035B8000023FCF7F9FF00220023FDF767FA002833
:1035C80052D1584B5889001BFCF784FF4EA3D3E90E
:1035D8000023FCF7E9FF0022554BFDF775FA002898
:1035E80052D1544B1B68052B4ED8534B1B78002BDC
:1035F8004AD0524A536C43F40043536449E00133C0
:10360800444A1360474A90884D490B68034403EBCA
:10361800D3735B100B60D0884A490B68034403EBF3
:10362800D3735B100B60108847490B68034403EBA6
:10363800D3735B100B60508844490B68034403EB59
:10364800D3735B100B60508938490B68034403EB54
:10365800D3735B100B6011893D4A13680B4403EB6D
:10366800D3735B10136070472E4B5889001BFCF70F
:1036780031FF25A3D3E90023FCF796FF0022354B41
:10368800FDF704FA0028ACD02C4A536C23F400430D
:103698005364244B18892E4B1C68001BFCF71AFF37
:1036A80019A3D3E90023FCF77FFF00220023FDF7CD
:1036B800EDF9002852D11B4B1889001BFCF70AFFB3
:1036C80011A3D3E90023FCF76FFF0022184BFDF785
:1036D800FBF9002852D1174B1B68052B4ED8164B07
:1036E8001B78002B4AD01C4A536C43F400435364A4
:1036F80049E000BFAFF30080AE47E17A14AEEF3F78
:103708007B14AE47E17A843F7B14AE47E17A943F5D
:1037180000000240BC000020B0000020D34D621021
:103728000C000020EC02002017B9CE3C100000204D
:1037380000002E4004000020B800002000340140A2
:10374800180000201C000020200000202400002079
:103758001400002000002EC0002C0140904B188956
:10376800001BFCF7B7FE8CA3D3E90023FCF71CFF72
:1037780000228C4BFDF78AF90028ACD08A4A536C9A
:1037880023F40043536489498B6813F0200F0CBF5E
:10379800012300238A6812F0400F0CBF0122002287
:1037A800896811F0800F0CBF0125002580498868C1
:1037B80010F4806F0CBF012000208C6814F4006F97
:1037C8000CBF01240024896811F4805F02EB4502D4
:1037D80003EB4203774EF35C77490B600B6803F108
:1037E80002030B600D68754B83FB0572A2EBE57253
:1037F80002EB42024FEA4207A5EB07020A600CBF40
:1038080002220022224400EB4202B05C6C4A1060A3
:10381800106802301060106883FB0043A3EBE0736C
:1038280003EB43035C00031B136009685C4883884F
:10383800644A12689A1AC388634800681B1A0529E3
:1038480034D8DFE801F0032326292C2FD31A5F4A46
:1038580013605F4A1368013313605E4A14684CB3FF
:103868005D4AA2FB0312120B5C4909680131B2FBE5
:10387800F1F001FB1022EAB9B3FBF4F204FB1233B6
:10388800EBB910215648FEF734FC18E04F4B1A608C
:10389800DFE74E4B1A60DCE74C4A1360D9E74B4A26
:1038A8001360D6E79B1A494A1360D2E7474B0022B8
:1038B8001A60CEE7002210214948FEF714FC494B54
:1038C800D3F800C03C4B1B68052B2BD8DFE803F06E
:1038D8000312171C2226CCF1000064469C46424B7A
:1038E8001968374B1B68052B52D8DFE803F01F3FD8
:1038F80043474B4E6446CCF1000C0020EFE760468E
:10390800CCF1000C0024EAE7CCF1000460464FF04B
:10391800000CE4E7CCF100040020E0E7CCF1000063
:103928000024DCE7002004468446D8E74E420F46D0
:1039380019462C4B1B68002B40F398802B4B1D68B5
:103948001D4B1B6805331D4A82FB03E2A2EBE372A1
:1039580002EB42024FEA420EA3EB0E02052A00F2E6
:10396800B980DFE802F0456A6F74797E0F464942F4
:103978000026DEE70E4649420027DAE74F420E46A8
:103988000021D6E74F420026D3E74E420027D0E772
:10399800002637463146CCE77B14AE47E17A943FA0
:1039A800EC02002000002EC0002C0140000C014059
:1039B800001001404C460008C0000020ABAAAA2A0B
:1039C800C4000020180000201C000020B4000020C3
:1039D800B0000020A80000205917B7D1AC00002083
:1039E80000080140C8000020CC000020D0000020C2
:1039F800C5F10008AE461546654474444044964BEC
:103A08001B68002B40F3D780944B1B68944A1268BC
:103A180002F1050C934A82FB0CE2A2EBEC7202EB7A
:103A280042024FEA420EACEB0E02052A00F2F98080
:103A3800DFE802F058A8ADB2B7BCAE466D424FF011
:103A48000008D9E7A8466D424FF0000ED4E7C5F14B
:103A5800000EA8460025CFE7C5F1000E4FF000087C
:103A6800CAE7C5F100084FF0000EC5E77E4B1D6898
:103A7800C5F1000E7D4B1A6801327A4B83FB028335
:103A8800A3EBE27303EB43034FEA4308A2EB0803FB
:103A9800052B1AD8DFE803F00323060A0E14A846FC
:103AA8001D46A9E7F0464FF0000EA5E7F046AE46E2
:103AB8000025A1E72B4675469E464FF000089BE778
:103AC800A84675464FF0000E96E74FF00008C64628
:103AD800454691E74FF00008C64645468CE74FF04B
:103AE800000889E7C3F100089E461346194407EB0E
:103AF8000E0206EB080305F57A7540F2C676B54264
:103B080000F397800A2DB8BF0A25594E756304F54E
:103B18007A7440F2C675AC4200F38E800A2CB8BFA6
:103B28000A24534DAC6300F57A7040F2C674A04283
:103B380000F385800A28B8BF0A204D4CE06301F5E0
:103B48007A7140F2C67081427CDC0A29B8BF0A212A
:103B58004848416302F57A7240F2C6718A4274DCC1
:103B68000A2AB8BF0A2243498A6303F57A7340F2E6
:103B7800C67293426CDC0A2BB8BF0A233D4AD36352
:103B8800BDE8F0819E465B424FF00008AEE79846DC
:103B98005B424FF0000EA9E7C3F1000E98460023E0
:103BA800A4E7C3F1000E4FF000089FE7C3F1000837
:103BB8004FF0000E9AE7294B1B68C3F1000E284A04
:103BC80012680132DFF89CC08CFB028CACEBE27C03
:103BD8000CEB4C0C4FEA4C08A2EB080CBCF1050F9F
:103BE8001AD8DFE80CF00323060A0E149846634639
:103BF8007CE7F0464FF0000E78E7F0469E4600233B
:103C080074E71A46734696464FF000086EE79846E2
:103C180073464FF0000E69E74FF00008C64643466A
:103C280064E74FF00008C64643465FE74FF00008D8
:103C38005CE740F2C67568E740F2C67471E740F287
:103C4800C6707AE740F2C67182E740F2C6728AE728
:103C580040F2C67392E700BFCC000020D4000020D9
:103C6800C4000020ABAAAA2AD0000020C00000206F
:103C780000340140002C0140014B23F8101070471C
:103C88000C040020F0B587B01A4F64220021384692
:103C980000F090F818490A88B1F802C0888800B284
:103CA800CC8824B20D892DB24E8936B28B891BB2CD
:103CB800C98909B20591049303960295019400906D
:103CC8000FFA8CF312B20D49384600F07BF80C4B12
:103CD8005B686BB90A4C236823F0010323603846FC
:103CE800FCF79EFA6060E760236843F001032360F5
:103CF80007B0F0BDA80300200C04002054460008BB
:103D08001C0002407047FEE7FEE7FEE7FEE770474B
:103D18007047704708B5FEF7A5FAFEF7E0F808BD4A
:103D2800002103E00B4B5B58435004310A480B4B0E
:103D380042189A42F6D30A4A02E0002342F8043BAA
:103D4800084B9A42F9D3FEF7C3FD00F00FF8FFF7CE
:103D580073F97047BC460008000000208C00002062
:103D68008C00002020040020FEE7000070B500252C
:103D78000C4E0D4CA41BA410A54209D100F040FC28
:103D880000250A4E0A4CA41BA410A54205D170BDFB
:103D980056F8253098470135EEE756F8253098470C
:103DA8000135F2E7B4460008B4460008B4460008F6
:103DB800B846000803460244934200D1704703F80E
:103DC800011BF9E70EB46FF0004100B59CB01DABC4
:103DD80002900690079104910848094953F8042B6A
:103DE8000591006802A9019300F066F80022029B81
:103DF8001A701CB05DF804EB03B07047280000206F
:103E08000802FFFF2DE9F0478E6882469E420C4665
:103E18009046994637D88A8912F4906F31D0022398
:103E2800256809696F1A656905EB450595FBF3F582
:103E380009F101033B449D4238BF1D46530530D567
:103E4800294600F035FB064650B90C234FF0FF30E9
:103E5800CAF80030A38943F04003A381BDE8F08786
:103E68003A46216900F0B4FAA38923F4906343F039
:103E78008003A38126613E4426604E466561ED1BA2
:103E8800A5604E4500D94E4632464146206800F0AE
:103E9800AAFAA36800209B1BA36023681E4426601F
:103EA800DCE72A4600F05EFB06460028E2D12169DD
:103EB800504600F0B1FAC8E72DE9F04F9DB00393E2
:103EC8008B8980461D060C4616460FD50B696BB9C3
:103ED800402100F0EDFA2060206128B90C23C8F8D1
:103EE80000304FF0FF30C7E040236361002309939F
:103EF80020238DF8293030234FF0010B8DF82A301C
:103F080037463D4615F8013B0BB1252B3ED1B7EBA3
:103F1800060A0BD05346324621464046FFF772FF49
:103F2800013000F0A480099B534409933B78002B8F
:103F380000F09D8000234FF0FF32CDE90523049364
:103F480007938DF853301A932F46052217F8011B53
:103F58004F4800F02FFA049BD0B9D90644BF20225D
:103F68008DF853201A0744BF2B228DF853202A7846
:103F78002A2A15D02F4600200A25079A394611F813
:103F8800013B303B092B4DD9B8B10FE02F46B8E7BC
:103F98003F4A3D46801A0BFA00F018430490D3E7D5
:103FA800039A111D12680391002A01DB079204E0AD
:103FB800524243F00203079204933B782E2B0CD114
:103FC8007B782A2B33D1039B02371A1D1B68039277
:103FD800002BB8BF4FF0FF3305932E4D03223978DD
:103FE800284600F0E7F938B14023401B03FA00F0F7
:103FF800049B0137034304933978062226487E1C24
:104008008DF8281000F0D6F9002838D0234B13BBC0
:10401800039B073323F0070308330393099B4B449F
:1040280009936DE705FB023201200F46A6E700233E
:104038000A25194601370593384610F8012B303AFE
:10404800092A03D9002BC8D00591C6E705FB012131
:1040580001230746F0E703AB00932246104B04A95F
:104068004046AFF30080B0F1FF3F8146D6D1A38927
:104078005B063FF536AF09981DB0BDE8F08F03AB7E
:1040880000932246064B04A9404600F081F8EAE76F
:1040980080460008864600088A460008000000009E
:1040A8000D3E00082DE9F04791461F468A680B69C6
:1040B80006469342B8BF1346C9F8003091F843202A
:1040C8000C46DDF8208012B10133C9F800302368AE
:1040D800990642BFD9F800300233C9F80030256884
:1040E80015F0060507D104F1190AE368D9F800208C
:1040F8009B1AAB4229DC94F843302268003318BF7E
:10410800012392062ED404F1430239463046C047B3
:10411800013021D02368E56803F00603042B18BF9B
:104128000025D9F800204FF0000908BFAD1AA36890
:10413800226908BF25EAE5759342C4BF9B1AED18AA
:104148001A344D451AD1002008E001235246394659
:104158003046C047013003D14FF0FF30BDE8F0874B
:104168000135C2E73020E11881F843005A1C94F861
:1041780045102244023382F84310C4E70123224643
:1041880039463046C0470130E6D009F10109D8E781
:104198002DE9F04301F1430C0C46097E85B06E29E8
:1041A8001746064698460C9A00F0B38022D8632931
:1041B80036D00AD8002900F0B980582900F0838049
:1041C80004F1420584F8421032E0642901D06929DB
:1041D800F6D120681368050603F104012AD51B6887
:1041E8001160002B03DA2D225B4284F843206F48CC
:1041F8000A2239E0732900F09D8008D86F2920D061
:104208007029DDD1236843F02003236003E075297A
:1042180017D07829D4D17823654884F8453055E0FB
:10422800136804F14205191D1B68116084F84230B7
:1042380001238CE01B6810F0400F116018BF1BB2FF
:10424800CFE713682568181D1060280601D51B687C
:1042580002E06806FBD51B886F2914BF0A220822D2
:104268005248002184F843106568002DA560C0F20B
:104278009580216821F004012160002B3DD1002D9B
:1042880040F08E806546082A0BD12368DB0708D5E5
:10429800236962689A42DEBF302305F8013C05F1C4
:1042A800FF35ACEB05032361CDF800803B4603AA3C
:1042B80021463046FFF7F6FE01304DD14FF0FF3072
:1042C80005B0BDE8F083394884F8451013682168C3
:1042D8001D1D1B6815600A060BD5CA0744BF41F0AF
:1042E800200121601BB9226822F0200222601022DE
:1042F800B7E74D0648BF9BB2EFE76546B3FBF2F15F
:1043080002FB1133C35C05F8013D0B460029F5D1CA
:10431800B9E713682568181D6169106028061B68CD
:1043280001D5196002E06A06FBD5198000236546AD
:104338002361B9E71368191D11601D6862680021BF
:10434800284600F037F808B1401B606063682361B5
:10435800002384F84330A7E723692A4639463046C4
:10436800C0470130AAD023689B0713D4E068039B99
:104378009842B8BF1846A3E701234A463946304653
:10438800C04701309AD00135E368039A9B1AAB42C3
:10439800F2DCEBE7002504F11909F5E7002BACD1B5
:1043A800037804F1420584F842306CE7914600082E
:1043B800A246000810B5C9B202449042034601D192
:1043C800002303E01C7801308C42F6D1184610BD5A
:1043D80010B5431E0A44914200D110BD11F8014B9B
:1043E80003F8014FF7E7884210B501EB020307D83D
:1043F800421E99420AD011F8014B02F8014FF8E722
:104408008342F5D98118D21AD34200D110BD13F8CE
:10441800014D01F8014DF7E738B50546002943D0AD
:1044280051F8043C0C1F002BB8BFE41800F0D0F87A
:104438001E4A1368104633B9636014602846BDE805
:10444800384000F0C6B8A3420BD9216862189342DD
:1044580001BF1A685B685218226063600460EDE768
:1044680013465A680AB1A242FAD919685818A042E4
:104478000BD120680144581882421960DED11068B7
:104488005268014419605A60D8E702D90C232B609E
:10449800D4E7206821188A4201BF116852680918B8
:1044A800216062605C60C9E738BD00BFD8000020A9
:1044B80070B5CD1C25F0030508350C2D38BF0C252B
:1044C800002D064601DBA94203D90C2333600020E6
:1044D80070BD00F07DF8214A1468214691B9204C3E
:1044E80023681BB9304600F063F82060294630463F
:1044F80000F05EF8431C24D10C233046336000F0F2
:1045080068F8E4E70B685B1B18D40B2B0FD90B601A
:10451800CC18CD50304600F05CF804F10B00231D98
:1045280020F00700C31AD3D05A42E250D0E74B68B4
:104538008C4216BF636013600C46EBE70C46496873
:10454800CCE7C41C24F00304A04205D0211A30464D
:1045580000F02EF80130CFD02560DBE7D80000202E
:10456800DC000020F8B5074614460E4621B9BDE820
:10457800F8401146FFF79CBF22B9FFF74DFF2546CB
:104588002846F8BD00F026F8A0420FD2214638464A
:10459800FFF78EFF05460028F2D031462246FFF786
:1045A80017FF31463846FFF737FFE9E73546E7E7B3
:1045B80038B50023054C05460846236000F012F87C
:1045C800431C02D1236803B12B6038BD1C040020B2
:1045D8007047704751F8043C181F002BBCBF0B589C
:1045E800C0187047044A05491368002B08BF0B46DA
:1045F8001844106018467047E0000020200400208E
:10460800F8B500BFF8BC08BC9E467047F8B500BFB7
:08461800F8BC08BC9E46704787
:1046200002030405060708090A0B0C0D0E0F1010F3
:10463000010200000000000000000000010203046D
:10464000060708090000000001020304000002013F
:1046500004050300313A256920323A256920333AAE
:10466000256920343A256920353A256920363A25CE
:104670006920373A256920383A25690D0A0000007B
:10468000232D302B2000686C4C006566674546473B
:1046900000303132333435363738394142434445BE
:1046A000460030313233343536373839616263642D
:0446B000656600003B
:0446B4000D020008EB
:0446B800E90100080C
:1046BC0000A24A0464000000010000000000404217
:1046CC00D0070000D0070000D0070000D007000082
:1046DC00D0070000D00700002C00002000000000D4
:1046EC0000000000000000000000000000000000BE
:1046FC0000000000000000000000000000000000AE
:10470C00000000000000000000000000000000009D
:10471C00000000000000000000000000000000008D
:10472C00000000000000000000000000000000007D
:0C473C0000000000000000000000000071
:0400000508003D2989
:00000001FF