From 1192c4575ea7afdf38e3fa0df4587a08620af11e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 21 Jul 2020 10:00:46 +0200 Subject: SZS v2.18a --- project/src/lib-common.c | 1434 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1434 insertions(+) create mode 100644 project/src/lib-common.c (limited to 'project/src/lib-common.c') diff --git a/project/src/lib-common.c b/project/src/lib-common.c new file mode 100644 index 0000000..60d1184 --- /dev/null +++ b/project/src/lib-common.c @@ -0,0 +1,1434 @@ + +/*************************************************************************** + * _______ _______ _______ * + * | ___ |____ | ___ | * + * | | |_| / /| | |_| * + * | |_____ / / | |_____ * + * |_____ | / / |_____ | * + * _ | | / / _ | | * + * | |___| |/ /____| |___| | * + * |_______|_______|_______| * + * * + * Wiimms SZS Tools * + * https://szs.wiimm.de/ * + * * + *************************************************************************** + * * + * This file is part of the SZS project. * + * Visit https://szs.wiimm.de/ for project details and sources. * + * * + * Copyright (c) 2011-2020 by Dirk Clemens * + * * + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt * + * * + ***************************************************************************/ + +#include + +#include "dclib-xdump.h" +#include "lib-szs.h" +#include "lib-common.h" +#include "lib-numeric.h" +#include "lib-bzip2.h" + +#include "common.inc" + +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// original itemslot.bin /////////////// +/////////////////////////////////////////////////////////////////////////////// + +static const u8 itemslot_bin_bz2[] = // ItemSlot.bin +{ + // decompressed size: 0x713 = 1811 bytes + 0x00,0x00,0x07,0x13, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xe5,0x95, 0x32,0x15,0x00,0x01, + 0xc8,0x7f,0x0c,0x7f, 0x7f,0xce,0xa1,0x08, 0xc6,0x10,0x84,0x21, 0x08,0x40,0x00,0x04, + 0x00,0x00,0x01,0x00, 0x40,0x40,0x02,0x98, 0xea,0x3b,0x40,0xe0, 0x25,0x54,0xfc,0xa7, + 0xa9,0xb4,0x53,0x6d, 0x4f,0x53,0x4a,0x7a, 0x80,0xd3,0x40,0xda, 0x82,0x54,0xf1,0x12, + 0x23,0x10,0x84,0xd3, 0x1a,0x11,0x90,0x09, 0x34,0xa8,0xd4,0xd4, 0x6c,0x90,0x01,0x88, + 0x01,0xa0,0x90,0x89, 0x11,0xa8,0xc8,0x0f, 0x53,0x13,0x13,0x40, 0xd8,0xe3,0xed,0x4d, + 0x64,0x4e,0x8d,0x79, 0x1f,0xd7,0x24,0xe7, 0x73,0xe7,0x9f,0xc2, 0x3c,0x70,0x6c,0xcc, + 0xdb,0x66,0xa9,0xbc, 0x4c,0xd1,0xe5,0x4d, 0xf8,0xa1,0x9c,0x78, 0x54,0x4a,0x0a,0xb2, + 0x83,0x37,0x23,0x5d, 0xa9,0xd3,0x29,0x48, 0x49,0x81,0x82,0x27, 0x62,0x1b,0x75,0x50, + 0x38,0x1a,0x94,0x09, 0xa3,0x24,0x26,0x86, 0xf9,0x6b,0x0d,0x77, 0x50,0xcb,0x28,0x92, + 0x98,0x1f,0x2a,0x2e, 0x5d,0x16,0x32,0xa4, 0x03,0x4d,0x20,0x02, 0xa4,0xc0,0x4d,0x80, + 0xdb,0x66,0x04,0x30, 0xc3,0x44,0x03,0x40, 0xc5,0x20,0x88,0x7e, 0x7e,0xde,0xb6,0x66, + 0x82,0x09,0xa0,0x37, 0x61,0x15,0x0d,0x4a, 0x8a,0x96,0x70,0x54, 0x9a,0x00,0x67,0x68, + 0x21,0x41,0xdc,0x4e, 0x10,0x6f,0x0d,0x8f, 0xce,0xcc,0xae,0x16, 0x91,0x1a,0x30,0x35, + 0xa0,0xf0,0xc2,0x91, 0x81,0xe4,0xd6,0xa3, 0x0c,0xd8,0x6b,0x55, 0x44,0xc1,0x11,0x86, + 0x5e,0xa7,0x0b,0x77, 0x06,0x96,0xc3,0x24, 0x31,0xd3,0x80,0xd3, 0x5b,0x63,0x8b,0x31, + 0xad,0x1e,0x7f,0x26, 0x60,0x4a,0xcb,0x25, 0x55,0x0a,0x18,0x91, 0x31,0x0f,0x19,0xb1, + 0xc3,0x14,0x88,0x52, 0x49,0xc2,0x99,0x65, 0x42,0xa9,0x3b,0xe2, 0xdb,0x04,0xc5,0x16, + 0x14,0xcc,0xa1,0x83, 0x30,0xd5,0x36,0x93, 0x2a,0x52,0x42,0xc3, 0x11,0xcd,0x16,0xe1, + 0x54,0xc8,0x23,0x0d, 0x25,0x7b,0x67,0x7f, 0x6b,0x1e,0x8c,0xd0, 0x47,0x7c,0x90,0x81, + 0xc6,0xe7,0x92,0x0f, 0x37,0xe2,0x9f,0x5b, 0xc3,0x5d,0x49,0x8c, 0x35,0x95,0xda,0x6a, + 0x4b,0xb7,0x99,0x0c, 0x46,0x0c,0x49,0xa1, 0x94,0x30,0x60,0x93, 0x17,0x29,0x43,0x38, + 0x29,0xa0,0x42,0x17, 0x6f,0x69,0x12,0xe2, 0xde,0xa1,0x1f,0x7f, 0x24,0xf5,0xab,0xf9, + 0x81,0xe1,0x84,0x23, 0xa7,0x30,0xe0,0x3a, 0x4d,0x91,0xae,0x3a, 0xc3,0xaa,0x16,0x84, + 0xc3,0x2c,0x73,0x47, 0x58,0xb2,0xaa,0x31, 0x5b,0x59,0xa2,0x1b, 0x6e,0xd2,0x5c,0xac, + 0x96,0x7d,0xd7,0xa7, 0xaf,0xf3,0x44,0xdf, 0x1b,0x1c,0x69,0xfb, 0xae,0x8f,0x7d,0xf3, + 0x6b,0x52,0x63,0x22, 0xe1,0x65,0x76,0x57, 0xc8,0xda,0x06,0xb1, 0x72,0x13,0x3c,0xde, + 0x0d,0xe8,0xb6,0x34, 0x6d,0xce,0x9e,0x65, 0x9c,0x5f,0x1e,0xa9, 0x04,0x11,0x0e,0xb6, + 0x52,0x06,0x14,0x46, 0x46,0x18,0x8b,0xaf, 0x45,0x55,0x51,0x5c, 0x78,0x4c,0x73,0xf9, + 0x1c,0x2e,0xdb,0x41, 0x55,0x12,0x64,0xea, 0x30,0xd9,0x26,0xb3, 0x2b,0x96,0xa4,0xe1, + 0xb8,0xa6,0x98,0x9b, 0x5d,0x2e,0x2a,0x5c, 0x71,0xae,0x93,0xfb, 0x4a,0x93,0x67,0xc8, + 0x7c,0x09,0xb1,0xa5, 0x63,0x47,0x35,0x6c, 0x3e,0x8a,0x6f,0x9c, 0x57,0x3a,0x23,0x3b, + 0x3a,0x99,0x74,0xa9, 0xb9,0x6c,0xe8,0xe8, 0xb4,0xb5,0x8e,0xb9, 0xd3,0xb3,0x0c,0x50, + 0x53,0x83,0xeb,0x7e, 0xc7,0x3e,0x3e,0x7d, 0xf9,0xff,0x17,0x72, 0x45,0x38,0x50,0x90, + 0xe5,0x95,0x32,0x15, + // 0x224 = 548 data bytes (30%) +}; + +static BZ2Manager_t itemslot_bin_mgr + = { itemslot_bin_bz2, sizeof(itemslot_bin_bz2), 0, 0 }; + +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// original minigame.kmg /////////////// +/////////////////////////////////////////////////////////////////////////////// + +static const u8 minigame_kmg_bz2[] = // minigame.kmg +{ + // decompressed size: 0x718 = 1816 bytes + 0x00,0x00,0x07,0x18, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xf6,0xc1, 0x8d,0x99,0x00,0x03, + 0x1a,0xfe,0x8c,0xef, 0xfc,0xc7,0x65,0xe0, 0x7a,0x92,0xa0,0x88, 0x8a,0x10,0x00,0x00, + 0x40,0x04,0x00,0x00, 0x04,0x00,0x00,0xb0, 0x01,0x36,0x00,0x63, 0x46,0x8d,0x00,0xc9, + 0x90,0xd1,0x88,0xd3, 0x40,0xd3,0x02,0x1a, 0x53,0x40,0x34,0x00, 0x00,0x00,0x00,0x22, + 0x48,0x4a,0x7a,0x6a, 0x9e,0x88,0x36,0x9a, 0x4f,0xd2,0x99,0x31, 0x3f,0x50,0xd4,0xcd, + 0x3e,0x1e,0x09,0xb9, 0x66,0xa5,0x05,0xb8, 0xf2,0xce,0x19,0x49, 0x14,0xa0,0xd8,0x33, + 0x40,0x0c,0xc4,0x04, 0x68,0x44,0x71,0x03, 0x24,0x6d,0x86,0x23, 0x65,0x36,0x8b,0xf9, + 0x08,0xee,0xca,0x8d, 0xfa,0x5b,0x38,0x5c, 0x99,0x64,0xad,0x92, 0xaa,0xa4,0x18,0x15, + 0x07,0x1b,0xdb,0x92, 0xd2,0x5e,0x9a,0x83, 0x63,0x08,0x95,0x09, 0x09,0x00,0xb0,0x55, + 0x1a,0x0d,0xab,0x34, 0x3e,0x6e,0x27,0x8d, 0xbb,0xe7,0x2d,0xe3, 0x9e,0xe7,0x88,0xe2, + 0x13,0xcb,0x3d,0xaf, 0xa0,0x9a,0x89,0xc0, 0x6c,0x5a,0x49,0x24, 0xa4,0xe4,0x25,0xc4, + 0x89,0x58,0x43,0xb3, 0x2b,0x88,0xf6,0x01, 0x5d,0xbd,0xfc,0xfd, 0xbd,0xce,0x77,0xe1, + 0x9f,0x56,0xff,0x20, 0xfb,0x7d,0xfc,0x68, 0x4f,0x31,0x33,0x1a, 0xc7,0x0d,0x48,0xa3, + 0x81,0x20,0x5c,0x32, 0xaa,0x84,0x12,0x23, 0xa0,0x16,0xff,0x15, 0xb7,0x11,0xc5,0xe0, + 0x94,0x09,0xb2,0x7a, 0xa6,0xad,0xf2,0xb1, 0x7f,0x68,0x41,0xce, 0x16,0x3d,0xc2,0xab, + 0x98,0x7f,0x05,0x74, 0x13,0x6d,0x5c,0x82, 0x27,0x14,0x32,0xb1, 0xa8,0xee,0x31,0x46, + 0xae,0x39,0x37,0xe4, 0x38,0xaf,0x01,0x14, 0x7a,0x7e,0xfd,0x50, 0x03,0xae,0x08,0x02, + 0x7a,0x40,0x54,0x0f, 0x98,0x07,0x4e,0x9d, 0xbd,0x57,0x05,0x47, 0xe3,0xa5,0x7d,0x0b, + 0xb9,0x22,0x9c,0x28, 0x48,0x7b,0x60,0xc6, 0xcc,0x80, + // 0x12a = 298 data bytes (17%) +}; + +static BZ2Manager_t minigame_kmg_mgr + = { minigame_kmg_bz2, sizeof(minigame_kmg_bz2), 0, 0 }; + +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// original GeoHit data /////////////// +/////////////////////////////////////////////////////////////////////////////// + +static const u8 objflow_bin_bz2[] = // ObjFlow.bin +{ + // decompressed len: 0x951a = 38170 bytes + 0x00,0x00,0x95,0x1a, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xae,0x04, 0xda,0x11,0x00,0x09, + 0x4b,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xe0, 0x14,0x79,0x4b,0x00, 0x1f,0x3d,0x07,0x5b, 0x3e,0x17,0xcf,0x67, + 0x8d,0xd7,0xdb,0x50, 0x01,0xda,0xe7,0x33, 0xbd,0xd1,0xad,0xec, 0x17,0x8e,0x00,0x06, + 0xf7,0x70,0x7a,0x03, 0xd0,0x3a,0xa0,0x1d, 0xb0,0xd0,0x3a,0x70, 0x07,0x0d,0x11,0x21, + 0x3c,0x89,0xe4,0x0a, 0x61,0x35,0x3c,0x69, 0x32,0x9a,0x6d,0x31, 0x4f,0x6a,0x27,0x89, + 0x3f,0x2a,0x7a,0x99, 0xa8,0xd0,0x34,0x6d, 0x4f,0x48,0xd0,0x6d, 0x46,0x09,0xa3,0xd2, + 0x6d,0x31,0xa2,0x34, 0x9e,0x51,0xe8,0x99, 0x3d,0x13,0xd4,0xd3, 0xf5,0x06,0x44,0xc4, + 0xd3,0x35,0x00,0xd0, 0x7a,0x80,0xd0,0x1a, 0x68,0xd1,0x90,0x34, 0x1a,0x1e,0xa3,0x62, + 0x40,0x00,0x34,0x06, 0x8c,0xd4,0xd8,0x26, 0xf2,0xa6,0x50,0x6a, 0x68,0x23,0x41,0x90, + 0x99,0x34,0x34,0x26, 0x51,0xb1,0x53,0xf4, 0x88,0x00,0xd0,0xd0, 0xc8,0x06,0x99,0x34, + 0x00,0x00,0x00,0x00, 0x03,0xd4,0x34,0x01, 0xa0,0x00,0x1b,0x50, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0xa0, 0x00,0x00,0x00,0xd0, 0x00,0x7a,0x80,0x03, 0x4d,0x4c,0x81,0x12, + 0x64,0xf5,0x28,0x1b, 0x35,0x40,0x32,0x34, 0x0d,0x01,0x91,0xa1, 0xa0,0x1e,0xa0,0x68, + 0xf4,0x40,0x06,0x80, 0x32,0x34,0xd0,0x34, 0x00,0x64,0xd0,0x00, 0x00,0x69,0x90,0x00, + 0x0d,0x00,0x00,0xd0, 0x19,0x00,0x00,0x68, 0x01,0x89,0xea,0x68, 0xd3,0x20,0x01,0x91, + 0xa6,0x80,0x01,0x29, 0xe9,0x48,0x48,0x9a, 0x89,0xed,0x51,0xbd, 0x22,0x63,0x53,0x1a, + 0x9e,0xa7,0xea,0x4d, 0x30,0x26,0x23,0xd1, 0x3d,0x4f,0x44,0x64, 0xf5,0x1b,0x44,0xc0, + 0x86,0x10,0xc4,0x61, 0x30,0x83,0x26,0x4c, 0x08,0x69,0x9a,0x13, 0x23,0x26,0x46,0x4c, + 0x99,0x34,0xc8,0x34, 0xc8,0x0c,0x43,0x08, 0x60,0x4c,0x4d,0x18, 0x04,0x06,0x09,0x80, + 0x9a,0x32,0x62,0x64, 0x61,0x03,0x46,0x81, 0x49,0x14,0xd3,0x07, 0xa9,0x0c,0x0f,0x52, + 0x61,0x0c,0x04,0xc9, 0x84,0xc4,0xc0,0x20, 0x62,0x69,0x80,0x13, 0x04,0xc0,0x9a,0x60, + 0x00,0x00,0x46,0x4d, 0x03,0x46,0x04,0x60, 0x00,0x01,0x30,0xd0, 0x00,0x02,0x31,0x30, + 0xd0,0x04,0xc0,0x8c, 0x00,0x01,0x32,0x30, 0x04,0x1a,0x00,0x12, 0x24,0x40,0x46,0x80, + 0x9a,0x00,0x09,0xa3, 0x4a,0x7b,0x46,0xa3, 0x01,0x4c,0xc2,0x4c, 0x34,0xc8,0x89,0xfa, + 0x0a,0x7e,0xa9,0xea, 0x6f,0x49,0x84,0x9e, 0x9a,0x80,0x3d,0x35, 0x00,0x03,0x20,0x00, + 0x00,0x32,0x0c,0x26, 0x9a,0x1e,0xa0,0x1a, 0x0d,0x00,0x06,0x9a, 0x03,0x4d,0x00,0x1e, + 0xa7,0xa8,0x7a,0x83, 0x40,0x3d,0x40,0x00, 0xf5,0x1b,0x4c,0xa7, 0xea,0x97,0x77,0x59, + 0x3b,0xce,0x28,0x0b, 0x9c,0x6f,0xd7,0x85, 0x0d,0x20,0x8a,0xb8, 0x88,0xfa,0xd0,0x5d, + 0x64,0x44,0x17,0xba, 0x41,0xc5,0x0d,0xa5, 0x80,0x0a,0x24,0xab, 0xa0,0x41,0x24,0x21, + 0x13,0xaa,0x77,0xf2, 0x49,0x77,0x2e,0xe2, 0xce,0x7b,0xf2,0x1b, 0xfd,0x7f,0x1f,0x09, + 0x84,0xa5,0xf7,0x30, 0x7c,0x05,0x28,0x2d, 0x32,0xfc,0xfc,0x0b, 0x9d,0xf7,0xf8,0x6c, + 0xee,0x56,0xc5,0x48, 0xc7,0xf2,0x6d,0x8e, 0x01,0x40,0x00,0x88, 0xd5,0x8f,0xa9,0xb3, + 0xda,0x24,0x8c,0xb5, 0x52,0xfb,0x69,0x7f, 0xd5,0xb3,0x72,0x61, 0x04,0xa1,0xe9,0xc9, + 0xcf,0xd8,0x6e,0xbc, 0x37,0x53,0x7c,0xac, 0xb3,0xa0,0xa0,0xd6, 0x15,0xc3,0x6e,0x0c, + 0x8e,0x02,0xb3,0x1a, 0x3d,0x95,0x64,0x10, 0x30,0x73,0xd5,0x41, 0xa1,0xc8,0xf1,0x00, + 0xd7,0x4a,0x8c,0x0d, 0x81,0x3a,0x8b,0x8d, 0x6d,0x48,0x3c,0x25, 0x69,0xdb,0x4d,0xe4, + 0x49,0x1b,0x2b,0x53, 0x28,0xa4,0x4d,0x2b, 0x86,0xac,0x97,0xfa, 0xf1,0x69,0xfa,0x10, + 0xed,0xdd,0xcf,0x0b, 0x1c,0xe6,0xeb,0x8d, 0x1a,0x70,0x1d,0x0a, 0x87,0x16,0x2d,0xa4, + 0x57,0x71,0x44,0xea, 0xce,0x96,0xb3,0x70, 0xdd,0xb4,0x61,0xc6, 0xb9,0x52,0x2b,0x0a, + 0xac,0xae,0x8d,0xbc, 0xa5,0x35,0x02,0x81, 0x46,0xce,0x50,0xb6, 0xb1,0x0a,0xb6,0xd6, + 0xcd,0x37,0xb2,0x7c, 0x4c,0x53,0x73,0x0c, 0x53,0x9d,0x4d,0x02, 0x02,0x89,0xa4,0x38, + 0x67,0x6a,0xa4,0xe4, 0x5c,0x89,0xea,0x66, 0x14,0xea,0x60,0xcd, 0x07,0xe7,0xae,0xd0, + 0x84,0x11,0x11,0x6e, 0x87,0x39,0x31,0x64, 0xf2,0x13,0x15,0x1a, 0x4d,0x64,0x40,0x4e, + 0xac,0x8a,0x31,0x9a, 0x53,0x1c,0x39,0x4d, 0xbf,0xd9,0x88,0x3b, 0x28,0xa6,0xfc,0xca, + 0xa5,0x4a,0x59,0xe3, 0x6d,0xaa,0x56,0x13, 0x3a,0x91,0x0b,0xef, 0xbf,0x1b,0x90,0x9c, + 0x50,0xb4,0x84,0xda, 0x81,0xe7,0x9e,0x6b, 0x02,0xa4,0x0b,0x2a, 0x95,0x4c,0x5c,0xa4, + 0x09,0x65,0xb7,0x52, 0xac,0x95,0x25,0xa6, 0x40,0xfb,0xb3,0xd3, 0x6c,0xc7,0x96,0x59, + 0x66,0x44,0xb0,0x2e, 0x90,0x77,0x8a,0x53, 0x5d,0x4d,0xaa,0xcf, 0x92,0x52,0xa8,0xe5, + 0x3b,0x98,0x96,0x2c, 0x37,0x32,0x7b,0x9c, 0x3d,0x9b,0xaf,0x2d, 0xc9,0x23,0xc0,0xa2, + 0x3a,0x71,0x94,0xa7, 0xb6,0x4b,0x55,0x3e, 0x3d,0xc9,0xeb,0x57, 0xdf,0x12,0x94,0xa6, + 0xd6,0x56,0xdc,0x09, 0x6d,0xb4,0x2e,0xee, 0x86,0xab,0x98,0x0e, 0xbb,0x71,0xaf,0x36, + 0x8d,0x2b,0x1a,0xe2, 0x2e,0x86,0x96,0x39, 0xa8,0xb7,0x80,0x89, 0x5b,0x25,0xe7,0xef, + 0xa2,0xa5,0xe4,0xb9, 0x85,0x3b,0xed,0x34, 0x94,0xe3,0x18,0x54, 0x83,0xcf,0xb5,0xe6, + 0x1d,0x50,0x1a,0x37, 0x2c,0xba,0x97,0x8a, 0x89,0x31,0x8a,0x0d, 0x52,0xee,0x34,0xa7, + 0x50,0x81,0x91,0x21, 0xc8,0x9e,0x45,0xc5, 0x22,0x68,0x15,0x5d, 0x6a,0xba,0xa5,0x2d, + 0x4d,0xba,0x22,0xa1, 0x2d,0x2b,0xa9,0x90, 0x3d,0x69,0x82,0xc3, 0x12,0x24,0x38,0x86, + 0x61,0x3a,0x2e,0x92, 0x65,0x7a,0x80,0xa7, 0x92,0x49,0x04,0x70, 0x45,0x6e,0x34,0x84, + 0xa5,0x56,0x2d,0x3e, 0xa1,0x4c,0x95,0x12, 0xd5,0x3c,0xcf,0xc2, 0xb9,0x43,0xa1,0x82, + 0x88,0x65,0x9e,0xe9, 0x82,0x27,0x8d,0x89, 0x07,0x80,0xb0,0x20, 0x76,0xcd,0x54,0x55, + 0x02,0x2a,0xb1,0xca, 0x17,0x04,0xb2,0xd5, 0x95,0x4c,0x27,0x1c, 0x70,0xe7,0x3d,0xc8, + 0x69,0xbf,0x04,0xeb, 0x5d,0x29,0xd4,0xd2, 0x02,0xd3,0x13,0x7d, 0xea,0x10,0xf4,0x55, + 0xd5,0x0d,0x99,0xec, 0xaa,0x7b,0xea,0xb5, 0x7e,0x89,0x96,0xa9, 0x80,0x5b,0xf2,0xcd, + 0x60,0xa2,0xab,0x7d, 0xc3,0xa5,0x66,0xaf, 0x6d,0xf4,0xe3,0x2f, 0x56,0xbc,0xfd,0x4a, + 0xc4,0x55,0x9d,0xa5, 0x77,0x0c,0x63,0x48, 0x4d,0x64,0xe0,0x53, 0xaa,0x71,0x1b,0xb7, + 0x51,0x39,0x3d,0x6d, 0x72,0x5f,0xc2,0xb2, 0xa7,0x5c,0x82,0x04, 0xb8,0x49,0x89,0xf5, + 0x9a,0x40,0x81,0x2e, 0x76,0xed,0xef,0x35, 0x8d,0x93,0x17,0x25, 0x89,0x23,0xb6,0x68, + 0x0e,0x3b,0x48,0x38, 0xec,0x48,0x04,0x2c, 0xb6,0x72,0x7b,0x21, 0xf2,0xd9,0x2f,0x79, + 0x15,0xfa,0x46,0x53, 0x2a,0xa9,0x52,0xe8, 0x77,0xa5,0xe1,0xf6, 0x47,0x39,0xd0,0xe8, + 0xc3,0x46,0x1e,0x89, 0xa0,0x88,0xdf,0xcb, 0xa4,0xb0,0xa9,0x8d, 0x28,0x08,0x95,0xb7, + 0xa6,0x00,0xa5,0x0b, 0x55,0xa3,0x68,0x90, 0xc0,0x52,0xbe,0x62, 0x7d,0xa3,0x2e,0xc3, + 0x90,0xe8,0xe3,0x90, 0x3d,0xac,0xa4,0xb1, 0x6f,0x1b,0x96,0x8e, 0xdb,0x5d,0x80,0xf3, + 0x8c,0xec,0x39,0x51, 0x7a,0xca,0x6a,0x8c, 0x78,0x8b,0x20,0x2a, 0x60,0xa8,0xae,0x43, + 0xc9,0x13,0x99,0x30, 0x90,0xd2,0x93,0x13, 0x69,0x36,0x0d,0x8d, 0xce,0x6b,0x0a,0x65, + 0x34,0x74,0x1a,0x11, 0xb7,0x75,0xca,0x39, 0x34,0xdc,0x4e,0x08, 0xc9,0x2b,0x26,0x2d, + 0xc3,0x06,0x12,0xf2, 0x49,0x74,0x57,0x73, 0x1a,0xcc,0x10,0x07, 0x7e,0xd2,0x3d,0x45, + 0x59,0xc2,0x5a,0x6c, 0xf0,0x1c,0x9b,0x68, 0x6e,0x83,0xc1,0xf0, 0xa1,0x1e,0x1b,0x49, + 0x7a,0x96,0x85,0xf0, 0x4d,0x21,0x60,0x62, 0x17,0x4d,0x82,0x47, 0x88,0xc1,0x2f,0x54, + 0xd0,0x0b,0xc5,0x68, 0x4b,0xe0,0xda,0x49, 0x7c,0x23,0x04,0x86, 0x7e,0x39,0x00,0x0d, + 0x01,0x90,0xa7,0xd0, 0xd4,0x54,0xd5,0x44, 0xab,0x81,0x58,0xae, 0x8a,0x6c,0x68,0xeb, + 0x54,0xd2,0x76,0x48, 0x02,0xba,0x12,0x2b, 0xfc,0xf4,0x01,0x61, 0x5c,0x82,0xe7,0x8c, + 0x0d,0x29,0x9e,0xb1, 0x88,0x39,0x4d,0x23, 0x85,0xd4,0x81,0x18, 0xd3,0x47,0x51,0x89, + 0x1d,0x46,0x24,0x1d, 0xa3,0x42,0x3c,0x56, 0x20,0x3d,0x6b,0x54, 0x57,0xc8,0x6a,0xaa, + 0xb8,0x76,0x80,0xe2, 0x1a,0x0d,0x1b,0x5c, 0x4a,0x56,0xcc,0xf1, 0x49,0x5c,0x5f,0xc9, + 0xd9,0x2c,0x7b,0xed, 0xca,0x57,0xbc,0x43, 0x4a,0xf8,0x68,0xee, 0x12,0x35,0x69,0x1d, + 0xcc,0x44,0x08,0xa7, 0x24,0x2c,0x11,0x62, 0x65,0x59,0x56,0x82, 0x22,0x1a,0xcd,0x6b, + 0xa0,0x35,0xda,0xfb, 0x0a,0x75,0x2c,0xf4, 0x1b,0x0a,0xfc,0xd3, 0xc1,0x5e,0xe2,0x26, + 0xc7,0xba,0xd9,0x5a, 0x6c,0xf6,0x9a,0x4d, 0x33,0xfa,0x90,0x20, 0x38,0x49,0xae,0x06, + 0x69,0x72,0xb1,0x30, 0x41,0xc2,0x95,0xd6, 0x3a,0x5d,0x17,0x69, 0xdd,0xea,0x34,0xda, + 0x77,0x20,0x49,0xf6, 0xd5,0xbb,0x55,0xec, 0x75,0x35,0xb8,0xdd, 0x57,0x6e,0xb0,0x4d, + 0xc4,0xf2,0x93,0x80, 0x05,0x5e,0x41,0xfe, 0x69,0x29,0x33,0x30, 0x78,0x63,0xa5,0x25, + 0x60,0x85,0x0c,0xb4, 0x6c,0xbc,0xc4,0xcc, 0xd4,0xdc,0x27,0xaa, 0x72,0x74,0x60,0x1a, + 0x08,0x00,0x49,0x4f, 0x4f,0x90,0x9c,0xa0, 0xa1,0xa2,0xf1,0x24, 0x80,0x6a,0x31,0x40, + 0x40,0x24,0x29,0x26, 0xa9,0x69,0xa9,0xea, 0x2a,0x5f,0x45,0xaa, 0x16,0x5e,0x66,0xae, + 0xb2,0xb6,0xba,0xbe, 0xc3,0xd7,0xec,0xb1, 0xb2,0xb3,0xa2,0xf6, 0xda,0x5a,0xdb,0x5b, + 0x91,0x30,0x0d,0xc7, 0x6c,0x03,0x5a,0xdc, 0xdd,0x5d,0xd9,0x5e, 0x5e,0xdf,0x5d,0xdf, + 0xfb,0xb0,0x30,0x70, 0xb0,0xf1,0x08,0xe2, 0xfb,0xf8,0x46,0x01, 0x80,0x71,0x87,0x04, + 0x61,0x00,0x20,0x04, 0x0d,0xb0,0xe2,0x23, 0xc0,0x38,0x29,0x58, 0xf9,0x19,0x2a,0x59, + 0x42,0x65,0xe6,0x66, 0xe1,0x71,0xb3,0xb9, 0x40,0x14,0x7e,0x7e, 0x82,0xd6,0x89,0x58, + 0x34,0xb3,0xf1,0xf4, 0xf5,0x09,0x42,0x1d, 0x51,0x72,0xf5,0xbe, 0x3a,0xfa,0x05,0x7b, + 0x02,0x7c,0xbe,0x7b, 0x25,0x9b,0x5b,0x1b, 0x64,0xba,0xe2,0x6e, 0x71,0xc3,0xbb,0xb3, + 0xbd,0xbf,0xc0,0x5f, 0xc2,0x9c,0x01,0xdd, 0x1b,0xcb,0xdb,0xeb, 0xbb,0xfc,0x0e,0x46, + 0x0e,0x0d,0x93,0xe0, 0xce,0x79,0x1c,0x8b, 0x4e,0x4e,0x16,0x1f, 0xd3,0x74,0x56,0xf7, + 0x1f,0x3d,0xc0,0xe0, 0xa4,0xee,0x4e,0xe9, 0x34,0xb7,0x2a,0x5d, 0x04,0x03,0xb8,0xc2, + 0x40,0x70,0xaa,0xb3, 0xac,0x8c,0xec,0xaf, 0xc5,0x4b,0x46,0x55, 0xc4,0xae,0xda,0x8a, + 0x01,0x94,0xb2,0xd6, 0xb3,0x9e,0xa7,0x19, 0x56,0x98,0x75,0x67, 0x19,0xc9,0x29,0x9c, + 0xad,0x2c,0x66,0x56, 0x08,0x25,0x4c,0x6a, 0xa5,0xdf,0x6b,0x42, 0x98,0x89,0x7c,0xd5, + 0x49,0x34,0x20,0x5a, 0x50,0x26,0x87,0x41, 0x81,0x7d,0x48,0x07, 0xb0,0x51,0x12,0x08, + 0x43,0x10,0xe2,0x05, 0xaa,0xcf,0xe2,0x62, 0x1b,0x14,0x44,0x05, 0x9e,0x5b,0x9d,0x1c, + 0x4c,0x34,0xac,0x79, 0xf8,0x31,0xc7,0xf2, 0x5d,0x88,0xb2,0xbe, 0x9f,0xab,0x81,0x4c, + 0xf7,0xde,0xfa,0x55, 0x9a,0xe0,0x18,0x36, 0x73,0x29,0x20,0xce, 0x6d,0x01,0xfc,0x8b, + 0x2c,0xb2,0xcb,0x2c, 0xb2,0xca,0xcc,0xb2, 0xcb,0x32,0x78,0x4d, 0x4c,0xb4,0xa9,0x4e, + 0x99,0x34,0xd2,0x03, 0x4d,0x2d,0x8c,0x69, 0xa6,0xb9,0x86,0x9a, 0x9f,0x6a,0x1b,0x4d, + 0x3a,0xe6,0xf1,0xf6, 0xdd,0x0f,0x2d,0x58, 0x21,0x09,0xc3,0x29, 0xc3,0x04,0x82,0x30, + 0x10,0xd6,0x42,0x8a, 0x7a,0x56,0x4f,0x9c, 0x4d,0x12,0x68,0x52, 0xec,0xe8,0x4e,0x1d, + 0xf9,0x56,0xf5,0xae, 0xc0,0xfa,0xeb,0xf3, 0xb6,0x99,0xf9,0xb0, 0xba,0x24,0xb8,0x5a, + 0x17,0x34,0x12,0x29, 0x8d,0x02,0x25,0x2a, 0x3a,0x4e,0x9c,0xe5, 0x55,0xc1,0x70,0x28, + 0xaa,0xb1,0x09,0x88, 0x95,0x06,0xd7,0xfb, 0x71,0x25,0x82,0x85, 0xad,0xaf,0x36,0x7a, + 0x83,0xbe,0xbf,0x48, 0xc3,0x1e,0xc5,0x5a, 0x46,0xac,0x91,0x55, 0xa4,0x6a,0x8d,0x38, + 0x97,0x22,0xa2,0xe6, 0xe6,0xc2,0x85,0xac, 0x8e,0x8b,0x90,0x55, 0x83,0x53,0x4f,0x46, + 0x91,0x52,0xc0,0xf3, 0x5a,0x12,0xcf,0x60, 0x5a,0xd0,0x96,0x8a, 0x62,0x33,0xef,0x41, + 0xd0,0x7a,0x84,0x34, 0x5c,0x04,0x21,0x45, 0x92,0x29,0x05,0xef, 0x10,0x21,0x6d,0xda, + 0x62,0x31,0x0a,0x08, 0xb1,0x28,0x81,0x2d, 0x16,0x4b,0x34,0x2f, 0x0c,0xd4,0xd7,0x6d, + 0x8e,0x05,0x03,0x6c, 0xa9,0xaa,0x08,0x25, 0x32,0x76,0xdb,0x30, 0xa0,0xd5,0xa2,0xf3, + 0xcb,0xd1,0x99,0xdb, 0x48,0xc7,0x5d,0xe4, 0x36,0x50,0xe5,0xf0, 0x2a,0xba,0x03,0x80, + 0x40,0x46,0x30,0x04, 0x43,0x14,0x8c,0x63, 0x4e,0x40,0xd8,0xb8, 0xa1,0x21,0x11,0xd2, + 0x86,0xe1,0xcc,0x8c, 0x1a,0xb5,0xeb,0x54, 0x55,0x5a,0x84,0x5e, 0x18,0x32,0xab,0x0a, + 0x95,0x96,0xdd,0x80, 0x17,0x82,0x99,0x0d, 0x2e,0xe0,0xe6,0x72, 0xd8,0x6b,0x84,0x91, + 0xb2,0xe7,0x4f,0x3c, 0x40,0x50,0x42,0x0f, 0xb8,0x73,0x04,0x77, 0x97,0x54,0x1e,0x55, + 0x84,0x56,0xc1,0xa6, 0xd1,0x48,0x0a,0x96, 0x70,0x06,0x24,0x12, 0xf1,0x28,0xf3,0x65, + 0x09,0xcd,0x6d,0xf7, 0x10,0xa5,0x5a,0xc5, 0xb0,0xe2,0xf2,0xf6, 0xb7,0xcb,0xe2,0x50, + 0x12,0x44,0xda,0x95, 0x0a,0xea,0x5c,0x51, 0x00,0x00,0x5f,0x56, 0xac,0xf3,0x07,0xef, + 0x59,0x37,0x41,0xef, 0x4d,0x1f,0xde,0xdf, 0x57,0x54,0x54,0x30, 0x69,0x36,0x17,0x41, + 0x50,0x1d,0x51,0xee, 0x4a,0x10,0xb7,0xec, 0xdb,0xa3,0xec,0xf8, 0x4a,0xcf,0x4f,0x4d, + 0x6c,0x96,0x1f,0x9f, 0xda,0x30,0x18,0x7d, 0x07,0xc9,0x91,0xcc, 0x34,0xaf,0x2b,0x72, + 0xb8,0x2f,0x8d,0x8b, 0x75,0xe5,0x38,0xa4, 0x19,0xcd,0x62,0xab, 0xf4,0xe5,0x5c,0xe7, + 0x80,0xee,0x5a,0x67, 0xb0,0x54,0x29,0xab, 0xae,0x21,0x26,0x31, 0x44,0xa1,0x57,0x0d, + 0x11,0x5e,0x15,0x29, 0xb4,0x13,0x68,0x9f, 0xa1,0x7b,0x16,0x76, 0x9e,0x49,0x61,0x6a, + 0xf1,0xc8,0x85,0x4e, 0xff,0x4c,0xc9,0x92, 0x4e,0x78,0x0c,0x4d, 0x2c,0x4d,0x18,0xb4, + 0x48,0xbb,0x17,0x44, 0x25,0x53,0x02,0xa6, 0x92,0xa9,0xf9,0xf7, 0xcf,0x5f,0xf9,0x5b, + 0xee,0x09,0x7d,0xe7, 0x66,0xc4,0x15,0xaa, 0x02,0xd5,0x93,0xaf, 0xd3,0xc2,0x8d,0x37, + 0x92,0x9c,0x90,0x42, 0x43,0x60,0x5a,0x86, 0x2c,0x94,0x41,0x43, 0x0c,0xac,0x11,0x26, + 0x01,0x36,0x19,0x2e, 0x66,0x82,0xd8,0x29, 0xa2,0xb6,0x0a,0x1a, 0x16,0xcb,0x09,0x34, + 0x04,0x98,0x85,0x26, 0x2b,0x69,0x0c,0x06, 0x16,0xb2,0xac,0xb9, 0x2f,0x68,0x55,0x42, + 0xcd,0x4d,0x33,0x20, 0xc3,0x6d,0x9e,0x29, 0x16,0x60,0x03,0x0b, 0xc1,0x18,0x21,0x12, + 0x68,0x58,0x58,0x29, 0xb0,0x09,0x30,0x58, 0xda,0xfd,0x7c,0x58, 0xe5,0x4b,0x48,0xa5, + 0xa5,0x4b,0x41,0x26, 0x89,0x34,0xa4,0xf5, 0x28,0xdc,0x7a,0xc3, 0x2f,0x8c,0x5e,0xa6, + 0x9e,0x65,0xe9,0xac, 0x99,0xda,0x38,0xd6, 0x6d,0x1a,0x4a,0xb3, 0x9e,0xb4,0xf2,0xe5, + 0xd4,0x78,0x15,0x6c, 0x9b,0x93,0x4b,0x41, 0x92,0x94,0x16,0x5e, 0xae,0x24,0xa8,0xa2, + 0x22,0x2d,0x9d,0x6a, 0x62,0x98,0xe8,0x6d, 0xf1,0x19,0x0d,0xba, 0x2b,0x55,0xd6,0x6c, + 0x64,0xa6,0xcd,0x78, 0xe1,0xa3,0x48,0x42, 0x6c,0x4a,0xf4,0xa4, 0x29,0x03,0x18,0x4a, + 0x4c,0x6d,0xb3,0x3f, 0x57,0x1e,0x29,0xd0, 0xc5,0x51,0xc8,0x95, 0xd5,0xe6,0x32,0x1f, + 0x68,0x17,0x60,0xaa, 0x25,0x20,0xa0,0x56, 0xe5,0xef,0x77,0x6f, 0x59,0xbb,0x6e,0xad, + 0xda,0x55,0xb7,0x5b, 0xee,0x20,0xd0,0x79, 0xc2,0x9d,0x34,0x32, 0xb2,0xaa,0xa8,0x14, + 0xa5,0x24,0x90,0x09, 0x35,0x5b,0xd9,0xb7, 0x7a,0x3c,0x5d,0xa0, 0xbc,0xa2,0x57,0x64, + 0x00,0x32,0x5d,0xdf, 0x78,0x7f,0xc2,0x12, 0x3a,0x07,0xbf,0x59, 0x36,0x01,0x88,0xa2, + 0x8b,0x86,0x37,0x9f, 0x86,0xc7,0x86,0xa7, 0xec,0xb4,0x3f,0xc6, 0xff,0x33,0x0c,0x3c, + 0xfe,0xc7,0xc8,0xca, 0x22,0x19,0xcf,0xda, 0x92,0x32,0x5f,0xd9, 0x38,0x18,0xd8,0xe2, + 0x12,0x49,0x14,0x6b, 0x11,0xc7,0x22,0x95, 0x24,0x46,0x8a,0x29, 0x0a,0x44,0xd4,0x30, + 0x12,0x91,0xa5,0x68, 0x48,0x24,0xa6,0x80, 0xc8,0x59,0x13,0xab, 0x22,0x14,0xd9,0x0b, + 0x1b,0x9c,0x3c,0x21, 0x6f,0xc1,0x04,0x30, 0x87,0x97,0x01,0x40, 0x96,0x00,0x66,0x90, + 0x33,0x21,0x31,0xe2, 0x4b,0x29,0xa1,0x95, 0xda,0xe7,0x22,0x52, 0x22,0xa0,0x54,0xb4, + 0x8a,0xa3,0xa2,0x56, 0xd5,0x35,0x42,0x50, 0xe1,0xef,0x54,0x01, 0x4b,0x49,0x12,0x08, + 0xa0,0x90,0x28,0x62, 0x1b,0x40,0x36,0x80, 0xa7,0x52,0x75,0x63, 0x94,0xef,0xd1,0x43, + 0x73,0x28,0x94,0xa7, 0x4d,0x4d,0x55,0x2d, 0x14,0xa5,0x50,0xa5, 0x0b,0x54,0xa5,0x0a, + 0x0b,0x54,0xeb,0x5a, 0xb9,0x2c,0x29,0x9a, 0xda,0xfd,0xb7,0x89, 0x9b,0xca,0xd1,0x7f, + 0x5c,0xa6,0xec,0xc1, 0x98,0xaa,0x51,0x6a, 0x95,0xdb,0xbe,0x05, 0x05,0x9a,0xb3,0x92, + 0x65,0x78,0xf9,0x76, 0x2c,0xda,0xd8,0x56, 0x4e,0x3a,0xa9,0x24, 0x92,0x40,0x80,0x12, + 0x8d,0xcf,0x14,0xd3, 0xfc,0xe8,0x9b,0x33, 0x33,0x51,0x40,0x02, 0x00,0x6e,0xe1,0x08, + 0xf8,0x75,0x1f,0xe8, 0x28,0xa8,0x93,0x70, 0x07,0x14,0x5f,0x42, 0xbe,0xa0,0xbe,0x3e, + 0x35,0x0a,0xa2,0x43, 0x8b,0x09,0xe8,0x87, 0x4b,0x91,0xcf,0xeb, 0xa1,0x08,0x60,0xa4, + 0x41,0x54,0x18,0x02, 0x55,0x08,0x32,0x30, 0x01,0x99,0x02,0x1c, 0x3d,0x50,0xb8,0x3d, + 0xb6,0xd7,0xd7,0x3e, 0xcd,0xf9,0x9f,0x37, 0x61,0x63,0x61,0xba, 0x19,0xb6,0x0e,0xb5, + 0x7f,0x63,0xab,0xcb, 0x17,0x1f,0x1a,0x3b, 0x61,0x6f,0x6b,0xb6, 0x43,0x63,0x94,0xc6, + 0xe8,0x7a,0x89,0x89, 0x88,0x2e,0x53,0x80, 0xa3,0x10,0xf9,0xd4, 0xa6,0x67,0x2b,0x42, + 0xec,0x74,0x18,0xb4, 0x10,0x42,0x10,0x56, 0x4f,0x6d,0xb5,0x7e, 0x2b,0x9b,0xc9,0x50, + 0xc4,0x1c,0x47,0x4d, 0x8a,0xbd,0x90,0x08, 0xbc,0x8e,0x96,0x0b, 0x07,0xa3,0x6e,0xf6, + 0xd5,0xbe,0xde,0x05, 0xab,0x6b,0x87,0xeb, 0x96,0x08,0x21,0x3c, 0x32,0xe3,0x74,0xe2, + 0x7c,0xf7,0x47,0xb9, 0x3d,0xcc,0xa4,0x60, 0xe7,0xc0,0xef,0x47, 0x09,0xf3,0xdb,0x96, + 0xc1,0x98,0xc7,0x66, 0xc9,0xf1,0x8e,0xec, 0xf3,0x67,0xe2,0x1d, 0x51,0xef,0x8f,0x70, + 0xbd,0x5e,0x5b,0x94, 0xd7,0xbd,0x71,0x33, 0xbc,0x91,0xd1,0x9e, 0xf0,0xf0,0xcf,0x56, + 0x73,0x93,0x05,0x49, 0x4c,0x67,0x36,0x39, 0x91,0xbc,0x6e,0x58, 0x6d,0xa3,0x79,0x80, + 0x85,0xf8,0xdd,0x50, 0xf9,0x86,0x70,0x32, 0x94,0x80,0x8b,0x44, 0xcb,0x4c,0x7c,0xc8, + 0x71,0x98,0xb4,0xbf, 0x0d,0xa4,0x6a,0xc2, 0xd5,0xb6,0xcb,0x6d, 0xab,0x13,0xcb,0x86, + 0x3c,0xd8,0x1b,0xd3, 0xc8,0xd5,0xc7,0x0c, 0xe0,0xf3,0x98,0x0c, 0x51,0xb0,0x49,0xe8, + 0x94,0x01,0x0f,0x82, 0x10,0xfc,0x18,0x11, 0x02,0x77,0x73,0x3d, 0x3c,0xce,0xef,0x39, + 0x1b,0x37,0x84,0xfe, 0x33,0xf0,0xde,0xf8, 0x39,0xe1,0xdb,0xe1, 0x33,0xc6,0x79,0xdb, + 0x1f,0xe9,0x6c,0xc5, 0xe3,0xf2,0xa0,0x47, 0xae,0xfb,0x9e,0xed, 0x69,0x10,0x3d,0x4d, + 0xd6,0xd1,0xdf,0xa0, 0x93,0x2c,0x10,0x70, 0x21,0x20,0x66,0x1f, 0x48,0x72,0x19,0xba, + 0xcb,0x1f,0xc5,0xed, 0xbf,0x62,0x7d,0x1d, 0x73,0xdb,0x8a,0xf2, 0xc2,0x0c,0xcf,0x8a, + 0xe6,0xd8,0x23,0xb3, 0xf7,0x13,0x0b,0x20, 0x57,0x8b,0x89,0x23, 0x95,0x69,0xa2,0xa9, + 0xbe,0x38,0xe7,0xce, 0x23,0xdf,0x70,0xfd, 0x88,0xfb,0xf4,0xdf, 0x9c,0x1d,0xeb,0x6d, + 0xf1,0xe0,0x36,0xbd, 0x3e,0x3a,0x9c,0x84, 0xdf,0x9e,0xfc,0xea, 0x0f,0x9a,0x3d,0x91, + 0xf4,0x63,0x83,0x90, 0x82,0x44,0x56,0x6d, 0xcb,0x6a,0x49,0xdc, 0x27,0x31,0x28,0x9e, + 0xf2,0xc0,0xc5,0xa5, 0xb5,0x2d,0xc4,0xeb, 0x9d,0x82,0xdb,0x3e, 0xf8,0xd7,0x3c,0xfc, + 0x93,0x8c,0xcb,0x80, 0x5b,0x22,0xd4,0x64, 0x8c,0x18,0x6c,0x43, 0x30,0x0c,0x4f,0x84, + 0xd1,0x82,0x01,0x24, 0x32,0x62,0x90,0x79, 0x73,0xdb,0x3a,0x18, 0xce,0xa4,0x6b,0xf1, + 0x5a,0xd5,0x88,0x0e, 0x26,0x3e,0x8b,0x88, 0xfb,0xae,0x78,0xeb, 0x3c,0x84,0x4d,0xbc, + 0xe0,0x22,0x89,0xb8, 0x37,0x83,0x2e,0x52, 0x06,0x44,0x66,0xac, 0xed,0x36,0x74,0x90, + 0x89,0x5b,0x65,0x17, 0x70,0x57,0xf9,0x3a, 0x7c,0xaa,0xe7,0x2c, 0x6c,0x04,0x02,0xb2, + 0x02,0x48,0x0c,0xd8, 0xdb,0x47,0xb6,0x02, 0xde,0x06,0x0a,0x8a, 0x11,0x10,0xc1,0x95, + 0x54,0x48,0x3a,0x01, 0xf4,0xc7,0xbc,0xcc, 0xa3,0xdd,0xb3,0xe1, 0x34,0x02,0xa3,0xfe, + 0x6d,0xf3,0x55,0x6b, 0x13,0xc0,0x36,0x18, 0x97,0x17,0x2b,0xa8, 0x14,0x4c,0xf7,0xc6, + 0x76,0xe5,0x72,0xf9, 0x13,0xae,0xf6,0xb7, 0x3f,0xe2,0xc5,0xd0, 0x18,0xff,0xe5,0xdf, + 0x49,0x89,0x83,0x10, 0xa0,0x6e,0xe3,0x72, 0x37,0x46,0x08,0x52, 0xc8,0x03,0x98,0x02, + 0x96,0x60,0x9c,0x78, 0x08,0x4d,0x62,0xe3, 0x1c,0x4b,0x5d,0x24, 0x92,0x49,0x02,0x21, + 0x26,0xb0,0x5a,0xda, 0x9d,0x83,0x5d,0x34, 0x8e,0x1c,0xb0,0x58, 0xcf,0xdf,0xab,0xb4, + 0x44,0x8c,0x15,0xc2, 0x5a,0xd0,0x91,0x32, 0xfd,0x5a,0x37,0x99, 0xe0,0xdf,0x0a,0xc5, + 0x30,0x8e,0x23,0xd0, 0x0b,0xd1,0x85,0xc6, 0x48,0x64,0x98,0xb3, 0x56,0xba,0xd6,0x95, + 0xb6,0x9e,0xd4,0x02, 0x60,0xb7,0xe4,0x67, 0x9c,0x73,0xe3,0x5d, 0x0e,0x5c,0xc3,0x47, + 0x98,0xe2,0x23,0xa3, 0x55,0x54,0x65,0xa0, 0xb6,0xc1,0xc2,0xe4, 0x8b,0x09,0x84,0x57, + 0xca,0xbc,0x61,0x2c, 0xe2,0xc2,0xa5,0xf7, 0xa4,0x13,0x31,0xde, 0xa8,0xbc,0x5f,0x0b, + 0x49,0xd8,0x5c,0x45, 0x04,0xa5,0x29,0x19, 0xe1,0x49,0x98,0xcf, 0x28,0xcb,0x26,0x5b, + 0x51,0x68,0xa8,0x14, 0x06,0x46,0x6a,0xea, 0x6a,0xe9,0xeb,0x9c, 0xab,0x35,0xa5,0x8c, + 0x76,0x66,0x89,0xd1, 0x08,0xa6,0x92,0x0a, 0x5d,0x34,0x94,0xdb, 0x3a,0xf4,0x40,0xc2, + 0x52,0x58,0x30,0xa0, 0x22,0xb1,0xab,0x0d, 0xa2,0xa2,0xd2,0x48, 0x61,0x60,0xd3,0x12, + 0x23,0xe4,0x89,0x16, 0xab,0xaf,0x53,0x48, 0x65,0x15,0x62,0xb4, 0xa8,0xcf,0x0d,0x55, + 0xf2,0x63,0x63,0x65, 0xc2,0x66,0x52,0x02, 0xb0,0x91,0x33,0x50, 0xc0,0x6c,0x17,0x20, + 0xbb,0xe4,0x7d,0x9c, 0x69,0x96,0xe3,0xd9, 0x87,0xaf,0x12,0xc2, 0xa7,0x39,0xcc,0x9a, + 0x82,0x6a,0x5a,0x50, 0x32,0x64,0xc9,0x9d, 0x34,0xd3,0x9d,0x15, 0x0d,0x8c,0xce,0x4b, + 0x38,0x4c,0x34,0x4c, 0xc7,0xb8,0x06,0x95, 0xe0,0x25,0x7a,0x58, 0x9b,0x64,0x50,0x03, + 0x0a,0x82,0x41,0x36, 0x68,0x06,0x00,0xbe, 0x17,0xc2,0xf9,0xa4, 0x6d,0x13,0x0a,0xcf, + 0x6c,0x5a,0x52,0xbb, 0xb2,0x28,0x2f,0x8a, 0xa2,0xa1,0x10,0x64, 0x2e,0x30,0x83,0x11, + 0x59,0xe4,0x18,0xea, 0x0d,0x9b,0x4b,0xc9, 0x23,0x63,0xd6,0xf4, 0x6a,0x0d,0xac,0x97, + 0x37,0x80,0xa9,0x70, 0x98,0x3d,0xbb,0xc2, 0xf2,0xba,0xee,0x08, 0xa9,0x37,0xc6,0xc0, + 0x0c,0x55,0xaf,0x61, 0x4f,0x91,0xc4,0x3e, 0xa3,0x26,0x37,0xff, 0x1d,0xc5,0xfb,0x46, + 0x2f,0x69,0xd4,0xc2, 0x7c,0xb0,0x81,0x80, 0x66,0xd8,0x31,0x8b, 0x06,0x46,0xd7,0x20, + 0x67,0xf0,0xf4,0xef, 0x88,0xd0,0x0e,0x45, 0x11,0x03,0x6c,0x54, 0x9e,0xe3,0xaf,0xf2, + 0x74,0x37,0x83,0xc0, 0xf6,0x45,0xee,0x64, 0xc8,0x72,0xf6,0xea, 0x37,0x3d,0x1d,0x18, + 0x47,0x12,0x8d,0xbd, 0x8e,0x38,0xb2,0x22, 0xae,0x40,0x52,0x70, 0xd2,0x61,0xeb,0xdf, + 0x81,0x96,0x0f,0x6f, 0x97,0xda,0xcf,0xc2, 0xe0,0x7e,0xa7,0x71, 0xdc,0xf8,0xda,0x51, + 0x8b,0x7d,0xbe,0x1f, 0x08,0x20,0x0c,0xa4, 0x1b,0x82,0xc7,0x08, 0xda,0x3c,0xef,0x81, + 0xeb,0xff,0xf3,0xf2, 0x29,0x0a,0x6b,0x1b, 0x13,0x06,0x40,0xc2, 0x02,0xd1,0x59,0x6f, + 0x7b,0xd7,0x6b,0x13, 0xf3,0xba,0x1e,0xba, 0x8a,0x83,0x9f,0x87, 0x17,0x97,0x95,0x70, + 0x10,0xac,0x31,0xe6, 0xc5,0x82,0x0c,0x6c, 0xe3,0xca,0x21,0xd2, 0x54,0x92,0xdf,0x92, + 0x46,0xe5,0xa4,0x24, 0x19,0x83,0x70,0x9f, 0xf4,0xcd,0xd8,0x70, 0x30,0x06,0x01,0x10, + 0x11,0x31,0xcf,0x8d, 0xf5,0x85,0x8c,0xa0, 0xcd,0xa5,0x23,0xca, 0xc1,0xc3,0x2c,0x8e, + 0xc3,0x93,0xaf,0x97, 0xed,0x38,0x39,0x00, 0x88,0x0f,0x38,0x93, 0x60,0xc1,0x0b,0x20, + 0x5f,0xf0,0x56,0xd8, 0x38,0xaa,0xd9,0xbd, 0xbd,0xd6,0x6b,0x05, 0x3a,0x4c,0xdf,0xae, + 0x49,0xe2,0x6f,0xa2, 0x4f,0x8c,0xd6,0x24, 0xd1,0x1a,0x16,0x26, 0x89,0x51,0x9d,0xc3, + 0x6f,0xc8,0xba,0xc5, 0x59,0xc6,0x48,0x60, 0x24,0x04,0x42,0xf0, 0xb8,0xbc,0x85,0x58, + 0xdb,0x10,0x53,0x1c, 0x40,0xb1,0x8e,0x60, 0xba,0x08,0x2c,0x0a, 0x8b,0xca,0x1a,0x1b, + 0x19,0x49,0x55,0x94, 0x01,0x74,0x91,0x72, 0xf8,0x02,0xf0,0x75, 0x26,0x4c,0xb4,0x82, + 0xd1,0x54,0x2d,0xf9, 0xd9,0xc9,0xd0,0x40, 0x24,0x64,0x29,0x0d, 0x65,0x21,0x65,0xb0, + 0x2b,0x37,0xaf,0x9d, 0xf0,0x16,0xa1,0x67, 0x1c,0x80,0xf1,0xc5, 0xbd,0x23,0x38,0x03, + 0x30,0x5b,0x83,0x09, 0x88,0x02,0xf8,0xb4, 0x40,0x91,0x9e,0x76, 0xe5,0xc1,0xe0,0xeb, + 0x53,0x73,0xab,0x16, 0x58,0x64,0x75,0x08, 0x8f,0x18,0x3a,0x90, 0x1a,0x28,0xfc,0x6e, + 0x27,0x6f,0xff,0xd3, 0x16,0xb9,0x78,0x0a, 0xc3,0x60,0x59,0xdd, 0x5c,0xfd,0x97,0xdf, + 0xb8,0x71,0xb5,0xf7, 0x1b,0x1c,0xc3,0xde, 0x52,0xaf,0x9b,0xc6, 0x79,0x69,0x69,0xb4, + 0x72,0x91,0xe8,0x7a, 0x5d,0x6e,0xcf,0x3b, 0x4a,0xa2,0xe7,0xc0, 0x6c,0x5b,0x83,0x1e, + 0x36,0x9b,0xf4,0x04, 0xa4,0x02,0x08,0x7c, 0x91,0x38,0x26,0xa7, 0xf2,0x98,0x78,0xc0, + 0x20,0x85,0x95,0x54, 0x88,0x67,0x60,0x49, 0x63,0x97,0x76,0x51, 0x81,0xe0,0x1c,0x35, + 0xe1,0x50,0x6f,0xff, 0x84,0xa9,0xe6,0x3f, 0xed,0x7e,0xed,0xfb, 0x47,0xb9,0xd6,0x83, + 0xc3,0xb7,0x10,0xb0, 0x99,0x83,0x4d,0x70, 0x46,0x6b,0xc1,0xd8, 0x1b,0x67,0xb5,0x3b, + 0x11,0x72,0x4d,0x7a, 0x44,0x69,0xd4,0x36, 0x31,0x81,0x69,0xec, 0x7b,0x2b,0xfa,0xa5, + 0x27,0x1b,0xcf,0xe6, 0xf9,0x3d,0xbd,0xd7, 0x17,0x1e,0x18,0x56, 0x12,0x0c,0x47,0xc5, + 0x08,0xf7,0xb8,0x6a, 0x46,0x03,0x38,0x20, 0x32,0x1c,0x1b,0x37, 0x22,0x5c,0xce,0xd6, + 0x72,0x28,0x9d,0x14, 0x50,0x69,0x52,0x4c, 0x38,0x7c,0x66,0xe4, 0x24,0x64,0x68,0x11, + 0x05,0x61,0x9b,0xbd, 0xd7,0x03,0x54,0x2b, 0x38,0xd4,0x87,0x18, 0xf5,0x67,0x1b,0x8a, + 0x18,0x8c,0x62,0xd2, 0x2a,0x26,0x40,0x62, 0xa8,0x2c,0x3b,0x53, 0xa4,0xcb,0x08,0x49, + 0x09,0x82,0xd5,0x26, 0x35,0xd2,0x93,0x70, 0xb2,0x86,0xe2,0xa0, 0x34,0x71,0x8a,0xc2, + 0xe5,0x2d,0xc1,0xb3, 0x0a,0xe7,0x92,0x34, 0x92,0x2d,0x09,0x86, 0x90,0xc2,0x05,0x7c, + 0x91,0x7f,0x29,0x8c, 0x0e,0x78,0x74,0x9c, 0xf4,0x71,0x06,0x23, 0x44,0xd8,0x0e,0x0f, + 0x62,0x77,0x7e,0x9a, 0x39,0x74,0x6c,0x19, 0x4d,0xf6,0x30,0x46, 0xbb,0x12,0xfb,0x5a, + 0x40,0xd6,0xdf,0xa6, 0x37,0x4c,0x08,0x20, 0x61,0xbe,0x36,0x00, 0xa0,0x0c,0xae,0x5b, + 0x13,0x98,0xeb,0xec, 0xd0,0x08,0x8c,0x03, 0xe1,0x95,0x8d,0x50, 0x0a,0x93,0x8b,0xb8, + 0xfc,0xf4,0xbe,0x8a, 0x9e,0xc7,0xd2,0xc0, 0x66,0x04,0xce,0x27, 0x31,0x8d,0xf5,0x43, + 0xd9,0x37,0xce,0xec, 0x38,0x05,0xa5,0xec, 0xad,0xb3,0x53,0x74, 0x52,0x3a,0xde,0x8f, + 0x6c,0x37,0x86,0x1c, 0x55,0x8d,0x95,0xc4, 0x0c,0x69,0xc4,0x43, 0x07,0xb7,0xdd,0xc8, + 0x16,0xb8,0xc2,0x66, 0xa9,0x84,0xde,0x10, 0x32,0xb8,0x41,0x42, 0xf1,0xc8,0x11,0x88, + 0x2a,0x4b,0x60,0xd3, 0xa4,0x24,0xb8,0x37, 0xa0,0x88,0x81,0xb4, 0x64,0xd0,0xde,0x0b, + 0xe6,0x03,0xbc,0xce, 0xb4,0xa0,0x55,0x15, 0x9b,0x75,0xe8,0x6e, 0xbd,0xdb,0xff,0x2b, + 0x66,0x3c,0x8b,0x13, 0x1d,0xf8,0x4e,0x08, 0x40,0x35,0x01,0x22, 0x42,0x31,0xa3,0x1b, + 0x0e,0x69,0x88,0x59, 0xe3,0x31,0x95,0x01, 0xa5,0x8f,0x1d,0xb0, 0xe3,0x4a,0x8b,0x82, + 0xb2,0x82,0xb5,0x57, 0xd0,0x66,0xf1,0x1f, 0xd3,0xec,0xe6,0xf8, 0xde,0xc0,0xbe,0x5a, + 0x2b,0x81,0x5f,0x41, 0xa6,0xc5,0x05,0xc1, 0xe9,0xec,0x80,0xd4, 0xdc,0xf4,0x47,0x3b, + 0x7e,0xdb,0x36,0xb5, 0x84,0x5a,0x22,0xa2, 0xb2,0x39,0x24,0x1c, 0xa6,0x63,0x3c,0x8f, + 0x49,0x58,0x15,0x1b, 0xf1,0x0c,0x03,0x3b, 0x25,0x5c,0x99,0x54, 0x96,0xb4,0xab,0x49, + 0x68,0x46,0xd1,0x56, 0xa2,0x23,0x62,0xd0, 0xb7,0x1f,0xe9,0xa8, 0xb8,0x33,0xe5,0xc4, + 0x15,0x53,0x04,0x41, 0xda,0x14,0x03,0x26, 0x50,0x15,0xa2,0x86, 0x31,0x4a,0x96,0xe0, + 0x16,0x40,0xc0,0x40, 0x94,0xe9,0x57,0xa9, 0x61,0x4a,0x80,0xa5, 0x62,0x11,0x08,0x62, + 0x2f,0x16,0x2c,0x83, 0x78,0x03,0x41,0xe9, 0x60,0x94,0x84,0x55, 0x42,0x54,0x0c,0x4d, + 0x0b,0x68,0x56,0x1e, 0xcb,0x47,0xd9,0xbc, 0xcf,0x42,0xf1,0xdb, 0x86,0x12,0x06,0xcb, + 0x84,0x30,0x6c,0xf5, 0x00,0x5c,0x05,0xc1, 0x9c,0x60,0xd2,0x94, 0x41,0xe8,0xbb,0x57, + 0x41,0x29,0xd1,0x3a, 0x1a,0x9a,0xcf,0x91, 0xf0,0xe5,0x24,0x15, 0x14,0x8c,0xa8,0x64, + 0xc2,0x65,0x40,0xc7, 0x40,0xc9,0x0e,0xf7, 0x6d,0xdf,0xf8,0x47, 0xb1,0xb4,0xd1,0x12, + 0xb0,0xa4,0x5c,0x33, 0xa4,0x30,0xde,0x18, 0x5a,0x14,0x07,0xba, 0x3c,0x4a,0x8f,0xda, + 0xeb,0xb9,0xa1,0xbb, 0xe9,0x5b,0x61,0xc3, 0xdf,0xb7,0x99,0x23, 0x04,0xba,0x0d,0x3a, + 0x0e,0xe7,0xf4,0x05, 0xe9,0xbd,0x53,0x6c, 0x09,0x06,0xea,0xc8, 0x2c,0xb7,0xa5,0xcd, + 0x88,0x94,0xb3,0x10, 0x4d,0xb6,0x99,0x75, 0x06,0x23,0x58,0xd7, 0x32,0x06,0x10,0x81, + 0x13,0xdc,0xe2,0x05, 0xe1,0x4c,0xd9,0x0e, 0x28,0xcb,0x80,0xbe, 0x83,0x00,0x99,0x41, + 0xd3,0x2e,0x47,0x38, 0x26,0x5c,0x96,0xa1, 0xa4,0xc3,0x64,0x26, 0xb4,0xc1,0x73,0x61, + 0x24,0x56,0x66,0xca, 0x39,0x18,0xcf,0x72, 0x2d,0x04,0x05,0xf0, 0xe4,0x00,0xb8,0x98, + 0xfd,0xcb,0xc0,0xc7, 0x13,0x12,0xdd,0x6a, 0x61,0x30,0x8a,0x04, 0x8c,0xc0,0x72,0x0e, + 0x09,0xe7,0xf3,0x7c, 0x9e,0x9c,0xfa,0x0f, 0x9b,0x9c,0x2b,0xe5, 0xa7,0x95,0xcf,0xb7, + 0xcb,0x99,0xee,0xe1, 0xdb,0x9d,0xa9,0xc2, 0x80,0xf8,0x03,0x1c, 0x9d,0x0e,0x35,0xe9, + 0x09,0xab,0xac,0x4a, 0xc1,0xe5,0x2e,0x1c, 0x7c,0x70,0x8d,0x0b, 0x8c,0x90,0x7e,0x43, + 0x0a,0x3e,0x50,0x62, 0xe4,0xea,0xf1,0xee, 0xa5,0xf2,0xd8,0x8f, 0x75,0x95,0xa1,0x33, + 0x68,0x99,0x92,0x54, 0x8b,0x2b,0x17,0x17, 0x2e,0x16,0xe4,0xaa, 0x8d,0x03,0x13,0x3b, + 0x84,0x2c,0x6b,0x06, 0x80,0xe5,0x54,0x13, 0x34,0x54,0x06,0x5a, 0xa5,0x0d,0x8c,0x24, + 0x0d,0x2e,0xb8,0xa5, 0x20,0x6c,0x63,0x69, 0x88,0xac,0x26,0x29, 0xd2,0x15,0x9c,0xc0, + 0xb0,0xb0,0x39,0x47, 0x57,0x5f,0x7c,0x15, 0xda,0x04,0x16,0xc1, 0xd8,0x97,0x4a,0x0e, + 0x59,0x79,0x17,0x8b, 0x8a,0xce,0x60,0x0b, 0x54,0xd0,0xbc,0x74, 0x98,0x17,0xc5,0x94, + 0x66,0x50,0x91,0x68, 0x48,0xd0,0xb7,0x97, 0xb6,0x43,0x89,0x66, 0x16,0x89,0x30,0xe7, + 0x52,0x1c,0xe2,0x59, 0xf7,0x9b,0x63,0x09, 0x9d,0x6d,0x43,0x85, 0xd6,0xeb,0x58,0x52, + 0xab,0x17,0xba,0xe0, 0x12,0x32,0x0f,0x64, 0xfc,0x7e,0x06,0x30, 0xd9,0x0a,0x06,0xe1, + 0xd8,0x22,0xea,0xc4, 0xb0,0x40,0xe1,0x3f, 0x08,0x1f,0x12,0xd2, 0x21,0x50,0xa0,0x09, + 0xa3,0xd4,0x52,0x5d, 0xea,0x60,0xf0,0xea, 0xe2,0x41,0x83,0x1a, 0x5c,0x7a,0x19,0x32, + 0x9d,0x00,0xcc,0x83, 0xa6,0x50,0x17,0xb9, 0x70,0x53,0xa8,0x52, 0x69,0x13,0x33,0x08, + 0x99,0xba,0x1a,0xc6, 0x9d,0x4d,0x78,0xdc, 0x5e,0x0c,0x97,0x16, 0xc3,0xdf,0xba,0x74, + 0xf1,0x48,0xb2,0x71, 0x29,0x4f,0x54,0xe2, 0xd0,0xaf,0xd0,0x3d, 0xa0,0x2b,0x2a,0x5c, + 0x03,0xfe,0xb3,0x52, 0xb0,0x01,0xcf,0x1a, 0x69,0x23,0x48,0xcb, 0x89,0xba,0x04,0x4c, + 0xa0,0xe4,0xe6,0x05, 0x05,0x19,0xe7,0x54, 0xb8,0x98,0x73,0x58, 0x88,0x65,0x34,0x8d, + 0x94,0xde,0x5b,0xa3, 0x4c,0xd3,0x02,0xf8, 0x65,0xc8,0xc6,0x37, 0x57,0x67,0x3a,0xce, + 0xbb,0x5f,0xf1,0x38, 0x13,0x28,0x2a,0x3b, 0xa2,0xe2,0x12,0x45, 0xf3,0x5f,0x8f,0xdd, + 0x3c,0x9c,0xf8,0x94, 0xa4,0x4b,0x63,0xc1, 0xfc,0x58,0xfc,0x1f, 0x8c,0xb0,0xaa,0xa3, + 0x4e,0x2c,0x36,0xc8, 0x35,0x04,0x64,0xc2, 0xcd,0x84,0x91,0xd8, 0x15,0x1e,0x31,0xda, + 0x0a,0xa0,0xbd,0xdf, 0x16,0x85,0xda,0xe5, 0x24,0xc3,0xbe,0x41, 0xd2,0xf9,0x80,0x2b, + 0xdc,0xbe,0xa2,0x21, 0x10,0x0d,0x56,0x85, 0xd5,0x18,0x0a,0x45, 0x81,0x84,0x83,0x18, + 0xca,0x00,0xa1,0x00, 0x88,0x52,0x02,0xa6, 0xd3,0x68,0x00,0x80, 0xcc,0x74,0x25,0x00, + 0x0b,0x03,0x23,0x9f, 0x68,0xd7,0xfa,0x02, 0xc8,0x96,0x78,0x28, 0x67,0x9f,0x93,0xf4, + 0x36,0x5d,0x66,0xa0, 0x2a,0x46,0x7b,0x83, 0xf6,0xff,0x47,0xf7, 0x39,0x06,0x90,0x1d, + 0xe6,0xcf,0x99,0x17, 0xf0,0x41,0x89,0x17, 0x86,0x1a,0x5a,0x73, 0x26,0x29,0xee,0x77, + 0x55,0x70,0xf2,0x08, 0xa5,0x25,0xa3,0x04, 0x65,0xc2,0x11,0xc5, 0x56,0xbb,0xb6,0x77, + 0xd2,0xd9,0x9c,0x2a, 0x27,0x2a,0x28,0x8a, 0x2c,0xb3,0x7e,0x12, 0x42,0xa8,0x61,0x41, + 0xc7,0x11,0x92,0x5e, 0x56,0x2c,0x59,0x01, 0x7d,0xad,0x99,0xa9, 0x1a,0x55,0x7d,0x9d, + 0x48,0xa8,0x2a,0xe4, 0xc8,0xaa,0xfa,0x30, 0xa0,0x8d,0x11,0xa2, 0x45,0x5c,0xe4,0xcb, + 0x6a,0xac,0xaa,0xb5, 0x4b,0x8c,0xc5,0x57, 0x39,0x41,0x75,0xa5, 0xa2,0xd0,0x2b,0xbd, + 0xc4,0x8c,0x8a,0xaa, 0xb7,0x48,0xae,0x78, 0x2a,0x9a,0x40,0x91, 0x55,0x55,0x55,0x55, + 0x55,0xc7,0xd9,0x6a, 0x8a,0xb5,0x90,0xcb, 0x04,0xc1,0xaa,0x3d, 0x48,0x14,0x21,0xbf, + 0xad,0x0a,0xaa,0xe7, 0x64,0x55,0x76,0x6a, 0x2a,0x20,0x46,0x45, 0x54,0xa2,0x97,0x1e, + 0x49,0x23,0x97,0x08, 0xa9,0x8f,0x25,0xa2, 0x54,0x68,0xa2,0x37, 0x36,0xb3,0x42,0x8c, + 0xd0,0xcb,0x9b,0x86, 0x49,0x25,0x49,0xaa, 0x96,0xb6,0x12,0x49, 0x30,0x92,0x4d,0x46, + 0x92,0x9a,0x44,0xa0, 0xba,0xeb,0x5d,0x26, 0x12,0x49,0xc8,0x05, 0xa5,0xa4,0x45,0x1b, + 0xe4,0xbe,0x49,0x09, 0x68,0xcb,0xa8,0xb3, 0x55,0x4c,0x94,0x10, 0x8c,0x90,0x24,0x92, + 0x46,0xe9,0x24,0x96, 0x94,0x32,0x37,0x46, 0x46,0x54,0x4a,0xa1, 0x55,0x5f,0x1e,0x45, + 0xaa,0x44,0x55,0x74, 0x92,0x48,0x0b,0xa4, 0xf5,0x90,0x01,0x64, 0x7e,0xf7,0x6c,0x2a, + 0xf7,0xff,0x17,0x72, 0x45,0x38,0x50,0x90, 0xae,0x04,0xda,0x11, + // 0x152c = 5420 data bytes (14% including 4 header bytes) +}; + +static BZ2Manager_t objflow_bin_mgr + = { objflow_bin_bz2, sizeof(objflow_bin_bz2), 0, 0 }; + +/////////////////////////////////////////////////////////////////////////////// + +static const u8 geohittableitem_bin_bz2[] = // GeoHitTableItem.bin +{ + // decompressed len: 0x2d6c = 11628 bytes + 0x00,0x00,0x2d,0x6c, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xf2,0xde, 0xe6,0xc5,0x00,0x06, + 0x03,0x7f,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xd0, 0x04,0x5e,0xee,0x75, 0xc2,0x69,0x6a,0x39, 0x1e,0x44,0x8e,0x49, + 0xea,0x1a,0x03,0x20, 0xd0,0x68,0x34,0x34, 0x06,0x40,0x00,0x03, 0x10,0x34,0x00,0x69, + 0xf9,0x28,0x0c,0x80, 0x06,0x80,0x00,0xc8, 0x61,0x34,0xc2,0x03, 0xd4,0xd0,0x00,0xc8, + 0x1a,0x03,0x4d,0x00, 0x00,0x01,0xa0,0x00, 0xc8,0x01,0xa6,0x43, 0x6c,0x4d,0x4f,0x53, + 0xfd,0x52,0x9f,0x9a, 0xa8,0x33,0xfc,0xaa, 0x62,0x05,0x6a,0x94, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x3d,0x40, 0xc8,0x06,0x80,0x0d, 0x07,0xa9,0xa0,0x00, 0x32,0x18,0x4c,0x65, + 0x3f,0x53,0xf5,0x4f, 0x54,0x68,0xd0,0x3f, 0xc5,0x29,0xa0,0x00, 0xcd,0x47,0xa8,0x3d, + 0x40,0x07,0xea,0x81, 0xa0,0x03,0xfd,0x2a, 0x0d,0x3d,0x4f,0x28, 0x06,0x9a,0x00,0x30, + 0x80,0x0f,0xfd,0x52, 0x9a,0x68,0x30,0x80, 0x0a,0x8d,0xea,0xaa, 0x68,0x30,0x8c,0x46, + 0x13,0x08,0x62,0x32, 0x68,0x60,0x26,0x4c, 0x10,0x0c,0x4c,0x9a, 0x64,0x68,0xc2,0x69, + 0x80,0x08,0xd1,0x82, 0x60,0x20,0x68,0x64, 0x30,0x9a,0x31,0x34, 0xd3,0x4d,0x1a,0x32, + 0x1a,0x62,0x62,0x62, 0x34,0x64,0xc4,0xc2, 0x1a,0x19,0x19,0x32, 0x64,0xc2,0x64,0xd3, + 0x26,0x08,0xc9,0x84, 0xc9,0x90,0x68,0xd0, 0x24,0xff,0xde,0xa5, 0x52,0x64,0x0c,0x20, + 0xd0,0xd0,0x01,0xa0, 0xc2,0x0d,0x1a,0x34, 0x1a,0x34,0x34,0x0c, 0x80,0xd1,0x84,0x64, + 0x03,0x10,0x06,0x10, 0xc4,0x68,0x34,0x0d, 0x00,0x06,0x80,0x69, 0xa0,0x00,0xd3,0x10, + 0xd0,0x03,0x40,0x00, 0xd1,0xa0,0x0c,0x8d, 0x34,0x68,0x19,0x00, 0x34,0x61,0x00,0x01, + 0x9a,0x92,0xa7,0xaa, 0x46,0x80,0x36,0x90, 0x32,0x03,0x43,0x13, 0x41,0xa6,0x9a,0x34, + 0xd1,0xea,0x00,0x34, 0x0d,0x34,0xc2,0x03, 0x20,0xd1,0x82,0x03, 0x26,0x40,0x3d,0x26, + 0x80,0x00,0x00,0x03, 0x43,0xd1,0xa2,0x31, 0x0d,0x0d,0x00,0x34, 0x06,0x86,0x4c,0x23, + 0x11,0xa6,0x80,0x33, 0x48,0xd1,0xa0,0x7a, 0x7a,0xa0,0x34,0xcf, 0xf5,0x4d,0x51,0xfa, + 0xa0,0xdb,0x49,0x42, 0x4d,0x09,0x83,0x63, 0x4c,0x04,0x02,0x68, 0x40,0x21,0xb1,0x03, + 0x69,0x9a,0x69,0x13, 0x94,0x14,0x94,0xd5, 0x15,0x75,0x4b,0x0b, 0x2b,0x4b,0x7a,0xbd, + 0x66,0xbb,0x5f,0xb0, 0xd8,0xec,0x97,0xd8, 0x18,0x76,0x8c,0x4c, 0x7b,0x5d,0xb6,0xdf, + 0x70,0xca,0xcc,0xce, 0xd0,0xd2,0xd6,0xd8, 0xda,0xdc,0xde,0xe0, 0xe2,0xe4,0xe6,0xe9, + 0xbb,0xde,0x3a,0xef, 0x60,0x60,0xa0,0xe1, 0x21,0x61,0xa1,0xd9, 0xb4,0xcd,0x29,0x10, + 0x58,0x95,0x73,0x79, 0xc8,0xac,0xee,0x7a, 0x2f,0x3f,0xa0,0xd0, 0xe8,0xb4,0x66,0x3a, + 0x1a,0xe9,0x23,0x34, 0xda,0x7d,0x46,0xa6, 0x66,0x6a,0x6e,0x73, 0xf1,0xf9,0xfd,0x7e, + 0xff,0x9f,0xdf,0xf6, 0x3f,0x27,0x94,0xca, 0xbf,0xc0,0x65,0xb2, 0xf0,0x30,0x50,0x70, + 0x99,0x98,0x58,0x76, 0x6d,0x14,0x88,0x2c, 0x4a,0xb1,0xb1,0xcc, 0x99,0x32,0xc3,0x3b, + 0xeb,0x75,0xfb,0x1d, 0x9e,0xd7,0x6f,0xb9, 0x23,0xdd,0x92,0xef, 0x77,0xfc,0x1e,0x1f, + 0x17,0x8f,0xc9,0xe5, 0xf3,0x79,0xe4,0xe5, 0x25,0x65,0xbf,0x53, 0x6c,0xd0,0x45,0x26, + 0x89,0xce,0x29,0x3a, 0x0d,0x7f,0x6a,0xac, 0x6f,0xe7,0xf7,0xfd, 0xff,0x9e,0x9f,0x12, + 0xa0,0x6c,0xdd,0xc5, 0x0e,0x27,0x9c,0x71, 0xc7,0x1c,0x71,0xc7, 0x73,0xcf,0x3c,0xf3, + 0xcf,0x3f,0xa0,0xc5, 0x8b,0x18,0xf7,0xe7, 0xe8,0xc4,0x21,0x08, 0x44,0x8b,0x54,0x21, + 0x07,0x39,0xdf,0x5f, 0x70,0x17,0xdb,0xe3, 0xe3,0xe3,0xdb,0xdb, 0x16,0x2c,0x63,0xc0, + 0x80,0x10,0x1c,0x62, 0x01,0x00,0x09,0x3a, 0x00,0xb5,0xb0,0x00, 0x60,0x81,0x31,0x8c, + 0x48,0x12,0x06,0x21, 0x34,0x21,0xc3,0x49, 0xb4,0xd4,0x0d,0xa4, 0xd3,0x70,0xdb,0x49, + 0x0d,0x36,0x36,0xe0, 0x69,0x82,0x1a,0x40, 0x81,0x34,0xdd,0xbb, 0x2f,0x98,0xf7,0xf3, + 0x39,0xac,0xdf,0xc1, 0xf0,0xe7,0x73,0xd9, 0xfc,0x36,0x1b,0x47, 0xa4,0xd2,0xd5,0xd5, + 0xd6,0x57,0xd7,0xd7, 0xd5,0x57,0x57,0x57, 0x72,0xfc,0x4d,0x87, 0xeb,0xf8,0x63,0x75, + 0xc4,0x93,0x4b,0x58, 0x1b,0x4b,0x69,0x6d, 0x21,0x26,0xd8,0xdb, 0x4a,0x12,0x6c,0x42, + 0x1b,0x6c,0x18,0x26, 0xd7,0xcb,0x74,0x86, 0xd2,0xfb,0xef,0x7f, 0x4f,0xd5,0xf5,0xfd, + 0x9a,0x3b,0x0d,0x27, 0xdb,0xf7,0x69,0x6c, 0x74,0xfe,0x66,0x27, 0x13,0x5b,0x5b,0x5b, + 0x5a,0xaa,0xaa,0x94, 0xa5,0x29,0x4a,0x52, 0x94,0xaa,0x28,0xa5, 0x74,0x00,0x84,0xf5, + 0xfb,0x7d,0xde,0xff, 0x87,0xc4,0x5e,0x7c, 0xa5,0xe2,0xda,0x43, 0x18,0xc6,0x31,0x8c, + 0xf5,0x4c,0xa1,0x18, 0xd7,0x30,0x20,0x10, 0x0c,0xc0,0x84,0x02, 0x10,0xc6,0x34,0xec, + 0xd8,0x33,0x1a,0x48, 0xef,0xe7,0x3d,0x48, 0xe7,0x3d,0x56,0xf6, 0x66,0xd4,0x90,0x21, + 0x08,0x00,0x46,0xcc, 0x00,0x84,0x20,0x36, 0x93,0x94,0x95,0x96, 0xf4,0x4d,0xb3,0x41, + 0x14,0x9a,0x27,0x38, 0xa5,0xd0,0x1a,0x84, 0x40,0x44,0x80,0x06, 0xb4,0x22,0xc2,0x30, + 0x00,0x2d,0x60,0x1b, 0x00,0x00,0x08,0x46, 0x4c,0x80,0x03,0x6a, 0x00,0x00,0x01,0xbb, + 0x07,0x8f,0x1a,0x88, 0xb7,0x8d,0x6e,0xdd, 0xd3,0xa7,0x4d,0xdd, 0x6c,0xc4,0x45,0x2e, + 0x1c,0x38,0x4a,0x52, 0x94,0xd4,0x13,0xae, 0x4a,0x53,0xba,0x4a, 0x52,0x22,0x22,0x22, + 0x22,0x22,0x22,0x22, 0x22,0x22,0x31,0xc2, 0x22,0x32,0xeb,0xae, 0xbc,0x56,0xd9,0x75, + 0xd7,0x5d,0x79,0x0e, 0x83,0xb6,0x6e,0xe4, 0x37,0xee,0xdc,0xac, 0xb2,0xcb,0x2c,0xb7, + 0x55,0xcb,0x9f,0x9c, 0xc7,0xd3,0xeb,0xf6, 0xfb,0xcc,0xcd,0x4d, 0xce,0x17,0xc1,0xb3, + 0x77,0x14,0x26,0x31, 0x8c,0x63,0x18,0xc6, 0x31,0x8c,0xb2,0xc9, 0x20,0x82,0xd2,0xe8, + 0xa2,0xb2,0x57,0xf4, 0xbe,0x49,0x24,0xaa, 0xa9,0xcc,0x4c,0x26, 0x9a,0x69,0xa6,0xaa, + 0xaa,0x28,0xa2,0x9f, 0x9e,0x9b,0x4d,0x4a, 0x95,0x2b,0x1b,0x1a, 0x5a,0x7a,0x55,0x29, + 0xd3,0xa7,0x4e,0x9d, 0x3e,0xae,0xca,0xca, 0xca,0xc1,0x26,0x93, 0xd5,0x36,0xd2,0x43, + 0x6d,0x27,0xaa,0x38, 0x61,0xa4,0xbd,0x72, 0xf6,0x0e,0x4b,0xd7, 0xae,0x5c,0xe4,0xc0, + 0xb1,0x02,0x22,0x22, 0x22,0x22,0x22,0x22, 0x22,0x22,0x2d,0x88, 0x88,0x88,0x88,0x88, + 0x88,0x88,0x88,0x88, 0xbf,0xe9,0xed,0xb3, 0xab,0x9c,0xa7,0x29, 0xca,0x72,0x99,0x32, + 0x74,0x4e,0x53,0x94, 0xe5,0x39,0x4e,0x53, 0x26,0x4c,0x74,0x09, 0x0c,0x60,0x98,0x26, + 0x02,0x13,0x48,0x12, 0x6f,0x74,0x12,0x84, 0x9b,0x13,0x55,0x8d, 0xb6,0x95,0x65,0x65, + 0xd6,0x13,0x4a,0xaa, 0xa9,0x34,0x93,0x74, 0x48,0x90,0x36,0x09, 0x83,0x06,0x81,0xa0, + 0x04,0xda,0x76,0xeb, 0x35,0x14,0x44,0xa5, 0x29,0x4a,0x52,0x94, 0x80,0x34,0xc2,0x18, + 0x43,0x00,0x28,0x34, 0x84,0x30,0x84,0x00, 0xa0,0x00,0x00,0x00, 0xd2,0x82,0x82,0x80, + 0x00,0x00,0x00,0x00, 0x04,0x00,0x00,0x00, 0x05,0x00,0x14,0x00, 0x00,0x00,0x00,0x50, + 0x01,0x41,0x40,0x05, 0x00,0xa5,0x29,0x4a, 0x69,0x84,0x21,0x0c, 0x6a,0x08,0x13,0x49, + 0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x84, 0x02,0x04,0x08,0x10, 0x20,0x40,0x81,0x02, + 0x04,0x08,0x10,0x20, 0x40,0x81,0x80,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x04,0x42,0x00,0x08, 0x00,0x00,0x00,0x00, 0x08,0x88,0x88,0x8a, + 0x00,0x30,0x80,0x00, 0x28,0x00,0x00,0x20, 0xe2,0xa2,0x80,0x0c, 0x00,0xa0,0x00,0x0a, + 0x0a,0x30,0x2a,0xa8, 0x88,0x88,0x88,0x88, 0x88,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x04,0xa2,0x00,0x10, 0x00,0x11,0x10,0x00, 0x00,0x00,0x00,0x11, 0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x03, 0x70,0x26,0xa8,0x00, 0x00,0x00,0x00,0x00, 0x00,0xaa,0x88,0x88, + 0x88,0x88,0xa2,0x22, 0x22,0x22,0x22,0x51, 0x0a,0x00,0x00,0xa0, 0xa0,0xa0,0xa0,0x00, + 0x00,0x28,0x00,0xa0, 0x00,0x00,0x00,0x00, 0x00,0x28,0x00,0xa0, 0x00,0x00,0x00,0x00, + 0x0a,0x00,0x00,0xa0, 0x44,0x44,0x44,0x42, 0xa0,0x00,0x00,0x00, 0x00,0x02,0x85,0x02, + 0x76,0x6a,0x90,0x93, 0xa9,0x52,0xa5,0xc7, 0x68,0xa9,0xff,0x8b, 0xb9,0x22,0x9c,0x28, + 0x48,0x79,0x6f,0x73, 0x62,0x80, + // 0x536 = 1334 data bytes (12% including 4 header bytes) +}; + +static BZ2Manager_t geohittableitem_bin_mgr + = { geohittableitem_bin_bz2, sizeof(geohittableitem_bin_bz2), 0, 0 }; + +//----------------------------------------------------------------------------------- + +static const u8 geohittableitemobj_bin_bz2[] = // GeoHitTableItemObj.bin +{ + // decompressed len: 0x2d6c = 11628 bytes + 0x00,0x00,0x2d,0x6c, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x27,0x12, 0x9a,0x09,0x00,0x04, + 0x12,0x7f,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xd0, 0x04,0x1e,0xc6,0xee, 0x5b,0xa1,0xc3,0xa1, 0xe8,0x88,0xc4,0xa6, + 0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x19, + 0x00,0x00,0x01,0xa0, 0x0d,0x00,0x01,0xea, 0x68,0x34,0x68,0xf5, 0x34,0x1e,0xa0,0x00, + 0x0d,0x00,0x7a,0x9b, 0x4f,0x49,0xa6,0x9f, 0xe5,0x53,0x69,0xa2, 0x7f,0xaa,0x80,0xfd, + 0xa9,0x35,0x4d,0x09, 0x32,0x69,0x93,0x4d, 0x0c,0x46,0x86,0x8d, 0x01,0x84,0x03,0x13, + 0x26,0x4d,0x31,0x34, 0xd3,0x4d,0x1a,0x69, 0xa6,0x43,0x4d,0x0d, 0xa4,0xc1,0x06,0xfd, + 0x51,0x18,0x46,0x4c, 0x10,0xf4,0x40,0xd0, 0xc2,0x66,0x00,0x8c, 0x27,0xea,0x02,0x4d, + 0x32,0x0d,0x18,0x99, 0xfa,0xa8,0x64,0x32, 0x0d,0x1a,0x68,0xc4, 0x01,0xa1,0xa1,0x90, + 0xfd,0xea,0xa8,0xc0, 0x4c,0x41,0xa3,0x40, 0xa9,0x4f,0x7e,0xaa, 0xa0,0x34,0x0d,0x32, + 0x34,0x03,0x46,0x4c, 0x46,0x26,0x9a,0x32, 0x68,0x03,0x46,0x8d, 0x03,0x13,0x46,0x9b, + 0xf2,0xa2,0x3f,0xf5, 0x51,0x0d,0x03,0x08, 0xd0,0xc8,0x00,0x0d, 0x34,0x34,0xc8,0xd0, + 0x34,0x07,0xfa,0xa2, 0x31,0x18,0x8d,0x34, 0xd0,0x68,0x34,0x68, 0xc8,0x1a,0x69,0x84, + 0x31,0x34,0x00,0xd0, 0x01,0xa1,0x84,0x68, 0x1a,0x62,0x68,0x24, 0xff,0xf6,0xa9,0x2a, + 0x68,0x03,0x40,0x00, 0x01,0xa0,0x03,0x4d, 0x34,0xd3,0x20,0x03, 0x4c,0x86,0x80,0xd0, + 0x00,0x34,0x62,0x1a, 0x34,0x1a,0x68,0x00, 0xd0,0x00,0x06,0x83, 0x41,0xa3,0x40,0x06, + 0x4d,0x00,0x68,0xc8, 0x1a,0x00,0x01,0xa6, 0x4d,0x00,0x34,0x00, 0x1a,0x03,0x46,0x80, + 0x00,0x19,0xa4,0xaa, 0x68,0xa0,0x00,0x00, 0x00,0x00,0x00,0x07, 0xa7,0xa5,0x01,0xea, + 0x00,0x1a,0x3d,0x40, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x6d,0x04, 0x00,0x3f,0xd5,0x41, 0xfa,0xa5,0xa4,0xdd, + 0xd8,0xad,0x21,0x24, 0xd2,0x04,0xb9,0xde, 0x7f,0xa2,0xf4,0xfd, 0x7f,0x63,0xdc,0xf7, + 0x7e,0x2f,0x8f,0xe4, 0xf9,0xfe,0x8f,0xbb, 0xef,0xc3,0x61,0xff, 0x0f,0x03,0xae,0xc8, + 0x93,0x6b,0xea,0xd3, 0x2f,0xf4,0xdd,0x39, 0xdb,0x56,0xef,0xac, 0x78,0xd6,0xbc,0xbd, + 0x6b,0xb5,0xfb,0x07, 0xbd,0x8b,0xe6,0xcb, 0x67,0xb4,0x7d,0x2d, 0xb5,0x7f,0x80,0x81, + 0x82,0x83,0xdb,0x6d, 0xf7,0x1b,0x98,0x41, 0x42,0xc3,0x6e,0xb7, 0x70,0xf1,0x11,0x31, + 0x5b,0xcd,0xec,0x5c, 0x66,0xfa,0x36,0x3a, 0x3e,0x42,0x47,0x7f, 0xc0,0xe0,0x97,0x92, + 0x93,0xe1,0x70,0xf8, 0x9c,0x5e,0x37,0x1f, 0x91,0xc9,0x95,0x96, 0x97,0x98,0x99,0x9a, + 0x30,0x64,0xd1,0xb3, 0x87,0x4f,0x1f,0x41, 0x37,0x38,0x85,0x12, 0x34,0x93,0xa3,0x4a, + 0x99,0x3a,0x85,0x2a, 0xa8,0x3a,0x14,0x5d, 0x1e,0x95,0x1d,0x25, 0x35,0x39,0x3a,0xb7, + 0xff,0x7f,0xc7,0xe7, 0xf5,0x81,0xfb,0xfe, 0x60,0xff,0x7f,0xc6, 0x4d,0x18,0x36,0x5c, + 0xd1,0xc3,0xa7,0x8f, 0xa0,0x9b,0x9c,0x42, 0x89,0x1a,0x49,0xd1, 0xa5,0x4c,0x9d,0x42, + 0x95,0x53,0xdc,0xb1, 0x08,0x42,0x10,0x84, 0x21,0x7e,0x7f,0x5f, 0xb6,0xdf,0xc8,0xa6, + 0xf1,0x6a,0x38,0x8c, 0x73,0x1a,0xea,0x3b, 0xb0,0x03,0x1f,0x0d, 0x0c,0xed,0x57,0x90, + 0xf0,0xeb,0x3d,0x66, 0xf9,0xa3,0x46,0x92, 0x05,0x11,0x11,0x23, 0x25,0x27,0x29,0x2a, + 0xd5,0xab,0x59,0x6f, 0x22,0x0d,0x79,0x9a, 0xcf,0xe5,0x6f,0xf4, 0x88,0xc4,0x44,0x44, + 0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44, 0x49,0x4a,0x52,0x94, 0xa5,0x29,0xf5,0x44, + 0x25,0x29,0x4a,0x7d, 0x71,0x07,0x3e,0xb7, 0x81,0x81,0xac,0x61, 0x75,0x3b,0xfb,0xfb, + 0xfb,0xeb,0xeb,0xeb, 0x76,0xed,0xee,0x9e, 0xb3,0x49,0x35,0xa2, 0xe8,0xc9,0x22,0x44, + 0x36,0x9a,0x6d,0xac, 0xf8,0xbe,0x13,0x40, 0xdd,0xbc,0x1d,0x1e, 0x92,0x49,0x2a,0xbb, + 0x4d,0x44,0xc4,0x93, 0x12,0xd2,0x3e,0x9c, 0xaf,0x0f,0x88,0xc4, 0xe2,0xba,0x9d,0x8f, + 0x61,0xc0,0xc0,0xc2, 0xea,0xb8,0x38,0x6c, 0x1c,0x4e,0x23,0x15, 0xb2,0xe4,0xf2,0x14, + 0xf7,0x1b,0x69,0x8f, 0x6e,0x51,0x51,0x7f, 0x54,0x19,0x45,0x02, 0xc1,0x94,0x32,0x86, + 0x39,0xd5,0x39,0xce, 0x73,0xcd,0xa1,0x95, 0x08,0x42,0x10,0x84, 0x78,0xd1,0xab,0x5b, + 0x50,0xc6,0x32,0x69, 0x27,0x04,0xc9,0x24, 0x93,0x4d,0x38,0x28, 0xa6,0xf1,0x6a,0x38, + 0x8c,0x73,0x1a,0xea, 0x38,0x06,0x3d,0xdf, 0x21,0xe2,0xc2,0x22, 0x22,0x22,0x22,0x22, + 0x22,0x23,0x5c,0x11, 0x11,0x11,0x02,0xc0, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0f, + 0x65,0x14,0x51,0x08, 0x42,0x10,0x84,0x21, 0x0a,0x28,0xa1,0x8c, 0x63,0x18,0xc6,0x31, + 0xb0,0x8e,0x48,0x63, 0x18,0xe1,0x36,0x30, 0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x0f,0x60,0xe0,0xf8, 0x1a,0x91,0x5b,0x82, 0xb6,0xff,0x86,0xb7, + 0x11,0x5c,0xfa,0xaa, 0xaa,0xab,0x3e,0x9a, 0xaa,0xaa,0xcd,0x55, 0xa1,0x61,0x5f,0x48, + 0x14,0x8c,0x94,0x9c, 0xa4,0xac,0xb2,0x0f, 0xc4,0xfd,0x8f,0xec, 0xb9,0x11,0x11,0x11, + 0x11,0x11,0x12,0x8a, 0x28,0x5f,0x17,0x0e, 0x08,0x9c,0xfd,0x6e, 0x84,0x51,0x31,0x24, + 0xe8,0x88,0x9b,0x36, 0x22,0x76,0xed,0xdb, 0x75,0x08,0x89,0xc9, 0x3d,0x7a,0xf4,0x9f, + 0x3e,0x7c,0xf3,0xfc, 0xc3,0x0c,0x30,0xc3, 0x1a,0xe7,0xef,0xdf, 0xa1,0xc5,0xd5,0x92, + 0x46,0x94,0x01,0xc0, 0x24,0x9a,0x57,0xd4, 0x21,0x08,0x42,0x10, 0x84,0x21,0x08,0x42, + 0x10,0x84,0x21,0xf9, 0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x99, 0x9c,0xba,0xf5,0x25, + 0xe8,0x0b,0xb2,0x5d, 0x92,0xec,0xac,0x2c, 0x2c,0x2c,0x2c,0x2c, 0x2c,0x2c,0x2c,0x2c, + 0x2c,0x2c,0x12,0x58, 0xf8,0xd2,0x6b,0x08, 0x37,0x06,0x93,0x14, 0x52,0x40,0x11,0x13, + 0x88,0x61,0x22,0x89, 0xa8,0x66,0x37,0xa5, 0xb8,0xdd,0x26,0x9b, 0x45,0xb5,0x6a,0xd5, + 0x2b,0x42,0x49,0x25, 0x55,0x28,0x6d,0xbb, 0xa7,0x7a,0xc6,0x80, 0x40,0xd0,0x84,0x0c, + 0x10,0x46,0xd6,0x10, 0xbd,0xba,0x76,0x90, 0x81,0xb4,0xef,0x2f, 0x25,0x30,0x4a,0xd4, + 0x77,0x82,0x71,0x26, 0xe8,0x56,0xad,0x46, 0xa8,0x4d,0xd5,0x4a, 0x13,0x4a,0x18,0x05, + 0x40,0x00,0x2c,0x00, 0xa8,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x18,0x00,0x00,0x00, + 0x00,0x00,0x15,0x55, 0x55,0x55,0x55,0x55, 0x55,0x55,0x52,0xaa, 0xa5,0x54,0x92,0x41, + 0xa4,0x9a,0x70,0x83, 0x4d,0xb0,0x00,0x00, 0x00,0x00,0x00,0x00, 0x10,0x80,0x40,0x81, + 0x02,0x04,0x08,0x10, 0x20,0x40,0x81,0x02, 0x04,0x08,0x10,0x30, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x92,0x49, 0x24,0x92,0x49,0x24, + 0x90,0x00,0x00,0x49, 0x24,0x98,0x00,0x00, 0x00,0x00,0x00,0x00, 0x22,0xb8,0xc1,0x80, + 0x49,0x77,0x25,0x49, 0x24,0x92,0x48,0x49, 0x75,0x2a,0xa0,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x01,0x52,0x00,0x20, 0x00,0x24,0x80,0x00, 0x00,0x00,0x01,0x24, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0xb8, 0x26,0xad,0x00,0x00, 0x00,0x92,0x49,0x24, + 0x92,0x49,0xa0,0x00, 0x10,0x29,0x70,0x00, 0xc1,0x03,0x01,0x00, 0xc0,0x60,0xc6,0x0c, + 0x04,0x03,0x60,0x81, 0x03,0x4c,0x1a,0x00, 0x10,0x00,0x80,0x04, 0x03,0x00,0x00,0x1a, + 0x1a,0x60,0x00,0x08, 0x10,0x20,0x1a,0x00, 0x40,0x98,0x0c,0x00, 0x02,0x58,0xd8,0x92, + 0x49,0x20,0x00,0x00, 0x02,0xed,0x41,0x3c, 0x5e,0xe4,0x49,0xdc, 0xb9,0x73,0x3f,0xcb, + 0xee,0x7f,0xe2,0xee, 0x48,0xa7,0x0a,0x12, 0x04,0xe2,0x53,0x41, 0x20, + // 0x4dd = 1245 data bytes (11% including 4 header bytes) +}; + +static BZ2Manager_t geohittableitemobj_bin_mgr + = { geohittableitemobj_bin_bz2, sizeof(geohittableitemobj_bin_bz2), 0, 0 }; + +//----------------------------------------------------------------------------------- + +static const u8 geohittablekart_bin_bz2[] = // GeoHitTableKart.bin +{ + // decompressed len: 0x1244 = 4676 bytes + 0x00,0x00,0x12,0x44, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xeb,0x5c, 0x75,0x98,0x00,0x03, + 0x49,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xd0, 0x04,0x3b,0x9c,0xf2, 0x3d,0x23,0x00,0x00, 0x1d,0x4f,0x4d,0x4d, + 0x34,0x1a,0x64,0x03, 0x26,0x80,0xd0,0x34, 0xc8,0x0c,0x86,0x11, 0xea,0x36,0xa1,0x88, + 0xc4,0x61,0x1a,0x68, 0x19,0x01,0xa0,0x01, 0xa6,0x10,0x34,0xd1, 0xa6,0x8d,0x03,0x26, + 0x43,0x46,0x04,0x68, 0x03,0x46,0x40,0x00, 0x0d,0x34,0xc4,0x1a, 0x03,0x46,0x10,0x03, + 0xd1,0xa0,0x41,0xff, 0xaa,0x93,0xfd,0x4f, 0x54,0x86,0x9f,0xf9, 0x53,0xd2,0xa6,0x82, + 0x94,0xa0,0x01,0xea, 0x1a,0x00,0x00,0x00, 0x0d,0x00,0x00,0x00, 0x00,0xd3,0xf5,0x47, + 0xe4,0x91,0xa1,0xe9, 0x01,0xea,0x68,0xd0, 0xf4,0x9a,0x34,0x01, 0xa0,0x3f,0x54,0xd1, + 0xa1,0x9e,0x94,0x7a, 0x23,0xd2,0x33,0x48, 0x01,0xa3,0x10,0x07, 0xea,0x87,0xa9,0xfe, + 0xaa,0x00,0x7a,0x8c, 0x99,0x34,0x34,0xd0, 0xc4,0xd9,0xa4,0xf5, 0x1b,0x53,0x7e,0xa4, + 0xd4,0x04,0x00,0x06, 0x51,0xea,0x6d,0x46, 0x93,0x0d,0x02,0x63, 0x4d,0x00,0x9a,0x60, + 0x4d,0x30,0x00,0x00, 0x00,0x8c,0x00,0x02, 0x18,0x00,0x00,0x00, 0x00,0x00,0x02,0x61, + 0x18,0x04,0xc0,0x99, 0x18,0x11,0x82,0x61, 0x31,0x1a,0x62,0x30, 0x02,0x64,0x60,0x8c, + 0x00,0x00,0x00,0x01, 0x26,0x98,0x98,0x09, 0x80,0x00,0x98,0x04, 0xc1,0x30,0x26,0x00, + 0x00,0x00,0x26,0x00, 0x4c,0x19,0x06,0x4d, 0x34,0x00,0x00,0x00, 0x00,0x00,0x00,0x13, + 0x00,0x00,0x00,0x00, 0x4c,0x11,0x80,0x09, 0x80,0x00,0x00,0x00, 0x00,0x03,0x4f,0x29, + 0x54,0xd2,0x84,0x30, 0x9a,0x64,0xc8,0xc0, 0x04,0xc0,0x46,0x26, 0xd4,0xfd,0x40,0xd3, + 0x44,0x7a,0x00,0x34, 0x4c,0x00,0x46,0x01, 0x1a,0x0c,0x00,0x00, 0x06,0x80,0x00,0x46, + 0x00,0x4d,0x0d,0x18, 0x1a,0x02,0x0c,0x4c, 0x8c,0x41,0x93,0x00, 0x04,0xc2,0x18,0x00, + 0x00,0x03,0xd4,0x34, 0x2d,0x14,0x24,0x48, 0x22,0x04,0x10,0x91, 0x00,0x30,0x24,0x50, + 0x41,0x02,0x08,0xa0, 0x85,0x80,0x04,0x98, 0x00,0x85,0x89,0x03, 0x89,0x0e,0x58,0x18, + 0x00,0xe1,0xc0,0x04, 0xa0,0x60,0x40,0x05, 0x41,0x15,0xf8,0x00, 0x0c,0x18,0x03,0x73, + 0x43,0x63,0x73,0x83, 0x93,0xb3,0xd3,0xe3, 0xf4,0x14,0x24,0x54, 0xb4,0xc4,0xd4,0xf5, + 0x05,0x15,0x25,0x3f, 0xca,0xaa,0xb2,0xba, 0xc2,0xca,0xd2,0xe2, 0xf3,0x03,0x0b,0x10, + 0x00,0x2c,0x6c,0x8c, 0xac,0xc0,0x81,0xb3, 0x84,0x68,0x0a,0xd2, 0xdc,0xde,0xe0,0xe2, + 0xe4,0xe6,0xe8,0xea, 0xec,0xee,0xf0,0xf2, 0xf4,0xf6,0xf8,0xfa, 0xfc,0xff,0x01,0x03, + 0x05,0x07,0x09,0x0b, 0x0d,0x11,0x13,0x15, 0x17,0xd9,0xdb,0xdd, 0xdf,0xe1,0xe3,0xe5, + 0xe7,0xe9,0xeb,0xec, 0x10,0x2b,0x4b,0x53, 0x58,0x16,0xc0,0x0d, 0xa0,0xc0,0xb7,0x04, + 0x04,0xdf,0x04,0xbe, 0x06,0x01,0x7e,0xaf, 0x50,0xc6,0x20,0xa8, 0x9c,0xc1,0x5e,0x8f, + 0x4c,0x94,0x9f,0xaa, 0x52,0x57,0xd7,0x2d, 0xec,0xf6,0xfb,0xa5, 0xfd,0xf3,0x1f,0x0f, + 0x8f,0xca,0x66,0x6a, 0x6f,0xe7,0x38,0xd9, 0xba,0x0e,0x27,0x51, 0x9e,0x9f,0x72,0x95, + 0x03,0xa0,0x4d,0xda, 0x94,0x34,0x54,0x74, 0x94,0xb4,0xdf,0x4f, 0xaf,0xdb,0xef,0xf8, + 0xfc,0xfe,0xbf,0x7f, 0xcf,0xee,0x66,0x44, 0xb2,0xcb,0x2c,0xb2, 0xcb,0x8e,0x30,0xc3, + 0x0c,0x30,0xce,0x92, 0xc5,0x8b,0x23,0xde, 0xde,0xf7,0xa6,0x9a, 0x69,0xa6,0xca,0x4a, + 0xcb,0x71,0x3c,0x4e, 0x47,0x23,0x91,0xc8, 0x64,0x35,0x9d,0x5b, 0x55,0xc7,0xe3,0xf1, + 0xd8,0xed,0x3f,0x4f, 0xc4,0xc4,0xc4,0xdb, 0xb2,0x52,0x49,0x52, 0x4c,0x96,0x7e,0x13, + 0xed,0x68,0x1f,0x61, 0x93,0x01,0x4b,0x55, 0x52,0xa4,0x98,0xc2, 0x56,0x93,0xd5,0x32, + 0x60,0x5a,0x95,0x58, 0x45,0x55,0x4e,0xdf, 0x11,0xa9,0x2a,0x54, 0xc3,0x2a,0xa4,0xac, + 0x4c,0x4e,0xf7,0x21, 0x90,0xd6,0x7f,0xee, 0x50,0x31,0xab,0x1a, 0xb3,0x8e,0x39,0xf3, + 0x18,0xf1,0x25,0x26, 0xf3,0x5b,0x79,0x57, 0x89,0x64,0xc9,0x93, 0xc0,0xc6,0x2d,0x6a, + 0xa1,0x0c,0x62,0xc8, 0x2a,0x10,0xc4,0x29, 0x79,0xb6,0xc9,0xad, 0x5b,0x9b,0x7a,0x98, + 0x9a,0x45,0xca,0x40, 0x9a,0xed,0x26,0x6a, 0xc5,0x38,0x8d,0xe1, 0x61,0x6f,0x8d,0xd0, + 0x5e,0xb9,0x73,0xeb, 0xeb,0xb5,0x1f,0x97, 0x23,0xa3,0xd5,0x25, 0x8e,0xd6,0x63,0xd3, + 0x7e,0x15,0x81,0x53, 0xbb,0xed,0x39,0x2c, 0x99,0xaf,0xee,0x2c, 0xe9,0xd9,0x9d,0x06, + 0xcd,0x48,0x06,0xef, 0xfd,0x54,0x1c,0x4e, 0xa3,0x3d,0x3e,0xe5, 0x2a,0x07,0x41,0x15, + 0x14,0xed,0x45,0xb1, 0x82,0x18,0x84,0x22, 0x95,0x0c,0x42,0x14, 0x2c,0x24,0x25,0x3e, + 0x16,0x31,0xb4,0x39, 0xdc,0x16,0xf0,0x30, 0xcc,0x18,0x30,0x41, 0x05,0x94,0xf5,0x15, + 0x35,0x55,0x7f,0x4f, 0xaf,0xd9,0xc8,0x2b, 0x01,0xb0,0x1a,0xc0, 0x03,0x06,0x18,0x40, + 0x6d,0x00,0x0d,0x88, 0x02,0x95,0x21,0x13, 0x12,0xec,0xa9,0x50, 0x00,0x62,0xc0,0x00, + 0x00,0x1d,0x41,0x34, 0xde,0x80,0x32,0xf0, 0xc5,0x14,0xd7,0x3c, 0xd4,0xe6,0xac,0x00, + 0x00,0x85,0xe7,0x58, 0xc5,0xaa,0x8b,0x21, 0x08,0x42,0x59,0x19, 0xb3,0x66,0x42,0x56, + 0x39,0x64,0x21,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x02,0x44,0x00,0x01, + 0x46,0x9d,0x1e,0x7c, 0x3f,0x62,0x36,0x27, 0x84,0xd2,0x3d,0x8b, 0x4f,0x04,0x17,0x0f, + 0x88,0x7c,0x44,0x69, 0xe7,0xf2,0x38,0xc7, 0x9f,0xde,0x90,0x90, 0xa1,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xfd,0xd7, 0x7f,0x04,0xa8,0x50, 0x97,0xf6,0xbc,0xe7, 0x39,0xce,0x73,0x9c, + 0xe7,0x39,0xd6,0xad, 0xc9,0xfc,0xbd,0x53, 0xeb,0x67,0x7c,0x5d, 0x9e,0xd2,0xd5,0x8e, + 0xab,0x3e,0x0a,0xd5, 0x98,0xd5,0x14,0x74, 0xb3,0x93,0x86,0x37, 0x9c,0xc6,0xaa,0xf4, + 0x53,0x53,0x5b,0xd5, 0xf9,0x57,0xa8,0x0c, 0x63,0x58,0x56,0x7b, 0x1a,0x3e,0xfe,0xda, + 0x3f,0xf2,0x49,0x24, 0x92,0x49,0x45,0x21, 0x08,0xc6,0xda,0x93, 0x12,0x7a,0x94,0xcb, + 0xd5,0xaf,0x62,0x22, 0xc8,0x22,0x22,0x22, 0x22,0x22,0x22,0x22, 0x82,0x2e,0x81,0x11, + 0x11,0x11,0x11,0x11, 0x11,0x11,0x57,0xae, 0x69,0x5c,0x84,0x28, 0x42,0x84,0x32,0x21, + 0x42,0x13,0xa1,0x3a, 0x17,0xd0,0xa3,0x16, 0xf1,0x6f,0x16,0xf1, 0x6f,0x14,0xc5,0xc5, + 0x71,0x84,0xc3,0x83, 0x3e,0x9d,0xcb,0xa0, 0x94,0x12,0x80,0x82, 0x49,0x21,0x74,0xd4, + 0x94,0x92,0x15,0x34, 0xe2,0x51,0x30,0x98, 0x68,0x8c,0xbc,0x0d, 0x4c,0x12,0xa1,0x69, + 0x7a,0x73,0x2a,0x56, 0x19,0x58,0x58,0x0a, 0xac,0x04,0xa4,0xa0, 0xa8,0x95,0x00,0x25, + 0x54,0xad,0x33,0x0b, 0x0b,0x0d,0xaa,0xa8, 0xdb,0x55,0x2a,0x54, 0xbb,0xbb,0xb2,0xaa, + 0x4a,0xbb,0x6e,0xee, 0xec,0x92,0xed,0x92, 0xa4,0x96,0x49,0x57, 0x6d,0x95,0x57,0x6d, + 0x95,0x23,0x6d,0xb7, 0x76,0x54,0xbb,0x6c, 0xa9,0x76,0xdd,0xdd, 0xd9,0x2e,0xd9,0x2c, + 0xbb,0x65,0x8d,0xb6, 0xdd,0xc9,0x65,0xdb, 0x56,0x5d,0xb6,0x36, 0xd8,0xdd,0xdc,0xbb, + 0x6c,0xab,0x22,0x44, 0xa9,0x52,0x92,0xaa, 0x44,0x48,0x01,0x20, 0x05,0x40,0x00,0x00, + 0x00,0x00,0x21,0x00, 0x81,0x02,0x04,0x08, 0x10,0x20,0x40,0x81, 0x02,0x04,0x08,0x10, + 0x20,0x50,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x28,0xaa,0x8a,0x28, 0xaa,0xaa,0xaa,0x00, 0x16,0xaa,0x90,0x20, 0x41,0x55,0x55,0x51, + 0xc6,0xdd,0xda,0xae, 0x35,0x4b,0x55,0x55, 0x20,0xb8,0x57,0x76, 0x80,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x16,0xa0, 0x10,0x00,0x05,0x40, 0x00,0x00,0x00,0x01, + 0x50,0x00,0x00,0x00, 0x00,0x00,0x00,0x2a, 0x92,0x54,0xc0,0x00, 0x00,0x00,0x00,0x00, + 0x01,0x84,0xaa,0xaa, 0x43,0x02,0xab,0x6b, 0x6a,0x41,0x5b,0x5b, 0x5b,0x5b,0x55,0x55, + 0x56,0xd5,0x5b,0x55, 0x55,0x55,0x5b,0x55, 0x6d,0x6d,0x55,0xb5, 0x55,0x55,0x48,0x2a, + 0x42,0xd5,0x55,0x48, 0x5a,0x90,0x59,0x80, 0x00,0x00,0x00,0x00, 0x03,0x04,0x49,0x58, + 0x79,0x36,0x4a,0xc9, 0xe4,0xf2,0x7a,0x3e, 0x73,0x94,0x7c,0xe2, 0xee,0x48,0xa7,0x0a, + 0x12,0x1d,0x6b,0x8e, 0xb3,0x00, + // 0x526 = 1318 data bytes (28% including 4 header bytes) +}; + +static BZ2Manager_t geohittablekart_bin_mgr + = { geohittablekart_bin_bz2, sizeof(geohittablekart_bin_bz2), 0, 0 }; + +//----------------------------------------------------------------------------------- + +static const u8 geohittablekartobj_bin_bz2[] = // GeoHitTableKartObj.bin +{ + // decompressed len: 0x1244 = 4676 bytes + 0x00,0x00,0x12,0x44, + + // bzipped data + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x97,0x97, 0xae,0xb9,0x00,0x03, + 0x45,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xd0, 0x03,0xfd,0x8e,0x78, 0xde,0x06,0x72,0x00, 0x10,0x9f,0xfa,0xa7, + 0xaa,0x80,0x00,0x00, 0x00,0x00,0x00,0x00, 0x68,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x34,0x06,0x80,0x00, 0x00,0x00,0x00,0x68, 0xd0,0x0f,0x7a,0xa8, 0x01,0xfe,0xaa,0x00, + 0x00,0x06,0x80,0x3d, 0x46,0x86,0x9a,0x1b, 0x7e,0x54,0xa7,0xbc, 0xaa,0x06,0xfc,0xa7, + 0xa5,0x4d,0x08,0x20, 0x34,0x34,0xc2,0x64, 0x19,0x32,0x68,0xc4, 0xc2,0x68,0x34,0x61, + 0x1a,0x68,0x0d,0x30, 0x40,0xd1,0x88,0xc4, 0x01,0xa7,0xfa,0xa8, 0x61,0x3d,0xea,0xa0, + 0x7a,0x34,0xc0,0x43, 0x27,0xa9,0xa6,0x40, 0x43,0x4c,0x4d,0x34, 0x01,0x88,0x64,0x68, + 0x1a,0x00,0x06,0x4d, 0x19,0x1a,0x68,0x0c, 0x46,0x98,0x60,0x21, 0xa9,0xff,0xaa,0x53, + 0x4d,0x34,0xf2,0x69, 0xa9,0xa3,0x0a,0x8d, 0xfa,0xaa,0xa0,0x00, 0x00,0x00,0x1a,0x00, + 0x00,0x69,0xa6,0x80, 0xf2,0x83,0x4d,0x06, 0x9f,0xa6,0xa8,0xd0, 0x3f,0xf5,0x54,0x00, + 0x32,0x18,0x8d,0x00, 0x06,0x80,0x03,0x40, 0x07,0xea,0x20,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x32,0x00, 0x34,0x00,0xd0,0x00, 0x00,0x24,0xc0,0x01, 0x30,0x00,0x13,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x08, 0x9f,0xea,0x54,0x95, + 0x1a,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x01,0xea,0x0f,0x50, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1a, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x64,0x00,0x1a,0x1a, 0x15,0x16,0x16,0x97, 0x17,0x98,0x18,0x99, 0x19,0x9a,0x1a,0x9b, + 0x1b,0x9c,0x1d,0x1d, 0x9e,0x1e,0x9f,0x1f, 0xa0,0x21,0x21,0xa2, 0x22,0xa3,0x23,0xa4, + 0x24,0xa5,0x25,0xa6, 0x26,0xa7,0x27,0xa8, 0x28,0xa9,0x29,0xaa, 0x2a,0xab,0x2b,0xac, + 0x2c,0xad,0x2d,0xae, 0x2e,0xaf,0x0b,0x77, 0xbc,0xde,0xc4,0x44, 0xc5,0x45,0xef,0x89, + 0x0f,0x7f,0xc3,0x27, 0x19,0x1a,0x50,0xa9, 0x62,0xe6,0x0c,0x9a, 0x37,0x1f,0x21,0x22, + 0x70,0xec,0x91,0x12, 0x67,0xa5,0x0f,0xa0, 0x95,0x96,0x97,0x98, 0x99,0x9a,0x9c,0xe5, + 0xf3,0x39,0xbc,0xee, 0x7f,0x42,0x8a,0x8f, 0xa4,0xa9,0x5d,0xea, 0xcb,0xe5,0xbf,0xdb, + 0xff,0xf7,0xff,0x00, 0x9c,0x64,0x69,0x48, 0xe2,0xa5,0x8b,0x98, 0x32,0x68,0xdc,0x7c, + 0x84,0x89,0xc3,0xb2, 0x44,0x49,0x9e,0x94, 0x3e,0x82,0x56,0x5a, 0x5c,0x42,0x10,0x84, + 0x21,0x08,0x55,0x75, 0x9e,0xcf,0x6d,0x6f, 0xba,0xbb,0xdf,0xf0, 0xf8,0xfc,0xbe,0x7f, + 0x4a,0xfb,0x0b,0x1f, 0xaf,0xda,0xcb,0xef, 0x67,0x69,0x6b,0x6c, 0x85,0x12,0x34,0x89, + 0x53,0x27,0xb7,0xb8, 0xb9,0x51,0xf8,0x05, 0x3f,0x9b,0xaf,0xd5, 0xdf,0xee,0xf3,0xf8, + 0xa9,0x5d,0xea,0xcb, 0xe5,0xbf,0xaf,0xdf, 0xf3,0xfa,0x88,0xa4, 0x44,0x44,0x44,0x44, + 0x44,0x44,0x44,0x44, 0x44,0x44,0x47,0x1c, 0x71,0xc7,0x1c,0x71, 0xce,0xcf,0x6a,0x2e, + 0x2e,0x2a,0x2b,0xb8, 0xf1,0xe5,0x86,0xbe, 0xfe,0xfc,0xfc,0xed, 0xdb,0xa7,0x4f,0xaf, + 0xb5,0x0b,0xb5,0x6f, 0xc7,0xca,0x52,0x98, 0x61,0x4a,0x61,0xe3, 0xb7,0x55,0x78,0xe8, + 0x18,0x1b,0x1b,0x6d, 0xb6,0xdb,0x6d,0x34, 0xd3,0x4d,0x40,0x40, 0x76,0xfc,0x1e,0x28, + 0xef,0x37,0x9f,0xd3, 0xea,0x8f,0xf6,0x7b, 0x75,0x9b,0x56,0x4d, 0x56,0xb5,0x5b,0x65, + 0x55,0xaa,0xd5,0x6a, 0xad,0x6d,0xaf,0x57, 0xd1,0xa0,0xfd,0x58, 0x2c,0x1e,0x1b,0xb0, + 0xd8,0xb5,0x56,0xc4, 0xb5,0xb0,0x0b,0xad, 0x55,0x56,0xab,0x60, 0x70,0x18,0x1c,0x0d, + 0xf5,0xf5,0xf5,0xf5, 0xf5,0xf5,0xf5,0xf7, 0xd9,0xa7,0x7d,0xd8, 0x3c,0x82,0xd5,0x8b, + 0xd9,0x4b,0x52,0x96, 0xa5,0x28,0x50,0xad, 0xbe,0xa4,0xb5,0x95, 0x56,0xb5,0x6a,0xd9, + 0x0d,0xeb,0xad,0x6b, 0xcb,0x5a,0xc0,0x55, 0xa8,0xab,0x52,0xad, 0x6a,0xb6,0x0b,0x07, + 0x2e,0xbc,0xa5,0x5f, 0xdf,0xdf,0xdf,0xdf, 0x8c,0x63,0x18,0xc6, 0x31,0x8c,0x63,0xcf, + 0x92,0x20,0x82,0x2d, 0x2d,0x6d,0x90,0xa2, 0x46,0x91,0x2a,0x64, 0xf6,0xf7,0x17,0x2a, + 0x28,0x41,0x48,0x6b, 0xc0,0x00,0x00,0x00, 0x00,0x00,0x02,0x00, 0x08,0x88,0x88,0xac, + 0x24,0x44,0x44,0x44, 0x44,0x44,0x44,0x44, 0x56,0xe1,0x11,0x42, 0x10,0x84,0x21,0x08, + 0x40,0x88,0xde,0x71, 0x87,0x39,0xce,0x73, 0x9c,0xf3,0x48,0x59, 0x36,0x50,0xe7,0x36, + 0x58,0xe7,0xc8,0x42, 0x88,0x88,0x88,0x88, 0x88,0x88,0x88,0x88, 0x88,0x88,0x88,0x88, + 0xfd,0xe1,0xb5,0x30, 0xd9,0x52,0xe6,0x6a, 0x91,0xab,0xd6,0xc3, 0xc3,0x96,0x34,0x88, + 0x8b,0x7f,0xc5,0x22, 0x27,0x7c,0x37,0x6e, 0xdd,0xbf,0x4a,0xbf, 0x1f,0x9f,0xd7,0xef, + 0xf9,0x1a,0xb6,0x79, 0x5a,0xe7,0xf6,0x39, 0x4a,0x52,0x94,0xa5, 0x29,0x4a,0x55,0xbd, + 0x41,0xdd,0x4a,0x4d, 0x12,0x11,0x29,0xec, 0xc4,0x47,0xfe,0x61, 0xf1,0x4b,0xa8,0x80, + 0xb1,0x87,0xc9,0x2e, 0xa2,0x82,0x29,0x29, 0x34,0x58,0x45,0xbc, 0x8c,0x33,0xc0,0x78, + 0x94,0x9b,0xec,0x94, 0x99,0xe8,0x3d,0x07, 0xa0,0xf4,0x1f,0x07, 0xd0,0x1f,0x25,0x26, + 0x8c,0x07,0xe0,0xfd, 0x2e,0x92,0xfb,0xfc, 0xe3,0x8e,0x38,0xe3, 0x99,0xe6,0xb5,0xac, + 0x8d,0xb2,0x84,0x14, 0x08,0x23,0x50,0xad, 0x92,0xea,0x92,0xd6, 0xb5,0xad,0x6b,0x5a, + 0xd6,0xb5,0xad,0x6b, 0x5b,0x58,0xc6,0x31, 0x8c,0x63,0x18,0xc6, 0x31,0x8c,0x63,0x18, + 0xc8,0xe8,0x14,0x18, 0x0d,0x69,0x9a,0x66, 0x83,0x41,0xa0,0xd0, 0x68,0x34,0x1a,0x0d, + 0x06,0x83,0x58,0x46, 0x11,0x84,0xcf,0xe5, 0xad,0x8b,0x2d,0x55, 0x6a,0xcf,0xae,0xa9, + 0x6a,0xb9,0x6a,0xab, 0x2a,0x8a,0x8a,0xa9, 0x56,0x92,0x59,0x16, 0x95,0x6a,0xd0,0x13, + 0x42,0x68,0x57,0x55, 0xaa,0xd6,0xab,0xd7, 0x5e,0xb5,0x5a,0xaf, 0x2a,0xd7,0x5d,0x2a, + 0xd6,0xb5,0x55,0xae, 0xba,0xeb,0xaa,0xd6, 0xb5,0x55,0x5c,0xcb, 0x0a,0x53,0x0a,0x50, + 0x2d,0x86,0x06,0x41, 0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x2c,0x05,0x82,0xd6, 0xb5,0xad,0x6b,0x5b, 0x2c,0xb2,0xcb,0x20, + 0x00,0x00,0x29,0x42, 0x8a,0x28,0xa2,0x8a, 0x28,0xa2,0x8a,0x28, 0xa2,0x8a,0x28,0xb0, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x24, 0x92,0x49,0x24,0x92, 0x49,0x24,0x92,0x49, + 0x24,0x02,0xe9,0x14, 0x92,0x49,0x24,0x92, 0x49,0x24,0x92,0x44, 0xd0,0xee,0xba,0xe8, + 0x92,0x29,0x24,0x92, 0x29,0x22,0x4b,0xa5, 0xd7,0x40,0x00,0x00, 0x00,0x00,0x05,0xd2, + 0x05,0x00,0x92,0x00, 0x00,0x12,0x40,0x00, 0x00,0x01,0x6b,0x45, 0x5a,0xaf,0x00,0x00, + 0x00,0x28,0xa5,0xe9, 0x24,0x8a,0x29,0x24, 0x51,0x45,0x24,0x8a, 0x28,0xa4,0x91,0x45, + 0x24,0x92,0x45,0x14, 0x51,0x45,0x24,0x92, 0x45,0x24,0x92,0x45, 0x14,0x51,0x45,0x14, + 0x52,0x49,0x24,0x51, 0x45,0x24,0x8b,0x5e, 0x00,0x00,0x0b,0xd5, 0x15,0x6c,0x33,0x0b, + 0x2a,0xad,0x85,0xc2, 0xe1,0x73,0x6c,0x93, 0x01,0xff,0x8b,0xb9, 0x22,0x9c,0x28,0x48, + 0x4b,0xcb,0xd7,0x5c, 0x80, + // 0x495 = 1173 data bytes (25% including 4 header bytes) +}; + +static BZ2Manager_t geohittablekartobj_bin_mgr + = { geohittablekartobj_bin_bz2, sizeof(geohittablekartobj_bin_bz2), 0, 0 }; + +/////////////////////////////////////////////////////////////////////////////// + +BZ2Manager_t * GetCommonBZ2Manager ( file_format_t fform ) +{ + BZ2Manager_t *bm; + switch(fform) + { + case FF_ITEMSLT: + case FF_ITEMSLT_TXT: + bm = &itemslot_bin_mgr; + break; + + case FF_KMG: + case FF_KMG_TXT: + bm = &minigame_kmg_mgr; + break; + + case FF_OBJFLOW: + case FF_OBJFLOW_TXT: + bm = &objflow_bin_mgr; + break; + + case FF_GH_ITEM: + case FF_GH_ITEM_TXT: + bm = &geohittableitem_bin_mgr; + break; + + case FF_GH_IOBJ: + case FF_GH_IOBJ_TXT: + bm = &geohittableitemobj_bin_mgr; + break; + + case FF_GH_KART: + case FF_GH_KART_TXT: + bm = &geohittablekart_bin_mgr; + break; + + case FF_GH_KOBJ: + case FF_GH_KOBJ_TXT: + bm = &geohittablekartobj_bin_mgr; + break; + + default: + return 0; + } + + DecodeBZIP2Manager(bm); + return bm; +} + +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// global common /////////////// +/////////////////////////////////////////////////////////////////////////////// + +const VarMap_t * SetupVarsCOMMON() +{ + static VarMap_t vm = {0}; + if (!vm.used) + { + DefineObjectNameVars(&vm); + DefineParserVars(&vm); + + + //--- setup integer variables + + struct inttab_t { ccp name; int val; }; + static const struct inttab_t inttab[] = + { + { "NEWOBJ$OFF", NEWOBJ_OFF }, + { "NEWOBJ$REPLACE", NEWOBJ_REPLACE }, + { "NEWOBJ$SHRINK", NEWOBJ_SHRINK }, + { "NEWOBJ$GROW", NEWOBJ_GROW }, + + { "NEW_OBJECT", NEWOBJ__DEFAULT }, + { "OBJECT_SLOTS", OBJMGR_USUAL_SLOTS }, + { "MAX_OBJECT_ID", OBJMGR_USUAL_MAX_OBJID }, + + {0,0} + }; + + const struct inttab_t * ip; + for ( ip = inttab; ip->name; ip++ ) + DefineIntVar(&vm,ip->name,ip->val); + } + + return &vm; +} + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +bool WriteObjMgrToSetupSection +( + FILE *f, // output file + const object_mgr_t *om, // valid object manager + bool always, // false: write only if not standard + uint header, // 0: off + // 1: start with: [SECTION]\n @REVISION= + // 2: add 'section_sep' before step 1 + bool explain // true: insert extented explainations +) +{ + DASSERT(f); + DASSERT(om); + + if ( !always && IsStandardObjType(&om->otype) ) + return false; + + if (header) + { + if (header>1) + fputs(section_sep,f); + fprintf(f,"\r\n[SETUP]\r\nREVISION = %u\r\n",REVISION_NUM ); + } + + if (explain) + fputs(text_explain_objmgr_cr,f); + + fprintf(f, + "\r\n" + "NEW-OBJECT = NEWOBJ$%s\r\n" + "OBJECT-SLOTS = 0x%03x\r\n" + "MAX-OBJECT-ID = 0x%03x\r\n" + ,GetNewObjectName(om->otype.new_object) + ,om->otype.object_slots + ,om->otype.max_object_id + ); + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool SetupObjMgrBySI +( + object_mgr_t * om, // valid data + ScanInfo_t * si, // valid data + ccp name // name of command +) +{ + DASSERT(om); + DASSERT(si); + DASSERT(name); + + if ( *name == '@' ) + name++; + + if (!strcmp(name,"NEW-OBJECT")) + { + u32 val; + ScanU32SI(si,&val,1,0); + if ( val < NEWOBJ__N ) + { + om->otype.new_object = val; + DefineIntVar(&si->gvar,"NEW_OBJECT",val); + PRINT("NEW_OBJECT = %d",val); + } + return true; + } + + if (!strcmp(name,"OBJECT-SLOTS")) + { + u32 val; + ScanU32SI(si,&val,1,0); + if ( val > OBJMGR_MAX_SLOTS ) + val = OBJMGR_MAX_SLOTS; + om->otype.object_slots = val; + DefineIntVar(&si->gvar,"OBJECT_SLOTS",val); + PRINT("OBJECT_SLOTS = %d = 0x%x",val,val); + return true; + } + + if (!strcmp(name,"MAX-OBJECT-ID")) + { + u32 val; + ScanU32SI(si,&val,1,0); + if ( val > OBJMGR_MAX_OBJID ) + val = OBJMGR_MAX_OBJID; + om->otype.max_object_id = val; + DefineIntVar(&si->gvar,"MAX_OBJECT_ID",val); + PRINT("MAX_OBJECT_ID = %d = 0x%x",val,val); + return true; + } + + return false; +} + +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// object_mgr_t /////////////// +/////////////////////////////////////////////////////////////////////////////// + +void InitializeObjMgr ( object_mgr_t *om, file_format_t fform ) +{ + DASSERT(om); + memset(om,0,sizeof(*om)); + InitializeObjType(&om->otype,fform); + #if USE_OBJECT_MANAGER + if (om->otype.row_size) + SetupObjMgr(om,om->otype.row_size); + #endif +} + +//----------------------------------------------------------------------------- + +void ResetObjMgr ( object_mgr_t *om ) +{ + if (om) + { + FREE(om->list); + InitializeObjMgr(om,om->otype.fform); + } +} + +//----------------------------------------------------------------------------- + +ccp LogStateObjMgr ( const object_mgr_t *om ) +{ + if (!om) + return "-"; + + if (!om->list) + return LogObjType(&om->otype); + + const int PRIO_SIZE = OBJMGR_MAX_PRIO+1; + + uint usage_count = 0; + u16 count[PRIO_SIZE], max[PRIO_SIZE]; + memset(count,0,sizeof(count)); + memset(max,0,sizeof(max)); + + int i; + for ( i = 0; i < OBJMGR_MAX_SLOTS; i++ ) + { + const u8 prio = om->prio[i]; + if ( prio <= OBJMGR_MAX_PRIO ) + { + count[prio]++; + max[prio] = i; + if (prio) + usage_count++; + } + } + + char buf[200], *dest = buf; + dest = snprintfE(dest,buf+sizeof(buf), + "nr=%u/%u ds=%u %s", + usage_count, OBJMGR_MAX_SLOTS, om->row_data_size, + LogObjType(&om->otype) ); + + for ( i = 0; i < PRIO_SIZE; i++ ) + if (count[i]) + dest = snprintfE(dest,buf+sizeof(buf), + " P%u=%u,%x",i,count[i],max[i]); + + MARK_USED(count,max); + return CopyCircBuf0(buf,dest-buf); +} + +/////////////////////////////////////////////////////////////////////////////// +#if USE_OBJECT_MANAGER +/////////////////////////////////////////////////////////////////////////////// + +bool SetupObjMgr ( object_mgr_t *om, uint row_size ) +{ + DASSERT(om); + DASSERT( row_size <= OBJMGR_MAX_ROW_SIZE ); + + if ( row_size >= 2 && row_size <= OBJMGR_MAX_ROW_SIZE ) + { + FREE(om->list); + om->otype.row_size = row_size; + om->row_data_size = row_size - 2; + om->list = CALLOC(row_size,OBJMGR_MAX_SLOTS); + + uint obj_id; + u8 *dest = om->list; + for ( obj_id = 0; obj_id < OBJMGR_MAX_SLOTS; obj_id++ ) + { + write_be16(dest,obj_id); + dest += row_size; + } + return true; + } + return false; +} + +//----------------------------------------------------------------------------- + +bool SetupObjMgrByData ( object_mgr_t *om, cvp data, uint data_size, u8 prio ) +{ + bool stat = ScanObjType(&om->otype,data,data_size,data_size); + if (stat) + { + SetupObjMgr(om,om->otype.row_size); + + uint i; + const u8 *ptr = (u8*)data + om->otype.slot_offset; + for ( i = 0; i < om->otype.object_slots; i++, ptr += om->otype.row_size ) + InsertObjMgr(om,be16(ptr),ptr+2,prio); + } + return stat; +} + +/////////////////////////////////////////////////////////////////////////////// + +u8 * InsertObjMgr ( object_mgr_t *om, uint obj_id, cvp data, u8 prio ) +{ + DASSERT(om); + if (!prio) + return RemoveObjMgr(om,obj_id); + + if ( om && om->list && obj_id < OBJMGR_MAX_SLOTS ) + { + u8 *dest = om->list + obj_id * om->otype.row_size; + if ( om->prio[obj_id] <= prio ) + { + om->prio[obj_id] = prio; + memcpy( dest+2, data, om->row_data_size ); + if ( om->max_prio < prio ) + om->max_prio = prio; + } + return dest; + } + return 0; +} + +//----------------------------------------------------------------------------- + +u8 * ClearObjMgr ( object_mgr_t *om, uint obj_id ) +{ + DASSERT(om); + if ( om && om->list && obj_id < OBJMGR_MAX_SLOTS ) + { + om->prio[obj_id] = 1; + u8 *dest = om->list + obj_id * om->otype.row_size; + memset( dest+2, 0, om->row_data_size ); + return dest; + } + return 0; +} + +//----------------------------------------------------------------------------- + +u8 * RemoveObjMgr ( object_mgr_t *om, uint obj_id ) +{ + DASSERT(om); + if ( om && om->list && obj_id < OBJMGR_MAX_SLOTS ) + { + om->prio[obj_id] = 0; + u8 *dest = om->list + obj_id * om->otype.row_size; + memset( dest+2, 0, om->row_data_size ); + return dest; + } + return 0; +} + +//----------------------------------------------------------------------------- + +u8 * GetObjMgr ( object_mgr_t *om, uint obj_id ) +{ + DASSERT(om); + if ( om && om->list && obj_id < OBJMGR_MAX_SLOTS ) + return om->list + obj_id * om->otype.row_size; + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +u8 * CreateBinObjMgr +( + // return alloced data + uint *res_size, // not NULL: store size of alloced data + + const object_mgr_t + *om, // valid object manager + uint min_prio, // minimal prio + uint max_elem, // >0: limit number of elements + uint max_obj_id // >0: ignore objects with id ># +) +{ + DASSERT(om); + PRINT("CreateBinObjMgr( minp=%u, maxe=%u, maxo=%u )" + " list=%d, USE_OBJECT_MANAGER=%d\n", + min_prio, max_elem, max_obj_id, !om ? -1 : om->list!=0, + USE_OBJECT_MANAGER ); + PRINT(" -> %s\n",LogStateObjMgr(om)); + if ( !om || !om->list || !om->otype.row_size ) + return 0; + + if ( !max_elem || max_elem >= OBJMGR_MAX_SLOTS ) + max_elem = OBJMGR_MAX_SLOTS - 1; + const uint limit_obj_id = max_obj_id && max_obj_id < OBJMGR_MAX_SLOTS + ? max_obj_id : OBJMGR_MAX_SLOTS - 1; + + + //--- statistical analysis + + const int PRIO_SIZE = OBJMGR_MAX_PRIO+1; + + uint total_count = 0; + u16 count[PRIO_SIZE], max[PRIO_SIZE]; + memset(count,0,sizeof(count)); + memset(max,0,sizeof(max)); + + int i; + for ( i = 0; i < limit_obj_id; i++ ) + { + const u8 prio = om->prio[i]; + if ( prio >= min_prio && prio <= OBJMGR_MAX_PRIO ) + { + count[prio]++; + max[prio] = i; + total_count++; + } + } + + + //--- find elements to insert + + uint total_use = 0; + u16 use[OBJMGR_MAX_SLOTS]; + memset(use,0,sizeof(use)); + + int prio, max_obj_used = 0; + for ( prio = OBJMGR_MAX_PRIO; + prio >= min_prio && total_use < max_elem; prio-- ) + { + if (count[prio]) + { + uint i; + for ( i = 0; i < limit_obj_id; i++ ) + if ( prio == om->prio[i] ) + { + use[i]++; + if ( max_obj_used < i ) + max_obj_used = i; + if ( ++total_use >= max_elem ) + break; + } + } + } + + if (!max_obj_id) + max_obj_id = max_obj_used; + + PRINT(" -> FOUND: %u/%u/%u, max_obj=%x/%x/%x\n", + total_use, total_count, max_elem, + max_obj_used, max_obj_id, limit_obj_id ); + + + //--- calculate data size + + const uint data_size + = om->otype.slot_offset + + total_use * om->otype.row_size + + (max_obj_id+1) * sizeof(u16); + if (res_size) + *res_size = data_size; + u8 *data = MALLOC(data_size); + + + //--- fill data + + write_be16( data, total_use ); + write_be16( data+2, om->row_data_size/2 ); + + u8 *bin = data + om->otype.slot_offset; + u16 *ref = (u16*)( bin + total_use * om->otype.row_size ); + DASSERT( (u8*)ref + (max_obj_id+1) * sizeof(u16) == data + data_size ); + memset( ref, ~0, (max_obj_id+1) * sizeof(u16) ); + + uint idx = 0; + + for ( i = 0; i <= max_obj_id; i++ ) + { + if (!use[i]) + continue; + + memcpy(bin,om->list+i*om->otype.row_size,om->otype.row_size); + bin += om->otype.row_size; + ref[i] = htons(idx++); + } + DASSERT( idx == total_use ); + + return data; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool VerifyObjMgr +( + const object_mgr_t + *om, // valid object manager + cvp data, // data to compare + uint data_size, // size of 'data' + ccp identify // string to identify the caller +) +{ + uint om_size; + u8 *om_data = CreateBinObjMgr(&om_size,om,1,0,0); + + bool status = false; + if (!om_data) + fprintf(stderr,"VERIFY OBJ-MGR[%s]: no data\n",identify); + else if ( om_size != data_size ) + fprintf(stderr, + "VERIFY OBJ-MGR[%s]: size differ: %u : %u\n", + identify, data_size, om_size ); + else if ( memcmp(om_data,data,data_size) ) + fprintf(stderr,"VERIFY OBJ-MGR[%s]: data differ\n",identify); + else + status = true; + + if (!status) + fprintf(stderr,"LOG: %s\n",LogStateObjMgr(om)); + + if ( !status && om_data ) + { + XDump_t xd; + InitializeXDump(&xd); + xd.f = stderr; + xd.indent = 6; + xd.format = XDUMPF_INT_2; + xd.endian = DC_BIG_ENDIAN; + xd.assumed_size = data_size < om_size ? data_size : om_size; + xd.min_width = om->otype.row_size; + while ( xd.min_width > 40 && !(xd.min_width&1) ) + xd.min_width /= 2; + + #if 0 + const uint off = om->otype.slot_offset; + if ( data_size <= off || om_size <= off || memcmp(data,om_data,off) ) + XDiff( &xd, data,data_size,true, om_data,om_size,true, 5,false ); + else + XDiff( &xd, data+off,data_size-off,true, + om_data+off,om_size-off,true, 5,false ); + #else + u64 break_list[] = { om->otype.slot_offset, om->otype.ref_offset, 0 }; + xd.addr_break = break_list; + XDiff( &xd, data,data_size,true, om_data,om_size,true, 5,false ); + #endif + ResetXDump(&xd); + } + FREE(om_data); + return status; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool VerifyBinObjMgr ( cvp data, uint data_size, ccp identify ) +{ + object_mgr_t om; + InitializeObjMgr(&om,FF_UNKNOWN); + SetupObjMgrByData(&om,data,data_size,1); + const bool stat = VerifyObjMgr(&om,data,data_size,identify); + ResetObjMgr(&om); + return stat; +} + +/////////////////////////////////////////////////////////////////////////////// +#endif // USE_OBJECT_MANAGER +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// END /////////////// +/////////////////////////////////////////////////////////////////////////////// + -- cgit v1.3.1