#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>

#include "wmium.h"

#if defined(_IA64_)

ERROR_DEVICE_GUID ErrorProcessorGuid = ERROR_PROCESSOR_GUID;
ERROR_DEVICE_GUID ErrorMemoryGuid = ERROR_MEMORY_GUID;
ERROR_DEVICE_GUID ErrorPciBusGuid = ERROR_PCI_BUS_GUID;
ERROR_DEVICE_GUID ErrorPciComponentGuid = ERROR_PCI_COMPONENT_GUID;
ERROR_DEVICE_GUID ErrorSystemEventLogGuid = ERROR_SYSTEM_EVENT_LOG_GUID;
ERROR_DEVICE_GUID ErrorSmbiosGuid = ERROR_SMBIOS_GUID;
ERROR_DEVICE_GUID ErrorPlatformSpecificGuid = ERROR_PLATFORM_SPECIFIC_GUID;
ERROR_DEVICE_GUID ErrorPlatformBusGuid = ERROR_PLATFORM_BUS_GUID;
ERROR_DEVICE_GUID ErrorPlatformHostControllerGuid = ERROR_PLATFORM_HOST_CONTROLLER_GUID;

#endif // _IA64_

UCHAR InvalidError[] =
{
0x08, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x01,    0x40, 0x18, 0x00, 0x00,  
0x50, 0x53, 0x09, 0x00,    0x09, 0x05, 0x01, 0x20,    0x07, 0xc1, 0xd2, 0xa4,    0xb2, 0x40, 0xd4, 0x11,  
0xb1, 0x83, 0x00, 0xa0,    0xc9, 0xfc, 0x52, 0x7e,    0xf1, 0xfa, 0x29, 0xe4,    0xb7, 0x3c, 0xd4, 0x11,  
0xbc, 0xa7, 0x00, 0x80,    0xc7, 0x3c, 0x88, 0x81,    0x02, 0x00, 0x00, 0x00,    0x20, 0x15, 0x00, 0x00,  
0x17, 0x00, 0x00, 0x01,    0x00, 0x00, 0x00, 0x00,    0x00, 0x10, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x20, 0x11, 0xf2, 0xff,    0x00, 0x00, 0x00, 0x08,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x07, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x47, 0x65, 0x6e, 0x75,    0x69, 0x6e, 0x65, 0x49,    0x6e, 0x74, 0x65, 0x6c,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x06, 0x00, 0x07,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x1f, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x80, 0xf3, 0xc7, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0xd1, 0x01, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xea, 0x01, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x10, 0x58, 0xc1, 0x77,    0x00, 0x00, 0x00, 0x00,  
0x38, 0x06, 0x01, 0x01,    0x00, 0x00, 0x00, 0x00,    0x00, 0xe0, 0xfd, 0xff,    0xfb, 0x06, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xd1, 0x01, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x80, 0x80, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x96, 0x02, 0x00, 0xc0,    0xff, 0xff, 0xff, 0xff,    0x90, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0x00, 0xc0, 0xfd, 0xff,    0xfb, 0x06, 0x00, 0x00,    0x88, 0xd6, 0xaa, 0x81,    0x00, 0x00, 0x00, 0xe0,  
0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x18, 0x60, 0x2a, 0x08,    0x13, 0x10, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xa0, 0x7a, 0x7e, 0x77,    0x00, 0x00, 0x00, 0x00,  
0x01, 0xad, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x07, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x80,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x78, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0x00, 0x78, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,    0xb0, 0x4b, 0x74, 0xe5,    0x65, 0x01, 0x00, 0xe0,  
0x10, 0x5d, 0x79, 0x59,    0x00, 0xff, 0xff, 0xff,    0x47, 0x50, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x61, 0xc6, 0x50, 0x01,    0x00, 0x00, 0x10, 0x00,    0x61, 0xc6, 0x50, 0x01,    0x00, 0x00, 0x10, 0x00,  
0x34, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x08, 0x00, 0x00,  
0xb0, 0x4b, 0x74, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0xb8, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0xe0, 0xe4, 0xca, 0x86,    0x00, 0x00, 0x00, 0xe0,    0x40, 0xeb, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,  
0xd8, 0xe4, 0xca, 0x86,    0x00, 0x00, 0x00, 0xe0,    0xb0, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0x60, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xc0, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x80, 0x00, 0x00,  
0xf8, 0xf0, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0xdc, 0xe4, 0xca, 0x86,    0x00, 0x00, 0x00, 0xe0,  
0x10, 0x27, 0xba, 0x86,    0x00, 0x00, 0x00, 0xe0,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x28, 0x64, 0x00, 0x83,    0x00, 0x00, 0x00, 0xe0,    0xa0, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0xa0, 0x72, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,    0x47, 0xa0, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x60, 0xed, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0x03, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x80, 0xed, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0x18, 0x60, 0x2a, 0x08,    0x10, 0x10, 0x00, 0x00,  
0x11, 0x06, 0x00, 0x00,    0x00, 0x00, 0x00, 0x80,    0xf0, 0xef, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,  
0x18, 0x60, 0x2a, 0x08,    0x10, 0x10, 0x00, 0x00,    0x07, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x40, 0x5f, 0xff, 0xff,    0x00, 0x00, 0x00, 0x80,  
0x80, 0xfe, 0xe7, 0xff,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x40, 0x2f, 0xff, 0xff,    0x00, 0x00, 0x00, 0x00,  
0xa0, 0xee, 0x07, 0x83,    0x00, 0x00, 0x00, 0xe0,    0x05, 0x7f, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x16, 0xf6, 0xd3, 0x0b,    0x85, 0x1f, 0x00, 0x00,    0x00, 0x00, 0x26, 0x83,    0x00, 0x00, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xa1, 0x00, 0x00, 0x00,    0x00, 0xff, 0xff, 0x1f,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x18, 0x60, 0x2a, 0x08,    0x10, 0x10, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x04, 0x08, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x80, 0xed, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,    0xb0, 0x4b, 0x74, 0xe5,    0x65, 0x01, 0x00, 0xe0,  
0x34, 0x01, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x70, 0xed, 0xa7, 0xe5,    0x65, 0x01, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x19, 0x01, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x10, 0x5d, 0x79, 0x59,    0x00, 0xff, 0xff, 0xff,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xd0, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xf0, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x30, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0xfc,    0xff, 0x0f, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0xc0, 0xfd, 0xff,    0xfb, 0x06, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0xad, 0x09, 0x83,    0x00, 0x00, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xf0, 0x89, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,    0x30, 0x87, 0xda, 0xdc,    0x65, 0x01, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x88, 0xd6, 0xaa, 0x81,    0x00, 0x00, 0x00, 0xe0,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x3f, 0x03, 0x70, 0x02,    0x4c, 0x80, 0x09, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xcc, 0x34, 0xf7, 0x0b,    0x85, 0x1f, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x11, 0x06, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x35, 0x22, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x67, 0x72, 0x04, 0x00,    0x00, 0x00, 0x00, 0x00,    0x3e, 0x00, 0x01, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0xf8, 0xff, 0xff,    0xff, 0xff, 0xff, 0xff,    0x3e, 0x00, 0x01, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x78, 0x7b, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x3e, 0x00, 0x01, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x50, 0x52, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x3e, 0x00, 0x01, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x98, 0x3e, 0x93, 0x23,    0x00, 0x00, 0x00, 0x00,    0x3e, 0x00, 0x01, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0xf7, 0xfa, 0x29, 0xe4,    0xb7, 0x3c, 0xd4, 0x11,  
0xbc, 0xa7, 0x00, 0x80,    0xc7, 0x3c, 0x88, 0x81,    0x02, 0x00, 0x00, 0x00,    0xf8, 0x02, 0x00, 0x00,  
0xc0, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x07, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xe0, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x40, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x44, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xe1, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x80, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x84, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x10, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xcb, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x06, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x56, 0x01, 0x80, 0x22,    0x00, 0x00, 0x00, 0x00,  
0x44, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x1c, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x14, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xea, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x06, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x56, 0x01, 0xb0, 0x22,    0x00, 0x00, 0x00, 0x00,  
0x44, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x12, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xe6, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x06, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x46, 0x01, 0xb0, 0x02,    0x00, 0x00, 0x00, 0x00,  
0x44, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x40, 0x34, 0x70,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x04, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x13, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0xe6, 0x84,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x02, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x06, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x46, 0x01, 0xb0, 0x02,    0x00, 0x00, 0x00, 0x00,  
0x44, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x40, 0xb4, 0x10,    0x00, 0x00, 0x00, 0x00,  
0xcf, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x03, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x86, 0x80, 0x00, 0x76,    0x00, 0x00, 0x00, 0x00,    0x28, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,  
0x06, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x0f, 0x00, 0x80, 0x02,    0x00, 0x00, 0x00, 0x00,  
0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00  
};

