Page 1 of 1
Configure ISTOP to send large data using segmented CAN-FD
Posted: Mon 2. Dec 2024, 19:34
by awaisZt
Hello,
I am trying to send a large set of data using ISO-TP with segmented CAN-FD frames. However, I see errors:
Python code:
Code: Select all
# Allocate tx message
tx_msg = cantp_msg()
res = objPCANIsotp.MsgDataAlloc_2016(tx_msg, PCANTP_MSGTYPE_ISOTP)
print("Allocate tx message: ", STATUS_OK_KO(res))
mapping = cantp_mapping()
mapping.can_id = 0x02 ## receiver is listening on can bus to receive ISOTP frame(s) with this ID
mapping.can_id_flow_ctrl = 0xA2 ## receiver will send back flow-control frame using this ID
mapping.can_msgtype = PCANTP_CAN_MSGTYPE_FD
mapping.can_tx_dlc = 64
mapping.netaddrinfo.extension_addr = 0x00
mapping.netaddrinfo.format = cantp_can_msgtype(PCAN_MESSAGE_STANDARD.value | PCAN_MESSAGE_FD.value | PCAN_MESSAGE_BRS.value) # Standard 11-bit ID, CAN-FD with BRS enabled
mapping.netaddrinfo.msgtype = PCANTP_ISOTP_MSGTYPE_FLAG_INDICATION_TX ## we just want a peer-to-peer CAN-TP PDU containing CAN-FD data
mapping.netaddrinfo.source_addr = 0xF1 ## is this even relevant?
mapping.netaddrinfo.target_addr = 0x01 ## ?
mapping.netaddrinfo.target_type = PCANTP_ISOTP_ADDRESSING_PHYSICAL ## ?
res = objPCANIsotp.AddMapping_2016(transmitter_handle, mapping)
print("Add a simple mapping on channel %s", STATUS_OK_KO(res))
# Initialize Tx message containing heavy data
res = objPCANIsotp.MsgDataInit_2016(tx_msg, mapping.can_id, mapping.can_msgtype, HEAVY_DATA_SIZE, HEAVY_DATA, mapping.netaddrinfo)
print("Initialize tx message: ", STATUS_OK_KO(res))
count = 0
while count < HEAVY_DATA_SIZE:
#print(hex(tx_msg.msgdata.isotp.contents.data[count]), end="")
count = count + 1
res = objPCANIsotp.Write_2016(transmitter_handle, tx_msg)
print("\nWrite TX message: ", STATUS_OK_KO(res))
Console output:
PCAN-ISO-TP API Version: b'3.5.0.344'
Initialize transmitter: OK
Initialize receiver: KO
Create a receive event on receiver: OK
Allocate tx message: OK
Add a simple mapping on channel %s KO
Initialize tx message: OK
Write TX message: KO
Re: Configure ISTOP to send large data using segmented CAN-FD
Posted: Tue 3. Dec 2024, 09:51
by F.Vergnaud
Hello,
can_tx_dlc requires a Data Length Code, please use the corresponding DLC (0xF) instead of the decoded length (64).
Source and Target addresses are indeed required by design in ISO-15765 (even though the values may not always appear during the CAN communication).
Please also watch out that your receiver is not initialized correctly.
Re: Configure ISTOP to send large data using segmented CAN-FD
Posted: Tue 3. Dec 2024, 20:44
by awaisZt
Thanks for your reply.
Actually I don't need to configure any receiver. My understanding is that - the way python isotp module works - that I can simply send a bulk data using istotp api (configured for canfd frames) provided by PeakSystem DLL.
I have cleaned up the code, and I can't still receive first frame on my receiver (embedded MCU):
Code: Select all
import string
import os
from PCAN_ISO_TP_2016 import *
from ctypes import *
HEAVY_DATA_SIZE = 8936
HEAVY_DATA = create_string_buffer(b'\x50\x89\x47\x4e\x0a\x0d\x0a\x1a\x00\x00\x0d\x00\
\x48\x49\x52\x44\x00\x00\xb8\x01\x00\x00\xb8\x00\x02\x08\x00\x00\
\x1e\x00\x6e\xdf\x00\x50\x00\x00\x70\x09\x59\x48\x00\x73\x0b\x00\
\x00\x13\x0b\x00\x01\x13\x9a\x00\x18\x9c\x00\x00\x07\x00\x49\x74\
\x45\x4d\xdf\x07\x0c\x05\x01\x0d\xe3\x39\x1e\x4c\x00\x88\x20\x00\
\x49\x00\x41\x44\x78\x54\xed\xda\x77\xdd\x1b\x5c\x9e\x67\xf0\x3f\
\x01\x51\x90\x24\x20\x40\x31\x8a\x18\xdd\xbd\x08\x22\x9b\x1b\x61\
\xc0\x17\x76\x29\xa7\x12\x93\xae\x2f\xec\x97\xed\xc9\x38\x38\xa6\
\x38\xd9\xee\xed\xb9\x36\xcd\x94\xb2\x6e\xbd\xb9\x2e\x5c\x9b\xc5\
\x49\xb2\xe9\xd6\x1b\x3d\x1b\x83\x49\x18\x26\x88\x6f\x4c\x5a\xa6\
\x89\xa2\x30\x22\x81\x08\xe8\x10\x50\xfe\xac\x5e\x98\x10\x19\xa6\
\xc4\x21\xfd\xe7\x1f\xf2\x34\x66\x91\x9a\x8d\x1e\x7a\x3e\xe6\x66\
\xef\x99\xf4\xd0\x3d\x7a\x00\x01\x97\x00\x47\x47\x00\x13\x20\x00\
\x01\x28\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\xf5\x80\
\xa2\x62\x00\x09\x0a\xc0\x37\x4d\x5e\x34\xf9\xba\xb5\xf6\xbb\x5a\
\x57\xf3\x60\xff\x85\x84\x28\x22\xc0\x01\xe9\xaa\xd3\x75\xd5\x7a\
\x9a\xf0\x5e\xad\x8d\x37\x6f\x5d\x80\x00\x40\x15\x02\x50\x20\x00\
\x01\x28\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\
\x00\x12\x41\x00\x00\x09\xa0\x80\x00\x04\x50\x40\x00\x02\x82\x00\
\x00\x12\x41\x00\x00\x09\xa0\x80\x00\x04\x50\x40\x00\x02\x28\x20\
\x00\x01\x94\x10\x00\x00\x4a\x08\x00\x00\x25\x04\x00\x00\x28\x20\
\x00\x01\x94\x10\x00\x00\x4a\x08\x00\x00\x25\x04\x00\x00\x12\x82\
\x00\x00\x09\x41\x80\x00\x04\xa0\x40\x00\x02\x50\x00\x00\x12\x82\
\x00\x00\x09\x41\x80\x00\x04\xa0\x40\x00\x02\x50\x20\x00\x01\x28\
\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\x00\x12\
\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\x00\x12\
\xfa\xc0\x57\x30\xb4\xf7\x9e\xde\xb9\x5e\xbe\x5c\xde\xbe\x83\xaa\
\x03\x83\xcb\x97\x70\xe1\x5c\xb9\x97\x2e\x62\xc5\xb4\x51\x61\x96\
\xf0\xd5\x0b\x85\x36\x17\x96\xe0\x6f\x64\x1f\x6f\x17\x1b\xb1\x6b\
\xf5\xd5\x95\x2b\x9e\x1e\xd6\x9e\x20\xdc\xc3\xc3\x17\xc3\x57\x9a\
\x25\xbf\xd9\x6c\xc4\x12\x77\x77\xfc\xb7\x1e\xcb\x18\x18\x6f\x68\
\xa7\x6b\x77\x3c\x8c\x98\xc8\x88\x07\x48\x87\x07\x3a\xc5\xde\x71\
\x8e\x5e\x3c\xcf\x56\xb9\x1f\x1f\xcb\xcd\x84\x93\x1c\xa0\x56\x1e\
\xb6\xb5\xac\xb4\xdf\xe3\x3b\x07\x2e\x3b\xc3\x87\x75\x73\xf5\xf5\
\xd9\xf5\xed\xe4\x60\xcd\xc8\x30\xb2\x5a\xad\x5a\xd7\x5e\xb3\x2d\
\x8e\x6a\x8e\x4e\x0b\x16\x86\xca\xfa\xfa\xaa\xea\x5d\xea\x77\xbb\
\x73\x59\x8e\x56\x8f\x8f\xb3\x9b\x78\x25\x78\x78\x38\x58\xf5\x28\
\x7d\x7a\x6d\x5d\x5d\x6d\x9d\x6d\xaf\x5e\x74\xa7\x3c\x45\x4f\x1e\
\x21\x90\x3c\x5c\x09\x25\xa0\x82\xbb\xbb\x0e\xb3\xbb\xdf\x7b\xbe\
\xeb\x94\x6e\x9d\x4a\x6a\x52\xa5\x54\xa9\xf6\xaa\x36\xb6\x93\x06\
\xed\xe1\xd9\xbd\xd7\xd7\xb3\x67\x8f\x8f\xbd\xbd\xf6\x3d\xac\x32\
\x5f\x5c\x6f\x6f\x55\x75\x5e\xb5\x97\xaf\x25\x88\xfb\xd9\xd8\x72\
\x36\x6c\xc4\xda\x5a\x7c\xb6\xad\x5a\x58\xdd\xdc\x45\xd5\x8a\xf5\
\x04\xb6\x27\x07\x25\x26\xd8\x92\x41\x35\x5a\x50\xb4\xc8\x5a\x6e\
\x97\x21\xe4\x2b\x3a\x72\xbe\x9d\x64\x35\x74\x6b\x8c\x4c\x9d\x9d\
\x9a\x1d\x3a\xc5\x34\x69\x69\x1a\xd4\x91\xe5\xd0\x98\x99\x90\x98\
\x15\x16\xee\x65\x45\xda\xd1\xa3\x32\xd0\x18\xe6\x1c\x1c\x88\x94\
\xe3\xc5\x71\xea\xd7\x4a\x60\xc2\x92\x30\x25\xb7\x06\x07\xad\x05\
\x7d\xcb\x6c\x50\xb3\x25\x66\x66\x9a\x66\x9a\x9b\x3b\x3b\x23\x3a\
\x22\xa3\x42\x43\xf1\x43\xb3\xf5\x0f\xc2\x22\x48\x4f\x12\x4c\x4c\
\x4e\xcc\xf6\x51\x6b\x29\x6b\xaa\x62\x62\xd0\x63\xab\x38\xdc\xd6\
\x54\xd4\xbe\x79\x66\x72\x86\x66\xb5\xd2\x38\x70\x41\x1c\xd0\x86\
\xd5\xd5\x9d\x75\x12\xb6\xd2\x82\xe4\xd4\x64\xe4\xac\x85\x62\xe2\
\xc5\xe7\xe4\xc4\xf5\xa4\xb9\xfb\xa4\xda\xaa\xea\x81\xea\x01\x81\
\x89\x93\x75\xf5\x6e\x75\x37\x7c\x5f\x5f\xb4\x5f\x2a\xcf\xa5\xf6\
\xca\xca\x3b\x4a\x3b\xda\x5e\xa8\x9f\x91\xdf\x9f\xd4\xb6\x75\x94\
\xa3\xbd\xe1\x86\x0b\x41\x18\x1b\x38\x18\x9b\x99\x50\xd7\x8f\x5f\
\xb0\xa6\x72\x12\xbc\xb9\xa1\xb1\xc1\x61\x4a\x87\x4b\x8b\x63\xd4\
\x68\x63\x15\xa2\x1b\x19\x3d\x1d\xea\x75\xd5\x24\x49\x29\xd3\xa7\
\x12\x13\x04\x13\xc2\x19\x7e\xf5\x0b\x38\x79\x41\x7a\x59\xbe\xbd\
\xb2\xaa\xac\xaa\x94\xb4\xbd\xea\x58\x12\xe8\xd2\x4b\xa5\xc5\x25\
\x97\x25\x54\x7b\xd5\xab\x24\x4a\x7c\x12\x2b\x4c\xd5\xf8\x28\xb9\
\xcd\xcf\x1b\xcd\x0d\x56\xba\x53\x36\x16\x9d\x9b\x2b\xb9\x34\x33\
\xcc\x2c\x5a\x06\x41\x0c\x84\xb9\x96\xd6\xb3\xd6\xcf\xa7\x1f\x18\
\x03\x17\xef\xcb\x4a\x21\x12\xc4\xd4\xdd\x22\xd4\x0c\xf3\x0e\x0d\
\x97\x9d\xa0\x55\x96\xad\x33\x34\x53\x33\x93\x21\xc4\x49\xc5\xe2\
\xd3\xdb\x5e\x7c\x36\x9b\x5c\xe5\xcf\xb9\xc7\xca\x22\xba\x49\x28\
\x0d\xde\xc8\x2f\xd7\xcf\x74\xe9\x8a\x68\x21\x35\x95\x93\x0f\x0f\
\xdd\x2f\xb9\xf7\xe1\x70\x47\x42\x3b\x7b\x6b\x9a\x1a\x11\x26\x8d\
\xec\xff\xe6\xd9\x66\xa6\xd7\x4a\xa3\x42\xa2\xd1\xa3\xa2\x66\x76\
\x5c\xee\xa4\x72\x82\x24\xd6\xd2\xab\x0c\x25\x86\x31\x22\x03\xd5\
\x61\x71\xb6\xbe\xb6\xd6\xd6\xb6\x65\xb6\x5c\xce\x56\x5e\x32\x3e\
\x82\x32\x5b\x46\x5f\x50\x6f\x6f\x2f\xee\xfa\x27\xfd\x95\xae\x94\
\xde\xc5\x3e\xde\x7b\x63\x54\x46\xb4\x74\x0d\x8d\x41\x1a\x2e\x50\
\x4f\x57\x4f\x4f\x55\x75\xda\x35\x92\xc1\x43\x54\x59\x2a\xf9\x79\
\xe7\xf2\xe9\xd7\xe2\x74\xd1\x42\xc5\x14\x95\x3b\x8e\xeb\xaf\x5e\
\xad\xaf\x29\xa9\x2f\xc8\x9c\x98\xa4\x9c\x45\x74\x3e\x7c\x67\x3f\
\xbe\xdf\x3e\xcd\xb6\x3e\x86\xd7\xca\x08\x68\x15\xaf\xa8\x7e\x5f\
\x06\xef\xa4\xcc\x6a\xd5\x22\xc5\xf4\xd1\xf4\xf4\x9e\x8a\x3a\x35\
\x5a\x3a\x5a\x56\xd6\x8a\xd3\x9b\x85\x8c\xda\xa2\x5a\x9a\xf7\xaa\
\x42\x87\x42\xc3\xef\x77\xe3\xdd\xe4\xe8\x93\x68\x88\xcd\x94\x71\
\x23\x2b\x95\x93\x78\x7b\x73\xb8\x9d\x9d\x14\xd1\x2b\x54\x16\x96\
\xd5\xab\x55\xea\xf1\x3c\xe7\x62\x0f\x45\xcf\x4f\x90\x90\xb4\x10\
\xd0\xe1\x90\xe0\x2c\x44\x5d\x5e\xae\x33\x44\x20\xcc\x98\x6d\xa4\
\x81\xc9\x81\x81\xdc\x36\xe8\x92\xae\x51\xb4\xcc\xba\x6e\xba\xba\
\xed\x06\xb5\x40\x86\xc6\x73\x06\x3b\xae\x2f\x3e\x98\xab\x34\x3f\
\xa3\x7d\x6d\x69\x3d\x69\xfa\x73\xd5\x34\xe9\x29\xe2\xec\x95\x92\
\x6d\x93\x29\xdb\xa0\x89\x0d\x5c\xc5\xf9\xcb\x8b\x09\x39\xab\x0b\
\x54\xa6\xab\x2a\xab\x2a\x59\xcc\xcc\xc2\x4c\xcc\x58\x91\xf5\x42\
\x39\x21\xfe\x6b\x2f\x39\x4a\x96\x4a\xcb\x57\x4b\xe0\x7a\xa5\x62\
\x03\xfc\xb3\xfc\xf6\xb2\x6f\x3a\x1d\x80\x04\x2c\x6a\xe5\xd7\xd4\
\x8a\xe1\xaa\x1d\x34\x68\x22\x9a\xc4\xb1\x03\xfc\xe3\x6a\xe3\xe3\
\xd2\x25\x0d\xe2\x50\x38\x6c\x61\xec\x6c\xa9\xf4\x16\x53\xe4\xb8\
\x79\x26\x72\x5b\x40\xba\xdc\xc0\x15\x18\x10\x64\xab\x94\x54\xec\
\x0c\x8e\x18\x63\xf9\x0a\x7a\xf4\x54\xbd\x44\x52\xf0\xd6\xee\xfe\
\xee\xee\x76\x8d\xaa\x11\x2e\x5c\x3b\xcf\xab\x91\xa9\x52\x5d\x28\
\x93\x8b\xd3\x93\xac\x9e\xc1\xbd\xb7\x5b\x9c\x6e\x45\x86\xae\x50\
\xfb\xf2\xe1\x7c\x33\x42\x81\xda\xd5\x74\x55\x55\xa5\x4a\xc4\x92\
\xd6\x05\xd7\x54\xf6\xf4\x6e\xf6\xa6\x84\xf5\xfb\x1b\x92\x98\x91\
\xd1\xea\xde\x51\xde\xde\x39\x59\x6e\xd9\x6e\x6e\x6a\x1b\x44\xcb\
\xae\x50\x42\x92\xc0\xae\x73\xf8\x9b\xb2\xde\x54\xdf\x50\xfa\x40\
\x5a\x4f\x91\x71\x33\x54\xb1\xae\xe3\xf9\xf9\x15\xf3\x67\x70\x2d\
\x4d\xc9\x5c\x6c\x0e\xec\xba\xdb\x66\xe4\x30\x99\x68\x3c\x26\x95\
\x26\x26\xfa\x06\x3c\x07\x3d\x3c\x5d\xc8\x0b\xac\x85\xcf\x5a\xc5\
\x25\x97\x59\xbb\xb3\x2c\x3c\xbe\xb5\x6a\xac\xba\x8c\xb4\x4f\xa2\
\x58\xaa\xdd\x2a\x2b\xb9\x56\xd3\x8c\x0b\xf5\xf6\x49\xf6\x8a\x8b\
\x2e\xa8\xc0\x47\xb1\x62\x04\xd2\x5e\xe9\x5e\x5e\xf3\x1b\xbe\xfb\
\x41\x36\xe7\xe9\x17\xe7\x1f\x1b\xe1\x67\x4e\x95\x4e\x4e\x8d\x8e\
\x8e\x8e\x8e\x8e\xf7\xf5\xf7\xf7\xb1\x91\xd6\x3b\xa5\xd5\x3d\x20\
\x23\x28\x22\x22\x02\x03\x36\x03\x56\xda\xad\x38\x16\x9b\x2b\x9d\
\xee\xa4\x75\x24\x5f\x5f\x55\x5f\x55\x65\xc5\x9c\x39\x37\x30\x0b\
\x3e\xdc\xea\x88\x1b\x9d\x77\x77\x74\xf7\xc0\xa1\xd1\xd1\xd8\x91\
\xd6\xa8\x28\x26\x76\x99\x1c\x76\xc7\x0e\x2b\xc2\x70\xe5\x7c\x38\
\xdf\x3e\x7f\xf0\x45\xf9\x79\x79\x99\x59\xdf\x99\x85\x4c\x11\x5c\
\x1f\x17\xce\x8f\xf9\xb5\x32\x64\xd5\x19\xae\x23\x1b\x1a\xdc\x1a\
\xf9\xdd\x7e\xbe\x36\x7e\x68\xd3\xad\x5a\xa4\xb6\xb8\xb8\x41\x4b\
\x5d\xf9\xc2\x6e\x22\x23\x62\x62\x36\x63\xc1\x78\x0d\xff\xeb\xba\
\xe7\xed\xc7\xef\xe7\x77\x0a\x8b\x55\x0b\xab\x43\x3f\x3f\x36\x38\
\x36\x36\x3a\x3a\xe5\xca\x91\x72\xe6\x74\x6b\x68\x6b\x6d\x6d\x6b\
\xc0\xb5\x4a\x8a\x4a\x4b\xae\x79\x96\xae\x85\xff\xc2\xa6\xf0\xf0\
\x44\xb0\x1e\x24\x1d\x1d\x74\xa5\x76\x2d\x76\x76\x69\x29\xa8\xa9\
\x4f\x1e\xe4\x6c\x39\x93\x8e\x8e\x42\x8e\x90\xa1\x34\xc9\xa7\xeb\
\x83\x02\xcc\x84\xd2\xb4\x17\xb2\x76\x66\xc4\xc1\xa2\x85\xdd\x69\
\x7a\xf4\xb4\x6f\xd6\xd6\x53\xd6\x27\x79\x4e\xa9\x1e\x49\x97\x8f\
\x93\x95\x94\x8d\xe8\xdc\x49\x41\x84\x10\x87\x13\x1d\x13\x6d\x13\
\x12\xce\x70\xc6\x02\x07\x4c\x33\x4d\x4d\x24\x49\xaa\x12\x1e\xaf\
\xe9\x31\x55\x88\x64\xc8\xb7\xeb\x7e\xc5\xe4\xbd\x84\xa6\x4b\xf2\
\xb6\x6e\x6f\x04\x9b\xd9\x85\x9d\x25\xbd\xe5\x04\x06\xec\x8c\x11\
\x5c\xa0\xc5\x2b\xd2\x45\x8a\x31\x45\xbb\x76\x0b\xda\xc7\xd6\xdb\
\x09\x65\xcb\x28\x72\x5c\x60\xc3\x52\x30\x52\xd3\xa5\xb7\xac\xa4\
\x5b\xbb\x53\x6f\xa3\x6a\x0f\x0f\xb3\xb2\x73\xb3\x70\x70\xf5\x58\
\x9d\x59\xb1\xb1\x6c\x51\xab\x43\xd8\xd3\xd8\xd0\xd5\xd5\x26\xb5\
\x2e\xab\x2b\x2f\xb9\xe7\xae\xba\x5b\xaf\x2a\x6c\xf2\xe4\xe2\x92\
\xaa\x12\x93\x07\x38\x73\x81\x1c\xe8\x50\x86\xea\x8f\x9b\x47\xa2\
\xc0\xb9\xb8\x0e\x19\x93\xf2\x3f\x34\x6a\x2a\xe0\x2b\xf4\x55\x95\
\x95\x95\xb6\x6b\x3b\x03\x2d\x3d\x4b\x11\x4b\xd6\x5f\x7d\x5e\xbd\
\x21\x5f\x89\x93\xbf\xa9\xc6\xe4\xcf\xd7\x7b\x2f\x0e\x5f\x12\x52\
\xb9\x41\x7b\x30\xfb\x3b\x3f\x55\x4a\x77\x45\xab\xae\x03\x46\x94\
\x91\xa3\x51\x90\xc2\xf6\xdd\xac\xd1\xd8\x62\xd1\xb1\x69\xb7\xf5\
\xc4\xd5\x44\xc4\x19\xfe\xef\xca\x63\x72\xa9\xb8\x70\xac\xdf\xfd\
\x16\x54\xde\xbb\x32\x14\x60\xa7\x93\x9f\x13\x93\x70\x1a\xfd\xa5\
\x12\x23\x5e\xcb\xa3\x98\xa1\x4b\x6a\x68\x0a\x6c\xc2\xbb\x6f\x7a\
\x3a\xa6\xdf\xd0\x91\x2f\xa8\x48\xfe\xbe\xcd\x92\xa7\x66\xd2\x0b\
\xe6\x6d\x89\x76\x4a\x08\xbe\xaa\xe6\xb7\x25\x04\x4b\x87\xa0\xf2\
\xc1\xbc\x01\xc1\xdd\x3a\x23\xd2\xf9\x7b\xee\xee\xbb\x16\xa2\xe8\
\xa6\xb6\xdc\x96\x17\xb2\xa8\xe6\xac\xaa\xf0\xf4\xb0\xf4\xfa\xce\
\x9d\x0e\x1d\x9d\xbd\x7d\x54\x7d\xac\xdf\xcf\x9c\x0b\xe7\x42\x84\
\xbd\x5b\x03\x7f\x92\x82\x23\x34\x23\xc3\x6c\xe6\x1c\x8b\xc9\x0e\
\x27\xe3\x9b\x9a\xa9\x9a\xcf\xde\x4f\x9a\x14\x20\xfa\x3a\xe2\x5b\
\xa2\xab\x2b\x90\x6a\xea\xad\x6b\xd3\xe7\x99\x9f\x11\x99\x8a\x17\
\xf7\xb2\x58\xe5\x95\x61\x9e\x87\x1e\xee\x97\x4a\xa3\x4f\x22\xd1\
\x22\xa3\xa3\x23\x36\xa2\x25\xf8\xcb\x37\x3a\x3d\x91\xb1\xfc\xdf\
\xcc\xcc\x49\x4c\x59\xb1\xaa\x07\x5c\xb8\xb6\x0e\x65\xa1\x1b\x1a\
\x2b\x1b\x29\x2d\xb6\xb1\x35\x57\x3e\x3e\xb4\x5e\x07\xd6\x2d\x4c\
\xde\xcf\x5e\xde\x8b\x68\x95\x37\x50\x45\xa2\x52\xbe\xa1\xcc\xde\
\xa7\x12\x4e\x4e\xca\x08\xfe\xe5\x49\x26\x45\x25\xab\x5a\xf7\x3c\
\xd7\xd5\x47\xd7\x79\x7a\x6b\x37\xe7\xc6\xb3\xf3\xe5\xf7\xd8\xf8\
\x4d\xe2\x11\x65\xe4\x94\x52\xeb\xea\x28\xeb\x6a\x59\xcc\x83\x02\
\x98\xc9\xb2\xad\x8b\x01\x95\x93\x0f\x95\x0e\x0e\xb5\x92\x27\x34\
\x67\x0e\x66\x67\x9d\x26\xda\x4e\x5b\xd6\x5d\x53\xd3\xdd\xb3\xd3\
\x3e\x11\xd0\x88\xd0\xb0\x7b\x5d\xe3\x76\x24\x24\x72\x82\x7b\x59\
\x85\x5b\xe7\x05\x85\x44\x33\x22\x94\x8f\x79\x7b\x62\x6d\x71\x30\
\xc2\xf5\xda\xd2\xda\xdb\xc9\x5a\x7b\x2b\x60\xc1\x84\x30\xc2\x19\
\xde\x4d\x48\x9b\xdd\x2c\x38\x64\x4f\x17\x0d\xf5\xd7\x0b\x83\x16\
\x48\xc9\x4b\x4d\x48\x4b\xc4\x4c\x37\x25\xb0\xab\x27\x36\xb4\x73\
\x93\x93\x43\x43\x16\x43\xa9\x5e\x6a\x6e\xbf\xaa\x5f\xbf\x54\xa9\
\x0c\x0e\x90\x0c\x19\x52\xc7\xc1\x3b\x17\x4b\x2f\xa9\x53\xe5\x54\
\x64\x65\xbd\x96\x4f\x88\x30\x48\x54\x5c\x1a\x13\xda\x16\xaf\xdf\
\x5f\x94\x93\x94\x4d\xb3\xb5\x6a\x62\x45\xee\xc9\x7b\xbd\xec\x48\
\x5a\xa8\x67\x0f\x17\x17\x86\x61\x19\xd0\xa3\xf7\x5f\x5f\xd9\x41\
\xd5\xd5\x56\xb5\xaf\x97\x85\x91\xa3\x46\x28\xe1\x92\xcf\xa6\xa6\
\x24\xa6\x32\x62\x5e\xcb\x6d\x04\xda\x09\xf2\x1a\x7b\xaf\xa5\x5a\
\xa6\xa4\x0c\x8e\x5c\x8f\x74\xba\x94\x89\x0f\x85\x0e\x0e\x9e\x56\
\x4c\xaf\x4c\x48\xb1\xb0\xc1\x4f\xdf\xdf\x5b\x7f\x36\xca\x06\x26\
\x63\x93\xdb\xd7\xf8\xf2\x3e\x7c\xc5\x8b\x3b\x42\xae\x2c\x4a\x58\
\xd9\x66\x57\x0b\xd7\x57\xe4\xa4\x39\xe4\xf3\xbf\x66\x4c\x50\xba\
\xe2\x40\x64\xbe\x53\x73\x67\x53\x87\x47\x7c\xed\x0d\xbd\x95\x37\
\x0a\x15\x92\x90\xca\x08\xb1\xb5\x6f\x01\xb0\xd8\x8d\x52\x8d\x0d\
\xd6\x24\xb6\xdf\xb3\xb3\x30\x5b\x79\x13\x5e\x3c\x62\x42\x89\x22\
\xbb\x2f\xb4\xac\xac\x8c\xea\x2e\x72\xda\x72\x72\xb3\xda\x63\x77\
\x54\xdd\x41\x16\x5d\x69\x1d\x1c\xb1\x1d\x2d\xfd\xf4\x8e\x17\xb2\
\x69\xa9\x97\xa9\x8f\x2b\xbc\x18\x38\x35\x4b\x68\x59\x10\xd2\x2b\
\x74\xe9\xb1\x12\xbd\x78\xf7\xd7\xd1\xa5\x82\x68\xa1\x0c\xdf\x1b\
\x9b\x0d\x82\x22\xcd\x72\x47\x84\xdb\x84\x21\xe4\xb2\x7f\x5e\x90\
\x22\xf6\x8a\xec\x9f\x30\x4b\x45\x27\x6d\x25\x26\xbb\x39\x90\xb8\
\xba\xb5\xe1\x91\xd2\x91\x92\xd2\xfd\x75\xe8\x11\xfa\xf5\xf9\x73\
\xdd\x05\xdd\xdd\x1a\xd8\x94\x11\x83\x6b\xc8\xed\x77\x46\xf1\x72\
\x28\xaf\x77\xb9\xf5\x4f\xf0\xf0\x8d\x88\xe2\x5b\x8a\x06\x26\x4c\
\x63\x33\x06\x7b\x47\x89\x3a\xe2\x3a\x3b\x5b\x5b\xd7\x5a\x07\xf5\
\x39\x31\x59\x39\x70\x58\x42\xae\xa3\x26\x82\xfa\x04\x71\x2c\x25\
\x9d\xd4\x47\x0c\x72\x77\x35\x31\xd5\xd5\x3e\xca\xca\xd2\xb0\x5e\
\x2c\x58\x86\x41\x39\x70\xce\x0d\x72\xe5\x6d\xb7\x26\x4b\x8d\xf1\
\xc8\x54\x96\x64\xc4\x1f\xba\x46\xa6\xe6\x82\xe6\xf9\xb3\x8d\x1a\
\x5b\x06\x82\x26\x72\xd2\x3c\x3c\xd0\x3d\x5c\x9d\x42\x84\xa8\xae\
\xab\xaf\x6b\x27\x34\x69\x2d\x1a\x90\x5d\xfc\xbe\x05\xd1\x01\xfe\
\xc1\x01\x83\x5b\x5a\xc9\xf4\xfb\xb4\xf4\x24\x44\xee\xa6\xe3\x6e\
\xa3\x16\x2a\x54\x4e\xf3\x92\xe4\x2f\x72\x04\x7b\x2c\x25\xd5\xcd\
\x75\xcd\x8e\xc7\xb8\x1d\xe1\xb0\x48\x72\x7b\x2f\x15\x11\xed\x1d\
\xe5\xe9\xa2\xb5\x24\xa7\x26\x24\x58\x92\x5b\xa3\x56\xad\x14\x97\
\xd8\x97\x47\xc0\x31\x33\x51\x31\x5f\x90\x5b\x50\xb3\x53\xca\xd1\
\x20\x7f\x2d\x28\xcb\x8d\xee\xe5\xcc\xcc\x78\xc4\x45\xb4\x5f\xfa\
\x91\x62\xc4\x88\x17\xb2\xbe\x3e\x91\xbe\x91\x51\x7d\x2b\x83\x16\
\x10\xc1\x04\x08\x56\x24\xee\xea\xea\xee\x8d\xb2\x19\x92\xbd\x7a\
\xb6\xbe\x56\xa6\x28\x54\xa2\xd2\x3f\x2c\x92\x82\x2c\x22\x6b\x16\
\xe6\x47\x2b\x4e\x5a\xac\x3d\x68\x64\x2a\xc3\x15\x61\xaa\x96\xb2\
\xc4\xe6\xa4\xe1\xa6\xa4\xee\xac\x1c\xb9\x37\x2e\x2d\x35\xc4\x8d\
\x56\xb7\x55\x5d\x6f\xd5\xc5\x35\xcd\x86\xfd\xcf\x13\xdc\x48\x27\
\x50\x2c\xa0\x82\xa3\x04\xdc\x94\x93\xb9\x41\xc3\xb5\x45\x6a\xcb\
\x6b\x6f\x6d\x6b\x21\x69\xa3\x6d\xd3\xa4\x02\x05\xbd\x81\xea\xfd\
\x65\xef\xe3\xe4\x13\xeb\x16\x1a\x62\x4a\x4c\x5f\x96\x22\xcc\xd8\
\x90\xf9\xf5\x71\x99\xf8\xa7\x53\x9b\x9b\xb0\x9a\x22\xdd\xc9\x28\
\xe3\xdb\x76\x76\x9b\xde\x85\x9d\xd3\x5b\x82\x2d\xb2\xf4\x09\x17\
\x09\x89\x8f\xe6\x8e\x94\x8f\x8b\x77\x77\x27\x77\x25\xeb\x4c\x4d\
\x48\x4c\x8a\x8b\xe6\x6c\xdf\x00\xcc\xcc\x85\x4c\x42\xac\x24\x5a\
\xe9\xd5\xd8\x74\x97\x80\x37\x03\x5b\x17\xbb\x8c\xfb\xbb\x9d\xf6\
\xcc\x3b\xda\xe9\x94\xac\x97\x97\x87\x17\xb5\xcb\xdb\xf0\xa7\x34\
\xac\xb3\xe9\xd3\x45\xa4\x12\x52\x5e\xcb\xf9\xf8\x6f\xfb\x09\x0d\
\xa5\x21\x9a\x5b\x9e\x9a\x77\x96\x97\x22\xbb\xac\x2a\xbc\x94\xfb\
\xb5\x75\x51\x75\x51\xd1\xdb\x16\xa1\x8f\x16\xfa\x9d\x6c\x1d\x1d\
\x46\x97\x04\x46\x42\x19\x2d\xec\x28\x21\xca\xcd\xe1\x2c\x0c\xf6\
\xdf\x0b\x73\xc0\x70\x4b\xfa\xf0\x8a\xba\x5a\x5c\x74\x54\x64\x69\
\xac\x84\xb9\xa5\xb8\xb8\xfa\xac\xe4\xd0\x3f\x82\x69\x00\xf4\x82\
\x82\xc2\x64\x73\xb0\x2d\xa6\xb6\xe7\x86\xf3\xca\xf4\x5d\x21\x1a\
\xc4\xb2\xc7\xc5\xb5\x69\xca\xda\x95\xf3\x0e\x94\x57\x17\x54\xa9\
\xbf\xb9\x48\x9c\xd9\x4e\x10\x16\xda\x80\xd8\x05\x5e\xf5\x27\x21\
\x27\x0e\xc7\x63\xcc\xf6\xbb\xdd\x9b\x70\xc5\xe3\x35\x35\x5c\x92\
\x42\xf6\x3d\xb8\xc9\x83\xf3\x24\x7b\xc7\xe6\xf3\xe1\xcd\x11\x11\
\x2e\x24\xb4\xb0\x44\xb8\x36\x3d\x91\x66\xa5\xd6\x86\x85\x65\x85\
\xda\xee\x76\xc5\x53\x64\x1a\xba\x4e\x9d\x95\x27\x95\x14\x96\x95\
\x02\xe1\x04\x1e\xb2\xe5\xd8\x3b\x76\x76\x71\xb1\x57\xb1\x75\x5e\
\x6a\x25\x2e\x4d\x5f\xa9\x5f\xd9\x9e\x79\xb2\xcc\xc9\x17\xdb\x29\
\x14\xb8\x76\x1c\x89\x88\xf1\x8d\xf4\xf0\x6b\x20\x5a\x69\x56\xad\
\x91\x22\x2c\x58\x3c\x53\x3d\x3c\xf6\x72\xf3\xed\xf6\xf6\x7a\xa6\
\xad\x45\x2d\x2d\x4e\xa7\x1c\x9e\xd0\xb3\x00\x6f\x72\x82\xb2\xdd\
\xb7\xb7\xda\x0f\xb4\x12\xca\xef\xe1\x7d\x11\x11\x52\x18\x24\xbe\
\x46\x8d\x11\x23\x49\x8b\xb9\x3c\x1a\x11\xe6\x16\xef\xef\x49\x4f\
\x8c\xc7\x13\x46\x85\x08\x16\x24\x1d\x0f\x1c\x1a\x90\xaa\x58\x55\
\xa9\xac\x1c\x1d\x76\x1c\xee\x64\x8d\x8c\xa5\x8b\x8e\xfa\xaa\x89\
\x55\x21\x89\xde\x85\x5c\x8e\x5c\x7b\xcd\x2e\x81\x06\xd4\xff\x7f\
\x6e\x6e\x9b\x6e\x36\x7d\xf6\x6f\x71\xf1\x75\x75\xad\xc5\x97\x3b\
\xaf\x49\x4b\xd7\xa4\x8b\x96\xe4\x88\xbd\x8f\x8b\xee\xa3\xb3\x05\
\xac\x58\x41\x74\xfe\x7a\x7c\xd9\x92\xb2\xe5\xbd\x05\xc2\x77\x77\
\x60\x7e\x90\x50\xda\xc5\x3c\x3c\x82\x22\x77\xcf\x16\x97\x51\x15\
\x4a\x3a\x6a\x69\x4a\x6a\x12\x2c\x86\x87\xc6\x85\xc7\xc5\xa0\xa3\
\xc6\xc1\x4a\x0d\x8b\x16\xe1\xc5\x70\x1a\x1c\x38\xcf\x2e\x87\x95\
\x88\xbb\x42\xac\x75\x4d\xb2\x8d\x8f\xaf\x1e\xc4\x9a\x53\x9d\x20\
\xaf\xea\xa7\xa5\x57\x97\x54\x64\x6d\x64\x2d\x4d\x0b\x59\x2f\x2c\
\x77\x2b\x73\x75\x21\x73\xb6\xaf\x32\xdb\x82\xde\xf6\x67\x1c\xbe\
\x91\x69\xea\x94\xb6\xab\x9b\x9b\x55\x9a\xe1\xaa\x41\x74\x9b\x3a\
\xc6\xcd\xbe\xd6\x41\x96\x10\x19\x90\x10\x9c\x98\xe9\x64\x0c\xa3\
\x3a\x74\x27\xb9\x36\x0a\x85\x26\x51\x42\x57\x5f\xd6\x47\x68\xd2\
\x5a\x34\x50\xba\xe8\xe0\x68\xe8\x57\x81\x19\x1e\x35\x15\x30\x30\
\xdb\xd0\x4e\x43\xe8\xca\x3a\x74\xa1\x71\x2b\x28\xdb\x27\x67\x92\
\x58\xfc\xd6\x2c\xcc\xce\x75\x9d\xb5\xb5\xb5\x75\x94\x75\xea\x0e\
\x57\xec\x73\x2a\x39\x7f\x2e\x91\xf7\x48\xb4\xda\xdb\x09\x9a\xfc\
\x25\x05\xc1\x9d\xe4\xb0\x44\xe0\xcb\x20\xd8\xd8\x69\x58\xb9\x31\
\x2f\x65\xbc\xa2\x58\x56\xc2\xf6\x50\x9c\x4d\x4e\xcb\x4b\xcd\xcb\
\x8c\xd5\xb3\x93\x3a\xf7\x3a\x3a\x56\x5a\x9a\x5a\x10\x2e\xf2\x58\
\xa0\x23\x68\xd1\xd1\x51\x6e\xd1\x7e\x7c\xb4\x89\xd2\x98\x46\xca\
\x93\x93\x05\x93\x05\xf9\x51\x91\x91\x91\x51\x51\x2a\x38\xc3\x85\
\xb0\x10\xa4\x5c\xbd\x97\xde\xf0\x1d\xec\x19\x11\xc9\x69\xc0\xb7\
\xb1\x62\x42\x04\x89\x21\xf9\xbb\x3b\x17\x5e\x2f\xbe\x68\xf9\x60\
\x62\xcf\xe6\xf3\xd9\xcd\x72\xfb\xbc\x48\x68\xf4\xbf\x41\xd1\xd6\
\x57\x38\x3a\x88\x08\x1a\x58\x4a\xf3\xae\x97\x64\x48\xbd\x4f\x4b\
\x7c\xb7\xc5\x57\xdd\xdd\x3a\x3d\x9a\x26\x66\xcc\xa8\xa9\x18\x18\
\xb0\x18\xc7\xfc\xe8\xe1\xb8\xe8\xef\x7b\x72\x1e\x89\x47\xa8\x2e\
\xbb\xbb\xf7\x3b\x89\xc4\xb5\xc1\x8f\x78\x7d\x1b\x1b\xd7\xf9\x16\
\xd5\xd6\x57\x54\xe1\x5b\xd3\x0b\x04\x13\x03\x89\xe9\xad\x7a\x74\
\x7a\x5a\x5a\xda\x7e\x1d\x22\xb9\xbc\x3c\xaf\xaf\xac\x8f\x95\x83\
\x33\x33\xc5\x33\xd2\x45\x9c\xac\xcb\x6c\x1d\xbf\x8d\x1a\x1b\x16\
\xeb\x17\xce\xee\x29\x2f\xa1\x2e\xd3\xb4\xae\x37\x3f\x1e\xfa\x73\
\x5c\x4c\x5c\x7c\x58\x68\x82\x18\xd6\x12\xd5\x1e\xf7\x97\x89\x5a\
\xc4\xf8\xaa\x04\x1b\x77\xcf\x17\x74\x97\x20\x81\x37\x2f\xac\x8f\
\x1f\xe8\x1b\x1b\x2e\x2b\x66\x92\xd8\xec\x26\xbe\xf2\xc7\x7c\x7c\
\xb3\x7d\xb9\xf7\x89\x16\x94\x25\x4f\x16\xd4\x33\x18\xd1\x1c\x1c\
\xde\x4c\x6d\xb6\x9e\x03\xc5\x14\x37\xae\x5a\x58\x50\x60\x08\x50\
\x65\x19\xcc\x2f\x6f\x61\x2f\x6f\x08\x10\x3c\x48\xd9\x58\xdd\xdd\
\x50\xdd\xbf\x5f\x6f\x56\xc9\xc7\x69\xc9\xde\xf7\x24\x3d\x96\x56\
\x9c\xbb\x8e\xce\xbc\xce\xbc\xdc\xe1\x91\x8d\x91\xd1\xb6\x28\x22\
\xa2\xc1\x5c\x5c\x92\x5c\x3e\x2c\x6c\x32\x6e\x41\x37\x7c\x47\x72\
\xd7\xb9\xd7\x54\xb5\x90\xbf\x3b\xa3\xba\x09\x19\x89\x89\xe9\x69\
\x54\x69\xf7\x77\x2f\x46\x3a\x5d\x97\x99\xd6\xd7\x86\xda\x04\xa0\
\x04\xa0\x65\x15\xcc\x2f\x1a\x11\xe6\x16\xef\xe7\xd6\x47\xf4\xd2\
\x7d\x7a\x54\xb1\xd6\x4a\xa3\xd8\x09\xd5\x0c\x08\xce\xcc\xe6\xc9\
\x78\xf1\xae\x94\x7a\x65\xba\x7a\xa4\xb4\x58\xa4\x66\x4a\x3d\x79\
\x25\x04\xaf\xc0\x2a\x28\x61\x7b\x94\x8e\x14\x94\x79\x2e\x67\x57\
\x4c\x4d\x88\x4c\xe2\xc5\x2d\xb5\x63\xc3\x35\x28\x1c\x1d\x4c\x1c\
\x8a\xf5\xda\x3a\x4e\x3b\x3a\x9f\x41\xb5\x68\xea\x28\x20\x62\xc1\
\xb7\xdd\x8a\x50\x5e\xca\x83\x98\x67\x69\x10\x27\x48\x0a\x83\x2c\
\x38\x32\x50\x30\x55\x5d\xb6\xb5\x8a\x6f\x60\xc1\xa7\x24\x4b\x6c\
\x4b\x4d\x30\x65\x2d\xa9\x62\xef\xa3\xa8\xdf\x21\x75\x00\x10\x34\
\x60\x94\x1e\x09\x1e\x1e\xf1\x71\xd6\xf1\xda\xf9\x3c\x78\x42\x5e\
\x02\x62\x0b\x89\x6c\x6c\xb4\x68\xec\x86\x0c\x08\xca\x0a\xce\xce\
\xa6\x76\x6a\xf8\xa9\xf4\x29\xa9\x48\x89\x21\x5c\xd9\x93\x39\x76\
\x04\x4b\x50\x25\x32\xce\x2f\x65\x11\xcc\x75\xbc\xb9\x2b\x80\xa5\
\x8a\x4a\x34\x4b\xe3\xe3\xfe\x6b\x9c\xbe\x5c\x5d\xb2\xb2\xfa\xf6\
\x5f\x53\xbc\xbd\xa9\xb9\xff\x39\xbe\x6c\xdc\xcd\x0d\x7f\x09\x41\
\x66\x96\xb2\xc9\xe6\x17\x4a\x48\x22\x4e\xf3\xb1\x9b\xa5\xaa\x9a\
\xab\xaf\x86\xb7\xc5\xf7\xb3\xb4\x17\x4b\x27\xa4\x4b\x6f\xfa\xa6\
\xca\x87\x47\x50\xb7\xa3\xd7\xb7\x37\x26\x85\xe3\x4e\xdb\xd7\xaf\
\xba\x5f\x69\x74\x60\x60\xac\x80\x33\x1b\x86\xc1\xc9\x65\x17\xb2\
\x05\x66\x93\x0a\x91\x99\x64\x21\x57\x92\x48\x0a\x56\xad\x55\x5b\
\x79\x97\x56\x6f\xd5\x16\x11\x37\x9c\x9b\x3c\x9c\x5f\x97\x5b\x50\
\x63\x53\xb7\x33\xfc\xab\xe6\xd7\x7f\x31\x85\xd2\x0b\xe6\xb5\x75\
\x6e\xb5\x3e\x7c\xcd\x9b\xeb\xee\x65\xed\xb2\x3b\x62\x63\x49\x62\
\xa6\x2c\x1b\x0f\xe5\x87\x5e\xcb\x83\x98\xec\xeb\xbc\x9c\x59\x2d\
\x29\x2a\xc9\xb2\xc2\xcf\xcd\xd5\x7b\x35\x4e\x5f\x49\x69\xfc\x89\
\x85\x22\x4f\xc7\x75\x0d\x86\x34\x87\x06\xd7\x52\x12\xee\x4b\x55\
\x28\xf4\xab\xab\x7a\xaa\xbb\xba\xef\xb7\x11\xdc\x16\x16\x1e\x1a\
\x7e\x11\xfe\xf5\x02\x6b\x02\x02\xf2\x0a\x47\xf3\x5d\x2f\xd7\xc2\
\x56\x1e\xad\x64\x5e\xca\x23\x98\x20\x20\x02\xc0\x6b\x03\x8a\xd6\
\x9d\x9d\x40\x9d\x4c\x28\x4c\x48\x7a\xa0\xbc\x37\xbb\xbb\xf7\x3b\
\x9b\x17\xa3\xaa\x37\x41\x39\xe9\xf5\xf7\x09\xf6\x84\x32\x03\x83\
\xf5\x03\x0d\xf5\x2d\xad\xe5\xad\xe5\x65\x43\x5b\xb6\x42\x07\x04\
\x36\x37\xe2\x36\x0f\x9b\xd8\x2b\xe8\xb0\x81\x74\xb0\x40\xfb\x1e\
\x09\x14\x89\x49\x6e\xae\x36\xae\xd1\xfc\x86\x84\xed\x85\xbb\xde\
\xc9\xc7\x89\xc9\xb5\xd2\x8f\x8c\x9f\x8f\x7d\x39\xb9\xa6\xc9\xa9\
\x83\x06\xa1\x52\x04\x50\xd9\x6d\x18\x62\xe6\x53\xe3\xe3\x1b\x13\
\xdb\x17\xd1\xd9\x19\xa1\x44\xd7\x46\x44\xfb\x28\xf8\x94\xc3\xf2\
\xc5\xf2\x24\x27\xf1\xb8\xd6\xdd\x2b\xe3\x30\x67\x02\x18\xc0\x81\
\xef\xb6\xcc\x54\xf3\xe7\x72\xb3\xa9\xb2\xb9\xbe\xa1\xa3\x86\x8e\
\x24\x58\x81\xb2\x1d\x53\x82\x73\x70\x72\x80\x60\xfb\xc7\xc4\xf5\
\x5d\x5f\x6d\x6d\x89\xde\xc4\xdc\x44\xa4\x23\xb6\xcd\x9b\xd3\x66\
\xf4\x19\x73\x8d\x12\xb9\x29\x98\x28\x30\x24\x28\x64\x34\xbe\xfd\
\x0e\x7e\xbb\x97\x65\x2d\x6d\x9b\x46\x7f\xbb\x16\xa3\xb9\xae\x42\
\x99\x38\x72\x77\x78\x78\x5d\x78\xd7\x37\xa0\x9c\x72\x74\x8c\xe2\
\x8e\x8e\xfe\x1a\xe5\xef\xa5\xe5\x6a\xd5\xfc\xfd\x09\xfd\xd0\x82\
\xf5\xeb\x33\x33\xdc\x7a\x15\xc4\xc3\x96\xca\x7a\x98\x5e\xcf\xc3\
\x3f\xdf\x34\x34\xe6\xd4\xac\x3f\x88\xf0\xcc\x88\xbb\x5d\xbe\xa8\
\xd8\x89\xa5\xe8\xa7\x4b\x4e\xf2\xb5\xb6\xda\xb6\x50\x48\xbb\xba\
\xb7\xbb\xb5\xb5\x4e\x19\xbb\xed\x78\x7b\xfa\xf8\x56\xf9\x64\xc8\
\x41\x04\xec\x5c\x9c\xec\x69\xed\x2c\x02\xda\xc2\x5e\xca\x23\x98\
\x21\x2e\x0d\x7e\x66\x8b\x8c\x5a\xe6\xe1\x54\x8e\x44\xdf\x7a\x6c\
\xba\x7a\xa4\xb4\xfd\x74\xd1\xd6\x13\x98\x5e\x94\xbc\x9b\x5a\xb4\
\x45\x6d\xcc\xb9\xcb\xcb\x7b\xcb\x77\xb3\x6c\x4c\xa6\xec\x9b\x4d\
\xbb\xba\x65\xbb\xb2\xe5\xd0\xd0\xa4\x30\x2c\x00\x0a\xc9\x5e\xcb\
\xfe\xac\x41\xbb\xa7\xa7\x04\x0b\x0e\x0e\x36\x0e\xa9\xff\x6e\x19\
\x18\xee\x4d\x15\x4d\xf9\x3a\xc4\x3b\xda\x9f\x4e\x97\x5c\x34\x75\
\x47\x4c\xa4\x09\xa7\xa5\xd5\xab\xb1\x6a\xdc\x48\xd2\xda\xa1\x7a\
\x42\xf9\x47\x47\xac\xa7\x3c\xac\x36\x26\xe3\x06\x61\x28\xa1\x49\
\xd6\xa1\xf6\x58\x1c\xc2\x4e\x8e\x29\x8e\xa9\x69\xe1\x1b\x33\xb3\
\xdc\xdc\x20\x51\xfc\xa4\x96\x2c\xa5\x4a\x95\x3a\x72\x77\x0b\x0d\
\xae\x77\x7d\xb2\x1c\x16\xaf\x43\x68\xd1\x2a\x54\x56\x95\xe5\xab\
\x78\xf1\x2e\x2e\xf3\x2e\x67\x7f\x55\x86\x83\xc3\xab\x83\x24\x1f\
\xe5\xc5\x7b\x3a\x79\x7a\xe4\xda\xa7\x06\xab\x56\x7b\x7b\x36\x7a\
\x4e\x64\x02\xd2\x02\x83\xf2\x6d\xb6\x40\xae\x42\x9c\x98\xf1\x5c\
\x3a\x2d\x93\xb4\x91\xda\xe1\x91\x23\x05\xef\x89\xbe\xee\xdf\x64\
\xd3\xcd\x6b\xcb\xfa\x4d\x63\xe6\x63\x63\x16\x7d\x0c\xb8\x46\x91\
\xf0\x0b\x67\xf7\x9f\xae\x05\xa1\xdb\x34\xd8\xbb\x00\x08\xda\x80\
\x6f\x5d\x00\x00\x50\x40\x00\x02\x28\x20\x00\x01\x94\x10\x00\x00\
\x4a\x08\x00\x00\x25\x04\x00\x00\x12\x82\x00\x00\x09\x41\x80\x00\
\x04\xa0\x00\x00\x25\x04\x00\x00\x12\x82\x00\x00\x09\x41\x80\x00\
\x04\xa0\x40\x00\x02\x50\x20\x00\x01\x28\xd6\x00\x26\x39\x00\x9a\
\xca\xc0\xb7\xb5\xe7\xb7\xf2\xfe\x5b\x4b\x9b\x5b\x2e\x42\xc8\x57\
\x53\x15\x53\x53\x3e\x3e\xbe\x3e\x7e\x7e\xfe\x7e\x7b\xfe\xee\xf6\
\x8b\x89\x47\x8f\x51\x13\x85\x0d\x01\x7b\xd4\xac\xcc\xcc\x97\xcc\
\x7f\x9f\xcd\xf1\x5f\xd7\xaf\x9f\x58\xa8\xb6\x64\xa0\xa0\xeb\xa0\
\x5e\x0e\xe7\x7f\x77\x5d\x1d\xb1\xd1\x1d\x08\x68\x80\x4a\x64\x0d\
\x74\x74\x77\xf4\x3c\x0f\x16\x20\x97\x89\x7f\x39\x62\x42\x47\xe2\
\x7f\x1f\xe8\xec\x8d\x64\x39\x59\x33\x33\xa3\x43\xa8\xd1\x73\xbe\
\xa5\x19\x8c\x70\xc0\x12\x0c\xea\x54\xab\x1c\x77\xb4\x3a\x94\xfc\
\x08\x24\x42\xa2\x7b\x26\xf0\xf0\xad\x61\x6b\x56\x6f\x55\xb1\xa4\
\xf1\xb1\x9f\x3f\x5e\x7f\x92\x90\x3e\x3a\xbe\x3e\x3f\xae\x1c\x11\
\x04\xa3\x3a\xb0\x7c\x5f\x45\xfe\x75\x4d\x4a\xcd\x25\x9f\x2c\x2a\
\xff\x7c\xb1\xd8\x0f\xc3\xb8\x3e\xaf\xe6\xad\x5f\xff\x56\xc3\xf4\
\x9f\x8f\xf6\x7f\x6d\x59\x8d\x4d\x7c\x6d\xe8\x22\x02\x51\x9d\x58\
\x7e\x9f\x61\xf8\xc4\xfe\x9c\xec\xef\x9c\xfa\x7f\xae\xb1\xf1\xa9\
\xaf\x8b\xba\xbf\xae\xf3\x16\xbb\x47\xbc\x8a\xe3\xa1\x3a\x11\x14\
\x44\x8b\x69\x19\xcf\xe9\xf3\x3d\xcd\x8c\x24\xa4\x94\x7a\x56\x00\
\xb9\xa7\xb9\xa9\xb1\xb1\x64\xd1\x83\x22\x78\xc1\xa9\xf2\x02\xa7\
\x03\x02\x82\x08\x4c\x48\x4a\x4a\x4a\x4c\xee\xba\xf5\xe0\x1d\xd7\
\x30\x38\x9b\xad\x9e\x36\xa5\x4d\x5a\x1a\xd7\xf3\xd3\xdf\x7d\xdd\
\xd2\xe9\x1b\x25\x50\xfb\x94\x10\xd6\x00\xbc\xa5\x6c\xbc\x44\xfe\
\x83\x06\xe1\xe1\x61\xe1\x25\x3c\x32\x22\x96\xf2\x6e\x5b\xe8\xed\
\x37\x68\xe8\x9e\xeb\xe3\xfa\x4b\xd1\xeb\x34\x68\x65\xe5\x17\x65\
\x3b\x3b\x3a\x3b\xf5\x3a\x99\xfa\x80\x80\x80\xc0\x80\xc0\xe4\xe4\
\xd2\x64\xb2\x4f\xf4\xf7\x94\xf4\x94\x96\xd6\xd4\x7a\xd4\x79\x79\
\x47\x85\x44\x44\x46\x46\x5c\xf0\x57\x5d\xa8\xb7\x89\x89\x85\x09\
\xee\x5c\xe3\xc2\x34\x99\xbf\xda\x51\x7e\x54\x86\x7f\xdf\x5d\xff\
\xa2\xb7\x20\x2b\x20\x30\x68\x30\x40\x8b\x58\x28\x5c\xfc\xce\x13\
\x03\x7a\x97\x58\xca\xaa\x83\xca\x5e\xd7\x7f\x37\x9d\xfa\xdd\x77\
\xf4\xf5\xcf\x73\xe9\xd2\x1f\x4b\x9b\x2e\x9a\x9a\xe3\xba\x21\xd0\
\x66\x8d\x78\xc2\x78\x62\xf8\x78\x7f\x2b\xd5\x7a\xce\x64\x7c\x7f\
\xe9\xfa\x5f\x57\x69\x7c\xe5\x3c\x83\xfa\xef\x07\x7f\xf8\x35\xbf\
\xbf\xfc\xba\xa6\xa3\xe6\x3e\x0f\x75\x38\xe4\xea\xda\xb8\x54\xf4\
\xdb\x0c\x31\xd1\x3b\x2b\x81\xeb\x1f\x07\xde\x0c\xd5\xba\xe5\x30\
\xd7\x8d\x3f\x5f\x70\x57\x20\x8e\xd5\x08\x50\xd0\x57\x57\xc9\x97\
\xe1\xfc\x11\x11\x06\x0c\x20\x83\xb8\x88\xf8\xf8\xbc\x3f\xbc\xf0\
\xa8\x49\xf4\x7d\x07\xc1\x3f\xc7\x47\xfd\x77\x77\xc9\xb7\xbc\xb3\
\xbd\xbd\xbf\xaf\xe0\xe1\x1e\xef\x84\x79\x9c\xc9\xa5\xd3\xdb\xfb\
\xc7\x7b\xfe\x7e\x27\xe9\x29\xe3\x8e\x8e\xc7\x8e\xf8\xbf\x58\x7c\
\x7a\xa5\xc8\xe2\x75\xe3\xb5\xb5\xfd\xfd\x04\xfd\xd0\x41\xf4\xe9\
\x98\xe8\xbd\x98\x59\xd9\x6e\x87\x6d\xbb\x48\xf6\x69\x45\xc9\x49\
\x9f\xa7\x72\x7c\xe4\xfa\xe3\x29\x5f\x13\xfb\x39\xfd\xf6\xb5\xe9\
\x16\xd7\x33\x19\xa0\x80\xb0\x04\x3a\x2e\x2e\x9d\x3a\x3e\xa3\x46\
\xcc\xd1\xc8\x7f\xd3\xd3\xd7\x73\xdd\x9e\xf7\xbb\x49\xec\x4d\x4d\
\xbc\x5d\xf7\x43\x93\xf4\xbf\x47\x72\xfa\x02\x4e\xd9\xda\x95\xd9\
\x9e\x57\x72\x77\x32\x72\xb8\x9e\xaa\xff\xeb\xab\xea\xeb\x15\xfe\
\x34\x07\xee\x5a\x53\xe9\xc1\xc1\x04\xc1\xbc\x41\xf6\xfb\x7f\x3b\
\xfd\x79\x93\x35\xfb\x5d\xaf\xf9\xbb\xe7\x7f\x1f\xda\xf0\x89\xb4\
\x88\x20\x1f\xc7\xec\x7b\xef\x87\x5f\xbe\xdd\xf2\x33\x09\x3e\x32\
\xe4\xfa\xd9\xe3\x7f\x3f\xf9\xf9\xaf\x9f\xf2\xbe\xfc\xca\x35\x60\
\x13\x16\xf3\x1b\xff\x97\x6b\xfa\x50\x60\xec\xe0\x17\x94\x78\x5f\
\xa3\xe1\x3e\x0f\x9e\x34\xcb\x87\x8a\xe5\x45\xa4\xdf\x37\x43\x70\
\x63\x53\x82\xd3\xf3\xaf\x8f\x83\xee\xff\xe3\xca\xfa\x3d\x23\xf0\
\xa5\x65\x0b\xa5\x25\xae\x3c\x3c\xf8\xfc\x5f\x97\x78\x2c\x97\xe4\
\xc9\xc0\x00\x1c\xc3\x6b\x32\x64\x62\x63\x17\x63\x48\x7c\x54\xa9\
\x7e\x7e\xb3\xfc\xef\x7b\x3b\xba\x26\x3e\xa6\xf6\x37\x83\xf6\xbc\
\x9f\xea\xcb\xca\x17\xca\xf3\x9c\x9b\xc6\x9a\x6f\xcd\xdf\x91\x2c\
\x1b\x16\x51\x4f\xe5\xc8\x29\xc6\x10\x49\x42\x44\xa2\x62\x25\x21\
\x72\xf3\xff\x73\xea\xfc\x8b\xab\xa4\xa7\xf5\xe1\xfe\xfc\x27\xf1\
\xfd\x56\xbf\x4e\xe6\xfb\x87\xdb\x7a\x1f\x38\xc8\xed\x25\xed\xed\
\x19\x85\x43\x42\xce\xf2\xae\xaa\xbe\xaa\xaa\xe6\x14\xab\xf9\x72\
\x4b\xe2\xf6\x7b\xa7\xa9\x4c\x17\x5f\xc9\xe7\x5f\x47\x63\xdd\x0e\
\xeb\x7a\x52\xe5\x20\x92\x86\x88\x86\x86\x8f\xa7\xbd\x1e\xa3\xdc\
\x4a\x08\xab\x00\xe4\xf3\x47\x53\xd7\x2f\x99\xb5\x75\xed\xc8\x56\
\xef\x64\xfd\xbc\x2d\xf6\xde\x37\xb5\x98\xf7\x6b\x77\xb1\x1b\xdf\
\x1a\x1a\x89\x32\xad\xbc\x21\x21\xcf\x26\x2c\x2a\x34\x2c\xf3\xfe\
\xa9\xf4\x26\xd3\xdc\x33\xeb\x7c\x86\x2d\x9c\xff\xcd\xcc\x79\x33\
\x3f\xc8\xe0\x20\xc3\xfe\xf7\x87\xdd\xec\xe0\xeb\x60\xe0\xbd\x3c\
\x22\x48\xd8\xb9\xb9\xd9\xf7\x8a\xbe\x78\xe2\xa2\xa7\xd9\x36\x9f\
\xe2\x9e\x69\xb5\xee\x53\x93\xa9\x7d\x1f\x89\xf2\x48\xa8\xc4\xf2\
\x27\xd1\x4c\x19\xec\xc6\x9a\x43\xf1\xf1\x7d\xff\xad\xeb\x96\x45\
\x3a\x36\xfa\x3a\x9f\xcf\x66\x7f\x58\xb1\x39\xbf\x68\x74\xce\xc7\
\xf3\x9d\x38\x0f\x34\x36\x74\x34\x77\xb4\x04\x10\xea\xe1\x7a\xe6\
\x3d\xd7\x44\xf7\x44\xc7\x5f\xcf\xee\x48\x27\x2f\xf3\x0c\x28\x20\
\xd6\x01\xd8\x81\xb8\xb8\x3f\x4f\xee\x3b\xe3\xe3\x9c\xb3\xdb\x99\
\xda\xda\x7d\x5e\x95\xe5\x57\x03\x6d\x5d\x58\x12\xde\x37\xa3\x74\
\x9c\xc9\xc2\xa2\xc6\x73\x9e\x7f\x79\x3a\xf8\xd2\x17\x4f\x97\x17\
\xaf\x2b\x8a\xba\x88\x20\xe9\xe9\x73\xe9\xe6\xe7\x49\xcc\xd1\xa3\
\xfd\x3e\xf8\xec\x47\x13\x7c\x9f\xd8\xe7\xd7\x7b\xdf\xec\xb2\x6f\
\xb3\xd8\xce\x67\x04\x12\xd8\xf1\x23\x91\xff\xdf\xe3\xf4\x3f\xf7\
\xf8\xfd\xc3\xd0\x9b\xbf\x22\xff\xfb\x3f\x4b\xf2\xa3\xc3\x78\x7f\
\x05\xe1\x94\xc3\xf8\xff\x7f\xb7\x19\x37\x7f\x1e\xbd\xcf\xf8\xf7\
\x04\x07\x04\x10\xa7\x41\xef\xd3\x7c\x3f\x33\x38\x97\x73\xa3\xf1\
\x7e\xdf\x8d\xfd\xa1\x42\xa4\x58\xf8\x1d\xfe\x7c\x82\x99\x17\xfc\
\x7a\x5e\xfd\xf1\x3e\x8f\xf1\x7c\x97\xe5\x9c\x17\x31\x27\xe9\x29\
\x48\x9c\xcc\xfc\xcf\x73\xfb\x7e\x0f\xc3\x1d\xd7\x7e\xbc\x0c\xfe\
\xed\xed\x08\x6d\x80\x4a\x23\x75\x2a\x32\x87\xea\x7f\x9f\xed\xba\
\x3b\x8e\xbd\xbc\x97\xbd\x7f\x33\x4f\x4f\xa1\xcf\x6e\x5b\xce\x35\
\xeb\xca\xde\x0f\x6f\x60\x6f\x6f\x4f\x3c\x47\x67\xec\xe7\xaa\x0c\
\x55\x21\xd9\x79\xd3\x9c\xfb\xeb\x3d\xaf\x62\xc0\x08\xb1\xd0\x82\
\xb5\x6a\xa3\xa3\xc6\x73\xe8\xf7\xfa\xf5\xff\xb7\x2d\xe7\x48\xb1\
\x3a\x34\x7a\x3a\x1d\xdb\xff\xb7\xe8\xfe\xe3\x51\xfe\x7f\xfe\xfe\
\x41\x04\xfa\xf8\x45\xf9\x47\x45\x45\x47\x2f\x47\xef\x98\x91\x11\
\x86\x11\x67\x47\x35\x0f\xc4\x9a\x8d\x3a\xcb\x46\xc9\xca\x9e\x31\
\xcd\x72\xfd\x81\x9d\x26\x8f\xe8\xfa\x3f\x22\xfb\xf0\x2d\xa3\xf0\
\xcc\x8f\xb3\xee\xb8\x1f\x5a\xee\xb9\xc3\x13\x23\xbd\x2f\xb2\xf2\
\x8c\xe1\x8d\x0d\x9b\x46\xf8\x9f\x41\x04\xb7\xb4\x1c\x2d\x18\x94\
\x04\x1e\xa5\x60\xae\x78\x7f\xae\xe1\x78\x3f\xf9\xf0\xbc\x43\x7c\
\x43\x43\xd9\xc1\xe7\xb3\x0a\x0a\x2a\xaa\xa6\xab\xa6\xa6\xc9\x16\
\x3b\xca\xdd\x0e\x7b\x96\x94\xfa\xef\x21\xdd\x5c\x77\x5c\xde\xed\
\x7b\x9d\xc4\xe2\x4e\x9c\x48\xa5\x28\x74\x80\x20\x88\x20\x67\xb3\
\x4c\xcf\xcf\x4f\x04\x39\xcb\x79\xbf\xad\xfc\x31\xcd\x87\x87\x66\
\x47\x87\x0c\x98\xff\x17\xf8\xec\xcf\xf1\x1f\x8e\x08\x27\xcf\xc2\
\x3f\xdf\x29\x31\x29\x31\x39\x29\xc7\x63\x65\xf6\x79\xf6\xdc\x17\
\x1e\x53\x1b\x1b\x93\x9b\x4c\x44\x33\xe6\x0f\x73\x4e\x11\x4e\x4e\
\x3c\x9a\x64\xcb\x94\x2c\x81\x09\x63\x30\xff\xf6\x16\x2c\x30\x2b\
\xa8\x28\xa5\xb5\x78\xc5\x6f\x06\x6f\x6f\xc3\xe3\x57\x11\x87\x84\
\x5f\xcf\xc9\x88\x42\xab\x02\x50\x1b\xac\xe1\xe1\xe1\xe1\xe1\xe1\
\x1f\x87\x70\x7c\x62\x62\xf2\xa2\x79\xfc\x61\x51\xe7\xe1\x3f\xc7\
\x19\x1b\x99\x19\xa7\x3f\xa1\x42\xe4\xf8\x1f\xef\x7b\xdf\xff\xdf\
\x75\xff\xfb\xef\x9b\xe6\x83\x4c\x5c\xf2\xa1\xe1\x6e\xdb\x08\x23\
\x54\xe2\x49\xde\x9d\x93\xb0\xfd\xc2\x2b\xff\x66\xec\x7c\x23\xf1\
\xdd\xf7\xaf\x73\xa7\x4e\xbf\x9b\xf9\x0a\x8b\xc5\x8b\xf2\xbf\x17\
\xf6\xff\x3a\x3b\x7e\x9d\xdd\xe7\x1f\x77\xe2\x79\x93\x71\x96\xa3\
\xea\xcb\x76\xff\x98\xf7\x99\x4c\x9a\x9a\x88\x92\x8b\x25\xab\x3f\
\xa9\x5f\xdc\xbc\x6c\x43\xdb\x36\x1a\x30\x96\x7f\xbb\xbb\x49\xbb\
\x86\x50\x71\x5d\xc9\x85\xcb\x0c\xc1\x7f\xf5\xd8\x58\x06\x58\x37\
\x56\x2c\x5a\x6a\xef\xda\x1e\x8f\x27\x3d\x3f\x11\xfb\xfe\x16\x27\
\x53\x1c\x55\x59\x39\x59\xff\xfb\xed\x8c\x37\xdb\xde\x6f\xfc\x6c\
\xb4\xa8\x48\xa8\xd3\xa7\xc6\x69\xc5\xc7\xd1\x22\xee\xdc\x2d\xe4\
\x7f\xc6\xd8\xee\xf3\xb9\x63\x9d\x2d\xef\xc6\x78\xd6\x63\xcc\xcc\
\xfb\xcc\x8e\xc7\xb7\x5d\xff\x7f\x4e\x2a\xd0\xe6\xab\xe9\x24\xa9\
\x18\x64\xb9\x1d\x8f\x70\xc9\x8f\xb2\x5c\x91\x3a\x81\xc9\x15\x88\
\x8f\x41\xc0\x12\xdc\xba\xd7\x7b\x15\xdd\x99\x32\xc4\xc9\x7e\x1f\
\xc9\xfe\xcf\xd7\xf6\x6f\x0e\x4f\x73\x87\xc1\xf8\x2b\x07\x2b\x2b\
\xcc\xcf\x73\x3b\x37\x3d\xe8\x8f\x6f\x07\xe1\xbc\xbf\xcd\xf7\xfe\
\x14\xec\x5a\xb5\xbe\x7d\x42\xa2\x52\xa5\x4c\x4d\x18\x4c\xed\x2f\
\x6b\xea\x31\xae\xee\x79\xcc\xce\x9d\xcc\x99\x99\xf2\xb2\x8f\xf2\
\xfc\x3e\x64\xf0\xde\x5e\x86\xe5\x35\x0a\x35\x37\xfd\x7f\xd7\xd5\
\x9e\x47\x7c\x78\xef\x45\x7d\xd1\x05\xde\x74\x33\x7d\x3a\x13\xf1\
\x04\xfd\x4c\x41\xa7\x69\x7a\xf4\x9a\xfd\x6b\x94\x50\x43\x58\x02\
\xcd\x97\x3e\x3e\x67\xf9\x9a\xcf\x94\x4c\x25\x88\xcf\x37\xf4\xed\
\x04\x11\x93\x91\x6f\xb3\x50\x7e\xfa\xfa\xb9\xcd\xf1\x8a\x8d\xe0\
\xbe\x37\xe6\xf5\xcc\xff\xcc\xcc\x4e\xcc\x3c\x29\xd8\x57\x3b\xdb\
\xcf\x67\x9a\xf7\xfb\xfd\x37\x2f\xdd\x7c\x5d\x70\xd8\xf9\x58\xd8\
\x59\x79\x59\x59\xe9\x69\x33\xd9\x2f\x67\x37\x34\xcc\x9b\x24\x53\
\xac\x91\x28\x34\x3c\x79\x83\x9e\x83\x83\x51\xf1\x36\x48\x5d\x9b\
\x79\x5e\x6a\xde\x56\x6b\x28\x22\xac\x01\x68\x4b\xe8\x58\x89\xfc\
\xbd\x6f\xe6\xf9\xfb\xd5\x31\xaf\xae\xbe\xaf\x46\x9b\xd7\xc6\x5c\
\x1b\x37\x73\x6d\xd3\x72\x77\xd7\x4a\x5b\xb1\x4a\x6a\x54\x94\x14\
\xba\xe7\xe7\xbb\x09\x5c\xc3\x73\xd1\xdc\x1a\xe9\xc6\x8d\xfc\xe4\
\x8d\x32\xbb\x46\xde\xfb\x76\x7b\x66\x66\x79\x1e\x89\xfc\x5e\x37\
\xfd\x7f\xb7\x9d\x36\xdf\xb4\x7e\xa6\xa6\xad\x5a\x9b\x56\xf3\x5c\
\x24\xb3\x9f\x3e\x7c\x6f\xa2\xcd\xad\x5a\x18\x1e\x30\x18\x34\xbe\
\xa9\x5b\x7e\x54\xcd\xf7\xc6\xb7\x89\x4f\x8b\x8d\x4d\x4d\x43\x4b\
\x02\x50\x11\x00\x1a\x1a\x7f\x36\x77\x62\xf7\x77\x07\xf5\x7d\xae\
\xc8\xec\xae\x11\xf3\xb3\xc4\xe4\x4b\x44\x4b\x4b\x49\x69\xb9\xc9\
\x02\x82\xd9\x93\x34\x68\x49\x9a\x12\x50\x71\x04\xa1\xeb\x18\xdf\
\x65\x07\x6d\x5d\xf1\xad\x91\xa3\x51\x51\x73\xb1\x04\x2f\xb7\xb2\
\x7f\xb7\xf5\xe3\x4d\xd7\xe4\xce\xa4\xa4\xc4\xa6\xc5\xc6\x98\x31\
\x43\x8c\xdc\x77\xde\xfe\xef\xbb\x77\x1a\xed\x51\x1d\xed\xc7\x8c\
\x38\xe2\xb8\xbb\x7f\xcc\xbd\xfd\xbd\xbd\x6b\x86\x66\x7e\x47\x85\
\x98\x46\xdc\x5c\xd4\xdd\x34\xd8\x94\x1b\xd3\xd3\x47\xd3\x79\x1e\
\xf8\xd4\x13\x65\xf1\x04\x7f\xc6\x15\xff\x4a\x3d\x20\x00\x82\x08\
\x22\xb8\x0a\xfc\xab\x9e\xb0\xeb\x65\x4a\xbd\x32\xa5\xb5\xa1\xe5\
\x1e\x07\xfc\x58\x49\xb9\xc9\xc9\x6e\x6e\x26\x6e\xb3\x13\xb3\xb2\
\xdc\xdd\x4c\xdc\xdd\x2e\x35\x99\x8f\x7f\xc1\x9e\xf8\x60\xfa\xf8\
\x76\x74\x39\xcc\xf3\x45\xcf\xef\xdb\xfd\x8f\x63\xf1\x1f\xf0\xf0\
\xe9\x78\x5f\x3f\x4e\x34\x82\x49\x04\x20\x81\x02\x40\x61\x6c\xd2\
\x76\x1f\x5a\xfe\xb8\x1e\xfe\xef\xd7\x03\x60\x1e\x98\x30\x7e\x7e\
\x57\x7e\x7d\x5e\x41\x15\x47\x10\x7f\x1e\xe0\xa2\xbe\x6c\x10\xf1\
\x67\xa5\x7a\x9f\xe9\xea\x9e\xe7\x8b\x8d\xaf\x8b\xc9\x90\xf9\x3e\
\x63\xf8\xcb\x93\x69\x0d\x5a\x34\x40\xba\xa0\x80\x00\x04\x20\x82\
\x2e\x08\xfb\x97\xd7\xc5\xdd\x5f\xeb\x7e\x94\x6f\x1f\x97\xb3\x0d\
\xfd\xa0\x0e\x07\xf1\xfc\x7f\xcf\x3f\x9a\xce\xdd\x6e\xce\xb5\xff\
\x4c\x07\x48\xaa\xbe\x18\xf2\xd1\x00\xf7\x02\x00\x49\x7b\x41\x44\
\x38\x54\x39\x39\xbb\x5d\xa5\x50\xad\xa2\x21\x21\x41\x26\x57\x59\
\x7b\x5b\x9d\xcf\x2d\x77\xde\xb8\xb9\xec\xc5\x03\xfd\x7d\xe8\xfc\
\xba\x74\x98\x49\xb6\xb6\xfc\xb4\xb5\xe5\x09\xd7\x10\x82\x64\x66\
\x82\x18\xec\x32\xb0\x8a\x6f\xeb\xe1\xb8\x2f\xab\x98\xbe\xa7\x9d\
\xab\xab\xa1\xeb\x97\xc3\x25\xfd\xea\xb8\xab\xea\x7c\xf9\x5a\xfe\
\x28\x7d\x1e\x18\x60\x04\x82\x75\x83\x83\xff\xdf\xc3\xe8\x57\xe5\
\xb4\x63\xb3\xb3\xef\xbb\xfd\xf0\xfe\x7f\xeb\xcb\x1b\x97\x73\x01\
\xcd\xd3\x2c\xb7\xfd\x38\xab\xca\x5e\xaf\xb6\xb0\x1b\xd8\xf5\xff\
\xac\xd7\xec\xec\xac\xe5\xbe\xfa\xf7\xc3\x5c\x9b\xe8\x0b\xe2\xe2\
\x5b\x32\x6d\xa8\x47\x71\x7e\x9f\xf7\x6a\x3d\xde\xce\x4b\xa3\x46\
\x7e\xd1\xc8\xf7\x6b\xc3\xdf\xb8\xa0\x8d\xb0\x04\xe1\x52\x11\x11\
\xcf\xa7\x79\x9e\x8f\xf9\x14\x7f\x64\x66\x97\x18\x30\x87\xe0\xe1\
\x70\xe0\x6f\xfb\xc8\xef\x2c\x2f\xfd\xfc\xa3\xd1\x5e\x0b\x67\xb4\
\x1a\x10\x1a\x16\x50\xbb\xa2\x45\x6e\x5b\x38\x5d\x1d\x40\x1c\x9d\
\xfc\xdf\xb7\xdf\x79\x9e\xd9\xee\x88\xf0\x05\x88\x60\x67\x19\x30\
\x49\x89\xcf\x49\xf7\x3c\x13\xec\x3e\x4f\xff\x39\x87\xd1\x7d\x1f\
\x39\x74\x5e\x57\x78\xf2\x77\xbc\x1d\x8f\xe1\x7b\x17\xa5\x6c\xd9\
\xc2\xf6\xbc\x3b\xe6\x4c\x1d\xf6\x8e\x3b\xf0\x7d\x23\xfe\x3d\x8f\
\xb6\xb6\xc4\x27\x8f\x51\xc0\x12\x0d\xda\x54\xab\x95\x95\xbd\x95\
\xbd\x3d\xbd\xbd\x5d\x3d\x5d\x5d\xba\xd3\x4f\x69\xcf\x2f\x9b\xcd\
\x7c\x7d\x7c\x7c\x63\xa2\x3c\x63\x3d\x3d\xb3\x97\x0f\x90\xf6\xfe\
\x97\xb7\x7c\x5f\x78\xc9\x48\x4a\xe8\x68\x93\x89\x4b\x79\xb1\x3e\
\xa3\xb3\xae\xb3\xb6\xb6\xa3\xa3\xb3\xbd\x93\xa3\xa7\x4e\x09\x6f\
\x0e\x0e\x0d\x09\x48\x49\x74\x4c\x76\x76\xe4\x5e\x93\x59\x93\x93\
\x7e\x3f\xbd\xff\x24\x48\x24\x32\x8d\x0c\xdb\x46\xc9\xb4\x30\x3b\
\x70\x28\xb9\xfe\x82\x23\x14\x20\x79\x72\x63\x63\x52\xa3\x1c\xa9\
\xef\xe8\xe8\x1f\xd0\x1f\x68\x4c\xb7\x82\xdd\x6e\x75\xba\x52\x6b\
\x32\x72\xc7\x8f\xbf\x9b\x9e\xf0\x9e\x9e\x81\xc1\x39\x81\xcd\xc1\
\x98\x60\x7a\x64\x7b\x7b\x7a\xbb\xf5\xee\xce\x88\xce\xce\xa2\x86\
\xb3\x1b\xdf\xe6\xc7\xd5\xd3\xd3\xd3\xd3\x0b\xcb\x09\x41\x41\xb0\
\xfc\x3d\x43\xd0\xfc\xbf\x4f\xfc\x29\xe3\xf1\xff\xf3\xfc\xff\xb7\
\x0e\xf6\x0c\xb4\x94\x7a\x40\x00\x04\x10\x38\x31\x28\x38\x4d\x4c\
\x2e\x33\xc1\xa8\xb3\x66\x4a\x8b\x96\x4b\x18\xbc\x0c\x06\x8c\x70\
\xc0\x12\x7d\xf6\xf5\xfb\x26\x37\x87\x65\x5d\xf6\x25\x79\x12\x52\
\x09\x41\xbf\x00\xeb\xd2\x5f\xf5\xfe\x7e\xc9\xb9\x9b\xc4\x73\x2f\
\x07\x1a\x94\x10\x1b\x00\x69\x51\x49\x49\xfb\x7b\x4a\x9c\x21\x8e\
\xa1\xa1\x2f\xf3\x81\xe0\x60\x45\x39\xc0\x8d\x80\x6a\x6b\x12\x6c\
\xe7\x08\xd3\x5c\xed\x72\xd7\x75\x59\xa3\x04\x56\x73\x27\x00\x00\
\xeb\xb0\x00\x0d\xa0\x80\x00\x04\x50\x40\x00\x02\x28\x20\x00\x01\
\x94\x10\x00\x00\xd7\xeb\x01\xff\x09\x13\xd2\x4e\x6f\xa3\xf1\x09\
\x00\x00\x00\x00\x45\x49\x44\x4e\x42\xae\x82\x60')
IS_WINDOWS = platform.system() == 'Windows'
# Support events
if not IS_WINDOWS:
import select
__LIBC_OBJ = cdll.LoadLibrary("libc.so.6")
WAIT_OBJECT_0 = 0
def NULL_HANDLE():
return c_void_p(0) if IS_WINDOWS else c_int(0)
# Support keyboard
def getInput():
sys.stdin.read(1)
# Isotp library
objPCANIsotp = PCAN_ISO_TP_2016()
# Help functions
def OK_KO(test):
return "OK" if test else "KO"
def STATUS_OK_KO(test):
return OK_KO(objPCANIsotp.StatusIsOk_2016(test))
# Definitions
# Define Bitrate: SAE J2284-4: High-Speed CAN (HSC) for Vehicle Applications at 500 kbps with CAN FD Data at 2 Mbps
PCAN_BITRATE_SAE_J2284_4 = create_string_buffer(b'f_clock=80000000,nom_brp=2,nom_tseg1=63,nom_tseg2=16,nom_sjw=16,data_brp=2,data_tseg1=15,data_tseg2=4,data_sjw=4')
#
# Main entry point of the program, start a small CANFD ISO TP read/write example
#
# Initialize variables
transmitter_handle = PCANTP_HANDLE_USBBUS1
# Print version information
buffer = create_string_buffer(500)
objPCANIsotp.GetValue_2016(PCANTP_HANDLE_NONEBUS, PCANTP_PARAMETER_API_VERSION, buffer, 500)
print("PCAN-ISO-TP API Version: ", buffer.value)
# Initialize channels: CAN2.0 - 500Kbit/s
res = objPCANIsotp.InitializeFD_2016(transmitter_handle, PCAN_BITRATE_SAE_J2284_4)
print("Initialize transmitter: ", STATUS_OK_KO(res))
# Allocate tx message
tx_msg = cantp_msg()
res = objPCANIsotp.MsgDataAlloc_2016(tx_msg, PCANTP_MSGTYPE_ISOTP)
print("Allocate tx message: ", STATUS_OK_KO(res))
mapping = cantp_mapping()
mapping.can_id = 0x02
mapping.can_id_flow_ctrl = 0xA2
mapping.can_tx_dlc = 0x0F
mapping.can_msgtype = cantp_can_msgtype(PCAN_MESSAGE_STANDARD.value | PCAN_MESSAGE_FD.value | PCAN_MESSAGE_BRS.value)
mapping.netaddrinfo.extension_addr = 0x00
mapping.netaddrinfo.format = PCANTP_ISOTP_FORMAT_NORMAL [quote][b]<<< If I change this to PCANTP_ISOTP_FORMAT_NONE then I do receive a can-fd frame without any ISOTP first frame header[/b][/quote]
mapping.netaddrinfo.msgtype = PCANTP_ISOTP_MSGTYPE_FLAG_INDICATION
mapping.netaddrinfo.source_addr = 0xF1
mapping.netaddrinfo.target_addr = 0x01
mapping.netaddrinfo.target_type = PCANTP_ISOTP_ADDRESSING_PHYSICAL
# Initialize Tx message containing heavy data
res = objPCANIsotp.MsgDataInit_2016(tx_msg, mapping.can_id, mapping.can_msgtype, HEAVY_DATA_SIZE, HEAVY_DATA, mapping.netaddrinfo)
print("Initialize tx message: ", STATUS_OK_KO(res))
res = objPCANIsotp.AddMapping_2016(transmitter_handle, mapping)
print("Add a simple mapping on transmitter %s", STATUS_OK_KO(res))
res = objPCANIsotp.Write_2016(transmitter_handle, tx_msg)
print("\nWrite TX message: ", STATUS_OK_KO(res))
# Free messages space
res = objPCANIsotp.MsgDataFree_2016(tx_msg)
print("Free tx message: ", STATUS_OK_KO(res))
# Uninitialize transmitter
res = objPCANIsotp.Uninitialize_2016(transmitter_handle)
print("Uninitialize transmitter: ", STATUS_OK_KO(res))
# Exit
print("Press <Enter> to close")
getInput()
Console output:
PCAN-ISO-TP API Version: b'3.5.0.344'
Initialize transmitter: OK
Allocate tx message: OK
Initialize tx message: OK
Add a simple mapping on transmitter %s KO
Write TX message: KO
Free tx message: OK
Uninitialize transmitter: OK
Press <Enter> to close
Re: Configure ISTOP to send large data using segmented CAN-FD
Posted: Wed 4. Dec 2024, 09:47
by F.Vergnaud
Hello,
1. The following msgtype is invalid, ISOTP valid types are DIAGNOSTIC or REMOTE_DIAGNOSTIC:
Code: Select all
mapping.netaddrinfo.msgtype = PCANTP_ISOTP_MSGTYPE_FLAG_INDICATION
2. Since you want to transmit a segmented ISOTP message, you need to configure 2 mappings:
- one to send to the ECU
- another to receive from the ECU (i.e. to handle the flow control frame from the ECU)
3. Finally the Write function is asynchronous, you need to wait some time before closing the channel and your application.
Here is your corrected example:
Code: Select all
import string
import os
from PCAN_ISO_TP_2016 import *
from time import sleep
from ctypes import *
HEAVY_DATA_SIZE = 8936
HEAVY_DATA = create_string_buffer(b'\x50\x89\x47\x4e\x0a\x0d\x0a\x1a\x00\x00\x0d\x00\
\x48\x49\x52\x44\x00\x00\xb8\x01\x00\x00\xb8\x00\x02\x08\x00\x00\
\x1e\x00\x6e\xdf\x00\x50\x00\x00\x70\x09\x59\x48\x00\x73\x0b\x00\
\x00\x13\x0b\x00\x01\x13\x9a\x00\x18\x9c\x00\x00\x07\x00\x49\x74\
\x45\x4d\xdf\x07\x0c\x05\x01\x0d\xe3\x39\x1e\x4c\x00\x88\x20\x00\
\x49\x00\x41\x44\x78\x54\xed\xda\x77\xdd\x1b\x5c\x9e\x67\xf0\x3f\
\x01\x51\x90\x24\x20\x40\x31\x8a\x18\xdd\xbd\x08\x22\x9b\x1b\x61\
\xc0\x17\x76\x29\xa7\x12\x93\xae\x2f\xec\x97\xed\xc9\x38\x38\xa6\
\x38\xd9\xee\xed\xb9\x36\xcd\x94\xb2\x6e\xbd\xb9\x2e\x5c\x9b\xc5\
\x49\xb2\xe9\xd6\x1b\x3d\x1b\x83\x49\x18\x26\x88\x6f\x4c\x5a\xa6\
\x89\xa2\x30\x22\x81\x08\xe8\x10\x50\xfe\xac\x5e\x98\x10\x19\xa6\
\xc4\x21\xfd\xe7\x1f\xf2\x34\x66\x91\x9a\x8d\x1e\x7a\x3e\xe6\x66\
\xef\x99\xf4\xd0\x3d\x7a\x00\x01\x97\x00\x47\x47\x00\x13\x20\x00\
\x01\x28\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\xf5\x80\
\xa2\x62\x00\x09\x0a\xc0\x37\x4d\x5e\x34\xf9\xba\xb5\xf6\xbb\x5a\
\x57\xf3\x60\xff\x85\x84\x28\x22\xc0\x01\xe9\xaa\xd3\x75\xd5\x7a\
\x9a\xf0\x5e\xad\x8d\x37\x6f\x5d\x80\x00\x40\x15\x02\x50\x20\x00\
\x01\x28\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\
\x00\x12\x41\x00\x00\x09\xa0\x80\x00\x04\x50\x40\x00\x02\x82\x00\
\x00\x12\x41\x00\x00\x09\xa0\x80\x00\x04\x50\x40\x00\x02\x28\x20\
\x00\x01\x94\x10\x00\x00\x4a\x08\x00\x00\x25\x04\x00\x00\x28\x20\
\x00\x01\x94\x10\x00\x00\x4a\x08\x00\x00\x25\x04\x00\x00\x12\x82\
\x00\x00\x09\x41\x80\x00\x04\xa0\x40\x00\x02\x50\x00\x00\x12\x82\
\x00\x00\x09\x41\x80\x00\x04\xa0\x40\x00\x02\x50\x20\x00\x01\x28\
\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\x00\x12\
\x10\x00\x00\x94\x08\x00\x00\x4a\x04\x00\x00\x25\x82\x00\x00\x12\
\xfa\xc0\x57\x30\xb4\xf7\x9e\xde\xb9\x5e\xbe\x5c\xde\xbe\x83\xaa\
\x03\x83\xcb\x97\x70\xe1\x5c\xb9\x97\x2e\x62\xc5\xb4\x51\x61\x96\
\xf0\xd5\x0b\x85\x36\x17\x96\xe0\x6f\x64\x1f\x6f\x17\x1b\xb1\x6b\
\xf5\xd5\x95\x2b\x9e\x1e\xd6\x9e\x20\xdc\xc3\xc3\x17\xc3\x57\x9a\
\x25\xbf\xd9\x6c\xc4\x12\x77\x77\xfc\xb7\x1e\xcb\x18\x18\x6f\x68\
\xa7\x6b\x77\x3c\x8c\x98\xc8\x88\x07\x48\x87\x07\x3a\xc5\xde\x71\
\x8e\x5e\x3c\xcf\x56\xb9\x1f\x1f\xcb\xcd\x84\x93\x1c\xa0\x56\x1e\
\xb6\xb5\xac\xb4\xdf\xe3\x3b\x07\x2e\x3b\xc3\x87\x75\x73\xf5\xf5\
\xd9\xf5\xed\xe4\x60\xcd\xc8\x30\xb2\x5a\xad\x5a\xd7\x5e\xb3\x2d\
\x8e\x6a\x8e\x4e\x0b\x16\x86\xca\xfa\xfa\xaa\xea\x5d\xea\x77\xbb\
\x73\x59\x8e\x56\x8f\x8f\xb3\x9b\x78\x25\x78\x78\x38\x58\xf5\x28\
\x7d\x7a\x6d\x5d\x5d\x6d\x9d\x6d\xaf\x5e\x74\xa7\x3c\x45\x4f\x1e\
\x21\x90\x3c\x5c\x09\x25\xa0\x82\xbb\xbb\x0e\xb3\xbb\xdf\x7b\xbe\
\xeb\x94\x6e\x9d\x4a\x6a\x52\xa5\x54\xa9\xf6\xaa\x36\xb6\x93\x06\
\xed\xe1\xd9\xbd\xd7\xd7\xb3\x67\x8f\x8f\xbd\xbd\xf6\x3d\xac\x32\
\x5f\x5c\x6f\x6f\x55\x75\x5e\xb5\x97\xaf\x25\x88\xfb\xd9\xd8\x72\
\x36\x6c\xc4\xda\x5a\x7c\xb6\xad\x5a\x58\xdd\xdc\x45\xd5\x8a\xf5\
\x04\xb6\x27\x07\x25\x26\xd8\x92\x41\x35\x5a\x50\xb4\xc8\x5a\x6e\
\x97\x21\xe4\x2b\x3a\x72\xbe\x9d\x64\x35\x74\x6b\x8c\x4c\x9d\x9d\
\x9a\x1d\x3a\xc5\x34\x69\x69\x1a\xd4\x91\xe5\xd0\x98\x99\x90\x98\
\x15\x16\xee\x65\x45\xda\xd1\xa3\x32\xd0\x18\xe6\x1c\x1c\x88\x94\
\xe3\xc5\x71\xea\xd7\x4a\x60\xc2\x92\x30\x25\xb7\x06\x07\xad\x05\
\x7d\xcb\x6c\x50\xb3\x25\x66\x66\x9a\x66\x9a\x9b\x3b\x3b\x23\x3a\
\x22\xa3\x42\x43\xf1\x43\xb3\xf5\x0f\xc2\x22\x48\x4f\x12\x4c\x4c\
\x4e\xcc\xf6\x51\x6b\x29\x6b\xaa\x62\x62\xd0\x63\xab\x38\xdc\xd6\
\x54\xd4\xbe\x79\x66\x72\x86\x66\xb5\xd2\x38\x70\x41\x1c\xd0\x86\
\xd5\xd5\x9d\x75\x12\xb6\xd2\x82\xe4\xd4\x64\xe4\xac\x85\x62\xe2\
\xc5\xe7\xe4\xc4\xf5\xa4\xb9\xfb\xa4\xda\xaa\xea\x81\xea\x01\x81\
\x89\x93\x75\xf5\x6e\x75\x37\x7c\x5f\x5f\xb4\x5f\x2a\xcf\xa5\xf6\
\xca\xca\x3b\x4a\x3b\xda\x5e\xa8\x9f\x91\xdf\x9f\xd4\xb6\x75\x94\
\xa3\xbd\xe1\x86\x0b\x41\x18\x1b\x38\x18\x9b\x99\x50\xd7\x8f\x5f\
\xb0\xa6\x72\x12\xbc\xb9\xa1\xb1\xc1\x61\x4a\x87\x4b\x8b\x63\xd4\
\x68\x63\x15\xa2\x1b\x19\x3d\x1d\xea\x75\xd5\x24\x49\x29\xd3\xa7\
\x12\x13\x04\x13\xc2\x19\x7e\xf5\x0b\x38\x79\x41\x7a\x59\xbe\xbd\
\xb2\xaa\xac\xaa\x94\xb4\xbd\xea\x58\x12\xe8\xd2\x4b\xa5\xc5\x25\
\x97\x25\x54\x7b\xd5\xab\x24\x4a\x7c\x12\x2b\x4c\xd5\xf8\x28\xb9\
\xcd\xcf\x1b\xcd\x0d\x56\xba\x53\x36\x16\x9d\x9b\x2b\xb9\x34\x33\
\xcc\x2c\x5a\x06\x41\x0c\x84\xb9\x96\xd6\xb3\xd6\xcf\xa7\x1f\x18\
\x03\x17\xef\xcb\x4a\x21\x12\xc4\xd4\xdd\x22\xd4\x0c\xf3\x0e\x0d\
\x97\x9d\xa0\x55\x96\xad\x33\x34\x53\x33\x93\x21\xc4\x49\xc5\xe2\
\xd3\xdb\x5e\x7c\x36\x9b\x5c\xe5\xcf\xb9\xc7\xca\x22\xba\x49\x28\
\x0d\xde\xc8\x2f\xd7\xcf\x74\xe9\x8a\x68\x21\x35\x95\x93\x0f\x0f\
\xdd\x2f\xb9\xf7\xe1\x70\x47\x42\x3b\x7b\x6b\x9a\x1a\x11\x26\x8d\
\xec\xff\xe6\xd9\x66\xa6\xd7\x4a\xa3\x42\xa2\xd1\xa3\xa2\x66\x76\
\x5c\xee\xa4\x72\x82\x24\xd6\xd2\xab\x0c\x25\x86\x31\x22\x03\xd5\
\x61\x71\xb6\xbe\xb6\xd6\xd6\xb6\x65\xb6\x5c\xce\x56\x5e\x32\x3e\
\x82\x32\x5b\x46\x5f\x50\x6f\x6f\x2f\xee\xfa\x27\xfd\x95\xae\x94\
\xde\xc5\x3e\xde\x7b\x63\x54\x46\xb4\x74\x0d\x8d\x41\x1a\x2e\x50\
\x4f\x57\x4f\x4f\x55\x75\xda\x35\x92\xc1\x43\x54\x59\x2a\xf9\x79\
\xe7\xf2\xe9\xd7\xe2\x74\xd1\x42\xc5\x14\x95\x3b\x8e\xeb\xaf\x5e\
\xad\xaf\x29\xa9\x2f\xc8\x9c\x98\xa4\x9c\x45\x74\x3e\x7c\x67\x3f\
\xbe\xdf\x3e\xcd\xb6\x3e\x86\xd7\xca\x08\x68\x15\xaf\xa8\x7e\x5f\
\x06\xef\xa4\xcc\x6a\xd5\x22\xc5\xf4\xd1\xf4\xf4\x9e\x8a\x3a\x35\
\x5a\x3a\x5a\x56\xd6\x8a\xd3\x9b\x85\x8c\xda\xa2\x5a\x9a\xf7\xaa\
\x42\x87\x42\xc3\xef\x77\xe3\xdd\xe4\xe8\x93\x68\x88\xcd\x94\x71\
\x23\x2b\x95\x93\x78\x7b\x73\xb8\x9d\x9d\x14\xd1\x2b\x54\x16\x96\
\xd5\xab\x55\xea\xf1\x3c\xe7\x62\x0f\x45\xcf\x4f\x90\x90\xb4\x10\
\xd0\xe1\x90\xe0\x2c\x44\x5d\x5e\xae\x33\x44\x20\xcc\x98\x6d\xa4\
\x81\xc9\x81\x81\xdc\x36\xe8\x92\xae\x51\xb4\xcc\xba\x6e\xba\xba\
\xed\x06\xb5\x40\x86\xc6\x73\x06\x3b\xae\x2f\x3e\x98\xab\x34\x3f\
\xa3\x7d\x6d\x69\x3d\x69\xfa\x73\xd5\x34\xe9\x29\xe2\xec\x95\x92\
\x6d\x93\x29\xdb\xa0\x89\x0d\x5c\xc5\xf9\xcb\x8b\x09\x39\xab\x0b\
\x54\xa6\xab\x2a\xab\x2a\x59\xcc\xcc\xc2\x4c\xcc\x58\x91\xf5\x42\
\x39\x21\xfe\x6b\x2f\x39\x4a\x96\x4a\xcb\x57\x4b\xe0\x7a\xa5\x62\
\x03\xfc\xb3\xfc\xf6\xb2\x6f\x3a\x1d\x80\x04\x2c\x6a\xe5\xd7\xd4\
\x8a\xe1\xaa\x1d\x34\x68\x22\x9a\xc4\xb1\x03\xfc\xe3\x6a\xe3\xe3\
\xd2\x25\x0d\xe2\x50\x38\x6c\x61\xec\x6c\xa9\xf4\x16\x53\xe4\xb8\
\x79\x26\x72\x5b\x40\xba\xdc\xc0\x15\x18\x10\x64\xab\x94\x54\xec\
\x0c\x8e\x18\x63\xf9\x0a\x7a\xf4\x54\xbd\x44\x52\xf0\xd6\xee\xfe\
\xee\xee\x76\x8d\xaa\x11\x2e\x5c\x3b\xcf\xab\x91\xa9\x52\x5d\x28\
\x93\x8b\xd3\x93\xac\x9e\xc1\xbd\xb7\x5b\x9c\x6e\x45\x86\xae\x50\
\xfb\xf2\xe1\x7c\x33\x42\x81\xda\xd5\x74\x55\x55\xa5\x4a\xc4\x92\
\xd6\x05\xd7\x54\xf6\xf4\x6e\xf6\xa6\x84\xf5\xfb\x1b\x92\x98\x91\
\xd1\xea\xde\x51\xde\xde\x39\x59\x6e\xd9\x6e\x6e\x6a\x1b\x44\xcb\
\xae\x50\x42\x92\xc0\xae\x73\xf8\x9b\xb2\xde\x54\xdf\x50\xfa\x40\
\x5a\x4f\x91\x71\x33\x54\xb1\xae\xe3\xf9\xf9\x15\xf3\x67\x70\x2d\
\x4d\xc9\x5c\x6c\x0e\xec\xba\xdb\x66\xe4\x30\x99\x68\x3c\x26\x95\
\x26\x26\xfa\x06\x3c\x07\x3d\x3c\x5d\xc8\x0b\xac\x85\xcf\x5a\xc5\
\x25\x97\x59\xbb\xb3\x2c\x3c\xbe\xb5\x6a\xac\xba\x8c\xb4\x4f\xa2\
\x58\xaa\xdd\x2a\x2b\xb9\x56\xd3\x8c\x0b\xf5\xf6\x49\xf6\x8a\x8b\
\x2e\xa8\xc0\x47\xb1\x62\x04\xd2\x5e\xe9\x5e\x5e\xf3\x1b\xbe\xfb\
\x41\x36\xe7\xe9\x17\xe7\x1f\x1b\xe1\x67\x4e\x95\x4e\x4e\x8d\x8e\
\x8e\x8e\x8e\x8e\xf7\xf5\xf7\xf7\xb1\x91\xd6\x3b\xa5\xd5\x3d\x20\
\x23\x28\x22\x22\x02\x03\x36\x03\x56\xda\xad\x38\x16\x9b\x2b\x9d\
\xee\xa4\x75\x24\x5f\x5f\x55\x5f\x55\x65\xc5\x9c\x39\x37\x30\x0b\
\x3e\xdc\xea\x88\x1b\x9d\x77\x77\x74\xf7\xc0\xa1\xd1\xd1\xd8\x91\
\xd6\xa8\x28\x26\x76\x99\x1c\x76\xc7\x0e\x2b\xc2\x70\xe5\x7c\x38\
\xdf\x3e\x7f\xf0\x45\xf9\x79\x79\x99\x59\xdf\x99\x85\x4c\x11\x5c\
\x1f\x17\xce\x8f\xf9\xb5\x32\x64\xd5\x19\xae\x23\x1b\x1a\xdc\x1a\
\xf9\xdd\x7e\xbe\x36\x7e\x68\xd3\xad\x5a\xa4\xb6\xb8\xb8\x41\x4b\
\x5d\xf9\xc2\x6e\x22\x23\x62\x62\x36\x63\xc1\x78\x0d\xff\xeb\xba\
\xe7\xed\xc7\xef\xe7\x77\x0a\x8b\x55\x0b\xab\x43\x3f\x3f\x36\x38\
\x36\x36\x3a\x3a\xe5\xca\x91\x72\xe6\x74\x6b\x68\x6b\x6d\x6d\x6b\
\xc0\xb5\x4a\x8a\x4a\x4b\xae\x79\x96\xae\x85\xff\xc2\xa6\xf0\xf0\
\x44\xb0\x1e\x24\x1d\x1d\x74\xa5\x76\x2d\x76\x76\x69\x29\xa8\xa9\
\x4f\x1e\xe4\x6c\x39\x93\x8e\x8e\x42\x8e\x90\xa1\x34\xc9\xa7\xeb\
\x83\x02\xcc\x84\xd2\xb4\x17\xb2\x76\x66\xc4\xc1\xa2\x85\xdd\x69\
\x7a\xf4\xb4\x6f\xd6\xd6\x53\xd6\x27\x79\x4e\xa9\x1e\x49\x97\x8f\
\x93\x95\x94\x8d\xe8\xdc\x49\x41\x84\x10\x87\x13\x1d\x13\x6d\x13\
\x12\xce\x70\xc6\x02\x07\x4c\x33\x4d\x4d\x24\x49\xaa\x12\x1e\xaf\
\xe9\x31\x55\x88\x64\xc8\xb7\xeb\x7e\xc5\xe4\xbd\x84\xa6\x4b\xf2\
\xb6\x6e\x6f\x04\x9b\xd9\x85\x9d\x25\xbd\xe5\x04\x06\xec\x8c\x11\
\x5c\xa0\xc5\x2b\xd2\x45\x8a\x31\x45\xbb\x76\x0b\xda\xc7\xd6\xdb\
\x09\x65\xcb\x28\x72\x5c\x60\xc3\x52\x30\x52\xd3\xa5\xb7\xac\xa4\
\x5b\xbb\x53\x6f\xa3\x6a\x0f\x0f\xb3\xb2\x73\xb3\x70\x70\xf5\x58\
\x9d\x59\xb1\xb1\x6c\x51\xab\x43\xd8\xd3\xd8\xd0\xd5\xd5\x26\xb5\
\x2e\xab\x2b\x2f\xb9\xe7\xae\xba\x5b\xaf\x2a\x6c\xf2\xe4\xe2\x92\
\xaa\x12\x93\x07\x38\x73\x81\x1c\xe8\x50\x86\xea\x8f\x9b\x47\xa2\
\xc0\xb9\xb8\x0e\x19\x93\xf2\x3f\x34\x6a\x2a\xe0\x2b\xf4\x55\x95\
\x95\x95\xb6\x6b\x3b\x03\x2d\x3d\x4b\x11\x4b\xd6\x5f\x7d\x5e\xbd\
\x21\x5f\x89\x93\xbf\xa9\xc6\xe4\xcf\xd7\x7b\x2f\x0e\x5f\x12\x52\
\xb9\x41\x7b\x30\xfb\x3b\x3f\x55\x4a\x77\x45\xab\xae\x03\x46\x94\
\x91\xa3\x51\x90\xc2\xf6\xdd\xac\xd1\xd8\x62\xd1\xb1\x69\xb7\xf5\
\xc4\xd5\x44\xc4\x19\xfe\xef\xca\x63\x72\xa9\xb8\x70\xac\xdf\xfd\
\x16\x54\xde\xbb\x32\x14\x60\xa7\x93\x9f\x13\x93\x70\x1a\xfd\xa5\
\x12\x23\x5e\xcb\xa3\x98\xa1\x4b\x6a\x68\x0a\x6c\xc2\xbb\x6f\x7a\
\x3a\xa6\xdf\xd0\x91\x2f\xa8\x48\xfe\xbe\xcd\x92\xa7\x66\xd2\x0b\
\xe6\x6d\x89\x76\x4a\x08\xbe\xaa\xe6\xb7\x25\x04\x4b\x87\xa0\xf2\
\xc1\xbc\x01\xc1\xdd\x3a\x23\xd2\xf9\x7b\xee\xee\xbb\x16\xa2\xe8\
\xa6\xb6\xdc\x96\x17\xb2\xa8\xe6\xac\xaa\xf0\xf4\xb0\xf4\xfa\xce\
\x9d\x0e\x1d\x9d\xbd\x7d\x54\x7d\xac\xdf\xcf\x9c\x0b\xe7\x42\x84\
\xbd\x5b\x03\x7f\x92\x82\x23\x34\x23\xc3\x6c\xe6\x1c\x8b\xc9\x0e\
\x27\xe3\x9b\x9a\xa9\x9a\xcf\xde\x4f\x9a\x14\x20\xfa\x3a\xe2\x5b\
\xa2\xab\x2b\x90\x6a\xea\xad\x6b\xd3\xe7\x99\x9f\x11\x99\x8a\x17\
\xf7\xb2\x58\xe5\x95\x61\x9e\x87\x1e\xee\x97\x4a\xa3\x4f\x22\xd1\
\x22\xa3\xa3\x23\x36\xa2\x25\xf8\xcb\x37\x3a\x3d\x91\xb1\xfc\xdf\
\xcc\xcc\x49\x4c\x59\xb1\xaa\x07\x5c\xb8\xb6\x0e\x65\xa1\x1b\x1a\
\x2b\x1b\x29\x2d\xb6\xb1\x35\x57\x3e\x3e\xb4\x5e\x07\xd6\x2d\x4c\
\xde\xcf\x5e\xde\x8b\x68\x95\x37\x50\x45\xa2\x52\xbe\xa1\xcc\xde\
\xa7\x12\x4e\x4e\xca\x08\xfe\xe5\x49\x26\x45\x25\xab\x5a\xf7\x3c\
\xd7\xd5\x47\xd7\x79\x7a\x6b\x37\xe7\xc6\xb3\xf3\xe5\xf7\xd8\xf8\
\x4d\xe2\x11\x65\xe4\x94\x52\xeb\xea\x28\xeb\x6a\x59\xcc\x83\x02\
\x98\xc9\xb2\xad\x8b\x01\x95\x93\x0f\x95\x0e\x0e\xb5\x92\x27\x34\
\x67\x0e\x66\x67\x9d\x26\xda\x4e\x5b\xd6\x5d\x53\xd3\xdd\xb3\xd3\
\x3e\x11\xd0\x88\xd0\xb0\x7b\x5d\xe3\x76\x24\x24\x72\x82\x7b\x59\
\x85\x5b\xe7\x05\x85\x44\x33\x22\x94\x8f\x79\x7b\x62\x6d\x71\x30\
\xc2\xf5\xda\xd2\xda\xdb\xc9\x5a\x7b\x2b\x60\xc1\x84\x30\xc2\x19\
\xde\x4d\x48\x9b\xdd\x2c\x38\x64\x4f\x17\x0d\xf5\xd7\x0b\x83\x16\
\x48\xc9\x4b\x4d\x48\x4b\xc4\x4c\x37\x25\xb0\xab\x27\x36\xb4\x73\
\x93\x93\x43\x43\x16\x43\xa9\x5e\x6a\x6e\xbf\xaa\x5f\xbf\x54\xa9\
\x0c\x0e\x90\x0c\x19\x52\xc7\xc1\x3b\x17\x4b\x2f\xa9\x53\xe5\x54\
\x64\x65\xbd\x96\x4f\x88\x30\x48\x54\x5c\x1a\x13\xda\x16\xaf\xdf\
\x5f\x94\x93\x94\x4d\xb3\xb5\x6a\x62\x45\xee\xc9\x7b\xbd\xec\x48\
\x5a\xa8\x67\x0f\x17\x17\x86\x61\x19\xd0\xa3\xf7\x5f\x5f\xd9\x41\
\xd5\xd5\x56\xb5\xaf\x97\x85\x91\xa3\x46\x28\xe1\x92\xcf\xa6\xa6\
\x24\xa6\x32\x62\x5e\xcb\x6d\x04\xda\x09\xf2\x1a\x7b\xaf\xa5\x5a\
\xa6\xa4\x0c\x8e\x5c\x8f\x74\xba\x94\x89\x0f\x85\x0e\x0e\x9e\x56\
\x4c\xaf\x4c\x48\xb1\xb0\xc1\x4f\xdf\xdf\x5b\x7f\x36\xca\x06\x26\
\x63\x93\xdb\xd7\xf8\xf2\x3e\x7c\xc5\x8b\x3b\x42\xae\x2c\x4a\x58\
\xd9\x66\x57\x0b\xd7\x57\xe4\xa4\x39\xe4\xf3\xbf\x66\x4c\x50\xba\
\xe2\x40\x64\xbe\x53\x73\x67\x53\x87\x47\x7c\xed\x0d\xbd\x95\x37\
\x0a\x15\x92\x90\xca\x08\xb1\xb5\x6f\x01\xb0\xd8\x8d\x52\x8d\x0d\
\xd6\x24\xb6\xdf\xb3\xb3\x30\x5b\x79\x13\x5e\x3c\x62\x42\x89\x22\
\xbb\x2f\xb4\xac\xac\x8c\xea\x2e\x72\xda\x72\x72\xb3\xda\x63\x77\
\x54\xdd\x41\x16\x5d\x69\x1d\x1c\xb1\x1d\x2d\xfd\xf4\x8e\x17\xb2\
\x69\xa9\x97\xa9\x8f\x2b\xbc\x18\x38\x35\x4b\x68\x59\x10\xd2\x2b\
\x74\xe9\xb1\x12\xbd\x78\xf7\xd7\xd1\xa5\x82\x68\xa1\x0c\xdf\x1b\
\x9b\x0d\x82\x22\xcd\x72\x47\x84\xdb\x84\x21\xe4\xb2\x7f\x5e\x90\
\x22\xf6\x8a\xec\x9f\x30\x4b\x45\x27\x6d\x25\x26\xbb\x39\x90\xb8\
\xba\xb5\xe1\x91\xd2\x91\x92\xd2\xfd\x75\xe8\x11\xfa\xf5\xf9\x73\
\xdd\x05\xdd\xdd\x1a\xd8\x94\x11\x83\x6b\xc8\xed\x77\x46\xf1\x72\
\x28\xaf\x77\xb9\xf5\x4f\xf0\xf0\x8d\x88\xe2\x5b\x8a\x06\x26\x4c\
\x63\x33\x06\x7b\x47\x89\x3a\xe2\x3a\x3b\x5b\x5b\xd7\x5a\x07\xf5\
\x39\x31\x59\x39\x70\x58\x42\xae\xa3\x26\x82\xfa\x04\x71\x2c\x25\
\x9d\xd4\x47\x0c\x72\x77\x35\x31\xd5\xd5\x3e\xca\xca\xd2\xb0\x5e\
\x2c\x58\x86\x41\x39\x70\xce\x0d\x72\xe5\x6d\xb7\x26\x4b\x8d\xf1\
\xc8\x54\x96\x64\xc4\x1f\xba\x46\xa6\xe6\x82\xe6\xf9\xb3\x8d\x1a\
\x5b\x06\x82\x26\x72\xd2\x3c\x3c\xd0\x3d\x5c\x9d\x42\x84\xa8\xae\
\xab\xaf\x6b\x27\x34\x69\x2d\x1a\x90\x5d\xfc\xbe\x05\xd1\x01\xfe\
\xc1\x01\x83\x5b\x5a\xc9\xf4\xfb\xb4\xf4\x24\x44\xee\xa6\xe3\x6e\
\xa3\x16\x2a\x54\x4e\xf3\x92\xe4\x2f\x72\x04\x7b\x2c\x25\xd5\xcd\
\x75\xcd\x8e\xc7\xb8\x1d\xe1\xb0\x48\x72\x7b\x2f\x15\x11\xed\x1d\
\xe5\xe9\xa2\xb5\x24\xa7\x26\x24\x58\x92\x5b\xa3\x56\xad\x14\x97\
\xd8\x97\x47\xc0\x31\x33\x51\x31\x5f\x90\x5b\x50\xb3\x53\xca\xd1\
\x20\x7f\x2d\x28\xcb\x8d\xee\xe5\xcc\xcc\x78\xc4\x45\xb4\x5f\xfa\
\x91\x62\xc4\x88\x17\xb2\xbe\x3e\x91\xbe\x91\x51\x7d\x2b\x83\x16\
\x10\xc1\x04\x08\x56\x24\xee\xea\xea\xee\x8d\xb2\x19\x92\xbd\x7a\
\xb6\xbe\x56\xa6\x28\x54\xa2\xd2\x3f\x2c\x92\x82\x2c\x22\x6b\x16\
\xe6\x47\x2b\x4e\x5a\xac\x3d\x68\x64\x2a\xc3\x15\x61\xaa\x96\xb2\
\xc4\xe6\xa4\xe1\xa6\xa4\xee\xac\x1c\xb9\x37\x2e\x2d\x35\xc4\x8d\
\x56\xb7\x55\x5d\x6f\xd5\xc5\x35\xcd\x86\xfd\xcf\x13\xdc\x48\x27\
\x50\x2c\xa0\x82\xa3\x04\xdc\x94\x93\xb9\x41\xc3\xb5\x45\x6a\xcb\
\x6b\x6f\x6d\x6b\x21\x69\xa3\x6d\xd3\xa4\x02\x05\xbd\x81\xea\xfd\
\x65\xef\xe3\xe4\x13\xeb\x16\x1a\x62\x4a\x4c\x5f\x96\x22\xcc\xd8\
\x90\xf9\xf5\x71\x99\xf8\xa7\x53\x9b\x9b\xb0\x9a\x22\xdd\xc9\x28\
\xe3\xdb\x76\x76\x9b\xde\x85\x9d\xd3\x5b\x82\x2d\xb2\xf4\x09\x17\
\x09\x89\x8f\xe6\x8e\x94\x8f\x8b\x77\x77\x27\x77\x25\xeb\x4c\x4d\
\x48\x4c\x8a\x8b\xe6\x6c\xdf\x00\xcc\xcc\x85\x4c\x42\xac\x24\x5a\
\xe9\xd5\xd8\x74\x97\x80\x37\x03\x5b\x17\xbb\x8c\xfb\xbb\x9d\xf6\
\xcc\x3b\xda\xe9\x94\xac\x97\x97\x87\x17\xb5\xcb\xdb\xf0\xa7\x34\
\xac\xb3\xe9\xd3\x45\xa4\x12\x52\x5e\xcb\xf9\xf8\x6f\xfb\x09\x0d\
\xa5\x21\x9a\x5b\x9e\x9a\x77\x96\x97\x22\xbb\xac\x2a\xbc\x94\xfb\
\xb5\x75\x51\x75\x51\xd1\xdb\x16\xa1\x8f\x16\xfa\x9d\x6c\x1d\x1d\
\x46\x97\x04\x46\x42\x19\x2d\xec\x28\x21\xca\xcd\xe1\x2c\x0c\xf6\
\xdf\x0b\x73\xc0\x70\x4b\xfa\xf0\x8a\xba\x5a\x5c\x74\x54\x64\x69\
\xac\x84\xb9\xa5\xb8\xb8\xfa\xac\xe4\xd0\x3f\x82\x69\x00\xf4\x82\
\x82\xc2\x64\x73\xb0\x2d\xa6\xb6\xe7\x86\xf3\xca\xf4\x5d\x21\x1a\
\xc4\xb2\xc7\xc5\xb5\x69\xca\xda\x95\xf3\x0e\x94\x57\x17\x54\xa9\
\xbf\xb9\x48\x9c\xd9\x4e\x10\x16\xda\x80\xd8\x05\x5e\xf5\x27\x21\
\x27\x0e\xc7\x63\xcc\xf6\xbb\xdd\x9b\x70\xc5\xe3\x35\x35\x5c\x92\
\x42\xf6\x3d\xb8\xc9\x83\xf3\x24\x7b\xc7\xe6\xf3\xe1\xcd\x11\x11\
\x2e\x24\xb4\xb0\x44\xb8\x36\x3d\x91\x66\xa5\xd6\x86\x85\x65\x85\
\xda\xee\x76\xc5\x53\x64\x1a\xba\x4e\x9d\x95\x27\x95\x14\x96\x95\
\x02\xe1\x04\x1e\xb2\xe5\xd8\x3b\x76\x76\x71\xb1\x57\xb1\x75\x5e\
\x6a\x25\x2e\x4d\x5f\xa9\x5f\xd9\x9e\x79\xb2\xcc\xc9\x17\xdb\x29\
\x14\xb8\x76\x1c\x89\x88\xf1\x8d\xf4\xf0\x6b\x20\x5a\x69\x56\xad\
\x91\x22\x2c\x58\x3c\x53\x3d\x3c\xf6\x72\xf3\xed\xf6\xf6\x7a\xa6\
\xad\x45\x2d\x2d\x4e\xa7\x1c\x9e\xd0\xb3\x00\x6f\x72\x82\xb2\xdd\
\xb7\xb7\xda\x0f\xb4\x12\xca\xef\xe1\x7d\x11\x11\x52\x18\x24\xbe\
\x46\x8d\x11\x23\x49\x8b\xb9\x3c\x1a\x11\xe6\x16\xef\xef\x49\x4f\
\x8c\xc7\x13\x46\x85\x08\x16\x24\x1d\x0f\x1c\x1a\x90\xaa\x58\x55\
\xa9\xac\x1c\x1d\x76\x1c\xee\x64\x8d\x8c\xa5\x8b\x8e\xfa\xaa\x89\
\x55\x21\x89\xde\x85\x5c\x8e\x5c\x7b\xcd\x2e\x81\x06\xd4\xff\x7f\
\x6e\x6e\x9b\x6e\x36\x7d\xf6\x6f\x71\xf1\x75\x75\xad\xc5\x97\x3b\
\xaf\x49\x4b\xd7\xa4\x8b\x96\xe4\x88\xbd\x8f\x8b\xee\xa3\xb3\x05\
\xac\x58\x41\x74\xfe\x7a\x7c\xd9\x92\xb2\xe5\xbd\x05\xc2\x77\x77\
\x60\x7e\x90\x50\xda\xc5\x3c\x3c\x82\x22\x77\xcf\x16\x97\x51\x15\
\x4a\x3a\x6a\x69\x4a\x6a\x12\x2c\x86\x87\xc6\x85\xc7\xc5\xa0\xa3\
\xc6\xc1\x4a\x0d\x8b\x16\xe1\xc5\x70\x1a\x1c\x38\xcf\x2e\x87\x95\
\x88\xbb\x42\xac\x75\x4d\xb2\x8d\x8f\xaf\x1e\xc4\x9a\x53\x9d\x20\
\xaf\xea\xa7\xa5\x57\x97\x54\x64\x6d\x64\x2d\x4d\x0b\x59\x2f\x2c\
\x77\x2b\x73\x75\x21\x73\xb6\xaf\x32\xdb\x82\xde\xf6\x67\x1c\xbe\
\x91\x69\xea\x94\xb6\xab\x9b\x9b\x55\x9a\xe1\xaa\x41\x74\x9b\x3a\
\xc6\xcd\xbe\xd6\x41\x96\x10\x19\x90\x10\x9c\x98\xe9\x64\x0c\xa3\
\x3a\x74\x27\xb9\x36\x0a\x85\x26\x51\x42\x57\x5f\xd6\x47\x68\xd2\
\x5a\x34\x50\xba\xe8\xe0\x68\xe8\x57\x81\x19\x1e\x35\x15\x30\x30\
\xdb\xd0\x4e\x43\xe8\xca\x3a\x74\xa1\x71\x2b\x28\xdb\x27\x67\x92\
\x58\xfc\xd6\x2c\xcc\xce\x75\x9d\xb5\xb5\xb5\x75\x94\x75\xea\x0e\
\x57\xec\x73\x2a\x39\x7f\x2e\x91\xf7\x48\xb4\xda\xdb\x09\x9a\xfc\
\x25\x05\xc1\x9d\xe4\xb0\x44\xe0\xcb\x20\xd8\xd8\x69\x58\xb9\x31\
\x2f\x65\xbc\xa2\x58\x56\xc2\xf6\x50\x9c\x4d\x4e\xcb\x4b\xcd\xcb\
\x8c\xd5\xb3\x93\x3a\xf7\x3a\x3a\x56\x5a\x9a\x5a\x10\x2e\xf2\x58\
\xa0\x23\x68\xd1\xd1\x51\x6e\xd1\x7e\x7c\xb4\x89\xd2\x98\x46\xca\
\x93\x93\x05\x93\x05\xf9\x51\x91\x91\x91\x51\x51\x2a\x38\xc3\x85\
\xb0\x10\xa4\x5c\xbd\x97\xde\xf0\x1d\xec\x19\x11\xc9\x69\xc0\xb7\
\xb1\x62\x42\x04\x89\x21\xf9\xbb\x3b\x17\x5e\x2f\xbe\x68\xf9\x60\
\x62\xcf\xe6\xf3\xd9\xcd\x72\xfb\xbc\x48\x68\xf4\xbf\x41\xd1\xd6\
\x57\x38\x3a\x88\x08\x1a\x58\x4a\xf3\xae\x97\x64\x48\xbd\x4f\x4b\
\x7c\xb7\xc5\x57\xdd\xdd\x3a\x3d\x9a\x26\x66\xcc\xa8\xa9\x18\x18\
\xb0\x18\xc7\xfc\xe8\xe1\xb8\xe8\xef\x7b\x72\x1e\x89\x47\xa8\x2e\
\xbb\xbb\xf7\x3b\x89\xc4\xb5\xc1\x8f\x78\x7d\x1b\x1b\xd7\xf9\x16\
\xd5\xd6\x57\x54\xe1\x5b\xd3\x0b\x04\x13\x03\x89\xe9\xad\x7a\x74\
\x7a\x5a\x5a\xda\x7e\x1d\x22\xb9\xbc\x3c\xaf\xaf\xac\x8f\x95\x83\
\x33\x33\xc5\x33\xd2\x45\x9c\xac\xcb\x6c\x1d\xbf\x8d\x1a\x1b\x16\
\xeb\x17\xce\xee\x29\x2f\xa1\x2e\xd3\xb4\xae\x37\x3f\x1e\xfa\x73\
\x5c\x4c\x5c\x7c\x58\x68\x82\x18\xd6\x12\xd5\x1e\xf7\x97\x89\x5a\
\xc4\xf8\xaa\x04\x1b\x77\xcf\x17\x74\x97\x20\x81\x37\x2f\xac\x8f\
\x1f\xe8\x1b\x1b\x2e\x2b\x66\x92\xd8\xec\x26\xbe\xf2\xc7\x7c\x7c\
\xb3\x7d\xb9\xf7\x89\x16\x94\x25\x4f\x16\xd4\x33\x18\xd1\x1c\x1c\
\xde\x4c\x6d\xb6\x9e\x03\xc5\x14\x37\xae\x5a\x58\x50\x60\x08\x50\
\x65\x19\xcc\x2f\x6f\x61\x2f\x6f\x08\x10\x3c\x48\xd9\x58\xdd\xdd\
\x50\xdd\xbf\x5f\x6f\x56\xc9\xc7\x69\xc9\xde\xf7\x24\x3d\x96\x56\
\x9c\xbb\x8e\xce\xbc\xce\xbc\xdc\xe1\x91\x8d\x91\xd1\xb6\x28\x22\
\xa2\xc1\x5c\x5c\x92\x5c\x3e\x2c\x6c\x32\x6e\x41\x37\x7c\x47\x72\
\xd7\xb9\xd7\x54\xb5\x90\xbf\x3b\xa3\xba\x09\x19\x89\x89\xe9\x69\
\x54\x69\xf7\x77\x2f\x46\x3a\x5d\x97\x99\xd6\xd7\x86\xda\x04\xa0\
\x04\xa0\x65\x15\xcc\x2f\x1a\x11\xe6\x16\xef\xe7\xd6\x47\xf4\xd2\
\x7d\x7a\x54\xb1\xd6\x4a\xa3\xd8\x09\xd5\x0c\x08\xce\xcc\xe6\xc9\
\x78\xf1\xae\x94\x7a\x65\xba\x7a\xa4\xb4\x58\xa4\x66\x4a\x3d\x79\
\x25\x04\xaf\xc0\x2a\x28\x61\x7b\x94\x8e\x14\x94\x79\x2e\x67\x57\
\x4c\x4d\x88\x4c\xe2\xc5\x2d\xb5\x63\xc3\x35\x28\x1c\x1d\x4c\x1c\
\x8a\xf5\xda\x3a\x4e\x3b\x3a\x9f\x41\xb5\x68\xea\x28\x20\x62\xc1\
\xb7\xdd\x8a\x50\x5e\xca\x83\x98\x67\x69\x10\x27\x48\x0a\x83\x2c\
\x38\x32\x50\x30\x55\x5d\xb6\xb5\x8a\x6f\x60\xc1\xa7\x24\x4b\x6c\
\x4b\x4d\x30\x65\x2d\xa9\x62\xef\xa3\xa8\xdf\x21\x75\x00\x10\x34\
\x60\x94\x1e\x09\x1e\x1e\xf1\x71\xd6\xf1\xda\xf9\x3c\x78\x42\x5e\
\x02\x62\x0b\x89\x6c\x6c\xb4\x68\xec\x86\x0c\x08\xca\x0a\xce\xce\
\xa6\x76\x6a\xf8\xa9\xf4\x29\xa9\x48\x89\x21\x5c\xd9\x93\x39\x76\
\x04\x4b\x50\x25\x32\xce\x2f\x65\x11\xcc\x75\xbc\xb9\x2b\x80\xa5\
\x8a\x4a\x34\x4b\xe3\xe3\xfe\x6b\x9c\xbe\x5c\x5d\xb2\xb2\xfa\xf6\
\x5f\x53\xbc\xbd\xa9\xb9\xff\x39\xbe\x6c\xdc\xcd\x0d\x7f\x09\x41\
\x66\x96\xb2\xc9\xe6\x17\x4a\x48\x22\x4e\xf3\xb1\x9b\xa5\xaa\x9a\
\xab\xaf\x86\xb7\xc5\xf7\xb3\xb4\x17\x4b\x27\xa4\x4b\x6f\xfa\xa6\
\xca\x87\x47\x50\xb7\xa3\xd7\xb7\x37\x26\x85\xe3\x4e\xdb\xd7\xaf\
\xba\x5f\x69\x74\x60\x60\xac\x80\x33\x1b\x86\xc1\xc9\x65\x17\xb2\
\x05\x66\x93\x0a\x91\x99\x64\x21\x57\x92\x48\x0a\x56\xad\x55\x5b\
\x79\x97\x56\x6f\xd5\x16\x11\x37\x9c\x9b\x3c\x9c\x5f\x97\x5b\x50\
\x63\x53\xb7\x33\xfc\xab\xe6\xd7\x7f\x31\x85\xd2\x0b\xe6\xb5\x75\
\x6e\xb5\x3e\x7c\xcd\x9b\xeb\xee\x65\xed\xb2\x3b\x62\x63\x49\x62\
\xa6\x2c\x1b\x0f\xe5\x87\x5e\xcb\x83\x98\xec\xeb\xbc\x9c\x59\x2d\
\x29\x2a\xc9\xb2\xc2\xcf\xcd\xd5\x7b\x35\x4e\x5f\x49\x69\xfc\x89\
\x85\x22\x4f\xc7\x75\x0d\x86\x34\x87\x06\xd7\x52\x12\xee\x4b\x55\
\x28\xf4\xab\xab\x7a\xaa\xbb\xba\xef\xb7\x11\xdc\x16\x16\x1e\x1a\
\x7e\x11\xfe\xf5\x02\x6b\x02\x02\xf2\x0a\x47\xf3\x5d\x2f\xd7\xc2\
\x56\x1e\xad\x64\x5e\xca\x23\x98\x20\x20\x02\xc0\x6b\x03\x8a\xd6\
\x9d\x9d\x40\x9d\x4c\x28\x4c\x48\x7a\xa0\xbc\x37\xbb\xbb\xf7\x3b\
\x9b\x17\xa3\xaa\x37\x41\x39\xe9\xf5\xf7\x09\xf6\x84\x32\x03\x83\
\xf5\x03\x0d\xf5\x2d\xad\xe5\xad\xe5\x65\x43\x5b\xb6\x42\x07\x04\
\x36\x37\xe2\x36\x0f\x9b\xd8\x2b\xe8\xb0\x81\x74\xb0\x40\xfb\x1e\
\x09\x14\x89\x49\x6e\xae\x36\xae\xd1\xfc\x86\x84\xed\x85\xbb\xde\
\xc9\xc7\x89\xc9\xb5\xd2\x8f\x8c\x9f\x8f\x7d\x39\xb9\xa6\xc9\xa9\
\x83\x06\xa1\x52\x04\x50\xd9\x6d\x18\x62\xe6\x53\xe3\xe3\x1b\x13\
\xdb\x17\xd1\xd9\x19\xa1\x44\xd7\x46\x44\xfb\x28\xf8\x94\xc3\xf2\
\xc5\xf2\x24\x27\xf1\xb8\xd6\xdd\x2b\xe3\x30\x67\x02\x18\xc0\x81\
\xef\xb6\xcc\x54\xf3\xe7\x72\xb3\xa9\xb2\xb9\xbe\xa1\xa3\x86\x8e\
\x24\x58\x81\xb2\x1d\x53\x82\x73\x70\x72\x80\x60\xfb\xc7\xc4\xf5\
\x5d\x5f\x6d\x6d\x89\xde\xc4\xdc\x44\xa4\x23\xb6\xcd\x9b\xd3\x66\
\xf4\x19\x73\x8d\x12\xb9\x29\x98\x28\x30\x24\x28\x64\x34\xbe\xfd\
\x0e\x7e\xbb\x97\x65\x2d\x6d\x9b\x46\x7f\xbb\x16\xa3\xb9\xae\x42\
\x99\x38\x72\x77\x78\x78\x5d\x78\xd7\x37\xa0\x9c\x72\x74\x8c\xe2\
\x8e\x8e\xfe\x1a\xe5\xef\xa5\xe5\x6a\xd5\xfc\xfd\x09\xfd\xd0\x82\
\xf5\xeb\x33\x33\xdc\x7a\x15\xc4\xc3\x96\xca\x7a\x98\x5e\xcf\xc3\
\x3f\xdf\x34\x34\xe6\xd4\xac\x3f\x88\xf0\xcc\x88\xbb\x5d\xbe\xa8\
\xd8\x89\xa5\xe8\xa7\x4b\x4e\xf2\xb5\xb6\xda\xb6\x50\x48\xbb\xba\
\xb7\xbb\xb5\xb5\x4e\x19\xbb\xed\x78\x7b\xfa\xf8\x56\xf9\x64\xc8\
\x41\x04\xec\x5c\x9c\xec\x69\xed\x2c\x02\xda\xc2\x5e\xca\x23\x98\
\x21\x2e\x0d\x7e\x66\x8b\x8c\x5a\xe6\xe1\x54\x8e\x44\xdf\x7a\x6c\
\xba\x7a\xa4\xb4\xfd\x74\xd1\xd6\x13\x98\x5e\x94\xbc\x9b\x5a\xb4\
\x45\x6d\xcc\xb9\xcb\xcb\x7b\xcb\x77\xb3\x6c\x4c\xa6\xec\x9b\x4d\
\xbb\xba\x65\xbb\xb2\xe5\xd0\xd0\xa4\x30\x2c\x00\x0a\xc9\x5e\xcb\
\xfe\xac\x41\xbb\xa7\xa7\x04\x0b\x0e\x0e\x36\x0e\xa9\xff\x6e\x19\
\x18\xee\x4d\x15\x4d\xf9\x3a\xc4\x3b\xda\x9f\x4e\x97\x5c\x34\x75\
\x47\x4c\xa4\x09\xa7\xa5\xd5\xab\xb1\x6a\xdc\x48\xd2\xda\xa1\x7a\
\x42\xf9\x47\x47\xac\xa7\x3c\xac\x36\x26\xe3\x06\x61\x28\xa1\x49\
\xd6\xa1\xf6\x58\x1c\xc2\x4e\x8e\x29\x8e\xa9\x69\xe1\x1b\x33\xb3\
\xdc\xdc\x20\x51\xfc\xa4\x96\x2c\xa5\x4a\x95\x3a\x72\x77\x0b\x0d\
\xae\x77\x7d\xb2\x1c\x16\xaf\x43\x68\xd1\x2a\x54\x56\x95\xe5\xab\
\x78\xf1\x2e\x2e\xf3\x2e\x67\x7f\x55\x86\x83\xc3\xab\x83\x24\x1f\
\xe5\xc5\x7b\x3a\x79\x7a\xe4\xda\xa7\x06\xab\x56\x7b\x7b\x36\x7a\
\x4e\x64\x02\xd2\x02\x83\xf2\x6d\xb6\x40\xae\x42\x9c\x98\xf1\x5c\
\x3a\x2d\x93\xb4\x91\xda\xe1\x91\x23\x05\xef\x89\xbe\xee\xdf\x64\
\xd3\xcd\x6b\xcb\xfa\x4d\x63\xe6\x63\x63\x16\x7d\x0c\xb8\x46\x91\
\xf0\x0b\x67\xf7\x9f\xae\x05\xa1\xdb\x34\xd8\xbb\x00\x08\xda\x80\
\x6f\x5d\x00\x00\x50\x40\x00\x02\x28\x20\x00\x01\x94\x10\x00\x00\
\x4a\x08\x00\x00\x25\x04\x00\x00\x12\x82\x00\x00\x09\x41\x80\x00\
\x04\xa0\x00\x00\x25\x04\x00\x00\x12\x82\x00\x00\x09\x41\x80\x00\
\x04\xa0\x40\x00\x02\x50\x20\x00\x01\x28\xd6\x00\x26\x39\x00\x9a\
\xca\xc0\xb7\xb5\xe7\xb7\xf2\xfe\x5b\x4b\x9b\x5b\x2e\x42\xc8\x57\
\x53\x15\x53\x53\x3e\x3e\xbe\x3e\x7e\x7e\xfe\x7e\x7b\xfe\xee\xf6\
\x8b\x89\x47\x8f\x51\x13\x85\x0d\x01\x7b\xd4\xac\xcc\xcc\x97\xcc\
\x7f\x9f\xcd\xf1\x5f\xd7\xaf\x9f\x58\xa8\xb6\x64\xa0\xa0\xeb\xa0\
\x5e\x0e\xe7\x7f\x77\x5d\x1d\xb1\xd1\x1d\x08\x68\x80\x4a\x64\x0d\
\x74\x74\x77\xf4\x3c\x0f\x16\x20\x97\x89\x7f\x39\x62\x42\x47\xe2\
\x7f\x1f\xe8\xec\x8d\x64\x39\x59\x33\x33\xa3\x43\xa8\xd1\x73\xbe\
\xa5\x19\x8c\x70\xc0\x12\x0c\xea\x54\xab\x1c\x77\xb4\x3a\x94\xfc\
\x08\x24\x42\xa2\x7b\x26\xf0\xf0\xad\x61\x6b\x56\x6f\x55\xb1\xa4\
\xf1\xb1\x9f\x3f\x5e\x7f\x92\x90\x3e\x3a\xbe\x3e\x3f\xae\x1c\x11\
\x04\xa3\x3a\xb0\x7c\x5f\x45\xfe\x75\x4d\x4a\xcd\x25\x9f\x2c\x2a\
\xff\x7c\xb1\xd8\x0f\xc3\xb8\x3e\xaf\xe6\xad\x5f\xff\x56\xc3\xf4\
\x9f\x8f\xf6\x7f\x6d\x59\x8d\x4d\x7c\x6d\xe8\x22\x02\x51\x9d\x58\
\x7e\x9f\x61\xf8\xc4\xfe\x9c\xec\xef\x9c\xfa\x7f\xae\xb1\xf1\xa9\
\xaf\x8b\xba\xbf\xae\xf3\x16\xbb\x47\xbc\x8a\xe3\xa1\x3a\x11\x14\
\x44\x8b\x69\x19\xcf\xe9\xf3\x3d\xcd\x8c\x24\xa4\x94\x7a\x56\x00\
\xb9\xa7\xb9\xa9\xb1\xb1\x64\xd1\x83\x22\x78\xc1\xa9\xf2\x02\xa7\
\x03\x02\x82\x08\x4c\x48\x4a\x4a\x4a\x4c\xee\xba\xf5\xe0\x1d\xd7\
\x30\x38\x9b\xad\x9e\x36\xa5\x4d\x5a\x1a\xd7\xf3\xd3\xdf\x7d\xdd\
\xd2\xe9\x1b\x25\x50\xfb\x94\x10\xd6\x00\xbc\xa5\x6c\xbc\x44\xfe\
\x83\x06\xe1\xe1\x61\xe1\x25\x3c\x32\x22\x96\xf2\x6e\x5b\xe8\xed\
\x37\x68\xe8\x9e\xeb\xe3\xfa\x4b\xd1\xeb\x34\x68\x65\xe5\x17\x65\
\x3b\x3b\x3a\x3b\xf5\x3a\x99\xfa\x80\x80\x80\xc0\x80\xc0\xe4\xe4\
\xd2\x64\xb2\x4f\xf4\xf7\x94\xf4\x94\x96\xd6\xd4\x7a\xd4\x79\x79\
\x47\x85\x44\x44\x46\x46\x5c\xf0\x57\x5d\xa8\xb7\x89\x89\x85\x09\
\xee\x5c\xe3\xc2\x34\x99\xbf\xda\x51\x7e\x54\x86\x7f\xdf\x5d\xff\
\xa2\xb7\x20\x2b\x20\x30\x68\x30\x40\x8b\x58\x28\x5c\xfc\xce\x13\
\x03\x7a\x97\x58\xca\xaa\x83\xca\x5e\xd7\x7f\x37\x9d\xfa\xdd\x77\
\xf4\xf5\xcf\x73\xe9\xd2\x1f\x4b\x9b\x2e\x9a\x9a\xe3\xba\x21\xd0\
\x66\x8d\x78\xc2\x78\x62\xf8\x78\x7f\x2b\xd5\x7a\xce\x64\x7c\x7f\
\xe9\xfa\x5f\x57\x69\x7c\xe5\x3c\x83\xfa\xef\x07\x7f\xf8\x35\xbf\
\xbf\xfc\xba\xa6\xa3\xe6\x3e\x0f\x75\x38\xe4\xea\xda\xb8\x54\xf4\
\xdb\x0c\x31\xd1\x3b\x2b\x81\xeb\x1f\x07\xde\x0c\xd5\xba\xe5\x30\
\xd7\x8d\x3f\x5f\x70\x57\x20\x8e\xd5\x08\x50\xd0\x57\x57\xc9\x97\
\xe1\xfc\x11\x11\x06\x0c\x20\x83\xb8\x88\xf8\xf8\xbc\x3f\xbc\xf0\
\xa8\x49\xf4\x7d\x07\xc1\x3f\xc7\x47\xfd\x77\x77\xc9\xb7\xbc\xb3\
\xbd\xbd\xbf\xaf\xe0\xe1\x1e\xef\x84\x79\x9c\xc9\xa5\xd3\xdb\xfb\
\xc7\x7b\xfe\x7e\x27\xe9\x29\xe3\x8e\x8e\xc7\x8e\xf8\xbf\x58\x7c\
\x7a\xa5\xc8\xe2\x75\xe3\xb5\xb5\xfd\xfd\x04\xfd\xd0\x41\xf4\xe9\
\x98\xe8\xbd\x98\x59\xd9\x6e\x87\x6d\xbb\x48\xf6\x69\x45\xc9\x49\
\x9f\xa7\x72\x7c\xe4\xfa\xe3\x29\x5f\x13\xfb\x39\xfd\xf6\xb5\xe9\
\x16\xd7\x33\x19\xa0\x80\xb0\x04\x3a\x2e\x2e\x9d\x3a\x3e\xa3\x46\
\xcc\xd1\xc8\x7f\xd3\xd3\xd7\x73\xdd\x9e\xf7\xbb\x49\xec\x4d\x4d\
\xbc\x5d\xf7\x43\x93\xf4\xbf\x47\x72\xfa\x02\x4e\xd9\xda\x95\xd9\
\x9e\x57\x72\x77\x32\x72\xb8\x9e\xaa\xff\xeb\xab\xea\xeb\x15\xfe\
\x34\x07\xee\x5a\x53\xe9\xc1\xc1\x04\xc1\xbc\x41\xf6\xfb\x7f\x3b\
\xfd\x79\x93\x35\xfb\x5d\xaf\xf9\xbb\xe7\x7f\x1f\xda\xf0\x89\xb4\
\x88\x20\x1f\xc7\xec\x7b\xef\x87\x5f\xbe\xdd\xf2\x33\x09\x3e\x32\
\xe4\xfa\xd9\xe3\x7f\x3f\xf9\xf9\xaf\x9f\xf2\xbe\xfc\xca\x35\x60\
\x13\x16\xf3\x1b\xff\x97\x6b\xfa\x50\x60\xec\xe0\x17\x94\x78\x5f\
\xa3\xe1\x3e\x0f\x9e\x34\xcb\x87\x8a\xe5\x45\xa4\xdf\x37\x43\x70\
\x63\x53\x82\xd3\xf3\xaf\x8f\x83\xee\xff\xe3\xca\xfa\x3d\x23\xf0\
\xa5\x65\x0b\xa5\x25\xae\x3c\x3c\xf8\xfc\x5f\x97\x78\x2c\x97\xe4\
\xc9\xc0\x00\x1c\xc3\x6b\x32\x64\x62\x63\x17\x63\x48\x7c\x54\xa9\
\x7e\x7e\xb3\xfc\xef\x7b\x3b\xba\x26\x3e\xa6\xf6\x37\x83\xf6\xbc\
\x9f\xea\xcb\xca\x17\xca\xf3\x9c\x9b\xc6\x9a\x6f\xcd\xdf\x91\x2c\
\x1b\x16\x51\x4f\xe5\xc8\x29\xc6\x10\x49\x42\x44\xa2\x62\x25\x21\
\x72\xf3\xff\x73\xea\xfc\x8b\xab\xa4\xa7\xf5\xe1\xfe\xfc\x27\xf1\
\xfd\x56\xbf\x4e\xe6\xfb\x87\xdb\x7a\x1f\x38\xc8\xed\x25\xed\xed\
\x19\x85\x43\x42\xce\xf2\xae\xaa\xbe\xaa\xaa\xe6\x14\xab\xf9\x72\
\x4b\xe2\xf6\x7b\xa7\xa9\x4c\x17\x5f\xc9\xe7\x5f\x47\x63\xdd\x0e\
\xeb\x7a\x52\xe5\x20\x92\x86\x88\x86\x86\x8f\xa7\xbd\x1e\xa3\xdc\
\x4a\x08\xab\x00\xe4\xf3\x47\x53\xd7\x2f\x99\xb5\x75\xed\xc8\x56\
\xef\x64\xfd\xbc\x2d\xf6\xde\x37\xb5\x98\xf7\x6b\x77\xb1\x1b\xdf\
\x1a\x1a\x89\x32\xad\xbc\x21\x21\xcf\x26\x2c\x2a\x34\x2c\xf3\xfe\
\xa9\xf4\x26\xd3\xdc\x33\xeb\x7c\x86\x2d\x9c\xff\xcd\xcc\x79\x33\
\x3f\xc8\xe0\x20\xc3\xfe\xf7\x87\xdd\xec\xe0\xeb\x60\xe0\xbd\x3c\
\x22\x48\xd8\xb9\xb9\xd9\xf7\x8a\xbe\x78\xe2\xa2\xa7\xd9\x36\x9f\
\xe2\x9e\x69\xb5\xee\x53\x93\xa9\x7d\x1f\x89\xf2\x48\xa8\xc4\xf2\
\x27\xd1\x4c\x19\xec\xc6\x9a\x43\xf1\xf1\x7d\xff\xad\xeb\x96\x45\
\x3a\x36\xfa\x3a\x9f\xcf\x66\x7f\x58\xb1\x39\xbf\x68\x74\xce\xc7\
\xf3\x9d\x38\x0f\x34\x36\x74\x34\x77\xb4\x04\x10\xea\xe1\x7a\xe6\
\x3d\xd7\x44\xf7\x44\xc7\x5f\xcf\xee\x48\x27\x2f\xf3\x0c\x28\x20\
\xd6\x01\xd8\x81\xb8\xb8\x3f\x4f\xee\x3b\xe3\xe3\x9c\xb3\xdb\x99\
\xda\xda\x7d\x5e\x95\xe5\x57\x03\x6d\x5d\x58\x12\xde\x37\xa3\x74\
\x9c\xc9\xc2\xa2\xc6\x73\x9e\x7f\x79\x3a\xf8\xd2\x17\x4f\x97\x17\
\xaf\x2b\x8a\xba\x88\x20\xe9\xe9\x73\xe9\xe6\xe7\x49\xcc\xd1\xa3\
\xfd\x3e\xf8\xec\x47\x13\x7c\x9f\xd8\xe7\xd7\x7b\xdf\xec\xb2\x6f\
\xb3\xd8\xce\x67\x04\x12\xd8\xf1\x23\x91\xff\xdf\xe3\xf4\x3f\xf7\
\xf8\xfd\xc3\xd0\x9b\xbf\x22\xff\xfb\x3f\x4b\xf2\xa3\xc3\x78\x7f\
\x05\xe1\x94\xc3\xf8\xff\x7f\xb7\x19\x37\x7f\x1e\xbd\xcf\xf8\xf7\
\x04\x07\x04\x10\xa7\x41\xef\xd3\x7c\x3f\x33\x38\x97\x73\xa3\xf1\
\x7e\xdf\x8d\xfd\xa1\x42\xa4\x58\xf8\x1d\xfe\x7c\x82\x99\x17\xfc\
\x7a\x5e\xfd\xf1\x3e\x8f\xf1\x7c\x97\xe5\x9c\x17\x31\x27\xe9\x29\
\x48\x9c\xcc\xfc\xcf\x73\xfb\x7e\x0f\xc3\x1d\xd7\x7e\xbc\x0c\xfe\
\xed\xed\x08\x6d\x80\x4a\x23\x75\x2a\x32\x87\xea\x7f\x9f\xed\xba\
\x3b\x8e\xbd\xbc\x97\xbd\x7f\x33\x4f\x4f\xa1\xcf\x6e\x5b\xce\x35\
\xeb\xca\xde\x0f\x6f\x60\x6f\x6f\x4f\x3c\x47\x67\xec\xe7\xaa\x0c\
\x55\x21\xd9\x79\xd3\x9c\xfb\xeb\x3d\xaf\x62\xc0\x08\xb1\xd0\x82\
\xb5\x6a\xa3\xa3\xc6\x73\xe8\xf7\xfa\xf5\xff\xb7\x2d\xe7\x48\xb1\
\x3a\x34\x7a\x3a\x1d\xdb\xff\xb7\xe8\xfe\xe3\x51\xfe\x7f\xfe\xfe\
\x41\x04\xfa\xf8\x45\xf9\x47\x45\x45\x47\x2f\x47\xef\x98\x91\x11\
\x86\x11\x67\x47\x35\x0f\xc4\x9a\x8d\x3a\xcb\x46\xc9\xca\x9e\x31\
\xcd\x72\xfd\x81\x9d\x26\x8f\xe8\xfa\x3f\x22\xfb\xf0\x2d\xa3\xf0\
\xcc\x8f\xb3\xee\xb8\x1f\x5a\xee\xb9\xc3\x13\x23\xbd\x2f\xb2\xf2\
\x8c\xe1\x8d\x0d\x9b\x46\xf8\x9f\x41\x04\xb7\xb4\x1c\x2d\x18\x94\
\x04\x1e\xa5\x60\xae\x78\x7f\xae\xe1\x78\x3f\xf9\xf0\xbc\x43\x7c\
\x43\x43\xd9\xc1\xe7\xb3\x0a\x0a\x2a\xaa\xa6\xab\xa6\xa6\xc9\x16\
\x3b\xca\xdd\x0e\x7b\x96\x94\xfa\xef\x21\xdd\x5c\x77\x5c\xde\xed\
\x7b\x9d\xc4\xe2\x4e\x9c\x48\xa5\x28\x74\x80\x20\x88\x20\x67\xb3\
\x4c\xcf\xcf\x4f\x04\x39\xcb\x79\xbf\xad\xfc\x31\xcd\x87\x87\x66\
\x47\x87\x0c\x98\xff\x17\xf8\xec\xcf\xf1\x1f\x8e\x08\x27\xcf\xc2\
\x3f\xdf\x29\x31\x29\x31\x39\x29\xc7\x63\x65\xf6\x79\xf6\xdc\x17\
\x1e\x53\x1b\x1b\x93\x9b\x4c\x44\x33\xe6\x0f\x73\x4e\x11\x4e\x4e\
\x3c\x9a\x64\xcb\x94\x2c\x81\x09\x63\x30\xff\xf6\x16\x2c\x30\x2b\
\xa8\x28\xa5\xb5\x78\xc5\x6f\x06\x6f\x6f\xc3\xe3\x57\x11\x87\x84\
\x5f\xcf\xc9\x88\x42\xab\x02\x50\x1b\xac\xe1\xe1\xe1\xe1\xe1\xe1\
\x1f\x87\x70\x7c\x62\x62\xf2\xa2\x79\xfc\x61\x51\xe7\xe1\x3f\xc7\
\x19\x1b\x99\x19\xa7\x3f\xa1\x42\xe4\xf8\x1f\xef\x7b\xdf\xff\xdf\
\x75\xff\xfb\xef\x9b\xe6\x83\x4c\x5c\xf2\xa1\xe1\x6e\xdb\x08\x23\
\x54\xe2\x49\xde\x9d\x93\xb0\xfd\xc2\x2b\xff\x66\xec\x7c\x23\xf1\
\xdd\xf7\xaf\x73\xa7\x4e\xbf\x9b\xf9\x0a\x8b\xc5\x8b\xf2\xbf\x17\
\xf6\xff\x3a\x3b\x7e\x9d\xdd\xe7\x1f\x77\xe2\x79\x93\x71\x96\xa3\
\xea\xcb\x76\xff\x98\xf7\x99\x4c\x9a\x9a\x88\x92\x8b\x25\xab\x3f\
\xa9\x5f\xdc\xbc\x6c\x43\xdb\x36\x1a\x30\x96\x7f\xbb\xbb\x49\xbb\
\x86\x50\x71\x5d\xc9\x85\xcb\x0c\xc1\x7f\xf5\xd8\x58\x06\x58\x37\
\x56\x2c\x5a\x6a\xef\xda\x1e\x8f\x27\x3d\x3f\x11\xfb\xfe\x16\x27\
\x53\x1c\x55\x59\x39\x59\xff\xfb\xed\x8c\x37\xdb\xde\x6f\xfc\x6c\
\xb4\xa8\x48\xa8\xd3\xa7\xc6\x69\xc5\xc7\xd1\x22\xee\xdc\x2d\xe4\
\x7f\xc6\xd8\xee\xf3\xb9\x63\x9d\x2d\xef\xc6\x78\xd6\x63\xcc\xcc\
\xfb\xcc\x8e\xc7\xb7\x5d\xff\x7f\x4e\x2a\xd0\xe6\xab\xe9\x24\xa9\
\x18\x64\xb9\x1d\x8f\x70\xc9\x8f\xb2\x5c\x91\x3a\x81\xc9\x15\x88\
\x8f\x41\xc0\x12\xdc\xba\xd7\x7b\x15\xdd\x99\x32\xc4\xc9\x7e\x1f\
\xc9\xfe\xcf\xd7\xf6\x6f\x0e\x4f\x73\x87\xc1\xf8\x2b\x07\x2b\x2b\
\xcc\xcf\x73\x3b\x37\x3d\xe8\x8f\x6f\x07\xe1\xbc\xbf\xcd\xf7\xfe\
\x14\xec\x5a\xb5\xbe\x7d\x42\xa2\x52\xa5\x4c\x4d\x18\x4c\xed\x2f\
\x6b\xea\x31\xae\xee\x79\xcc\xce\x9d\xcc\x99\x99\xf2\xb2\x8f\xf2\
\xfc\x3e\x64\xf0\xde\x5e\x86\xe5\x35\x0a\x35\x37\xfd\x7f\xd7\xd5\
\x9e\x47\x7c\x78\xef\x45\x7d\xd1\x05\xde\x74\x33\x7d\x3a\x13\xf1\
\x04\xfd\x4c\x41\xa7\x69\x7a\xf4\x9a\xfd\x6b\x94\x50\x43\x58\x02\
\xcd\x97\x3e\x3e\x67\xf9\x9a\xcf\x94\x4c\x25\x88\xcf\x37\xf4\xed\
\x04\x11\x93\x91\x6f\xb3\x50\x7e\xfa\xfa\xb9\xcd\xf1\x8a\x8d\xe0\
\xbe\x37\xe6\xf5\xcc\xff\xcc\xcc\x4e\xcc\x3c\x29\xd8\x57\x3b\xdb\
\xcf\x67\x9a\xf7\xfb\xfd\x37\x2f\xdd\x7c\x5d\x70\xd8\xf9\x58\xd8\
\x59\x79\x59\x59\xe9\x69\x33\xd9\x2f\x67\x37\x34\xcc\x9b\x24\x53\
\xac\x91\x28\x34\x3c\x79\x83\x9e\x83\x83\x51\xf1\x36\x48\x5d\x9b\
\x79\x5e\x6a\xde\x56\x6b\x28\x22\xac\x01\x68\x4b\xe8\x58\x89\xfc\
\xbd\x6f\xe6\xf9\xfb\xd5\x31\xaf\xae\xbe\xaf\x46\x9b\xd7\xc6\x5c\
\x1b\x37\x73\x6d\xd3\x72\x77\xd7\x4a\x5b\xb1\x4a\x6a\x54\x94\x14\
\xba\xe7\xe7\xbb\x09\x5c\xc3\x73\xd1\xdc\x1a\xe9\xc6\x8d\xfc\xe4\
\x8d\x32\xbb\x46\xde\xfb\x76\x7b\x66\x66\x79\x1e\x89\xfc\x5e\x37\
\xfd\x7f\xb7\x9d\x36\xdf\xb4\x7e\xa6\xa6\xad\x5a\x9b\x56\xf3\x5c\
\x24\xb3\x9f\x3e\x7c\x6f\xa2\xcd\xad\x5a\x18\x1e\x30\x18\x34\xbe\
\xa9\x5b\x7e\x54\xcd\xf7\xc6\xb7\x89\x4f\x8b\x8d\x4d\x4d\x43\x4b\
\x02\x50\x11\x00\x1a\x1a\x7f\x36\x77\x62\xf7\x77\x07\xf5\x7d\xae\
\xc8\xec\xae\x11\xf3\xb3\xc4\xe4\x4b\x44\x4b\x4b\x49\x69\xb9\xc9\
\x02\x82\xd9\x93\x34\x68\x49\x9a\x12\x50\x71\x04\xa1\xeb\x18\xdf\
\x65\x07\x6d\x5d\xf1\xad\x91\xa3\x51\x51\x73\xb1\x04\x2f\xb7\xb2\
\x7f\xb7\xf5\xe3\x4d\xd7\xe4\xce\xa4\xa4\xc4\xa6\xc5\xc6\x98\x31\
\x43\x8c\xdc\x77\xde\xfe\xef\xbb\x77\x1a\xed\x51\x1d\xed\xc7\x8c\
\x38\xe2\xb8\xbb\x7f\xcc\xbd\xfd\xbd\xbd\x6b\x86\x66\x7e\x47\x85\
\x98\x46\xdc\x5c\xd4\xdd\x34\xd8\x94\x1b\xd3\xd3\x47\xd3\x79\x1e\
\xf8\xd4\x13\x65\xf1\x04\x7f\xc6\x15\xff\x4a\x3d\x20\x00\x82\x08\
\x22\xb8\x0a\xfc\xab\x9e\xb0\xeb\x65\x4a\xbd\x32\xa5\xb5\xa1\xe5\
\x1e\x07\xfc\x58\x49\xb9\xc9\xc9\x6e\x6e\x26\x6e\xb3\x13\xb3\xb2\
\xdc\xdd\x4c\xdc\xdd\x2e\x35\x99\x8f\x7f\xc1\x9e\xf8\x60\xfa\xf8\
\x76\x74\x39\xcc\xf3\x45\xcf\xef\xdb\xfd\x8f\x63\xf1\x1f\xf0\xf0\
\xe9\x78\x5f\x3f\x4e\x34\x82\x49\x04\x20\x81\x02\x40\x61\x6c\xd2\
\x76\x1f\x5a\xfe\xb8\x1e\xfe\xef\xd7\x03\x60\x1e\x98\x30\x7e\x7e\
\x57\x7e\x7d\x5e\x41\x15\x47\x10\x7f\x1e\xe0\xa2\xbe\x6c\x10\xf1\
\x67\xa5\x7a\x9f\xe9\xea\x9e\xe7\x8b\x8d\xaf\x8b\xc9\x90\xf9\x3e\
\x63\xf8\xcb\x93\x69\x0d\x5a\x34\x40\xba\xa0\x80\x00\x04\x20\x82\
\x2e\x08\xfb\x97\xd7\xc5\xdd\x5f\xeb\x7e\x94\x6f\x1f\x97\xb3\x0d\
\xfd\xa0\x0e\x07\xf1\xfc\x7f\xcf\x3f\x9a\xce\xdd\x6e\xce\xb5\xff\
\x4c\x07\x48\xaa\xbe\x18\xf2\xd1\x00\xf7\x02\x00\x49\x7b\x41\x44\
\x38\x54\x39\x39\xbb\x5d\xa5\x50\xad\xa2\x21\x21\x41\x26\x57\x59\
\x7b\x5b\x9d\xcf\x2d\x77\xde\xb8\xb9\xec\xc5\x03\xfd\x7d\xe8\xfc\
\xba\x74\x98\x49\xb6\xb6\xfc\xb4\xb5\xe5\x09\xd7\x10\x82\x64\x66\
\x82\x18\xec\x32\xb0\x8a\x6f\xeb\xe1\xb8\x2f\xab\x98\xbe\xa7\x9d\
\xab\xab\xa1\xeb\x97\xc3\x25\xfd\xea\xb8\xab\xea\x7c\xf9\x5a\xfe\
\x28\x7d\x1e\x18\x60\x04\x82\x75\x83\x83\xff\xdf\xc3\xe8\x57\xe5\
\xb4\x63\xb3\xb3\xef\xbb\xfd\xf0\xfe\x7f\xeb\xcb\x1b\x97\x73\x01\
\xcd\xd3\x2c\xb7\xfd\x38\xab\xca\x5e\xaf\xb6\xb0\x1b\xd8\xf5\xff\
\xac\xd7\xec\xec\xac\xe5\xbe\xfa\xf7\xc3\x5c\x9b\xe8\x0b\xe2\xe2\
\x5b\x32\x6d\xa8\x47\x71\x7e\x9f\xf7\x6a\x3d\xde\xce\x4b\xa3\x46\
\x7e\xd1\xc8\xf7\x6b\xc3\xdf\xb8\xa0\x8d\xb0\x04\xe1\x52\x11\x11\
\xcf\xa7\x79\x9e\x8f\xf9\x14\x7f\x64\x66\x97\x18\x30\x87\xe0\xe1\
\x70\xe0\x6f\xfb\xc8\xef\x2c\x2f\xfd\xfc\xa3\xd1\x5e\x0b\x67\xb4\
\x1a\x10\x1a\x16\x50\xbb\xa2\x45\x6e\x5b\x38\x5d\x1d\x40\x1c\x9d\
\xfc\xdf\xb7\xdf\x79\x9e\xd9\xee\x88\xf0\x05\x88\x60\x67\x19\x30\
\x49\x89\xcf\x49\xf7\x3c\x13\xec\x3e\x4f\xff\x39\x87\xd1\x7d\x1f\
\x39\x74\x5e\x57\x78\xf2\x77\xbc\x1d\x8f\xe1\x7b\x17\xa5\x6c\xd9\
\xc2\xf6\xbc\x3b\xe6\x4c\x1d\xf6\x8e\x3b\xf0\x7d\x23\xfe\x3d\x8f\
\xb6\xb6\xc4\x27\x8f\x51\xc0\x12\x0d\xda\x54\xab\x95\x95\xbd\x95\
\xbd\x3d\xbd\xbd\x5d\x3d\x5d\x5d\xba\xd3\x4f\x69\xcf\x2f\x9b\xcd\
\x7c\x7d\x7c\x7c\x63\xa2\x3c\x63\x3d\x3d\xb3\x97\x0f\x90\xf6\xfe\
\x97\xb7\x7c\x5f\x78\xc9\x48\x4a\xe8\x68\x93\x89\x4b\x79\xb1\x3e\
\xa3\xb3\xae\xb3\xb6\xb6\xa3\xa3\xb3\xbd\x93\xa3\xa7\x4e\x09\x6f\
\x0e\x0e\x0d\x09\x48\x49\x74\x4c\x76\x76\xe4\x5e\x93\x59\x93\x93\
\x7e\x3f\xbd\xff\x24\x48\x24\x32\x8d\x0c\xdb\x46\xc9\xb4\x30\x3b\
\x70\x28\xb9\xfe\x82\x23\x14\x20\x79\x72\x63\x63\x52\xa3\x1c\xa9\
\xef\xe8\xe8\x1f\xd0\x1f\x68\x4c\xb7\x82\xdd\x6e\x75\xba\x52\x6b\
\x32\x72\xc7\x8f\xbf\x9b\x9e\xf0\x9e\x9e\x81\xc1\x39\x81\xcd\xc1\
\x98\x60\x7a\x64\x7b\x7b\x7a\xbb\xf5\xee\xce\x88\xce\xce\xa2\x86\
\xb3\x1b\xdf\xe6\xc7\xd5\xd3\xd3\xd3\xd3\x0b\xcb\x09\x41\x41\xb0\
\xfc\x3d\x43\xd0\xfc\xbf\x4f\xfc\x29\xe3\xf1\xff\xf3\xfc\xff\xb7\
\x0e\xf6\x0c\xb4\x94\x7a\x40\x00\x04\x10\x38\x31\x28\x38\x4d\x4c\
\x2e\x33\xc1\xa8\xb3\x66\x4a\x8b\x96\x4b\x18\xbc\x0c\x06\x8c\x70\
\xc0\x12\x7d\xf6\xf5\xfb\x26\x37\x87\x65\x5d\xf6\x25\x79\x12\x52\
\x09\x41\xbf\x00\xeb\xd2\x5f\xf5\xfe\x7e\xc9\xb9\x9b\xc4\x73\x2f\
\x07\x1a\x94\x10\x1b\x00\x69\x51\x49\x49\xfb\x7b\x4a\x9c\x21\x8e\
\xa1\xa1\x2f\xf3\x81\xe0\x60\x45\x39\xc0\x8d\x80\x6a\x6b\x12\x6c\
\xe7\x08\xd3\x5c\xed\x72\xd7\x75\x59\xa3\x04\x56\x73\x27\x00\x00\
\xeb\xb0\x00\x0d\xa0\x80\x00\x04\x50\x40\x00\x02\x28\x20\x00\x01\
\x94\x10\x00\x00\xd7\xeb\x01\xff\x09\x13\xd2\x4e\x6f\xa3\xf1\x09\
\x00\x00\x00\x00\x45\x49\x44\x4e\x42\xae\x82\x60')
IS_WINDOWS = platform.system() == 'Windows'
# Support events
if not IS_WINDOWS:
import select
__LIBC_OBJ = cdll.LoadLibrary("libc.so.6")
WAIT_OBJECT_0 = 0
def NULL_HANDLE():
return c_void_p(0) if IS_WINDOWS else c_int(0)
# Support keyboard
def getInput():
sys.stdin.read(1)
# Isotp library
objPCANIsotp = PCAN_ISO_TP_2016()
# Help functions
def OK_KO(test):
return "OK" if test else "KO"
def STATUS_OK_KO(test):
return OK_KO(objPCANIsotp.StatusIsOk_2016(test))
# Definitions
# Define Bitrate: SAE J2284-4: High-Speed CAN (HSC) for Vehicle Applications at 500 kbps with CAN FD Data at 2 Mbps
PCAN_BITRATE_SAE_J2284_4 = create_string_buffer(b'f_clock=80000000,nom_brp=2,nom_tseg1=63,nom_tseg2=16,nom_sjw=16,data_brp=2,data_tseg1=15,data_tseg2=4,data_sjw=4')
#
# Main entry point of the program, start a small CANFD ISO TP read/write example
#
# Initialize variables
transmitter_handle = PCANTP_HANDLE_USBBUS1
# Print version information
buffer = create_string_buffer(500)
objPCANIsotp.GetValue_2016(PCANTP_HANDLE_NONEBUS, PCANTP_PARAMETER_API_VERSION, buffer, 500)
print("PCAN-ISO-TP API Version: ", buffer.value)
# Initialize channels: CAN2.0 - 500Kbit/s
res = objPCANIsotp.InitializeFD_2016(transmitter_handle, PCAN_BITRATE_SAE_J2284_4)
print("Initialize transmitter: ", STATUS_OK_KO(res))
# Initialize Mapping (to send with 0x02)
mapping = cantp_mapping()
mapping.can_id = 0x02
mapping.can_id_flow_ctrl = 0xA2
mapping.can_tx_dlc = 0x0F
mapping.can_msgtype = cantp_can_msgtype(PCAN_MESSAGE_STANDARD.value | PCAN_MESSAGE_FD.value | PCAN_MESSAGE_BRS.value)
mapping.netaddrinfo.extension_addr = 0x00
mapping.netaddrinfo.format = PCANTP_ISOTP_FORMAT_NORMAL #[quote][b]<<< If I change this to PCANTP_ISOTP_FORMAT_NONE then I do receive a can-fd frame without any ISOTP first frame header[/b][/quote]
mapping.netaddrinfo.msgtype = PCANTP_ISOTP_MSGTYPE_DIAGNOSTIC
mapping.netaddrinfo.source_addr = 0xF1
mapping.netaddrinfo.target_addr = 0x01
mapping.netaddrinfo.target_type = PCANTP_ISOTP_ADDRESSING_PHYSICAL
res = objPCANIsotp.AddMapping_2016(transmitter_handle, mapping)
print("Add a simple mapping on transmitter %s", STATUS_OK_KO(res))
# Initialize Mapping (to handle Flow Control Frames 0xA2)
mapping_response= cantp_mapping()
mapping_response.can_id = 0xA2
mapping_response.can_id_flow_ctrl = 0x02
mapping_response.can_tx_dlc = 0x00
mapping_response.can_msgtype = cantp_can_msgtype(PCAN_MESSAGE_STANDARD.value | PCAN_MESSAGE_FD.value | PCAN_MESSAGE_BRS.value)
mapping_response.netaddrinfo.extension_addr = 0x00
mapping_response.netaddrinfo.format = PCANTP_ISOTP_FORMAT_NORMAL #[quote][b]<<< If I change this to PCANTP_ISOTP_FORMAT_NONE then I do receive a can-fd frame without any ISOTP first frame header[/b][/quote]
mapping_response.netaddrinfo.msgtype = PCANTP_ISOTP_MSGTYPE_DIAGNOSTIC
mapping_response.netaddrinfo.source_addr = 0x01
mapping_response.netaddrinfo.target_addr = 0xF1
mapping_response.netaddrinfo.target_type = PCANTP_ISOTP_ADDRESSING_PHYSICAL
res = objPCANIsotp.AddMapping_2016(transmitter_handle, mapping_response)
print("Add a simple mapping on transmitter %s", STATUS_OK_KO(res))
# Allocate tx message
tx_msg = cantp_msg()
res = objPCANIsotp.MsgDataAlloc_2016(tx_msg, PCANTP_MSGTYPE_ISOTP)
print("Allocate tx message: ", STATUS_OK_KO(res))
# Initialize Tx message containing heavy data
res = objPCANIsotp.MsgDataInit_2016(tx_msg, -1, mapping.can_msgtype, HEAVY_DATA_SIZE, HEAVY_DATA, mapping.netaddrinfo)
print("Initialize tx message: ", STATUS_OK_KO(res))
res = objPCANIsotp.Write_2016(transmitter_handle, tx_msg)
print("\nWrite TX message: ", STATUS_OK_KO(res))
# Sleep to let the transmission run
sleep(3)
# Free messages space
res = objPCANIsotp.MsgDataFree_2016(tx_msg)
print("Free tx message: ", STATUS_OK_KO(res))
# Uninitialize transmitter
res = objPCANIsotp.Uninitialize_2016(transmitter_handle)
print("Uninitialize transmitter: ", STATUS_OK_KO(res))
# Exit
print("Press <Enter> to close")
getInput()
Re: Configure ISTOP to send large data using segmented CAN-FD
Posted: Thu 5. Dec 2024, 00:43
by awaisZt
Awesome, that code worked like a charm!
Thanks a lot. I would say it will be great if you could add this as a sample example for other people's use.