#define GenerateMCEGuid { 0x3001bce4, 0xd9b6, 0x4167, { 0xb5, 0xe1, 0x39, 0xa7, 0x28, 0x59, 0xe2, 0x67 } }
GUID WmipGenerateMCEGuid = GenerateMCEGuid;

UCHAR Buffer[0x40000];

typedef struct
{
	ULONG Code;
	ULONG Count;
} THREADCONTROL, *PTHREADCONTROL;

ULONG GenerateMCE(
    PVOID Context
    )
{
	NTSTATUS Result;
	ULONG ResultSize;
	HANDLE Handle;
	ULONG Status;
	PERROR_RECORD_HEADER rh;
	PERROR_SECTION_HEADER sh;
	ULONG Size;
	ULONG MethodId;
	PTHREADCONTROL ThreadControl = (PTHREADCONTROL)Context;
	ULONG Code = ThreadControl->Code;
	ULONG Count = ThreadControl->Count;
	ULONG i;

	Status = WmiOpenBlock(&WmipGenerateMCEGuid,
						  0,
						  &Handle);

	if (Status == ERROR_SUCCESS)
	{
		rh = (PERROR_RECORD_HEADER)Buffer;
		rh->Id = 0x12345678;
		rh->Revision.Revision = 0x0200;

		rh->Valid.Valid = 0;
		rh->TimeStamp.TimeStamp = 0x2001031900165323;

		sh = (PERROR_SECTION_HEADER)((PUCHAR)rh + sizeof(ERROR_RECORD_HEADER));
		memset(sh, 0, sizeof(Buffer));
				
		sh->Revision.Revision = 0x0200;

		sh->RecoveryInfo.RecoveryInfo = 0;
		if ((Code >= 1000) && (Code <= 1999))
		{
			MethodId = 4;
			rh->ErrorSeverity = ErrorFatal;
		} else if ((Code >= 2000) && (Code <= 2999)) {
			MethodId = 2;                         // CMC
			rh->ErrorSeverity = ErrorCorrected;
			sh->RecoveryInfo.Corrected = 1;
		} else if ((Code >= 3000) && (Code <= 3999)) {
			MethodId = 3;                        // CPE
			rh->ErrorSeverity = ErrorCorrected;
			sh->RecoveryInfo.Corrected = 1;
		} else {
			MethodId = 1;
		}

		//
		// Mark as CPU 3
		//
		rh->TimeStamp.Reserved = 3;
		
		switch(Code)
		{
			//
			// Fatal SMBIOS Error
			//
			case 1001:
			case 2001:
			case 3001:
			{
				PERROR_SMBIOS s;

				sh->Length = sizeof(ERROR_SMBIOS);
				sh->Guid = ErrorSmbiosGuid;
						   
				s = (PERROR_SMBIOS)sh;
				s->Valid.Valid = 0;
				s->Valid.EventType = 1;
				s->EventType = 0xa0;
				
				break;
			}


			//
			// Fatal CPU Error: 2 cache 1 TLB and 2 Regfile
			//
			case 1002:
			case 2002:
			case 3002:
			{
				PERROR_PROCESSOR s;
				ULONG TotalSize;
				PERROR_MODINFO ModInfo;
				ERROR_CACHE_CHECK CacheCheck;
				ERROR_TLB_CHECK TlbCheck;

				TotalSize = sizeof(ERROR_PROCESSOR) +
							 5 * sizeof(ERROR_MODINFO) +
							 sizeof(ERROR_PROCESSOR_CPUID_INFO) +
							 sizeof(ERROR_PROCESSOR_STATIC_INFO);

				sh->Length = TotalSize;
				sh->Guid = ErrorProcessorGuid;
						   
				s = (PERROR_PROCESSOR)sh;
				s->Valid.CacheCheckNum = 2;
				s->Valid.TlbCheckNum = 1;
				s->Valid.RegFileCheckNum = 2;
				
				ModInfo = (PERROR_MODINFO)((PUCHAR)sh + sizeof(ERROR_PROCESSOR));

				//
				// One TLB error
				//
				TlbCheck.Level = 2;
				ModInfo->Valid.CheckInfo = 1;
				ModInfo->CheckInfo.CheckInfo = TlbCheck.TlbCheck;

				//
				// 2 cache errors
				//
				CacheCheck.Level = 1;
				ModInfo->Valid.CheckInfo = 1;
				ModInfo->CheckInfo.CheckInfo = CacheCheck.CacheCheck;
				ModInfo++;

				CacheCheck.Level = 2;
				ModInfo->Valid.CheckInfo = 1;
				ModInfo->CheckInfo.CheckInfo = CacheCheck.CacheCheck;
				ModInfo++;

				//
				// 2 RegFile errors
				//
				ModInfo++;
				
				ModInfo++;
				
								
				break;
			}

			//
			// Fatal CPU Error: 1 TLB
			//
			case 1003:
			case 2003:
			case 3003:
			{
				PERROR_PROCESSOR s;
				ULONG TotalSize;
				PERROR_MODINFO ModInfo;
				ERROR_CACHE_CHECK CacheCheck;
				ERROR_TLB_CHECK TlbCheck;

				TotalSize = sizeof(ERROR_PROCESSOR) +
							 1 * sizeof(ERROR_MODINFO) +
							 sizeof(ERROR_PROCESSOR_CPUID_INFO) +
							 sizeof(ERROR_PROCESSOR_STATIC_INFO);

				sh->Length = TotalSize;
				sh->Guid = ErrorProcessorGuid;
						   
				s = (PERROR_PROCESSOR)sh;
				s->Valid.TlbCheckNum = 1;
				
				ModInfo = (PERROR_MODINFO)((PUCHAR)sh + sizeof(ERROR_PROCESSOR));

				//
				// One TLB error
				//
				TlbCheck.Level = 2;
				ModInfo->Valid.CheckInfo = 1;
				ModInfo->CheckInfo.CheckInfo = TlbCheck.TlbCheck;				
								
				break;
			}

			//
			// Unknown PCI Bus
			//
			case 1004:
			case 2004:
			case 3004:
			{
				PERROR_PCI_BUS s;
				ULONG TotalSize;

				TotalSize = sizeof(ERROR_PCI_BUS);

				sh->Length = TotalSize;
				sh->Guid = ErrorPciBusGuid;
						   
				s = (PERROR_PCI_BUS)sh;
				s->Type.Type = 99;
				s->Valid.CmdType = 1;
				s->Valid.Address = 1;
				s->Valid.Id = 1;

				s->ErrorStatus.Status = 22;
				s->Address = 0x12345678;
				s->Data = 0x22;
				s->CmdType = 0x33;
				s->RequestorId = 0x5432123;
				s->ResponderId = 0x22233344;
				s->TargetId = 0x55555555;
				s->Id.BusNumber = 1;
				s->Id.SegmentNumber = 1;
				
				break;
			}
			
			//
			// Unknown and Missing PCI Bus
			//
			case 1005:
			case 2005:
			case 3005:
			{
				PERROR_PCI_BUS s;
				ULONG TotalSize;

				TotalSize = sizeof(ERROR_PCI_BUS);

				sh->Length = TotalSize;
				sh->Guid = ErrorPciBusGuid;
						   
				s = (PERROR_PCI_BUS)sh;
				s->Type.Type = 99;
				s->Valid.CmdType = 1;
				s->Valid.Address = 0;
				s->Valid.Id = 1;

				s->ErrorStatus.Status = 22;
				s->Address = 0x12345678;
				s->Data = 0x22;
				s->CmdType = 0x33;
				s->RequestorId = 0x5432123;
				s->ResponderId = 0x22233344;
				s->TargetId = 0x55555555;
				s->Id.BusNumber = 1;
				s->Id.SegmentNumber = 1;
				
				break;
			}
			
			//
			// PCI Bus parity error
			//
			case 1006:
			case 2006:
			case 3006:
			{
				PERROR_PCI_BUS s;
				ULONG TotalSize;

				TotalSize = sizeof(ERROR_PCI_BUS);

				sh->Length = TotalSize;
				sh->Guid = ErrorPciBusGuid;
						   
				s = (PERROR_PCI_BUS)sh;
				s->Type.Type = PciBusDataParityError;
				s->Valid.CmdType = 1;
				s->Valid.Address = 1;
				s->Valid.Id = 1;

				s->ErrorStatus.Status = 22;
				s->Address = 0x12345678;
				s->Data = 0x22;
				s->CmdType = 0x33;
				s->RequestorId = 0x5432123;
				s->ResponderId = 0x22233344;
				s->TargetId = 0x55555555;
				s->Id.BusNumber = 1;
				s->Id.SegmentNumber = 1;
				
				break;
			}
			
			//
			// Fatal System Eventlog
			//
			case 1007:
			case 2007:
			case 3007:
			{
				PERROR_SYSTEM_EVENT_LOG s;

				sh->Length = sizeof(ERROR_SYSTEM_EVENT_LOG);
				sh->Guid = ErrorSystemEventLogGuid;
						   
				s = (PERROR_SYSTEM_EVENT_LOG)sh;
				
				s->Valid.Valid = 0;
				s->RecordId = 0x1234;       
				s->RecordType = 1;
				s->TimeStamp = 0x031100;
				s->GeneratorId = 1;
				s->EVMRevision = 48;
				s->SensorType = 2;
				s->SensorNumber = 7;
				s->EventDir = 2;
				s->Data1 = 1;
				s->Data2 = 2;
				s->Data3 = 3;
				
				break;
			}

			//
			// memory 1_2_5_4
			//
			case 1008:
			case 2008:
			case 3008:
			{
				PERROR_MEMORY Memory;

				sh->Length = sizeof(ERROR_MEMORY);
				sh->Guid = ErrorMemoryGuid;
						   
				Memory = (PERROR_MEMORY)sh;

				Memory->Valid.Valid = 0;
				Memory->Valid.PhysicalAddress = 1;
				Memory->Valid.AddressMask = 1;
				Memory->Valid.Module = 1;
				Memory->Valid.Card = 1;
				
				Memory->ErrorStatus.Status = 0;
				Memory->PhysicalAddress = 0x87654321;
				Memory->PhysicalAddressMask = 0x3fff;
				Memory->ResponderId = 2;
				Memory->TargetId = 3;
				Memory->RequestorId = 4;
				Memory->BusSpecificData = 5;
				Memory->Node = 6;
				Memory->Card = 7;
				Memory->Bank = 8;
				Memory->Device = 9;
				Memory->Module = 10;
				Memory->Row = 11;
				Memory->Column = 12;
				Memory->BitPosition = 13;				
				
				break;
			}

			
			//
			// memory 1_2_5
			//
			case 1009:
			case 2009:
			case 3009:
			{
				PERROR_MEMORY Memory;

				sh->Length = sizeof(ERROR_MEMORY);
				sh->Guid = ErrorMemoryGuid;
						   
				Memory = (PERROR_MEMORY)sh;

				Memory->Valid.Valid = 0;
				Memory->Valid.PhysicalAddress = 1;
				Memory->Valid.AddressMask = 1;
				Memory->Valid.Module = 1;
				
				Memory->ErrorStatus.Status = 0;
				Memory->PhysicalAddress = 0x87654321;
				Memory->PhysicalAddressMask = 0x3fff;
				Memory->ResponderId = 2;
				Memory->TargetId = 3;
				Memory->RequestorId = 4;
				Memory->BusSpecificData = 5;
				Memory->Node = 6;
				Memory->Card = 7;
				Memory->Bank = 8;
				Memory->Device = 9;
				Memory->Module = 10;
				Memory->Row = 11;
				Memory->Column = 12;
				Memory->BitPosition = 13;				
				
				break;
			}

			//
			// memory 1_2
			//
			case 1010:
			case 2010:
			case 3010:
			{
				PERROR_MEMORY Memory;

				sh->Length = sizeof(ERROR_MEMORY);
				sh->Guid = ErrorMemoryGuid;
						   
				Memory = (PERROR_MEMORY)sh;

				Memory->Valid.Valid = 0;
				Memory->Valid.PhysicalAddress = 1;
				Memory->Valid.AddressMask = 1;
				
				Memory->ErrorStatus.Status = 0;
				Memory->PhysicalAddress = 0x87654321;
				Memory->PhysicalAddressMask = 0x3fff;
				Memory->ResponderId = 2;
				Memory->TargetId = 3;
				Memory->RequestorId = 4;
				Memory->BusSpecificData = 5;
				Memory->Node = 6;
				Memory->Card = 7;
				Memory->Bank = 8;
				Memory->Device = 9;
				Memory->Module = 10;
				Memory->Row = 11;
				Memory->Column = 12;
				Memory->BitPosition = 13;				
				
				break;
			}

			
			//
			// memory 
			//
			case 1011:
			case 2011:
			case 3011:
			{
				PERROR_MEMORY Memory;

				sh->Length = sizeof(ERROR_MEMORY);
				sh->Guid = ErrorMemoryGuid;
						   
				Memory = (PERROR_MEMORY)sh;

				Memory->Valid.Valid = 0;
				Memory->Valid.PhysicalAddress = 1;
				
				Memory->ErrorStatus.Status = 0;
				Memory->PhysicalAddress = 0x87654321;
				Memory->PhysicalAddressMask = 0x3fff;
				Memory->ResponderId = 2;
				Memory->TargetId = 3;
				Memory->RequestorId = 4;
				Memory->BusSpecificData = 5;
				Memory->Node = 6;
				Memory->Card = 7;
				Memory->Bank = 8;
				Memory->Device = 9;
				Memory->Module = 10;
				Memory->Row = 11;
				Memory->Column = 12;
				Memory->BitPosition = 13;				
				
				break;
			}


			//
			// 2 sections
			//
			case 1012:
			case 2012:
			case 3012:
			{
				PERROR_SMBIOS s2;
				PERROR_PLATFORM_SPECIFIC s;
				ULONG TotalSize;

				TotalSize = sizeof(ERROR_SMBIOS) + sizeof(ERROR_PLATFORM_SPECIFIC);
				sh->Length = sizeof(ERROR_PLATFORM_SPECIFIC);
				sh->Guid = ErrorPlatformSpecificGuid;

				s = (PERROR_PLATFORM_SPECIFIC)sh;
				s->Valid.Valid = 0;

				sh = (PERROR_SECTION_HEADER)( (PUCHAR)sh + sizeof(ERROR_PLATFORM_SPECIFIC));
				sh->Revision.Revision = 0x0200;
				sh->Length = sizeof(ERROR_SMBIOS);
				sh->Guid = ErrorSmbiosGuid;
				if ((MethodId >= 2) && (MethodId <= 3))
				{
					sh->RecoveryInfo.Corrected = 1;
				}
				
				s2 = (PERROR_SMBIOS)sh;
				s2->Valid.Valid = 0;
				s2->Valid.EventType = 1;
				s2->EventType = 0xa0;
				
				sh = (PERROR_SECTION_HEADER)( (PUCHAR)sh + sizeof(ERROR_SMBIOS));
				sh->Length = TotalSize;
				break;
			}
			
			//
			// PCI COmponent
			//
			case 1013:
			case 2013:
			case 3013:
			{
				PERROR_PCI_COMPONENT s;

				sh->Length = sizeof(ERROR_PCI_COMPONENT);
				sh->Guid = ErrorPciComponentGuid;

				s = (PERROR_PCI_COMPONENT)sh;
				s->Valid.Valid = 0;
				break;
			}
			
			case 1014:
			case 2014:
			case 3014:
			{
				PERROR_SMBIOS s;

				sh->Length = 0x186a0;
				sh->Guid = ErrorSmbiosGuid;
						   
				s = (PERROR_SMBIOS)sh;
				s->Valid.Valid = 0;
				s->Valid.EventType = 1;
				s->EventType = 0xa0;
				
				break;
			}

			//
			// Invalid
			//
			case 1015:
			case 2015:
			case 3015:
			{
				memcpy(Buffer, InvalidError, sizeof(InvalidError));
				Size = sizeof(InvalidError);
				goto SkipSize;
			}
			
			
			default:
			{
				*((PULONG)Buffer) = Code;
				Size = sizeof(Code);
				MethodId = 1;
				break;
			}
		}				

        if ( MethodId != 1 )    {
		    rh->Length = sizeof(ERROR_RECORD_HEADER) + sh->Length;				
		    Size = rh->Length;
        }
		
SkipSize:
		ResultSize = sizeof(Result);

		if (Count == 0)
		{
			Count = 0xffffffff;
		}
		
		for (i = 0; i < Count; i++)
		{
			ResultSize = sizeof(Result);
			Status = WmiExecuteMethod(Handle,
							  "SMBiosData",
							  MethodId,
							  Size,
							  Buffer,
							  &ResultSize,
							  &Result);


			if (Status == ERROR_SUCCESS)
			{
				if (ResultSize == sizeof(Result))
				{
					printf("MCEGen returned NTSTATUS %x\n", Result);
				}
			} else {
				printf("WmiExecuteMethod(%d) failed %d\n", Code, Status);
			}
		}
								  
		CloseHandle(Handle);
	} else {
		printf("WmiOpenBlock failed %d\n", Status);
	}
	return(0);
}

#if 0
ULONG DumpMCE(
    void
    )
{
	HANDLE Handle;
	GUID Guid = { 0x23602a8a,0xdadd,0x462f, { 0x9a,0xe5,0x30,0xfa,0x2c,0x37,0xdd,0x5b } };
	ULONG Status;
	ULONG SizeNeeded;

	Status = WmiOpenBlock(&Guid,
						  0,
						  &Handle);
	
	if (Status == ERROR_SUCCESS)
	{
		SizeNeeded = 0;
		Status = WmiQueryAllData(Handle,
								 &SizeNeeded,
								 NULL);
		if (Status == ERROR_BUFFER_TOO_SMALL)
		{
			Buffer = malloc(SizeNeeded);
			if (Buffer != NULL)
			{
				Status = WmiQueryAllData(Handle,
										 &SizeNeeded,
										 Buffer);
				if (Status == ERROR_SUCCESS)
				{
					Wnode = (PWNODE_ALL_DATA)Buffer;
					MCAData = (PMSMCAInfo_RawMCAData)OffsetToPtr(Wnode,
						                                         Wnode->
				}
			}
		}
	}
}
#endif

void Usage()
{
	printf("MCEGen <code> [<count> <threads>]\n\n");
	printf("    Generates a MCE exception. <code> specifies the type\n");
	printf("    of exception to generate\n\n");
	printf("        456   -   Hal generates a fatal MCA (Checked build required)\n");
	printf("        490   -   Hal generates a L1 1-bit ECC CMC (Checked build required)\n");
	printf("       1001/2001/3001 - Fatal/Corrected CMC/CPE SMBIOS MCE\n");
	printf("       1002/2002/3002 - Fatal/Corrected CMC/CPE Cache Level 1 MCE\n");
	printf("       1003/2003/3003 - Fatal/Corrected CMC/CPE TLB level 2 MCE\n");
	printf("       1004/2004/3004 - Fatal/Corrected CMC/CPE Unknown PCI Bus\n");
	printf("       1005/2005/3005 - Fatal/Corrected CMC/CPE Unknown PCI Bus\n");
	printf("       1006/2006/3006 - Fatal/Corrected CMC/CPE PCI Bus Parity Error\n");
	printf("       1007/2007/3007 - Fatal/Corrected CMC/CPE System Eventlog\n");
	printf("       1008/2008/3008 - Fatal/Corrected CMC/CPE Memory\n");
	printf("       1009/2009/3009 - Fatal/Corrected CMC/CPE Memory\n");
	printf("       1010/2010/3010 - Fatal/Corrected CMC/CPE Memory\n");
	printf("       1011/2011/3011 - Fatal/Corrected CMC/CPE Memory\n");
	printf("       1012/2012/3012 - Fatal/Corrected CMC/CPE SMBIOS and Platform Specific\n");
	printf("       1013/2013/3013 - Fatal/Corrected CMC/CPE PCI Component\n");
	printf("       1014/2014/3014 - Fatal/Corrected CMC/CPE SMBIOS (100KB in size)\n");
	printf("       1015/2015/3015 - Fatal/Corrected Invalid\n");
	
}

int _cdecl main(int argc, char *argv[])
{
	ULONG Status;
	ULONG Code, Threads, Count;
	HANDLE h;
	ULONG i;
	DWORD Id;
	
	if (argc < 2)
	{
		Usage();
	} else {
		Code = atoi(argv[1]);
		if (argc == 2) {
			THREADCONTROL ThreadControl;
			
			//
			// parameter is code number to generate MCE
			//
			ThreadControl.Count = 1;
			ThreadControl.Code = Code;
			GenerateMCE(&ThreadControl);
		} else {
			PHANDLE Events;
			
			if (argc >= 4)
			{
				//
				// specified multiple generation threads
				//
				Threads = atoi(argv[3]);			
			} else {
				Threads = 1;
			}
			
			//
			// Get number of MCE to generate
			//
			Count = atoi(argv[2]);

			Events = malloc(Threads * sizeof(HANDLE));
			for (i = 0; i < Threads; i++)
			{
				PTHREADCONTROL  ThreadControl;

				ThreadControl = malloc(sizeof(THREADCONTROL));
				ThreadControl->Count = Count;
				ThreadControl->Code = Code;
				Events[i] = CreateThread(NULL,
							 0,
							 GenerateMCE,
							 ThreadControl,
							 0,
							 &Id);
				if (Events[i] == NULL)
				{
					printf("CreateThread failed %d\n", GetLastError());					
				}
			}
			
			printf("Waiting for threads to complete\n");
			
			WaitForMultipleObjects(Threads, Events, TRUE, INFINITE);
		}
	}

	
    return(0);
}

