X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffclang.c;h=1d62c4e3f52960852614ce8ff4c9e8d4ca8305f1;hb=a3b2426819836ab2454c6a7bad27c382f4a245bf;hp=e3fe09442af686e4628f7cfa5b49d3b0f58b0ecb;hpb=d6dabf368677babec02d8f64ba0598270e28b501;p=fontconfig.git diff --git a/src/fclang.c b/src/fclang.c index e3fe094..1d62c4e 100644 --- a/src/fclang.c +++ b/src/fclang.c @@ -1,7 +1,7 @@ /* - * $XFree86: xc/lib/fontconfig/fc-lang/fclang.tmpl.c,v 1.1 2002/07/06 23:21:36 keithp Exp $ + * fontconfig/src/fclang.c * - * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. + * Copyright © 2002 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -13,9 +13,9 @@ * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR @@ -23,2703 +23,800 @@ */ #include "fcint.h" +#include "fcftint.h" typedef struct { - FcChar8 *lang; - FcCharSet charset; + const FcChar8 lang[8]; + const FcCharSet charset; } FcLangCharSet; -/* total size: 496 unique leaves: 436 */ - -static const FcCharLeaf leaves[436] = { - { { /* 0 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x08000800, 0x00000000, 0x00000000, - } }, - { { /* 1 */ - 0xffff8002, 0xffffffff, 0x8002ffff, 0x00000000, - 0xc0000000, 0xf0fc33c0, 0x03000000, 0x00000000, - } }, - { { /* 2 */ - 0x88001000, 0x07fffffe, 0x0007ffff, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 3 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x10400090, 0x10400090, - } }, - { { /* 4 */ - 0xc0000000, 0x00030000, 0xc0000000, 0x00000000, - 0x00008000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 5 */ - 0x00000000, 0x00000000, 0x02000000, 0x00000000, - 0x00000000, 0x10000000, 0x00000000, 0x00000000, - } }, - { { /* 6 */ - 0xffff0100, 0xffffffff, 0x0100ffff, 0x00000000, - 0x300c0000, 0x0f00c000, 0x03000000, 0x00000300, - } }, - { { /* 7 */ - 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, - 0x030c0000, 0x0000cc0f, 0x03000000, 0x00000300, - } }, - { { /* 8 */ - 0xffff4042, 0xffffffff, 0x4042ffff, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 9 */ - 0xffff0001, 0xffffd7ff, 0x2001d7ff, 0x00000c0c, - 0x00000000, 0x00002000, 0x00000000, 0x00000000, - } }, - { { /* 10 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfff99fee, 0xd3c5fdff, 0xb080399f, 0x07ffffcf, - } }, - { { /* 11 */ - 0xffffffff, 0xffffffff, 0xfffffeff, 0xfffe07ff, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 12 */ - 0x00000000, 0x00000080, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x12020404, 0x12020404, - } }, - { { /* 13 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00800000, 0x140ca381, 0x140ca381, - } }, - { { /* 14 */ - 0x00000000, 0x80000000, 0x00000001, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 15 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x0a12cf45, 0x8a12cf45, - } }, - { { /* 16 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x34482212, 0x34482212, - } }, - { { /* 17 */ - 0x0c00f000, 0x00000000, 0x03000180, 0x6000c033, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 18 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x75592ff7, 0x75592ff7, - } }, - { { /* 19 */ - 0x00000000, 0x00000000, 0x000c0000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xfc000000, - } }, - { { /* 20 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x90400010, 0x10400010, - } }, - { { /* 21 */ - 0x00000000, 0x00000000, 0x00000000, 0x44300000, - 0xffffd7f0, 0xfffffffb, 0xfc807fff, 0x00000003, - } }, - { { /* 22 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x8fd38f81, 0x00520000, - } }, - { { /* 23 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 24 */ - 0x30000300, 0x00300030, 0x30000000, 0x00003000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 25 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x80000002, 0x140a2202, 0x140a2202, - } }, - { { /* 26 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x10600010, 0x10600010, - } }, - { { /* 27 */ - 0x00000000, 0x00000000, 0x00000000, 0x60000003, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 28 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x10020000, 0x10020000, - } }, - { { /* 29 */ - 0x00000000, 0x00000000, 0x00300000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 30 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000000, 0x10600070, 0x10600070, - } }, - { { /* 31 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x35492072, 0x35492072, - } }, - { { /* 32 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x060c3383, 0x060c3383, - } }, - { { /* 33 */ - 0x00000c00, 0x00000003, 0x00000000, 0x80000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 34 */ - 0x00000000, 0x00000000, 0x00000000, 0x10000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 35 */ - 0xc0000c0c, 0x00000000, 0x00c00003, 0x00000c03, - 0x08000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 36 */ - 0x00000000, 0x00000000, 0x00000400, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 37 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x020c1381, 0x020c1381, - } }, - { { /* 38 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x88000802, 0x140a2202, 0x140a2202, - } }, - { { /* 39 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfffbafee, 0xf3edfdff, 0x00013bbf, 0x0000ffc1, - } }, - { { /* 40 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xffff0000, 0x000007ff, - } }, - { { /* 41 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x02041101, 0x02041101, - } }, - { { /* 42 */ - 0x000330c0, 0x00000000, 0x00000000, 0x60000003, - 0x00000000, 0x00000000, 0x00001ff0, 0x003e0000, - } }, - { { /* 43 */ - 0x00ffffff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 44 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x14482203, 0x14482203, - } }, - { { /* 45 */ - 0x00000000, 0x00000000, 0x00030000, 0x00030000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 46 */ - 0x00000000, 0xfffe0000, 0xfc7fffff, 0xfffffffe, - 0x0000067f, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 47 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x75092a72, 0x75092272, - } }, - { { /* 48 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x060cb301, 0x060cb300, - } }, - { { /* 49 */ - 0x000000e7, 0x00000000, 0xfffffffe, 0xffffffff, - 0x780fffff, 0xfffffffe, 0xffffffff, 0x787fffff, - } }, - { { /* 50 */ - 0x43f36f8b, 0x9b462442, 0xe3e0e82c, 0x400a0004, - 0xdb365f65, 0x04497977, 0xe3f0ecd7, 0x08c56038, - } }, - { { /* 51 */ - 0x3403e602, 0x35518000, 0x7eabe0c8, 0x98698200, - 0x2942a948, 0x8060e803, 0xad93441c, 0x4568c03a, - } }, - { { /* 52 */ - 0x8656aa60, 0x02403f7a, 0x14618388, 0x21741020, - 0x07022021, 0x40bc3000, 0x4462a624, 0x0a2060a8, - } }, - { { /* 53 */ - 0x85740217, 0x9c840402, 0x14157bfb, 0x11e27f24, - 0x02efb665, 0x20ff1f75, 0x38403a70, 0x676326c3, - } }, - { { /* 54 */ - 0x20924dd9, 0x0fc946b0, 0x4850bc98, 0xa03f8638, - 0x88162388, 0x52323e09, 0xe3a422aa, 0xc72c00dd, - } }, - { { /* 55 */ - 0x26e1a166, 0x8f0a840b, 0x559e27eb, 0x89bbc241, - 0x85400014, 0x08496361, 0x8ad07f0c, 0x05cfff3e, - } }, - { { /* 56 */ - 0xa803ff1a, 0x7b407a41, 0x80024745, 0x38eb0500, - 0x0005d851, 0x710c9934, 0x01000397, 0x24046366, - } }, - { { /* 57 */ - 0x005180d0, 0x430ac000, 0x30c89071, 0x58000008, - 0xf7000e99, 0x00415f80, 0x941000b0, 0x62800018, - } }, - { { /* 58 */ - 0x09d00240, 0x01568200, 0x08015004, 0x05101d10, - 0x001084c1, 0x10504025, 0x4d8a410f, 0xa60d4009, - } }, - { { /* 59 */ - 0x914cab19, 0x098121c0, 0x0003c485, 0x80000652, - 0x00080b04, 0x0009041d, 0x905c4849, 0x16900009, - } }, - { { /* 60 */ - 0x22200c65, 0x24338412, 0x47960c03, 0x42250a04, - 0x90880028, 0x4f084900, 0xd3aa14a2, 0x3e87d830, - } }, - { { /* 61 */ - 0x1f618604, 0x41867ea4, 0x05b3c390, 0x211857a5, - 0x2a48241e, 0x4a041128, 0x161b0a40, 0x88400d60, - } }, - { { /* 62 */ - 0x9502020a, 0x10608221, 0x04000243, 0x80001444, - 0x0c040000, 0x70000000, 0x00c11a06, 0x0c00024a, - } }, - { { /* 63 */ - 0x00401a00, 0x40451404, 0xbdb30029, 0x052b0a78, - 0xbfa0bba9, 0x8379407c, 0xe81d12fc, 0xc5694bf6, - } }, - { { /* 64 */ - 0x044aeff6, 0xff022115, 0x402bed63, 0x0242d033, - 0x00131000, 0x59ca1b02, 0x020000a0, 0x2c41a703, - } }, - { { /* 65 */ - 0x8ff24880, 0x00000204, 0x10055800, 0x00489200, - 0x20011894, 0x34805004, 0x684c3200, 0x68be49ea, - } }, - { { /* 66 */ - 0x2e42184c, 0x21c9a820, 0x80b050b9, 0xff7c001e, - 0x14e0849a, 0x01e028c1, 0xac49870e, 0xdddb130f, - } }, - { { /* 67 */ - 0x89fbbe1a, 0x51a2a2e0, 0x32ca5502, 0x928b3e46, - 0x438f1dbf, 0x32186703, 0x33c03028, 0xa9230811, - } }, - { { /* 68 */ - 0x3a65c000, 0x04028fe3, 0x86252c4e, 0x00a1bf3d, - 0x8cd43a1a, 0x317c06c9, 0x950a00e0, 0x0edb018b, - } }, - { { /* 69 */ - 0x8c20e34b, 0xf0101182, 0xa7287d94, 0x40fbc9ac, - 0x06534484, 0x44445a90, 0x00013fc8, 0xf5d40048, - } }, - { { /* 70 */ - 0xec577701, 0x891dc442, 0x49286b83, 0xd2424109, - 0x59fe061d, 0x3a221800, 0x3b9fb7e4, 0xc0eaf003, - } }, - { { /* 71 */ - 0x82021386, 0xe4008980, 0x10a1b200, 0x0cc44b80, - 0x8944d309, 0x48341faf, 0x0c458259, 0x0450420a, - } }, - { { /* 72 */ - 0x10c8a040, 0x44503140, 0x01004004, 0x05408280, - 0x442c0108, 0x1a056a30, 0x051420a6, 0x645690cf, - } }, - { { /* 73 */ - 0x31000021, 0xcbf09c18, 0x63e2a120, 0x01b5104c, - 0x9a83538c, 0x3281b8b2, 0x0a84987a, 0x0c0233e7, - } }, - { { /* 74 */ - 0x9018d4cc, 0x9070a1a1, 0xe0048a1e, 0x0451c3d4, - 0x21c2439a, 0x53104844, 0x36400292, 0xf3bd0241, - } }, - { { /* 75 */ - 0xe8f0ab09, 0xa5d27dc0, 0xd24bc242, 0xd0afa43f, - 0x34a11aa0, 0x03d88247, 0x651bc452, 0xc83ad294, - } }, - { { /* 76 */ - 0x40c8001c, 0x33140e06, 0xb21b614f, 0xc0d00088, - 0xa898a02a, 0x166ba1c5, 0x85b42e50, 0x0604c08b, - } }, - { { /* 77 */ - 0x1e04f933, 0xa251056e, 0x76380400, 0x73b8ec07, - 0x18324406, 0xc8164081, 0x63097c8a, 0xaa042980, - } }, - { { /* 78 */ - 0xca9c1c24, 0x27604e0e, 0x83000990, 0x81040046, - 0x10816011, 0x0908540d, 0xcc0a000e, 0x0c000500, - } }, - { { /* 79 */ - 0xa0440430, 0x6784008b, 0x8a195288, 0x8b18865e, - 0x41602e59, 0x9cbe8c10, 0x891c6861, 0x00089800, - } }, - { { /* 80 */ - 0x089a8100, 0x41900018, 0xe4a14007, 0x640d0505, - 0x0e4d310e, 0xff0a4806, 0x2aa81632, 0x000b852e, - } }, - { { /* 81 */ - 0xca841800, 0x696c0e20, 0x16000032, 0x03905658, - 0x1a285120, 0x11248000, 0x432618e1, 0x0eaa5d52, - } }, - { { /* 82 */ - 0xae280fa0, 0x4500fa7b, 0x89406408, 0xc044c880, - 0xb1419005, 0x24c48424, 0x603a1a34, 0xc1949000, - } }, - { { /* 83 */ - 0x003a8246, 0xc106180d, 0x99100022, 0x1511e050, - 0x00824057, 0x020a041a, 0x8930004f, 0x444ad813, - } }, - { { /* 84 */ - 0xed228a02, 0x400510c0, 0x01021000, 0x31018808, - 0x02044600, 0x0708f000, 0xa2008900, 0x22020000, - } }, - { { /* 85 */ - 0x16100200, 0x10400042, 0x02605200, 0x200052f4, - 0x82308510, 0x42021100, 0x80b54308, 0x9a2070e1, - } }, - { { /* 86 */ - 0x08012040, 0xfc653500, 0xab0419c1, 0x62140286, - 0x00440087, 0x02449085, 0x0a85405c, 0x33803207, - } }, - { { /* 87 */ - 0xb8c00400, 0xc0d0ce20, 0x0080c030, 0x0d250508, - 0x00400a90, 0x080c0200, 0x40006505, 0x41026421, - } }, - { { /* 88 */ - 0x00000268, 0x847c0024, 0xde200002, 0x40498619, - 0x40000808, 0x20010084, 0x10108400, 0x01c742cd, - } }, - { { /* 89 */ - 0xd52a7038, 0x1d8f1968, 0x3e12be50, 0x81d92ef5, - 0x2412cec4, 0x732e0828, 0x4b3424ac, 0xd41d020c, - } }, - { { /* 90 */ - 0x80002a02, 0x08110097, 0x114411c4, 0x7d451786, - 0x064949d9, 0x87914000, 0xd8c4254c, 0x491444ba, - } }, - { { /* 91 */ - 0xc8001b92, 0x15800271, 0x0c000081, 0xc200096a, - 0x40024800, 0xba493021, 0x1c802080, 0x1008e2ac, - } }, - { { /* 92 */ - 0x00341004, 0x841400e1, 0x20000020, 0x10149800, - 0x04aa70c2, 0x54208688, 0x04130c62, 0x20109180, - } }, - { { /* 93 */ - 0x02064082, 0x54001c40, 0xe4e90383, 0x84802125, - 0x2000e433, 0xe60944c0, 0x81260a03, 0x080112da, - } }, - { { /* 94 */ - 0x97906901, 0xf8864001, 0x0081e24d, 0xa6510a0e, - 0x81ec011a, 0x8441c600, 0xb62cadb8, 0x8741a46f, - } }, - { { /* 95 */ - 0x4b028d54, 0x02681161, 0x2057bb60, 0x043350a0, - 0xb7b4a8c0, 0x01122402, 0x20009ad3, 0x00c82271, - } }, - { { /* 96 */ - 0x809e2081, 0xe1800c8a, 0x8151b009, 0x40281031, - 0x89a52a0e, 0x620e69b6, 0xd1444425, 0x4d548085, - } }, - { { /* 97 */ - 0x1fb12c75, 0x862dd807, 0x4841d87c, 0x226e414e, - 0x9e088200, 0xed37f80c, 0x75268c80, 0x08149313, - } }, - { { /* 98 */ - 0xc8040e32, 0x6ea6484e, 0x66702c4a, 0xba0126c0, - 0x185dd30c, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 99 */ - 0x00000000, 0x05400000, 0x81337020, 0x03a54f81, - 0x641055ec, 0x2344c318, 0x00341462, 0x1a090a43, - } }, - { { /* 100 */ - 0x13a5187b, 0xa8480102, 0xc5440440, 0xe2dd8106, - 0x2d481af0, 0x0416b626, 0x6e405058, 0x31128032, - } }, - { { /* 101 */ - 0x0c0007e4, 0x420a8208, 0x803b4840, 0x87134860, - 0x3428850d, 0xe5290319, 0x870a2345, 0x5c1825a9, - } }, - { { /* 102 */ - 0xd9c577a6, 0x03e85e00, 0xa7000081, 0x41c6cd54, - 0xa2042800, 0x2b0ab860, 0xda9e0020, 0x0e1a08ea, - } }, - { { /* 103 */ - 0x11c0427c, 0x03768908, 0x01058621, 0x18a80000, - 0xc44846a0, 0x20220d05, 0x91485422, 0x28978a01, - } }, - { { /* 104 */ - 0x00087898, 0x31221605, 0x08804240, 0x06a2fa4e, - 0x92110814, 0x9b042002, 0x06432e52, 0x90105000, - } }, - { { /* 105 */ - 0x85ba0041, 0x20203042, 0x05a04f0b, 0x40802708, - 0x1a930591, 0x0600df50, 0x3021a202, 0x4e800630, - } }, - { { /* 106 */ - 0x04c80cc4, 0x8001a004, 0xd4316000, 0x0a020880, - 0x00281c00, 0x00418e18, 0xca106ad0, 0x4b00f210, - } }, - { { /* 107 */ - 0x1506274d, 0x88900220, 0x82a85a00, 0x81504549, - 0x80002004, 0x2c088804, 0x000508d1, 0x4ac48001, - } }, - { { /* 108 */ - 0x0062e020, 0x0a42008e, 0x6a8c3055, 0xe0a5090e, - 0x42c42906, 0x80b34814, 0xb330803e, 0x731c0102, - } }, - { { /* 109 */ - 0x600d1494, 0x09400c20, 0xc040301a, 0xc094a451, - 0x05c88dca, 0xa40c96c2, 0x34040001, 0x011000c8, - } }, - { { /* 110 */ - 0xa9c9550d, 0x1c5a2428, 0x48370142, 0x100f7a4d, - 0x452a32b4, 0x9205317b, 0x5c44b894, 0x458a68d7, - } }, - { { /* 111 */ - 0x2ed15097, 0x42081943, 0x9d40d202, 0x20979840, - 0x064d5409, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 112 */ - 0x00000000, 0x84800000, 0x04215542, 0x17001c06, - 0x61107624, 0xb9ddff87, 0x5c0a659f, 0x3c00245d, - } }, - { { /* 113 */ - 0x0059adb0, 0x00000000, 0x00000000, 0x009b28d0, - 0x02000422, 0x44080108, 0xac409804, 0x90288d0a, - } }, - { { /* 114 */ - 0xe0018700, 0x00310400, 0x82211794, 0x10540019, - 0x021a2cb2, 0x40039c02, 0x88043d60, 0x7900080c, - } }, - { { /* 115 */ - 0xba3c1628, 0xcb088640, 0x90807274, 0x0000001e, - 0xd8000000, 0x9c87e188, 0x04124034, 0x2791ae64, - } }, - { { /* 116 */ - 0xe6fbe86b, 0x5366408f, 0x537feea6, 0xb5e4e32b, - 0x0002869f, 0x01228548, 0x08004402, 0x20a02116, - } }, - { { /* 117 */ - 0x02040004, 0x00052000, 0x01547e00, 0x01ac162c, - 0x10852a84, 0x05308c14, 0xb943fbc3, 0x906000ca, - } }, - { { /* 118 */ - 0x40326000, 0x80901200, 0x4c810b30, 0x40020054, - 0x1d6a0029, 0x02802000, 0x00048000, 0x150c2610, - } }, - { { /* 119 */ - 0x07018040, 0x0c24d94d, 0x18502810, 0x50205001, - 0x04d01000, 0x02017080, 0x21c30108, 0x00000132, - } }, - { { /* 120 */ - 0x07190088, 0x05600802, 0x4c0e0012, 0xf0a10405, - 0x00000002, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 121 */ - 0x00000000, 0x00000000, 0x00000000, 0x00800000, - 0x035a8e8d, 0x5a0421bd, 0x11703488, 0x00000026, - } }, - { { /* 122 */ - 0x10000000, 0x8804c502, 0xf801b815, 0x25ed147c, - 0x1bb0ed60, 0x1bd70589, 0x1a627af3, 0x0ac50d0c, - } }, - { { /* 123 */ - 0x524ae5d1, 0x63050490, 0x52440354, 0x16122b57, - 0x1101a872, 0x00182949, 0x10080948, 0x886c6000, - } }, - { { /* 124 */ - 0x058f916e, 0x39903012, 0x4930f840, 0x001b8880, - 0x00000000, 0x00428500, 0x98000058, 0x7014ea04, - } }, - { { /* 125 */ - 0x611d1628, 0x60005113, 0x00a71a24, 0x00000000, - 0x03c00000, 0x10187120, 0xa9270172, 0x89066004, - } }, - { { /* 126 */ - 0x020cc022, 0x40810900, 0x8ca0202d, 0x00000e34, - 0x00000000, 0x11012100, 0xc11a8011, 0x0892ec4c, - } }, - { { /* 127 */ - 0x85000040, 0x1806c7ac, 0x0512e03e, 0x00108000, - 0x80ce4008, 0x02106d01, 0x08568641, 0x0027011e, - } }, - { { /* 128 */ - 0x083d3750, 0x4e05e032, 0x048401c0, 0x01400081, - 0x00000000, 0x00000000, 0x00000000, 0x00591aa0, - } }, - { { /* 129 */ - 0x882443c8, 0xc8001d48, 0x72030152, 0x04049013, - 0x04008280, 0x0d148a10, 0x02088056, 0x2704a040, - } }, - { { /* 130 */ - 0x4c000000, 0x00000000, 0x00000000, 0xa3200000, - 0xa0ae1902, 0xdf002660, 0x7b15f010, 0x3ad08121, - } }, - { { /* 131 */ - 0x00284180, 0x48001003, 0x8014cc00, 0x00c414cf, - 0x30202000, 0x00000001, 0x00000000, 0x00000000, - } }, - { { /* 132 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000020, - } }, - { { /* 133 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000200, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 134 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xffffffff, 0xffff003f, 0x09ffffff, - } }, - { { /* 135 */ - 0xffff0042, 0xffffffff, 0x0042ffff, 0x00000000, - 0x0c0c0000, 0x0c00000c, 0x03000000, 0x00000300, - } }, - { { /* 136 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x0d10646e, 0x0d10646e, - } }, - { { /* 137 */ - 0x00000000, 0x01000300, 0x00000000, 0x00000300, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 138 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xffffffff, 0xffffffff, 0x1fffffff, 0x000003ff, - } }, - { { /* 139 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfffddfec, 0xc3effdff, 0x40603ddf, 0x0000ffc3, - } }, - { { /* 140 */ - 0x00000007, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 141 */ - 0x00000000, 0xfffe0000, 0xffffffff, 0xffffffff, - 0x00007fff, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 142 */ - 0x1fffffff, 0x00000000, 0x00000000, 0x8fffffff, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 143 */ - 0x43722f8b, 0x0b042000, 0xe340e82c, 0x40c82800, - 0x49375944, 0x04407976, 0xa3f02c93, 0x08c50038, - } }, - { { /* 144 */ - 0x0003ee02, 0x35508000, 0x1e23e1c8, 0xc4498200, - 0x2942ad5a, 0x8060c000, 0xa49a461c, 0x052ac003, - } }, - { { /* 145 */ - 0xd6462a44, 0x08003dda, 0x14208388, 0x01700020, - 0x03022021, 0x40ac3000, 0x44628620, 0x8a0020a0, - } }, - { { /* 146 */ - 0x80040253, 0x14840402, 0x10047bfb, 0x11e27fa4, - 0x00a42441, 0x20c01421, 0x70003a50, 0x27430002, - } }, - { { /* 147 */ - 0x208245c9, 0x0fc14630, 0x28503c88, 0xa0248602, - 0x88062388, 0x40000e19, 0xeb6422aa, 0xcd28001c, - } }, - { { /* 148 */ - 0x02e1a120, 0x8200840b, 0x549e279b, 0xa0b38141, - 0x85080010, 0x08002061, 0x08d02f08, 0x010fbe3e, - } }, - { { /* 149 */ - 0xa803f718, 0x5b080a41, 0x00020504, 0x382a0500, - 0x00015041, 0x21081910, 0x00000313, 0x04046122, - } }, - { { /* 150 */ - 0x100140d0, 0x40228000, 0x40488050, 0x10000008, - 0x370006d1, 0x00005e80, 0x941000a0, 0x60000018, - } }, - { { /* 151 */ - 0x00900240, 0x00548000, 0x00080000, 0x00100900, - 0x00000040, 0x10105020, 0x4c022400, 0x06010001, - } }, - { { /* 152 */ - 0x814c2918, 0x08012100, 0x00036485, 0x10214452, - 0x00080904, 0x0000000d, 0x80004988, 0x16910001, - } }, - { { /* 153 */ - 0x40000765, 0x04338492, 0x45928c00, 0x52200016, - 0xd0080228, 0x4c084300, 0xc32a40a2, 0x2e009810, - } }, - { { /* 154 */ - 0x16708000, 0x40826e84, 0x04b3c390, 0x21187c85, - 0x02c8041c, 0x4a001120, 0x361b0a48, 0x89005540, - } }, - { { /* 155 */ - 0x9902000a, 0x10400221, 0x04000242, 0x00000044, - 0x0c040000, 0x00000010, 0x00001216, 0x00000242, - } }, - { { /* 156 */ - 0x00401a20, 0x00000400, 0xb5b30009, 0x15230a18, - 0x1fe89ba0, 0x8379507c, 0xc09d10fd, 0x0560dbf6, - } }, - { { /* 157 */ - 0x0242ef92, 0xdf020110, 0x08226961, 0x02029035, - 0x00030000, 0x45aa1a02, 0x02000001, 0x28518101, - } }, - { { /* 158 */ - 0x02d26080, 0x00000280, 0x00011800, 0x00009200, - 0x20000880, 0x35000405, 0x60442000, 0x609e49e6, - } }, - { { /* 159 */ - 0x2a42104c, 0xa1482820, 0x802010b1, 0x7b9c000e, - 0x14a08490, 0x41e028c1, 0x8c490704, 0x0cc8100d, - } }, - { { /* 160 */ - 0x89ba8412, 0x142202c0, 0x0ac05500, 0x92833ec4, - 0x43871ca3, 0x22a04703, 0x03c03028, 0xa0200801, - } }, - { { /* 161 */ - 0x30448000, 0x000085a3, 0x2225200e, 0x0001b73c, - 0x8c503220, 0x315d0099, 0x940200a0, 0x0e4b0003, - } }, - { { /* 162 */ - 0x8c20e342, 0xd0910080, 0xa3281d94, 0x60c1499c, - 0x07134406, 0x44445a90, 0x00000f88, 0x95c40040, - } }, - { { /* 163 */ - 0x84477581, 0xc0534402, 0x01082b83, 0x92424000, - 0x09a60611, 0x32220800, 0x1bddb384, 0xc08af000, - } }, - { { /* 164 */ - 0x00020282, 0x6c008800, 0x00219200, 0x8c844180, - 0x09441308, 0x000007a7, 0x0c418051, 0x00d06002, - } }, - { { /* 165 */ - 0x10d0a000, 0x44003004, 0x01000000, 0x07008201, - 0x440e0100, 0x08056830, 0x051464b2, 0x441410e6, - } }, - { { /* 166 */ - 0x21000011, 0xcbc09c08, 0x40c2e120, 0x41b4304c, - 0x9a8310ac, 0x328198b2, 0x00849822, 0xbc123369, - } }, - { { /* 167 */ - 0xc03bd6c0, 0x0c53a1a1, 0xea008a1e, 0x05d8cbf0, - 0x21c34390, 0x4a1c4805, 0x324002d0, 0xd79d0041, - } }, - { { /* 168 */ - 0xe8b02b09, 0x24527dc0, 0xd04bc240, 0xc8aba000, - 0x34a98a80, 0x41c98000, 0x241f8010, 0x487b9200, - } }, - { { /* 169 */ - 0x00cc0000, 0x33008406, 0x001b410f, 0x80402000, - 0xa0988022, 0x006ba186, 0x85a42a30, 0x06044181, - } }, - { { /* 170 */ - 0x00046021, 0xa0010080, 0x46b80400, 0x03a0e90f, - 0x18200000, 0x081040a0, 0x0001380a, 0xa8000500, - } }, - { { /* 171 */ - 0xc28a0404, 0x2720000a, 0x830c0910, 0x00000802, - 0x10806211, 0x0808000c, 0x0c08000c, 0x08400000, - } }, - { { /* 172 */ - 0x00441410, 0x6404000b, 0x800150c0, 0x8984047e, - 0x41400658, 0x94a4c000, 0x09dca862, 0x00001800, - } }, - { { /* 173 */ - 0x000a8100, 0x41900008, 0xe4a14007, 0x64452501, - 0x0e7d11ee, 0xfb084800, 0x08a81616, 0x0009c92e, - } }, - { { /* 174 */ - 0x4a821800, 0x6b6406a0, 0x16000002, 0x83905648, - 0x002a73a0, 0x00248000, 0x470288f9, 0x0faa4d02, - } }, - { { /* 175 */ - 0x8e800000, 0x7554b87b, 0xd9402418, 0x040cc880, - 0xb0410000, 0x04428c24, 0x001a5a34, 0xc1108000, - } }, - { { /* 176 */ - 0x00328046, 0x8106180d, 0xcd920002, 0x74016014, - 0x00916112, 0x420ac098, 0x8420040f, 0x40029a13, - } }, - { { /* 177 */ - 0xfd228a62, 0x40808188, 0x21031000, 0x31010808, - 0x07044420, 0x0388b812, 0xa3008900, 0x22020000, - } }, - { { /* 178 */ - 0x46001210, 0x00410042, 0x52415680, 0x200052f0, - 0x82148610, 0x46021004, 0x8035430a, 0xd80060e0, - } }, - { { /* 179 */ - 0x08010041, 0x6c653400, 0xab0411c1, 0x22040286, - 0x00000003, 0x00009084, 0x02814015, 0x33000202, - } }, - { { /* 180 */ - 0x38400400, 0xc0c00e20, 0x00850030, 0x0d250500, - 0x81d04ad0, 0x020c2280, 0x6240b605, 0x62802679, - } }, - { { /* 181 */ - 0x080802ea, 0x8579dd67, 0xdea0081b, 0x40008735, - 0xd1000a8c, 0xa22505aa, 0x15108440, 0x0080404d, - } }, - { { /* 182 */ - 0x8d220012, 0x058f1968, 0x3a1a9080, 0x85618464, - 0x2002ccc0, 0x732e0820, 0x0b3420a4, 0x14150004, - } }, - { { /* 183 */ - 0x82002001, 0x08000057, 0x00445004, 0x79051212, - 0x000940d0, 0x84004000, 0xd844054c, 0x5114409a, - } }, - { { /* 184 */ - 0x40000b12, 0x15800201, 0x08002001, 0xc200084a, - 0x40020800, 0x98093020, 0x18800000, 0x0008e22c, - } }, - { { /* 185 */ - 0x00040004, 0x001410e0, 0x20008020, 0x10009800, - 0x00827082, 0x1c000288, 0x00014c22, 0x08209100, - } }, - { { /* 186 */ - 0x00404002, 0x44001c00, 0x7cc10383, 0x84002121, - 0x0002e002, 0xe20a44c0, 0x81260e03, 0x080002d0, - } }, - { { /* 187 */ - 0x96902921, 0xb8c24001, 0x00806241, 0xa6510a06, - 0x812c0112, 0x0400c600, 0xa2800cb0, 0x8640a429, - } }, - { { /* 188 */ - 0x4a028000, 0x02003041, 0x0057ba40, 0x20205001, - 0x24b08880, 0x01122002, 0x000402d3, 0x00000211, - } }, - { { /* 189 */ - 0x40040080, 0xe0000c82, 0x00003008, 0x00081011, - 0x81a40208, 0x420e40a0, 0xc0400400, 0x48000081, - } }, - { { /* 190 */ - 0x0f912df5, 0x0629d807, 0x4001007c, 0x824e4546, - 0x1008c000, 0xed363005, 0x65400c80, 0x0810930b, - } }, - { { /* 191 */ - 0xe8200600, 0x6082c80a, 0x403400ca, 0x12012e02, - 0x19489004, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 192 */ - 0x00000000, 0x05400000, 0x00311000, 0x02a54c00, - 0x44105520, 0x23040310, 0x80345422, 0x12010a03, - } }, - { { /* 193 */ - 0x01a1126b, 0xa0482000, 0x45400448, 0xe08d8000, - 0x28401af0, 0x04168626, 0x4c005018, 0x21120032, - } }, - { { /* 194 */ - 0x0d0005e4, 0x42008a08, 0x00334800, 0x87030860, - 0x34008501, 0xe4280109, 0x81002045, 0x5c1825a8, - } }, - { { /* 195 */ - 0xd80435a0, 0x02e01c02, 0x020000a1, 0x4146c050, - 0xa6046800, 0xbb8af260, 0xc8b60000, 0x600200e2, - } }, - { { /* 196 */ - 0x0080023e, 0x03728900, 0x00068681, 0x08880000, - 0x41404600, 0x20000e04, 0x10481622, 0x22178a00, - } }, - { { /* 197 */ - 0x00007418, 0x21021200, 0x08800200, 0x0420984a, - 0x12110000, 0x99040002, 0x04022a55, 0x10105000, - } }, - { { /* 198 */ - 0x459a0000, 0xa000b02a, 0x0208420a, 0x00002708, - 0x08128090, 0x04018740, 0x3020e202, 0x8c800630, - } }, - { { /* 199 */ - 0x04c004c4, 0x80002000, 0xd8314000, 0x02000080, - 0x00081400, 0x00000218, 0x8a100880, 0x40002010, - } }, - { { /* 200 */ - 0x1500010d, 0x00000000, 0x80a04000, 0x01500140, - 0x80002004, 0x04080004, 0x00000010, 0x4a049001, - } }, - { { /* 201 */ - 0x80000020, 0x0842000c, 0x2a8c3041, 0xc085090e, - 0x40c42906, 0x00100800, 0xb2308006, 0x21380102, - } }, - { { /* 202 */ - 0x030d0080, 0x09400420, 0x80000012, 0x80040410, - 0x004888ca, 0x24040602, 0x00040001, 0x01100008, - } }, - { { /* 203 */ - 0xa9c8550d, 0x0c522428, 0x48310000, 0x022f624d, - 0x412830a0, 0xd205057b, 0x1844a894, 0x45c26cc2, - } }, - { { /* 204 */ - 0x2ed14017, 0x02081901, 0x1500c202, 0x20919040, - 0x044d0401, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 205 */ - 0x00000000, 0x80800000, 0x04201542, 0x06000c02, - 0x60001404, 0xb9d99f87, 0x540a059f, 0x3810245d, - } }, - { { /* 206 */ - 0x004825b0, 0x00000000, 0x00000000, 0x00990850, - 0x02000420, 0x44080108, 0x28009840, 0x0008810a, - } }, - { { /* 207 */ - 0x40018400, 0x00210400, 0x82000794, 0x00500001, - 0x00002482, 0x00001c00, 0x80043c01, 0x49000800, - } }, - { { /* 208 */ - 0xf83c0228, 0xcb0886c0, 0xa0006230, 0x00000004, - 0x18000000, 0x0007a148, 0x00124024, 0x22852c40, - } }, - { { /* 209 */ - 0xe6b3a96f, 0x5126400f, 0x723b6c86, 0xb5a4e20b, - 0x0222859f, 0x0123854c, 0x40000402, 0x20202102, - } }, - { { /* 210 */ - 0x02240004, 0x00042080, 0x00047e00, 0x01a01604, - 0x10042a80, 0x0032d800, 0x3183fa81, 0x00200488, - } }, - { { /* 211 */ - 0x40872000, 0x84100000, 0x48800221, 0x00000074, - 0x114a0029, 0x02c80000, 0x00049000, 0x11000410, - } }, - { { /* 212 */ - 0xc5010010, 0x0000c957, 0x08102d00, 0x50204000, - 0x04501000, 0x00013088, 0x40020008, 0x00400012, - } }, - { { /* 213 */ - 0x01000010, 0x01200820, 0x08060010, 0xa0000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 214 */ - 0x00000000, 0x00000000, 0x00000000, 0x00800000, - 0x011e8a09, 0x18022138, 0x10700480, 0x00000006, - } }, - { { /* 215 */ - 0x10000000, 0x88044402, 0xf8013815, 0x21e9041c, - 0x1b306c60, 0x08820588, 0x1a607af3, 0x0ac5870c, - } }, - { { /* 216 */ - 0x524a00c1, 0x22050080, 0x50420114, 0x04902206, - 0x0000a800, 0x00002901, 0x10080840, 0x88480000, - } }, - { { /* 217 */ - 0x018f156f, 0x0b012000, 0x45107040, 0x000088a0, - 0x00000000, 0x00028100, 0x98000090, 0x7010e006, - } }, - { { /* 218 */ - 0x41091608, 0x00000101, 0x00963a20, 0x00000000, - 0x22400000, 0x021a7120, 0xa2270002, 0x80022000, - } }, - { { /* 219 */ - 0x0200c102, 0x00c10800, 0x8ca02029, 0x00000624, - 0x00000000, 0x01000100, 0x01180000, 0x00004020, - } }, - { { /* 220 */ - 0x04000000, 0x10020480, 0x0410803e, 0x00008000, - 0x80024000, 0x00004800, 0x00400200, 0x00000110, - } }, - { { /* 221 */ - 0x00252000, 0x08040020, 0x00800280, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x005802a0, - } }, - { { /* 222 */ - 0x08000200, 0x08000140, 0x20020000, 0x00041003, - 0x00000000, 0x00108200, 0x00800010, 0x07040000, - } }, - { { /* 223 */ - 0x44000000, 0x00000000, 0x00000000, 0xa2200000, - 0xa08c0000, 0x48300020, 0x59126008, 0x00100100, - } }, - { { /* 224 */ - 0x00084180, 0x08000001, 0x80044c00, 0x00801482, - 0x10212000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 225 */ - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - } }, - { { /* 226 */ - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0x0000000f, 0x00000000, 0x00000000, - } }, - { { /* 227 */ - 0x00000fff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 228 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000040, - } }, - { { /* 229 */ - 0x000c0003, 0x00003c00, 0x0000f000, 0x00003c00, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 230 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfef02596, 0x3bffecae, 0x33ff3f5f, 0x00000000, - } }, - { { /* 231 */ - 0x000033f0, 0x0000c000, 0x00000000, 0x600c0c03, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 232 */ - 0x000c3003, 0x18c00c0c, 0x00c03060, 0x60000c03, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 233 */ - 0xfdffb729, 0x000001ff, 0xb7290000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 234 */ - 0xfffddfec, 0xc3fffdff, 0x00803dcf, 0x0000ffc3, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 235 */ - 0x03ff07ff, 0xffffffff, 0xffffffff, 0x00ffffff, - 0xffffffff, 0x000003ff, 0x00000000, 0x00000000, - } }, - { { /* 236 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x00004004, 0x00004004, - } }, - { { /* 237 */ - 0x0000000c, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 238 */ - 0x0f000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 239 */ - 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 240 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x0e1c7707, 0x0e1c7707, - } }, - { { /* 241 */ - 0x00000c00, 0x000000c3, 0x00000000, 0x18000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 242 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x10000000, 0x00000000, 0x00000000, - } }, - { { /* 243 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x10408810, 0x10408810, - } }, - { { /* 244 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000800, 0x115c0ff7, 0x115c0ff7, - } }, - { { /* 245 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x000cab83, 0x0004ab83, - } }, - { { /* 246 */ - 0xfff99fee, 0xf3cdfdff, 0xb0c0398f, 0x0001ffc3, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 247 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x00080000, 0x00080000, - } }, - { { /* 248 */ - 0x030000f0, 0x00000000, 0x0c00001e, 0x1e000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 249 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000000, 0x1438268f, 0x1438268f, - } }, - { { /* 250 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x02045301, 0x02045301, - } }, - { { /* 251 */ - 0xffff0042, 0xffffffff, 0x0042ffff, 0x003c000c, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 252 */ - 0xfdff8f04, 0xfdff01ff, 0x8f0401ff, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 253 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfc7fffec, 0x2ffbffff, 0xff5f847f, 0x001c0000, - } }, - { { /* 254 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x34582212, 0x34582212, - } }, - { { /* 255 */ - 0x0000f000, 0x66000000, 0x00330180, 0x60030033, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 256 */ - 0x000330c0, 0x00000000, 0x00000000, 0x60000003, - 0x00000000, 0x00000000, 0x00001b60, 0x003c0000, - } }, - { { /* 257 */ - 0x00009e2c, 0x00000000, 0x9e2c0000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 258 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x00000880, 0x00000880, - } }, - { { /* 259 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x08000000, 0x3fdfffff, 0x3f5fffff, - } }, - { { /* 260 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xd63dc7ec, 0xc3bfc718, 0x00803dc7, 0x0007ff80, - } }, - { { /* 261 */ - 0xfffddfee, 0xc3effdff, 0x00603ddf, 0x0000ffc3, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 262 */ - 0xfffffffe, 0x87ffffff, 0x0fffffff, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 263 */ - 0x001fdfff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 264 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00800000, 0x18400004, 0x18400084, - } }, - { { /* 265 */ - 0xc0000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 266 */ - 0xffff00d2, 0xffffffff, 0x00d2ffff, 0x00000000, - 0x00030000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 267 */ - 0x00000000, 0x00000000, 0x077dfffe, 0x077dfffe, - 0x00000000, 0x00000000, 0x10400010, 0x10400010, - } }, - { { /* 268 */ - 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, - 0x00000000, 0x00000000, 0x081047a4, 0x081047a4, - } }, - { { /* 269 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000280, 0x00000000, - } }, - { { /* 270 */ - 0x7f7b7f8b, 0xef553db4, 0xf35dfba8, 0x400b0243, - 0x8d3efb40, 0x8c2c7bf7, 0xe3fa6eff, 0xa8ed1d3a, - } }, - { { /* 271 */ - 0xcf83e602, 0x35558cf5, 0xffabe048, 0xd85992b9, - 0x2892ab18, 0x8020d7e9, 0xf583c438, 0x450ae74a, - } }, - { { /* 272 */ - 0x9714b000, 0x54007762, 0x1420d188, 0xc8c01020, - 0x00002121, 0x0c0413a8, 0x04408000, 0x082870c0, - } }, - { { /* 273 */ - 0x000408c0, 0x80000002, 0x14722b7b, 0x3bfb7924, - 0x1ae43327, 0x38ef9835, 0x28029ad1, 0xbf69a813, - } }, - { { /* 274 */ - 0x2fc665cf, 0xafc96b11, 0x5053340f, 0xa00486a2, - 0xe8090106, 0xc00e3f0f, 0x81450a88, 0xc6010010, - } }, - { { /* 275 */ - 0x26e1a161, 0xce00444b, 0xd4eec7aa, 0x85bbcadf, - 0xa5203a74, 0x8840436c, 0x8bd23f06, 0x3befff79, - } }, - { { /* 276 */ - 0xe8eff75a, 0x5b36fbcb, 0x1bfd0d49, 0x39ee0154, - 0x2e75d855, 0xa91abfd8, 0xf6bff3d7, 0xb40c67e0, - } }, - { { /* 277 */ - 0x081382c2, 0xd08bd49d, 0x1061065a, 0x59e074f2, - 0xb3128f9f, 0x6aaa0080, 0xb05e3230, 0x60ac9d7a, - } }, - { { /* 278 */ - 0xc900d303, 0x8a563098, 0x13907000, 0x18421f14, - 0x0008c060, 0x10808008, 0xec900400, 0xe6332817, - } }, - { { /* 279 */ - 0x90000758, 0x4e09f708, 0xfc83f485, 0x18c8af53, - 0x080c187c, 0x01146adf, 0xa734c80c, 0x2710a011, - } }, - { { /* 280 */ - 0x422228c5, 0x00210413, 0x41123010, 0x40001820, - 0xc60c022b, 0x10000300, 0x00220022, 0x02495810, - } }, - { { /* 281 */ - 0x9670a094, 0x1792eeb0, 0x05f2cb96, 0x23580025, - 0x42cc25de, 0x4a04cf38, 0x359f0c40, 0x8a001128, - } }, - { { /* 282 */ - 0x910a13fa, 0x10560229, 0x04200641, 0x84f00484, - 0x0c040000, 0x412c0400, 0x11541206, 0x00020a4b, - } }, - { { /* 283 */ - 0x00c00200, 0x00940000, 0xbfbb0001, 0x242b167c, - 0x7fa89bbb, 0xe3790c7f, 0xe00d10f4, 0x9f014132, - } }, - { { /* 284 */ - 0x35728652, 0xff1210b4, 0x4223cf27, 0x8602c06b, - 0x1fd33106, 0xa1aa3a0c, 0x02040812, 0x08012572, - } }, - { { /* 285 */ - 0x485040cc, 0x601062d0, 0x29001c80, 0x00109a00, - 0x22000004, 0x00800000, 0x68002020, 0x609ecbe6, - } }, - { { /* 286 */ - 0x3f73916e, 0x398260c0, 0x48301034, 0xbd5c0006, - 0xd6fb8cd1, 0x43e820e1, 0x084e0600, 0xc4d00500, - } }, - { { /* 287 */ - 0x89aa8d1f, 0x1602a6e1, 0x21ed0001, 0x1a8b3656, - 0x13a51fb7, 0x30a06502, 0x23c7b278, 0xe9226c93, - } }, - { { /* 288 */ - 0x3a74e47f, 0x98208fe3, 0x2625280e, 0xbf49bf9c, - 0xac543218, 0x1916b949, 0xb5220c60, 0x0659fbc1, - } }, - { { /* 289 */ - 0x8420e343, 0x800008d9, 0x20225500, 0x00a10184, - 0x20104800, 0x40801380, 0x00160d04, 0x80200040, - } }, - { { /* 290 */ - 0x8de7fd40, 0xe0985436, 0x091e7b8b, 0xd249fec8, - 0x8dee0611, 0xba221937, 0x9fdd77f4, 0xf0daf3ec, - } }, - { { /* 291 */ - 0xec424386, 0x26048d3f, 0xc021fa6c, 0x0cc2628e, - 0x0145d785, 0x559977ad, 0x4045e250, 0xa154260b, - } }, - { { /* 292 */ - 0x58199827, 0xa4103443, 0x411405f2, 0x07002280, - 0x426600b4, 0x15a17210, 0x41856025, 0x00000054, - } }, - { { /* 293 */ - 0x01040201, 0xcb70c820, 0x6a629320, 0x0095184c, - 0x9a8b1880, 0x3201aab2, 0x00c4d87a, 0x04c3f3e5, - } }, - { { /* 294 */ - 0xa238d44d, 0x5072a1a1, 0x84fc980a, 0x44d1c152, - 0x20c21094, 0x42104180, 0x3a000000, 0xd29d0240, - } }, - { { /* 295 */ - 0xa8b12f01, 0x2432bd40, 0xd04bd34d, 0xd0ada723, - 0x75a10a92, 0x01e9adac, 0x771f801a, 0xa01b9225, - } }, - { { /* 296 */ - 0x20cadfa1, 0x738c0602, 0x003b577f, 0x00d00bff, - 0x0088806a, 0x0029a1c4, 0x05242a05, 0x16234009, - } }, - { { /* 297 */ - 0x80056822, 0xa2112011, 0x64900004, 0x13824849, - 0x193023d5, 0x08922980, 0x88115402, 0xa0042001, - } }, - { { /* 298 */ - 0x81800400, 0x60228502, 0x0b010090, 0x12020022, - 0x00834011, 0x00001a01, 0x00000000, 0x00000000, - } }, - { { /* 299 */ - 0x00000000, 0x4684009f, 0x020012c8, 0x1a0004fc, - 0x0c4c2ede, 0x80b80402, 0x0afca826, 0x22288c02, - } }, - { { /* 300 */ - 0x8f7ba0e0, 0x2135c7d6, 0xf8b106c7, 0x62550713, - 0x8a19936e, 0xfb0e6efa, 0x48f91630, 0x7debcd2f, - } }, - { { /* 301 */ - 0x4e845892, 0x7a2e4ca0, 0x561eedea, 0x1190c649, - 0xe83a5324, 0x8124cfdb, 0x634218f1, 0x1a8a5853, - } }, - { { /* 302 */ - 0x24d37420, 0x0514aa3b, 0x89586018, 0xc0004800, - 0x91018268, 0x2cd684a4, 0xc4ba8886, 0x02100377, - } }, - { { /* 303 */ - 0x00388244, 0x404aae11, 0x510028c0, 0x15146044, - 0x10007310, 0x02480082, 0x40060205, 0x0000c003, - } }, - { { /* 304 */ - 0x0c020000, 0x02200008, 0x40009000, 0xd161b800, - 0x32744621, 0x3b8af800, 0x8b00050f, 0x2280bbd0, - } }, - { { /* 305 */ - 0x07690600, 0x00438040, 0x50005420, 0x250c41d0, - 0x83108410, 0x02281101, 0x00304008, 0x020040a1, - } }, - { { /* 306 */ - 0x20000040, 0xabe31500, 0xaa443180, 0xc624c2c6, - 0x8004ac13, 0x03d1b000, 0x4285611e, 0x1d9ff303, - } }, - { { /* 307 */ - 0x78e8440a, 0xc3925e26, 0x00852000, 0x4000b001, - 0x88424a90, 0x0c8dca04, 0x4203a705, 0x000422a1, - } }, - { { /* 308 */ - 0x0c018668, 0x10795564, 0xdea00002, 0x40c12000, - 0x5001488b, 0x04000380, 0x50040000, 0x80d0c05d, - } }, - { { /* 309 */ - 0x970aa010, 0x4dafbb20, 0x1e10d921, 0x83140460, - 0xa6d68848, 0x733fd83b, 0x497427bc, 0x92130ddc, - } }, - { { /* 310 */ - 0x8ba1142b, 0xd1392e75, 0x50503009, 0x69008808, - 0x024a49d4, 0x80164010, 0x89d7e564, 0x5316c020, - } }, - { { /* 311 */ - 0x86002b92, 0x15e0a345, 0x0c03008b, 0xe200196e, - 0x80067031, 0xa82916a5, 0x18802000, 0xe1487aac, - } }, - { { /* 312 */ - 0xb5d63207, 0x5f9132e8, 0x20e550a1, 0x10807c00, - 0x9d8a7280, 0x421f00aa, 0x02310e22, 0x04941100, - } }, - { { /* 313 */ - 0x40080022, 0x5c100010, 0xfcc80343, 0x0580a1a5, - 0x04008433, 0x6e080080, 0x81262a4b, 0x2901aad8, - } }, - { { /* 314 */ - 0x4490684d, 0xba880009, 0x00820040, 0x87d10000, - 0xb1e6215b, 0x80083161, 0xc2400800, 0xa600a069, - } }, - { { /* 315 */ - 0x4a328d58, 0x550a5d71, 0x2d579aa0, 0x4aa64005, - 0x30b12021, 0x01123fc6, 0x260a10c2, 0x50824462, - } }, - { { /* 316 */ - 0x80409880, 0x810004c0, 0x00002003, 0x38180000, - 0xf1a60200, 0x720e4434, 0x92e035a2, 0x09008101, - } }, - { { /* 317 */ - 0x00000400, 0x00008885, 0x00000000, 0x00804000, - 0x00000000, 0x00004040, 0x00000000, 0x00000000, - } }, - { { /* 318 */ - 0x00000000, 0x08000000, 0x00000082, 0x00000000, - 0x88000004, 0xe7efbfff, 0xffbfffff, 0xfdffefef, - } }, - { { /* 319 */ - 0xbffefbff, 0x057fffff, 0x85b30034, 0x42164706, - 0xe4105402, 0xb3058092, 0x81305422, 0x180b4263, - } }, - { { /* 320 */ - 0x13f5387b, 0xa9ea07e5, 0x05143c4c, 0x80020600, - 0xbd481ad9, 0xf496ee37, 0x7ec0705f, 0x355fbfb2, - } }, - { { /* 321 */ - 0x455fe644, 0x41469000, 0x063b1d40, 0xfe1362a1, - 0x39028505, 0x0c080548, 0x0000144f, 0x58183488, - } }, - { { /* 322 */ - 0xd8153077, 0x4bfbbd0e, 0x85008a90, 0xe61dc100, - 0xb386ed14, 0x639bff72, 0xd9befd92, 0x0a92887b, - } }, - { { /* 323 */ - 0x1cb2d3fe, 0x177ab980, 0xdc1782c9, 0x3980fffb, - 0x590c4260, 0x37df0f01, 0xb15094a3, 0x23070623, - } }, - { { /* 324 */ - 0x3102f85a, 0x310201f0, 0x1e820040, 0x056a3a0a, - 0x12805b84, 0xa7148002, 0xa04b2612, 0x90011069, - } }, - { { /* 325 */ - 0x848a1000, 0x3f801802, 0x42400708, 0x4e140110, - 0x180080b0, 0x0281c510, 0x10298202, 0x88000210, - } }, - { { /* 326 */ - 0x00420020, 0x11000280, 0x4413e000, 0xfe025804, - 0x30283c07, 0x04739798, 0xcb13ced1, 0x431f6210, - } }, - { { /* 327 */ - 0x55ac278d, 0xc892422e, 0x02885380, 0x78514039, - 0x8088292c, 0x2428b900, 0x080e0c41, 0x42004421, - } }, - { { /* 328 */ - 0x08680408, 0x12040006, 0x02903031, 0xe0855b3e, - 0x10442936, 0x10822814, 0x83344266, 0x531b013c, - } }, - { { /* 329 */ - 0x0e0d0404, 0x00510c22, 0xc0000012, 0x88000040, - 0x0000004a, 0x00000000, 0x5447dff6, 0x00088868, - } }, - { { /* 330 */ - 0x00000081, 0x40000000, 0x00000100, 0x02000000, - 0x00080600, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 331 */ - 0x00000080, 0x00000040, 0x00000000, 0x00001040, - 0x00000000, 0xf7fdefff, 0xfffeff7f, 0xfffffbff, - } }, - { { /* 332 */ - 0xbffffdff, 0x00ffffff, 0x042012c2, 0x07080c06, - 0x01101624, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 333 */ - 0xe0000000, 0xfffffffe, 0x7f79ffff, 0x00f928df, - 0x80120c32, 0xd53a0008, 0xecc2d858, 0x2fa89d18, - } }, - { { /* 334 */ - 0xe0109620, 0x2622d60c, 0x02060f97, 0x9055b240, - 0x501180a2, 0x04049800, 0x00004000, 0x00000000, - } }, - { { /* 335 */ - 0x00000000, 0x00000000, 0x00000000, 0xfffffbc0, - 0xdffbeffe, 0x62430b08, 0xfb3b41b6, 0x23896f74, - } }, - { { /* 336 */ - 0xecd7ae7f, 0x5960e047, 0x098fa096, 0xa030612c, - 0x2aaa090d, 0x4f7bd44e, 0x388bc4b2, 0x6110a9c6, - } }, - { { /* 337 */ - 0x42000014, 0x0202800c, 0x6485fe48, 0xe3f7d63e, - 0x0c073aa0, 0x0430e40c, 0x1002f680, 0x00000000, - } }, - { { /* 338 */ - 0x00000000, 0x00000000, 0x00000000, 0x00100000, - 0x00004000, 0x00004000, 0x00000100, 0x00000000, - } }, - { { /* 339 */ - 0x00000000, 0x40000000, 0x00000000, 0x00000400, - 0x00008000, 0x00000000, 0x00400400, 0x00000000, - } }, - { { /* 340 */ - 0x00000000, 0x40000000, 0x00000000, 0x00000800, - 0xfebdffe0, 0xffffffff, 0xfbe77f7f, 0xf7ffffbf, - } }, - { { /* 341 */ - 0xefffffff, 0xdff7ff7e, 0xfbdff6f7, 0x804fbffe, - 0x00000000, 0x00000000, 0x00000000, 0x7fffef00, - } }, - { { /* 342 */ - 0xb6f7ff7f, 0xb87e4406, 0x88313bf5, 0x00f41796, - 0x1391a960, 0x72490080, 0x0024f2f3, 0x42c88701, - } }, - { { /* 343 */ - 0x5048e3d3, 0x43052400, 0x4a4c0000, 0x10580227, - 0x01162820, 0x0014a809, 0x00000000, 0x00683ec0, - } }, - { { /* 344 */ - 0x00000000, 0x00000000, 0x00000000, 0xffe00000, - 0xfddbb7ff, 0x000000f7, 0xc72e4000, 0x00000180, - } }, - { { /* 345 */ - 0x00012000, 0x00004000, 0x00300000, 0xb4f7ffa8, - 0x03ffadf3, 0x00000120, 0x00000000, 0x00000000, - } }, - { { /* 346 */ - 0x00000000, 0x00000000, 0x00000000, 0xfffbf000, - 0xfdcf9df7, 0x15c301bf, 0x810a1827, 0x0a00a842, - } }, - { { /* 347 */ - 0x80088108, 0x18048008, 0x0012a3be, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 348 */ - 0x00000000, 0x00000000, 0x00000000, 0x90000000, - 0xdc3769e6, 0x3dff6bff, 0xf3f9fcf8, 0x00000004, - } }, - { { /* 349 */ - 0x80000000, 0xe7eebf6f, 0x5da2dffe, 0xc00b3fd8, - 0xa00c0984, 0x69100040, 0xb912e210, 0x5a0086a5, - } }, - { { /* 350 */ - 0x02896800, 0x6a809005, 0x00030010, 0x80000000, - 0x8e001ff9, 0x00000001, 0x00000000, 0x00000000, - } }, - { { /* 351 */ - 0x0000002f, 0x000003fe, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 352 */ - 0xc373ff8b, 0x1b0f6840, 0xf34ce9ac, 0xc0080200, - 0xca3e795c, 0x06487976, 0xf7f02fdf, 0xa8ff033a, - } }, - { { /* 353 */ - 0x233fef37, 0xfd59b004, 0xfffff3ca, 0xfff9de9f, - 0x7df7abff, 0x8eecc000, 0xffdbeebf, 0x45fad003, - } }, - { { /* 354 */ - 0xdffefae1, 0x10abbfef, 0xfcaaffeb, 0x24fdef3f, - 0x7f7678ad, 0xedfff00c, 0x2cfacff6, 0xeb6bf7f9, - } }, - { { /* 355 */ - 0x95bf1ffd, 0xbfbf6677, 0xfeb43bfb, 0x11e27bae, - 0x41bea681, 0x72c31435, 0x71917d70, 0x276b0003, - } }, - { { /* 356 */ - 0x70cf57cb, 0x0def4732, 0xfc747eda, 0xbdb4fe06, - 0x8bca3f9f, 0x58007e49, 0xebec228f, 0xddbb8a5c, - } }, - { { /* 357 */ - 0xb6e7ef60, 0xf293a40f, 0x549e37bb, 0x9bafd04b, - 0xf7d4c414, 0x0a1430b0, 0x88d02f08, 0x192fff7e, - } }, - { { /* 358 */ - 0xfb07ffda, 0x7beb7ff1, 0x0010c5ef, 0xfdff99ff, - 0x056779d7, 0xfdcbffe7, 0x4040c3ff, 0xbd8e6ff7, - } }, - { { /* 359 */ - 0x0497dffa, 0x5bfff4c0, 0xd0e7ed7b, 0xf8e0047e, - 0xb73eff9f, 0x882e7dfe, 0xbe7ffffd, 0xf6c483fe, - } }, - { { /* 360 */ - 0xb8fdf357, 0xef7dd680, 0x47885767, 0xc3dfff7d, - 0x37a9f0ff, 0x70fc7de0, 0xec9a3f6f, 0x86814cb3, - } }, - { { /* 361 */ - 0xdd5c3f9e, 0x4819f70d, 0x0007fea3, 0x38ffaf56, - 0xefb8980d, 0xb760403d, 0x9035d8ce, 0x3fff72bf, - } }, - { { /* 362 */ - 0x7a117ff7, 0xabfff7bb, 0x6fbeff00, 0xfe72a93c, - 0xf11bcfef, 0xf40adb6b, 0xef7ec3e6, 0xf6109b9c, - } }, - { { /* 363 */ - 0x16f4f048, 0x5182feb5, 0x15bbc7b1, 0xfbdf6e87, - 0x63cde43f, 0x7e7ec1ff, 0x7d5ffdeb, 0xfcfe777b, - } }, - { { /* 364 */ - 0xdbea960b, 0x53e86229, 0xfdef37df, 0xbd8136f5, - 0xfcbddc18, 0xffffd2e4, 0xffe03fd7, 0xabf87f6f, - } }, - { { /* 365 */ - 0x6ed99bae, 0xf115f5fb, 0xbdfb79a9, 0xadaf5a3c, - 0x1facdbba, 0x837971fc, 0xc35f7cf7, 0x0567dfff, - } }, - { { /* 366 */ - 0x8467ff9a, 0xdf8b1534, 0x3373f9f3, 0x5e1af7bd, - 0xa03fbf40, 0x01ebffff, 0xcfdddfc0, 0xabd37500, - } }, - { { /* 367 */ - 0xeed6f8c3, 0xb7ff43fd, 0x42275eaf, 0xf6869bac, - 0xf6bc27d7, 0x35b7f787, 0xe176aacd, 0xe29f49e7, - } }, - { { /* 368 */ - 0xaff2545c, 0x61d82b3f, 0xbbb8fc3b, 0x7b7dffcf, - 0x1ce0bf95, 0x43ff7dfd, 0xfffe5ff6, 0xc4ced3ef, - } }, - { { /* 369 */ - 0xadbc8db6, 0x11eb63dc, 0x23d0df59, 0xf3dbbeb4, - 0xdbc71fe7, 0xfae4ff63, 0x63f7b22b, 0xadbaed3b, - } }, - { { /* 370 */ - 0x7efffe01, 0x02bcfff7, 0xef3932ff, 0x8005fffc, - 0xbcf577fb, 0xfff7010d, 0xbf3afffb, 0xdfff0057, - } }, - { { /* 371 */ - 0xbd7def7b, 0xc8d4db88, 0xed7cfff3, 0x56ff5dee, - 0xac5f7e0d, 0xd57fff96, 0xc1403fee, 0xffe76ff9, - } }, - { { /* 372 */ - 0x8e77779b, 0xe45d6ebf, 0x5f1f6fcf, 0xfedfe07f, - 0x01fed7db, 0xfb7bff00, 0x1fdfffd4, 0xfffff800, - } }, - { { /* 373 */ - 0x007bfb8f, 0x7f5cbf00, 0x07f3ffff, 0x3de7eba0, - 0xfbd7f7bf, 0x6003ffbf, 0xbfedfffd, 0x027fefbb, - } }, - { { /* 374 */ - 0xddfdfe40, 0xe2f9fdff, 0xfb1f680b, 0xaffdfbe3, - 0xf7ed9fa4, 0xf80f7a7d, 0x0fd5eebe, 0xfd9fbb5d, - } }, - { { /* 375 */ - 0x3bf9f2db, 0xebccfe7f, 0x73fa876a, 0x9ffc95fc, - 0xfaf7109f, 0xbbcdddb7, 0xeccdf87e, 0x3c3ff366, - } }, - { { /* 376 */ - 0xb03ffffd, 0x067ee9f7, 0xfe0696ae, 0x5fd7d576, - 0xa3f33fd1, 0x6fb7cf07, 0x7f449fd1, 0xd3dd7b59, - } }, - { { /* 377 */ - 0xa9bdaf3b, 0xff3a7dcf, 0xf6ebfbe0, 0xffffb401, - 0xb7bf7afa, 0x0ffdc000, 0xff1fff7f, 0x95fffefc, - } }, - { { /* 378 */ - 0xb5dc0000, 0x3f3eef63, 0x001bfb7f, 0xfbf6e800, - 0xb8df9eef, 0x003fff9f, 0xf5ff7bd0, 0x3fffdfdb, - } }, - { { /* 379 */ - 0x00bffdf0, 0xbbbd8420, 0xffdedf37, 0x0ff3ff6d, - 0x5efb604c, 0xfafbfffb, 0x0219fe5e, 0xf9de79f4, - } }, - { { /* 380 */ - 0xebfaa7f7, 0xff3401eb, 0xef73ebd3, 0xc040afd7, - 0xdcff72bb, 0x2fd8f17f, 0xfe0bb8ec, 0x1f0bdda3, - } }, - { { /* 381 */ - 0x47cf8f1d, 0xffdeb12b, 0xda737fee, 0xcbc424ff, - 0xcbf2f75d, 0xb4edecfd, 0x4dddbff9, 0xfb8d99dd, - } }, - { { /* 382 */ - 0xaf7bbb7f, 0xc959ddfb, 0xfab5fc4f, 0x6d5fafe3, - 0x3f7dffff, 0xffdb7800, 0x7effb6ff, 0x022ffbaf, - } }, - { { /* 383 */ - 0xefc7ff9b, 0xffffffa5, 0xc7000007, 0xfff1f7ff, - 0x01bf7ffd, 0xfdbcdc00, 0xffffbff5, 0x3effff7f, - } }, - { { /* 384 */ - 0xbe000029, 0xff7ff9ff, 0xfd7e6efb, 0x039ecbff, - 0xfbdde300, 0xf6dfccff, 0x117fffff, 0xfbf6f800, - } }, - { { /* 385 */ - 0xd73ce7ef, 0xdfeffeef, 0xedbfc00b, 0xfdcdfedf, - 0x40fd7bf5, 0xb75fffff, 0xf930ffdf, 0xdc97fbdf, - } }, - { { /* 386 */ - 0xbff2fef3, 0xdfbf8fdf, 0xede6177f, 0x35530f7f, - 0x877e447c, 0x45bbfa12, 0x779eede0, 0xbfd98017, - } }, - { { /* 387 */ - 0xde897e55, 0x0447c16f, 0xf75d7ade, 0x290557ff, - 0xfe9586f7, 0xf32f97b3, 0x9f75cfff, 0xfb1771f7, - } }, - { { /* 388 */ - 0xee1934ee, 0xef6137cc, 0xef4c9fd6, 0xfbddd68f, - 0x6def7b73, 0xa431d7fe, 0x97d75e7f, 0xffd80f5b, - } }, - { { /* 389 */ - 0x7bce9d83, 0xdcff22ec, 0xef87763d, 0xfdeddfe7, - 0xa0fc4fff, 0xdbfc3b77, 0x7fdc3ded, 0xf5706fa9, - } }, - { { /* 390 */ - 0x2c403ffb, 0x847fff7f, 0xdeb7ec57, 0xf22fe69c, - 0xd5b50feb, 0xede7afeb, 0xfff08c2f, 0xe8f0537f, - } }, - { { /* 391 */ - 0xb5ffb99d, 0xe78fff66, 0xbe10d981, 0xe3c19c7c, - 0x27339cd1, 0xff6d0cbc, 0xefb7fcb7, 0xffffa0df, - } }, - { { /* 392 */ - 0xfe7bbf0b, 0x353fa3ff, 0x97cd13cc, 0xfb277637, - 0x7e6ccfd6, 0xed31ec50, 0xfc1c677c, 0x5fbff6fa, - } }, - { { /* 393 */ - 0xae2f0fba, 0x7ffea3ad, 0xde74fcf0, 0xf200ffef, - 0xfea2fbbf, 0xbcff3daf, 0x5fb9f694, 0x3f8ff3ad, - } }, - { { /* 394 */ - 0xa01ff26c, 0x01bfffef, 0x70057728, 0xda03ff35, - 0xc7fad2f9, 0x5c1d3fbf, 0xec33ff3a, 0xfe9cb7af, - } }, - { { /* 395 */ - 0x7a9f5236, 0xe722bffa, 0xfcff9ff7, 0xb61d2fbb, - 0x1dfded06, 0xefdf7dd7, 0xf166eb23, 0x0dc07ed9, - } }, - { { /* 396 */ - 0xdfbf3d3d, 0xba83c945, 0x9dd07dd1, 0xcf737b87, - 0xc3f59ff3, 0xc5fedf0d, 0x83020cb3, 0xaec0e879, - } }, - { { /* 397 */ - 0x6f0fc773, 0x093ffd7d, 0x0157fff1, 0x01ff62fb, - 0x3bf3fdb4, 0x43b2b013, 0xff305ed3, 0xeb9f0fff, - } }, - { { /* 398 */ - 0xf203feef, 0xfb893fef, 0x9e9937a9, 0xa72cdef9, - 0xc1f63733, 0xfe3e812e, 0xf2f75d20, 0x69d7d585, - } }, - { { /* 399 */ - 0xffffffff, 0xff6fdb07, 0xd97fc4ff, 0xbe0fefce, - 0xf05ef17b, 0xffb7f6cf, 0xef845ef7, 0x0edfd7cb, - } }, - { { /* 400 */ - 0xfcffff08, 0xffffee3f, 0xd7ff13ff, 0x7ffdaf0f, - 0x1ffabdc7, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 401 */ - 0x00000000, 0xe7400000, 0xf933bd38, 0xfeed7feb, - 0x7c767fe8, 0xffefb3f7, 0xd8b7feaf, 0xfbbfff6f, - } }, - { { /* 402 */ - 0xdbf7f8fb, 0xe2f91752, 0x754785c8, 0xe3ef9090, - 0x3f6d9ef4, 0x0536ee2e, 0x7ff3f7bc, 0x7f3fa07b, - } }, - { { /* 403 */ - 0xeb600567, 0x6601babe, 0x583ffcd8, 0x87dfcaf7, - 0xffa0bfcd, 0xfebf5bcd, 0xefa7b6fd, 0xdf9c77ef, - } }, - { { /* 404 */ - 0xf8773fb7, 0xb7fc9d27, 0xdfefcab5, 0xf1b6fb5a, - 0xef1fec39, 0x7ffbfbbf, 0xdafe000d, 0x4e7fbdfb, - } }, - { { /* 405 */ - 0x5ac033ff, 0x9ffebff5, 0x005fffbf, 0xfdf80000, - 0x6ffdffca, 0xa001cffd, 0xfbf2dfff, 0xff7fdfbf, - } }, - { { /* 406 */ - 0x080ffeda, 0xbfffba08, 0xeed77afd, 0x67f9fbeb, - 0xff93e044, 0x9f57df97, 0x08dffef7, 0xfedfdf80, - } }, - { { /* 407 */ - 0xf7feffc5, 0x6803fffb, 0x6bfa67fb, 0x5fe27fff, - 0xff73ffff, 0xe7fb87df, 0xf7a7ebfd, 0xefc7bf7e, - } }, - { { /* 408 */ - 0xdf821ef3, 0xdf7e76ff, 0xda7d79c9, 0x1e9befbe, - 0x77fb7ce0, 0xfffb87be, 0xffdb1bff, 0x4fe03f5c, - } }, - { { /* 409 */ - 0x5f0e7fff, 0xddbf77ff, 0xfffff04f, 0x0ff8ffff, - 0xfddfa3be, 0xfffdfc1c, 0xfb9e1f7d, 0xdedcbdff, - } }, - { { /* 410 */ - 0xbafb3f6f, 0xfbefdf7f, 0x2eec7d1b, 0xf2f7af8e, - 0xcfee7b0f, 0x77c61d96, 0xfff57e07, 0x7fdfd982, - } }, - { { /* 411 */ - 0xc7ff5ee6, 0x79effeee, 0xffcf9a56, 0xde5efe5f, - 0xf9e8896e, 0xe6c4f45e, 0xbe7c0001, 0xdddf3b7f, - } }, - { { /* 412 */ - 0xe9efd59d, 0xde5334ac, 0x4bf7f573, 0x9eff7b4f, - 0x476eb8fe, 0xff450dfb, 0xfbfeabfd, 0xddffe9d7, - } }, - { { /* 413 */ - 0x7fffedf7, 0x7eebddfd, 0xb7ffcfe7, 0xef91bde9, - 0xd77c5d75, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 414 */ - 0x00000000, 0xfa800000, 0xb4f1ffee, 0x2fefbf76, - 0x77bfb677, 0xfffd9fbf, 0xf6ae95bf, 0x7f3b75ff, - } }, - { { /* 415 */ - 0x0af9a7f5, 0x00000000, 0x00000000, 0x2bddfbd0, - 0x9a7ff633, 0xd6fcfdab, 0xbfebf9e6, 0xf41fdfdf, - } }, - { { /* 416 */ - 0xffffa6fd, 0xf37b4aff, 0xfef97fb7, 0x1d5cb6ff, - 0xe5ff7ff6, 0x24041f7b, 0xf99ebe05, 0xdff2dbe3, - } }, - { { /* 417 */ - 0xfdff6fef, 0xcbfcd679, 0xefffebfd, 0x0000001f, - 0x98000000, 0x8017e148, 0x00fe6a74, 0xfdf16d7f, - } }, - { { /* 418 */ - 0xfef3b87f, 0xf176e01f, 0x7b3fee96, 0xfffdeb8d, - 0xcbb3adff, 0xe17f84ef, 0xbff04daa, 0xfe3fbf3f, - } }, - { { /* 419 */ - 0xffd7ebff, 0xcf7fffdf, 0x85edfffb, 0x07bcd73f, - 0xfe0faeff, 0x76bffdaf, 0x37bbfaef, 0xa3ba7fdc, - } }, - { { /* 420 */ - 0x56f7b6ff, 0xe7df60f8, 0x4cdfff61, 0xff45b0fb, - 0x3ffa7ded, 0x18fc1fff, 0xe3afffff, 0xdf83c7d3, - } }, - { { /* 421 */ - 0xef7dfb57, 0x1378efff, 0x5ff7fec0, 0x5ee334bb, - 0xeff6f70d, 0x00bfd7fe, 0xf7f7f59d, 0xffe051de, - } }, - { { /* 422 */ - 0x037ffec9, 0xbfef5f01, 0x60a79ff1, 0xf1ffef1d, - 0x0000000f, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 423 */ - 0x00000000, 0x00000000, 0x00000000, 0x3c800000, - 0xd91ffb4d, 0xfee37b3a, 0xdc7f3fe9, 0x0000003f, - } }, - { { /* 424 */ - 0x50000000, 0xbe07f51f, 0xf91bfc1d, 0x71ffbc1e, - 0x5bbe6ff9, 0x9b1b5796, 0xfffc7fff, 0xafe7872e, - } }, - { { /* 425 */ - 0xf34febf5, 0xe725dffd, 0x5d440bdc, 0xfddd5747, - 0x7790ed3f, 0x8ac87d7f, 0xf3f9fafa, 0xef4b202a, - } }, - { { /* 426 */ - 0x79cff5ff, 0x0ba5abd3, 0xfb8ff77a, 0x001f8ebd, - 0x00000000, 0xfd4ef300, 0x88001a57, 0x7654aeac, - } }, - { { /* 427 */ - 0xcdff17ad, 0xf42fffb2, 0xdbff5baa, 0x00000002, - 0x73c00000, 0x2e3ff9ea, 0xbbfffa8e, 0xffd376bc, - } }, - { { /* 428 */ - 0x7e72eefe, 0xe7f77ebd, 0xcefdf77f, 0x00000ff5, - 0x00000000, 0xdb9ba900, 0x917fa4c7, 0x7ecef8ca, - } }, - { { /* 429 */ - 0xc7e77d7a, 0xdcaecbbd, 0x8f76fd7e, 0x7cf391d3, - 0x4c2f01e5, 0xa360ed77, 0x5ef807db, 0x21811df7, - } }, - { { /* 430 */ - 0x309c6be0, 0xfade3b3a, 0xc3f57f53, 0x07ba61cd, - 0x00000000, 0x00000000, 0x00000000, 0xbefe26e0, - } }, - { { /* 431 */ - 0xebb503f9, 0xe9cbe36d, 0xbfde9c2f, 0xabbf9f83, - 0xffd51ff7, 0xdffeb7df, 0xffeffdae, 0xeffdfb7e, - } }, - { { /* 432 */ - 0x6ebfaaff, 0x00000000, 0x00000000, 0xb6200000, - 0xbe9e7fcd, 0x58f162b3, 0xfd7bf10d, 0xbefde9f1, - } }, - { { /* 433 */ - 0x5f6dc6c3, 0x69ffff3d, 0xfbf4ffcf, 0x4ff7dcfb, - 0x11372000, 0x00000015, 0x00000000, 0x00000000, - } }, - { { /* 434 */ - 0x00003000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 435 */ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xffffffff, 0xffffffff, 0x001fffff, - } }, -}; - -#define L(n) ((FcCharLeaf *) &leaves[n]) - -static const FcCharLeaf *leaves_ab[2] = { - L( 0), L( 1), -}; - -static const FcChar16 numbers_ab[2] = { - 0x0000, 0x0004, -}; - -static const FcCharLeaf *leaves_ar[1] = { - L( 2), -}; - -static const FcChar16 numbers_ar[1] = { - 0x0006, -}; - -static const FcCharLeaf *leaves_az[4] = { - L( 3), L( 4), L( 5), L( 6), -}; - -static const FcChar16 numbers_az[4] = { - 0x0000, 0x0001, 0x0002, 0x0004, -}; - -static const FcCharLeaf *leaves_ba[2] = { - L( 0), L( 7), -}; - -static const FcChar16 numbers_ba[2] = { - 0x0000, 0x0004, -}; - -static const FcCharLeaf *leaves_be[2] = { - L( 0), L( 8), -}; - -static const FcChar16 numbers_be[2] = { - 0x0000, 0x0004, -}; - -static const FcCharLeaf *leaves_bg[1] = { - L( 9), -}; - -static const FcChar16 numbers_bg[1] = { - 0x0004, -}; - -static const FcCharLeaf *leaves_bn[1] = { - L( 10), -}; - -static const FcChar16 numbers_bn[1] = { - 0x0009, -}; - -static const FcCharLeaf *leaves_bo[1] = { - L( 11), -}; - -static const FcChar16 numbers_bo[1] = { - 0x000f, -}; - -static const FcCharLeaf *leaves_br[1] = { - L( 12), -}; - -static const FcChar16 numbers_br[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_ca[2] = { - L( 13), L( 14), -}; - -static const FcChar16 numbers_ca[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_co[1] = { - L( 15), -}; - -static const FcChar16 numbers_co[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_cs[2] = { - L( 16), L( 17), -}; - -static const FcChar16 numbers_cs[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_da[2] = { - L( 18), L( 19), -}; - -static const FcChar16 numbers_da[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_de[1] = { - L( 20), -}; - -static const FcChar16 numbers_de[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_el[1] = { - L( 21), -}; - -static const FcChar16 numbers_el[1] = { - 0x0003, -}; - -static const FcCharLeaf *leaves_en[1] = { - L( 22), -}; - -static const FcChar16 numbers_en[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_eo[2] = { - L( 23), L( 24), -}; - -static const FcChar16 numbers_eo[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_es[1] = { - L( 25), -}; - -static const FcChar16 numbers_es[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_et[2] = { - L( 26), L( 27), -}; - -static const FcChar16 numbers_et[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_eu[2] = { - L( 28), L( 29), -}; - -static const FcChar16 numbers_eu[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_fi[2] = { - L( 30), L( 27), -}; - -static const FcChar16 numbers_fi[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_fo[1] = { - L( 31), -}; - -static const FcChar16 numbers_fo[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_ga[5] = { - L( 32), L( 33), L( 34), L( 35), L( 36), -}; - -static const FcChar16 numbers_ga[5] = { - 0x0000, 0x0001, 0x0002, 0x001e, 0x0020, -}; - -static const FcCharLeaf *leaves_gd[1] = { - L( 37), -}; - -static const FcChar16 numbers_gd[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_gl[1] = { - L( 38), -}; - -static const FcChar16 numbers_gl[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_gu[1] = { - L( 39), -}; - -static const FcChar16 numbers_gu[1] = { - 0x000a, -}; - -static const FcCharLeaf *leaves_he[1] = { - L( 40), -}; - -static const FcChar16 numbers_he[1] = { - 0x0005, -}; - -static const FcCharLeaf *leaves_hr[3] = { - L( 41), L( 42), L( 43), -}; - -static const FcChar16 numbers_hr[3] = { - 0x0000, 0x0001, 0x0002, -}; - -static const FcCharLeaf *leaves_hu[2] = { - L( 44), L( 45), -}; - -static const FcChar16 numbers_hu[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_hy[1] = { - L( 46), -}; - -static const FcChar16 numbers_hy[1] = { - 0x0005, -}; - -static const FcCharLeaf *leaves_is[1] = { - L( 47), -}; - -static const FcChar16 numbers_is[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_it[1] = { - L( 48), -}; - -static const FcChar16 numbers_it[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_ja[84] = { - L( 49), L( 50), L( 51), L( 52), L( 53), L( 54), L( 55), L( 56), - L( 57), L( 58), L( 59), L( 60), L( 61), L( 62), L( 63), L( 64), - L( 65), L( 66), L( 67), L( 68), L( 69), L( 70), L( 71), L( 72), - L( 73), L( 74), L( 75), L( 76), L( 77), L( 78), L( 79), L( 80), - L( 81), L( 82), L( 83), L( 84), L( 85), L( 86), L( 87), L( 88), - L( 89), L( 90), L( 91), L( 92), L( 93), L( 94), L( 95), L( 96), - L( 97), L( 98), L( 99), L(100), L(101), L(102), L(103), L(104), - L(105), L(106), L(107), L(108), L(109), L(110), L(111), L(112), - L(113), L(114), L(115), L(116), L(117), L(118), L(119), L(120), - L(121), L(122), L(123), L(124), L(125), L(126), L(127), L(128), - L(129), L(130), L(131), L(132), -}; - -static const FcChar16 numbers_ja[84] = { - 0x0030, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, - 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, - 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, - 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, - 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, - 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, - 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, - 0x009d, 0x009e, 0x009f, 0x00ff, -}; - -static const FcCharLeaf *leaves_ka[2] = { - L(133), L(134), -}; - -static const FcChar16 numbers_ka[2] = { - 0x0005, 0x0010, -}; - -static const FcCharLeaf *leaves_kk[2] = { - L( 0), L(135), -}; - -static const FcChar16 numbers_kk[2] = { - 0x0000, 0x0004, -}; - -static const FcCharLeaf *leaves_kl[2] = { - L(136), L(137), -}; - -static const FcChar16 numbers_kl[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_km[1] = { - L(138), -}; - -static const FcChar16 numbers_km[1] = { - 0x0017, -}; - -static const FcCharLeaf *leaves_kn[1] = { - L(139), -}; - -static const FcChar16 numbers_kn[1] = { - 0x000c, -}; - -static const FcCharLeaf *leaves_ko[132] = { - L(140), L(141), L(142), L(143), L(144), L(145), L(146), L(147), - L(148), L(149), L(150), L(151), L(152), L(153), L(154), L(155), - L(156), L(157), L(158), L(159), L(160), L(161), L(162), L(163), - L(164), L(165), L(166), L(167), L(168), L(169), L(170), L(171), - L(172), L(173), L(174), L(175), L(176), L(177), L(178), L(179), - L(180), L(181), L(182), L(183), L(184), L(185), L(186), L(187), - L(188), L(189), L(190), L(191), L(192), L(193), L(194), L(195), - L(196), L(197), L(198), L(199), L(200), L(201), L(202), L(203), - L(204), L(205), L(206), L(207), L(208), L(209), L(210), L(211), - L(212), L(213), L(214), L(215), L(216), L(217), L(218), L(219), - L(220), L(221), L(222), L(223), L(224), L(225), L(225), L(225), - L(225), L(225), L(225), L(225), L(225), L(225), L(225), L(225), - L(225), L(225), L(225), L(225), L(225), L(225), L(225), L(225), - L(225), L(225), L(225), L(225), L(225), L(225), L(225), L(225), - L(225), L(225), L(225), L(225), L(225), L(225), L(225), L(225), - L(225), L(225), L(225), L(225), L(225), L(225), L(225), L(225), - L(226), L(225), L(227), L(228), -}; - -static const FcChar16 numbers_ko[132] = { - 0x0030, 0x0031, 0x0032, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, - 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, - 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, - 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, - 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, - 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, - 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, - 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, - 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00ac, 0x00ad, 0x00ae, - 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, - 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, - 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, - 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, - 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, - 0x00d7, 0x00f9, 0x00fa, 0x00ff, -}; - -static const FcCharLeaf *leaves_la[2] = { - L( 23), L(229), -}; - -static const FcChar16 numbers_la[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_lo[1] = { - L(230), -}; - -static const FcChar16 numbers_lo[1] = { - 0x000e, -}; - -static const FcCharLeaf *leaves_lt[2] = { - L( 23), L(231), -}; - -static const FcChar16 numbers_lt[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_lv[2] = { - L( 23), L(232), -}; - -static const FcChar16 numbers_lv[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_mk[1] = { - L(233), -}; - -static const FcChar16 numbers_mk[1] = { - 0x0004, -}; - -static const FcCharLeaf *leaves_ml[1] = { - L(234), -}; - -static const FcChar16 numbers_ml[1] = { - 0x000d, -}; - -static const FcCharLeaf *leaves_mn[1] = { - L(235), -}; - -static const FcChar16 numbers_mn[1] = { - 0x0018, -}; - -static const FcCharLeaf *leaves_mo[4] = { - L(236), L(237), L(238), L(239), -}; - -static const FcChar16 numbers_mo[4] = { - 0x0000, 0x0001, 0x0002, 0x0004, -}; - -static const FcCharLeaf *leaves_mt[3] = { - L(240), L(241), L(242), -}; - -static const FcChar16 numbers_mt[3] = { - 0x0000, 0x0001, 0x0002, -}; - -static const FcCharLeaf *leaves_nl[1] = { - L(243), -}; - -static const FcChar16 numbers_nl[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_no[1] = { - L(244), -}; - -static const FcChar16 numbers_no[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_oc[1] = { - L(245), -}; - -static const FcChar16 numbers_oc[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_or[1] = { - L(246), -}; - -static const FcChar16 numbers_or[1] = { - 0x000b, -}; - -static const FcCharLeaf *leaves_pl[2] = { - L(247), L(248), -}; - -static const FcChar16 numbers_pl[2] = { - 0x0000, 0x0001, -}; - -static const FcCharLeaf *leaves_pt[1] = { - L(249), -}; - -static const FcChar16 numbers_pt[1] = { - 0x0000, -}; - -static const FcCharLeaf *leaves_rm[1] = { - L(250), -}; - -static const FcChar16 numbers_rm[1] = { - 0x0000, -}; +typedef struct { + int begin; + int end; +} FcLangCharSetRange; -static const FcCharLeaf *leaves_ro[3] = { - L(236), L(237), L(238), -}; +#include "../fc-lang/fclang.h" -static const FcChar16 numbers_ro[3] = { - 0x0000, 0x0001, 0x0002, +struct _FcLangSet { + FcStrSet *extra; + FcChar32 map_size; + FcChar32 map[NUM_LANG_SET_MAP]; }; -static const FcCharLeaf *leaves_ru[2] = { - L( 0), L(251), -}; - -static const FcChar16 numbers_ru[2] = { - 0x0000, 0x0004, -}; +static void +FcLangSetBitSet (FcLangSet *ls, + unsigned int id) +{ + int bucket; -static const FcCharLeaf *leaves_sh[1] = { - L(252), -}; + id = fcLangCharSetIndices[id]; + bucket = id >> 5; + if (bucket >= ls->map_size) + return; /* shouldn't happen really */ -static const FcChar16 numbers_sh[1] = { - 0x0004, -}; + ls->map[bucket] |= ((FcChar32) 1 << (id & 0x1f)); +} -static const FcCharLeaf *leaves_si[1] = { - L(253), -}; +static FcBool +FcLangSetBitGet (const FcLangSet *ls, + unsigned int id) +{ + int bucket; -static const FcChar16 numbers_si[1] = { - 0x000d, -}; + id = fcLangCharSetIndices[id]; + bucket = id >> 5; + if (bucket >= ls->map_size) + return FcFalse; -static const FcCharLeaf *leaves_sk[2] = { - L(254), L(255), -}; + return ((ls->map[bucket] >> (id & 0x1f)) & 1) ? FcTrue : FcFalse; +} -static const FcChar16 numbers_sk[2] = { - 0x0000, 0x0001, -}; +FcLangSet * +FcFreeTypeLangSet (const FcCharSet *charset, + const FcChar8 *exclusiveLang) +{ + int i, j; + FcChar32 missing; + const FcCharSet *exclusiveCharset = 0; + FcLangSet *ls; + + if (exclusiveLang) + exclusiveCharset = FcLangGetCharSet (exclusiveLang); + ls = FcLangSetCreate (); + if (!ls) + return 0; + if (FcDebug() & FC_DBG_LANGSET) + { + printf ("font charset"); + FcCharSetPrint (charset); + printf ("\n"); + } + for (i = 0; i < NUM_LANG_CHAR_SET; i++) + { + if (FcDebug() & FC_DBG_LANGSET) + { + printf ("%s charset", fcLangCharSets[i].lang); + FcCharSetPrint (&fcLangCharSets[i].charset); + printf ("\n"); + } + + /* + * Check for Han charsets to make fonts + * which advertise support for a single language + * not support other Han languages + */ + if (exclusiveCharset && + FcFreeTypeIsExclusiveLang (fcLangCharSets[i].lang)) + { + if (fcLangCharSets[i].charset.num != exclusiveCharset->num) + continue; + + for (j = 0; j < fcLangCharSets[i].charset.num; j++) + if (FcCharSetLeaf(&fcLangCharSets[i].charset, j) != + FcCharSetLeaf(exclusiveCharset, j)) + continue; + } + missing = FcCharSetSubtractCount (&fcLangCharSets[i].charset, charset); + if (FcDebug() & FC_DBG_SCANV) + { + if (missing && missing < 10) + { + FcCharSet *missed = FcCharSetSubtract (&fcLangCharSets[i].charset, + charset); + FcChar32 ucs4; + FcChar32 map[FC_CHARSET_MAP_SIZE]; + FcChar32 next; + + printf ("\n%s(%u) ", fcLangCharSets[i].lang, missing); + printf ("{"); + for (ucs4 = FcCharSetFirstPage (missed, map, &next); + ucs4 != FC_CHARSET_DONE; + ucs4 = FcCharSetNextPage (missed, map, &next)) + { + int i, j; + for (i = 0; i < FC_CHARSET_MAP_SIZE; i++) + if (map[i]) + { + for (j = 0; j < 32; j++) + if (map[i] & (1 << j)) + printf (" %04x", ucs4 + i * 32 + j); + } + } + printf (" }\n\t"); + FcCharSetDestroy (missed); + } + else + printf ("%s(%u) ", fcLangCharSets[i].lang, missing); + } + if (!missing) + FcLangSetBitSet (ls, i); + } -static const FcCharLeaf *leaves_sl[3] = { - L( 23), L(256), L(257), -}; + if (FcDebug() & FC_DBG_SCANV) + printf ("\n"); + + + return ls; +} -static const FcChar16 numbers_sl[3] = { - 0x0000, 0x0001, 0x0004, -}; +#define FcLangEnd(c) ((c) == '-' || (c) == '\0') -static const FcCharLeaf *leaves_sq[1] = { - L(258), -}; +FcLangResult +FcLangCompare (const FcChar8 *s1, const FcChar8 *s2) +{ + FcChar8 c1, c2; + FcLangResult result = FcLangDifferentLang; -static const FcChar16 numbers_sq[1] = { - 0x0000, -}; + for (;;) + { + c1 = *s1++; + c2 = *s2++; + + c1 = FcToLower (c1); + c2 = FcToLower (c2); + if (c1 != c2) + { + if (FcLangEnd (c1) && FcLangEnd (c2)) + result = FcLangDifferentTerritory; + return result; + } + else if (!c1) + return FcLangEqual; + else if (c1 == '-') + result = FcLangDifferentTerritory; + } +} -static const FcCharLeaf *leaves_sv[1] = { - L(259), -}; +/* + * Return FcTrue when super contains sub. + * + * super contains sub if super and sub have the same + * language and either the same country or one + * is missing the country + */ -static const FcChar16 numbers_sv[1] = { - 0x0000, -}; +static FcBool +FcLangContains (const FcChar8 *super, const FcChar8 *sub) +{ + FcChar8 c1, c2; -static const FcCharLeaf *leaves_ta[1] = { - L(260), -}; + for (;;) + { + c1 = *super++; + c2 = *sub++; + + c1 = FcToLower (c1); + c2 = FcToLower (c2); + if (c1 != c2) + { + /* see if super has a country while sub is mising one */ + if (c1 == '-' && c2 == '\0') + return FcTrue; + /* see if sub has a country while super is mising one */ + if (c1 == '\0' && c2 == '-') + return FcTrue; + return FcFalse; + } + else if (!c1) + return FcTrue; + } +} -static const FcChar16 numbers_ta[1] = { - 0x000b, -}; +const FcCharSet * +FcLangGetCharSet (const FcChar8 *lang) +{ + int i; + int country = -1; -static const FcCharLeaf *leaves_te[1] = { - L(261), -}; + for (i = 0; i < NUM_LANG_CHAR_SET; i++) + { + switch (FcLangCompare (lang, fcLangCharSets[i].lang)) { + case FcLangEqual: + return &fcLangCharSets[i].charset; + case FcLangDifferentTerritory: + if (country == -1) + country = i; + case FcLangDifferentLang: + default: + break; + } + } + if (country == -1) + return 0; + return &fcLangCharSets[country].charset; +} -static const FcChar16 numbers_te[1] = { - 0x000c, -}; +FcStrSet * +FcGetLangs (void) +{ + FcStrSet *langs; + int i; -static const FcCharLeaf *leaves_th[1] = { - L(262), -}; + langs = FcStrSetCreate(); + if (!langs) + return 0; -static const FcChar16 numbers_th[1] = { - 0x000e, -}; + for (i = 0; i < NUM_LANG_CHAR_SET; i++) + FcStrSetAdd (langs, fcLangCharSets[i].lang); -static const FcCharLeaf *leaves_tl[1] = { - L(263), -}; + return langs; +} -static const FcChar16 numbers_tl[1] = { - 0x0017, -}; +FcLangSet * +FcLangSetCreate (void) +{ + FcLangSet *ls; -static const FcCharLeaf *leaves_tr[2] = { - L(264), L(265), -}; + ls = malloc (sizeof (FcLangSet)); + if (!ls) + return 0; + FcMemAlloc (FC_MEM_LANGSET, sizeof (FcLangSet)); + memset (ls->map, '\0', sizeof (ls->map)); + ls->map_size = NUM_LANG_SET_MAP; + ls->extra = 0; + return ls; +} -static const FcChar16 numbers_tr[2] = { - 0x0000, 0x0001, -}; +void +FcLangSetDestroy (FcLangSet *ls) +{ + if (ls->extra) + FcStrSetDestroy (ls->extra); + FcMemFree (FC_MEM_LANGSET, sizeof (FcLangSet)); + free (ls); +} -static const FcCharLeaf *leaves_uk[2] = { - L( 0), L(266), -}; +FcLangSet * +FcLangSetCopy (const FcLangSet *ls) +{ + FcLangSet *new; + + new = FcLangSetCreate (); + if (!new) + goto bail0; + memset (new->map, '\0', sizeof (new->map)); + memcpy (new->map, ls->map, FC_MIN (sizeof (new->map), ls->map_size * sizeof (ls->map[0]))); + if (ls->extra) + { + FcStrList *list; + FcChar8 *extra; + + new->extra = FcStrSetCreate (); + if (!new->extra) + goto bail1; + + list = FcStrListCreate (ls->extra); + if (!list) + goto bail1; + + while ((extra = FcStrListNext (list))) + if (!FcStrSetAdd (new->extra, extra)) + { + FcStrListDone (list); + goto bail1; + } + FcStrListDone (list); + } + return new; +bail1: + FcLangSetDestroy (new); +bail0: + return 0; +} -static const FcChar16 numbers_uk[2] = { - 0x0000, 0x0004, -}; +static int +FcLangSetIndex (const FcChar8 *lang) +{ + int low, high, mid = 0; + int cmp = 0; + FcChar8 firstChar = FcToLower(lang[0]); + FcChar8 secondChar = firstChar ? FcToLower(lang[1]) : '\0'; + + if (firstChar < 'a') + { + low = 0; + high = fcLangCharSetRanges[0].begin; + } + else if(firstChar > 'z') + { + low = fcLangCharSetRanges[25].begin; + high = NUM_LANG_CHAR_SET - 1; + } + else + { + low = fcLangCharSetRanges[firstChar - 'a'].begin; + high = fcLangCharSetRanges[firstChar - 'a'].end; + /* no matches */ + if (low > high) + return -low; /* next entry after where it would be */ + } -static const FcCharLeaf *leaves_vo[1] = { - L(267), -}; + while (low <= high) + { + mid = (high + low) >> 1; + if(fcLangCharSets[mid].lang[0] != firstChar) + cmp = FcStrCmpIgnoreCase(fcLangCharSets[mid].lang, lang); + else + { /* fast path for resolving 2-letter languages (by far the most common) after + * finding the first char (probably already true because of the hash table) */ + cmp = fcLangCharSets[mid].lang[1] - secondChar; + if (cmp == 0 && + (fcLangCharSets[mid].lang[2] != '\0' || + lang[2] != '\0')) + { + cmp = FcStrCmpIgnoreCase(fcLangCharSets[mid].lang+2, + lang+2); + } + } + if (cmp == 0) + return mid; + if (cmp < 0) + low = mid + 1; + else + high = mid - 1; + } + if (cmp < 0) + mid++; + return -(mid + 1); +} -static const FcChar16 numbers_vo[1] = { - 0x0000, -}; +FcBool +FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang) +{ + int id; -static const FcCharLeaf *leaves_wa[1] = { - L(268), -}; + id = FcLangSetIndex (lang); + if (id >= 0) + { + FcLangSetBitSet (ls, id); + return FcTrue; + } + if (!ls->extra) + { + ls->extra = FcStrSetCreate (); + if (!ls->extra) + return FcFalse; + } + return FcStrSetAdd (ls->extra, lang); +} -static const FcChar16 numbers_wa[1] = { - 0x0000, -}; +FcLangResult +FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang) +{ + int id; + FcLangResult best, r; + int i; + + id = FcLangSetIndex (lang); + if (id < 0) + id = -id - 1; + else if (FcLangSetBitGet (ls, id)) + return FcLangEqual; + best = FcLangDifferentLang; + for (i = id - 1; i >= 0; i--) + { + r = FcLangCompare (lang, fcLangCharSets[i].lang); + if (r == FcLangDifferentLang) + break; + if (FcLangSetBitGet (ls, i) && r < best) + best = r; + } + for (i = id; i < NUM_LANG_CHAR_SET; i++) + { + r = FcLangCompare (lang, fcLangCharSets[i].lang); + if (r == FcLangDifferentLang) + break; + if (FcLangSetBitGet (ls, i) && r < best) + best = r; + } + if (ls->extra) + { + FcStrList *list = FcStrListCreate (ls->extra); + FcChar8 *extra; + + if (list) + { + while (best > FcLangEqual && (extra = FcStrListNext (list))) + { + r = FcLangCompare (lang, extra); + if (r < best) + best = r; + } + FcStrListDone (list); + } + } + return best; +} -static const FcCharLeaf *leaves_zh_cn[82] = { - L(269), L(270), L(271), L(272), L(273), L(274), L(275), L(276), - L(277), L(278), L(279), L(280), L(281), L(282), L(283), L(284), - L(285), L(286), L(287), L(288), L(289), L(290), L(291), L(292), - L(293), L(294), L(295), L(296), L(297), L(298), L(299), L(300), - L(301), L(302), L(303), L(304), L(305), L(306), L(307), L(308), - L(309), L(310), L(311), L(312), L(313), L(314), L(315), L(316), - L(317), L(318), L(319), L(320), L(321), L(322), L(323), L(324), - L(325), L(326), L(327), L(328), L(329), L(330), L(331), L(332), - L(333), L(334), L(335), L(336), L(337), L(338), L(339), L(340), - L(341), L(342), L(343), L(344), L(345), L(346), L(347), L(348), - L(349), L(350), -}; +static FcLangResult +FcLangSetCompareStrSet (const FcLangSet *ls, FcStrSet *set) +{ + FcStrList *list = FcStrListCreate (set); + FcLangResult r, best = FcLangDifferentLang; + FcChar8 *extra; -static const FcChar16 numbers_zh_cn[82] = { - 0x0002, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, - 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, - 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, - 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, - 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, - 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, - 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, - 0x009e, 0x009f, -}; + if (list) + { + while (best > FcLangEqual && (extra = FcStrListNext (list))) + { + r = FcLangSetHasLang (ls, extra); + if (r < best) + best = r; + } + FcStrListDone (list); + } + return best; +} -static const FcCharLeaf *leaves_zh_tw[84] = { - L(351), L(352), L(353), L(354), L(355), L(356), L(357), L(358), - L(359), L(360), L(361), L(362), L(363), L(364), L(365), L(366), - L(367), L(368), L(369), L(370), L(371), L(372), L(373), L(374), - L(375), L(376), L(377), L(378), L(379), L(380), L(381), L(382), - L(383), L(384), L(385), L(386), L(387), L(388), L(389), L(390), - L(391), L(392), L(393), L(394), L(395), L(396), L(397), L(398), - L(399), L(400), L(401), L(402), L(403), L(404), L(405), L(406), - L(407), L(408), L(409), L(410), L(411), L(412), L(413), L(414), - L(415), L(416), L(417), L(418), L(419), L(420), L(421), L(422), - L(423), L(424), L(425), L(426), L(427), L(428), L(429), L(430), - L(431), L(432), L(433), L(434), -}; +FcLangResult +FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb) +{ + int i, j, count; + FcLangResult best, r; + + count = FC_MIN (lsa->map_size, lsb->map_size); + count = FC_MIN (NUM_LANG_SET_MAP, count); + for (i = 0; i < count; i++) + if (lsa->map[i] & lsb->map[i]) + return FcLangEqual; + best = FcLangDifferentLang; + for (j = 0; j < NUM_COUNTRY_SET; j++) + for (i = 0; i < count; i++) + if ((lsa->map[i] & fcLangCountrySets[j][i]) && + (lsb->map[i] & fcLangCountrySets[j][i])) + { + best = FcLangDifferentTerritory; + break; + } + if (lsa->extra) + { + r = FcLangSetCompareStrSet (lsb, lsa->extra); + if (r < best) + best = r; + } + if (best > FcLangEqual && lsb->extra) + { + r = FcLangSetCompareStrSet (lsa, lsb->extra); + if (r < best) + best = r; + } + return best; +} -static const FcChar16 numbers_zh_tw[84] = { - 0x0030, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, - 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, - 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, - 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, - 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, - 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, - 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, - 0x009d, 0x009e, 0x009f, 0x00fa, -}; +/* + * Used in computing values -- mustn't allocate any storage + */ +FcLangSet * +FcLangSetPromote (const FcChar8 *lang) +{ + static FcLangSet ls; + static FcStrSet strs; + static FcChar8 *str; + int id; + + memset (ls.map, '\0', sizeof (ls.map)); + ls.extra = 0; + id = FcLangSetIndex (lang); + if (id > 0) + { + FcLangSetBitSet (&ls, id); + } + else + { + ls.extra = &strs; + strs.num = 1; + strs.size = 1; + strs.strs = &str; + strs.ref = 1; + str = (FcChar8 *) lang; + } + return &ls; +} -static const FcCharLeaf *leaves_chr[1] = { - L(435), -}; +FcChar32 +FcLangSetHash (const FcLangSet *ls) +{ + FcChar32 h = 0; + int i, count; + + count = FC_MIN (ls->map_size, NUM_LANG_SET_MAP); + for (i = 0; i < count; i++) + h ^= ls->map[i]; + if (ls->extra) + h ^= ls->extra->num; + return h; +} -static const FcChar16 numbers_chr[1] = { - 0x0013, -}; +FcLangSet * +FcNameParseLangSet (const FcChar8 *string) +{ + FcChar8 lang[32], c = 0; + int i; + FcLangSet *ls; -#undef L - -static const FcLangCharSet fcLangCharSets[] = { - { (FcChar8 *) "ab", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_ab, (FcChar16 *) numbers_ab } }, - { (FcChar8 *) "ar", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_ar, (FcChar16 *) numbers_ar } }, - { (FcChar8 *) "az", - { 1, FcTrue, 4, (FcCharLeaf **) leaves_az, (FcChar16 *) numbers_az } }, - { (FcChar8 *) "ba", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_ba, (FcChar16 *) numbers_ba } }, - { (FcChar8 *) "be", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_be, (FcChar16 *) numbers_be } }, - { (FcChar8 *) "bg", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_bg, (FcChar16 *) numbers_bg } }, - { (FcChar8 *) "bn", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_bn, (FcChar16 *) numbers_bn } }, - { (FcChar8 *) "bo", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_bo, (FcChar16 *) numbers_bo } }, - { (FcChar8 *) "br", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_br, (FcChar16 *) numbers_br } }, - { (FcChar8 *) "ca", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_ca, (FcChar16 *) numbers_ca } }, - { (FcChar8 *) "co", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_co, (FcChar16 *) numbers_co } }, - { (FcChar8 *) "cs", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_cs, (FcChar16 *) numbers_cs } }, - { (FcChar8 *) "da", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_da, (FcChar16 *) numbers_da } }, - { (FcChar8 *) "de", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_de, (FcChar16 *) numbers_de } }, - { (FcChar8 *) "el", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_el, (FcChar16 *) numbers_el } }, - { (FcChar8 *) "en", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_en, (FcChar16 *) numbers_en } }, - { (FcChar8 *) "eo", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_eo, (FcChar16 *) numbers_eo } }, - { (FcChar8 *) "es", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_es, (FcChar16 *) numbers_es } }, - { (FcChar8 *) "et", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_et, (FcChar16 *) numbers_et } }, - { (FcChar8 *) "eu", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_eu, (FcChar16 *) numbers_eu } }, - { (FcChar8 *) "fi", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_fi, (FcChar16 *) numbers_fi } }, - { (FcChar8 *) "fo", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_fo, (FcChar16 *) numbers_fo } }, - { (FcChar8 *) "fr", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_co, (FcChar16 *) numbers_co } }, - { (FcChar8 *) "fy", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_de, (FcChar16 *) numbers_de } }, - { (FcChar8 *) "ga", - { 1, FcTrue, 5, (FcCharLeaf **) leaves_ga, (FcChar16 *) numbers_ga } }, - { (FcChar8 *) "gd", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_gd, (FcChar16 *) numbers_gd } }, - { (FcChar8 *) "gl", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_gl, (FcChar16 *) numbers_gl } }, - { (FcChar8 *) "gu", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_gu, (FcChar16 *) numbers_gu } }, - { (FcChar8 *) "he", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_he, (FcChar16 *) numbers_he } }, - { (FcChar8 *) "hr", - { 1, FcTrue, 3, (FcCharLeaf **) leaves_hr, (FcChar16 *) numbers_hr } }, - { (FcChar8 *) "hu", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_hu, (FcChar16 *) numbers_hu } }, - { (FcChar8 *) "hy", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_hy, (FcChar16 *) numbers_hy } }, - { (FcChar8 *) "is", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_is, (FcChar16 *) numbers_is } }, - { (FcChar8 *) "it", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_it, (FcChar16 *) numbers_it } }, - { (FcChar8 *) "ja", - { 1, FcTrue, 84, (FcCharLeaf **) leaves_ja, (FcChar16 *) numbers_ja } }, - { (FcChar8 *) "ka", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_ka, (FcChar16 *) numbers_ka } }, - { (FcChar8 *) "kk", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_kk, (FcChar16 *) numbers_kk } }, - { (FcChar8 *) "kl", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_kl, (FcChar16 *) numbers_kl } }, - { (FcChar8 *) "km", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_km, (FcChar16 *) numbers_km } }, - { (FcChar8 *) "kn", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_kn, (FcChar16 *) numbers_kn } }, - { (FcChar8 *) "ko", - { 1, FcTrue, 132, (FcCharLeaf **) leaves_ko, (FcChar16 *) numbers_ko } }, - { (FcChar8 *) "la", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_la, (FcChar16 *) numbers_la } }, - { (FcChar8 *) "lo", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_lo, (FcChar16 *) numbers_lo } }, - { (FcChar8 *) "lt", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_lt, (FcChar16 *) numbers_lt } }, - { (FcChar8 *) "lv", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_lv, (FcChar16 *) numbers_lv } }, - { (FcChar8 *) "mk", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_mk, (FcChar16 *) numbers_mk } }, - { (FcChar8 *) "ml", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_ml, (FcChar16 *) numbers_ml } }, - { (FcChar8 *) "mn", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_mn, (FcChar16 *) numbers_mn } }, - { (FcChar8 *) "mo", - { 1, FcTrue, 4, (FcCharLeaf **) leaves_mo, (FcChar16 *) numbers_mo } }, - { (FcChar8 *) "mt", - { 1, FcTrue, 3, (FcCharLeaf **) leaves_mt, (FcChar16 *) numbers_mt } }, - { (FcChar8 *) "nl", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_nl, (FcChar16 *) numbers_nl } }, - { (FcChar8 *) "no", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_no, (FcChar16 *) numbers_no } }, - { (FcChar8 *) "oc", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_oc, (FcChar16 *) numbers_oc } }, - { (FcChar8 *) "or", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_or, (FcChar16 *) numbers_or } }, - { (FcChar8 *) "pl", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_pl, (FcChar16 *) numbers_pl } }, - { (FcChar8 *) "pt", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_pt, (FcChar16 *) numbers_pt } }, - { (FcChar8 *) "rm", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_rm, (FcChar16 *) numbers_rm } }, - { (FcChar8 *) "ro", - { 1, FcTrue, 3, (FcCharLeaf **) leaves_ro, (FcChar16 *) numbers_ro } }, - { (FcChar8 *) "ru", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_ru, (FcChar16 *) numbers_ru } }, - { (FcChar8 *) "sh", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_sh, (FcChar16 *) numbers_sh } }, - { (FcChar8 *) "si", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_si, (FcChar16 *) numbers_si } }, - { (FcChar8 *) "sk", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_sk, (FcChar16 *) numbers_sk } }, - { (FcChar8 *) "sl", - { 1, FcTrue, 3, (FcCharLeaf **) leaves_sl, (FcChar16 *) numbers_sl } }, - { (FcChar8 *) "sq", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_sq, (FcChar16 *) numbers_sq } }, - { (FcChar8 *) "sr", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_sh, (FcChar16 *) numbers_sh } }, - { (FcChar8 *) "sv", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_sv, (FcChar16 *) numbers_sv } }, - { (FcChar8 *) "ta", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_ta, (FcChar16 *) numbers_ta } }, - { (FcChar8 *) "te", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_te, (FcChar16 *) numbers_te } }, - { (FcChar8 *) "th", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_th, (FcChar16 *) numbers_th } }, - { (FcChar8 *) "tl", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_tl, (FcChar16 *) numbers_tl } }, - { (FcChar8 *) "tr", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_tr, (FcChar16 *) numbers_tr } }, - { (FcChar8 *) "uk", - { 1, FcTrue, 2, (FcCharLeaf **) leaves_uk, (FcChar16 *) numbers_uk } }, - { (FcChar8 *) "vo", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_vo, (FcChar16 *) numbers_vo } }, - { (FcChar8 *) "wa", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_wa, (FcChar16 *) numbers_wa } }, - { (FcChar8 *) "yi", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_he, (FcChar16 *) numbers_he } }, - { (FcChar8 *) "zh-cn", - { 1, FcTrue, 82, (FcCharLeaf **) leaves_zh_cn, (FcChar16 *) numbers_zh_cn } }, - { (FcChar8 *) "zh-tw", - { 1, FcTrue, 84, (FcCharLeaf **) leaves_zh_tw, (FcChar16 *) numbers_zh_tw } }, - { (FcChar8 *) "chr", - { 1, FcTrue, 1, (FcCharLeaf **) leaves_chr, (FcChar16 *) numbers_chr } }, -}; + ls = FcLangSetCreate (); + if (!ls) + goto bail0; + for(;;) + { + for(i = 0; i < 31;i++) + { + c = *string++; + if(c == '\0' || c == '|') + break; /* end of this code */ + lang[i] = c; + } + lang[i] = '\0'; + if (!FcLangSetAdd (ls, lang)) + goto bail1; + if(c == '\0') + break; + } + return ls; +bail1: + FcLangSetDestroy (ls); +bail0: + return 0; +} -#define NUM_LANG_CHAR_SET (sizeof (fcLangCharSets) / sizeof (fcLangCharSets[0])) - FcBool -FcFreeTypeSetLang (FcPattern *pattern, FcCharSet *charset) +FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls) { - int i; - FcChar32 missing; + int i, bit, count; + FcChar32 bits; + FcBool first = FcTrue; - for (i = 0; i < NUM_LANG_CHAR_SET; i++) + count = FC_MIN (ls->map_size, NUM_LANG_SET_MAP); + for (i = 0; i < count; i++) { - missing = FcCharSetSubtractCount (&fcLangCharSets[i].charset, charset); - if (FcDebug() & FC_DBG_SCANV) - printf ("%s(%d) ", fcLangCharSets[i].lang, missing); - if (!missing && !FcFreeTypeHasLang (pattern, fcLangCharSets[i].lang)) - if (!FcPatternAddString (pattern, FC_LANG, fcLangCharSets[i].lang)) - return FcFalse; + if ((bits = ls->map[i])) + { + for (bit = 0; bit <= 31; bit++) + if (bits & (1 << bit)) + { + int id = (i << 5) | bit; + if (!first) + if (!FcStrBufChar (buf, '|')) + return FcFalse; + if (!FcStrBufString (buf, fcLangCharSets[fcLangCharSetIndicesInv[id]].lang)) + return FcFalse; + first = FcFalse; + } + } + } + if (ls->extra) + { + FcStrList *list = FcStrListCreate (ls->extra); + FcChar8 *extra; + + if (!list) + return FcFalse; + while ((extra = FcStrListNext (list))) + { + if (!first) + if (!FcStrBufChar (buf, '|')) + { + FcStrListDone (list); + return FcFalse; + } + if (!FcStrBufString (buf, extra)) + { + FcStrListDone (list); + return FcFalse; + } + first = FcFalse; + } + FcStrListDone (list); } - if (FcDebug() & FC_DBG_SCANV) - printf ("\n"); return FcTrue; } +FcBool +FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb) +{ + int i, count; -FcLangResult -FcLangCompare (const FcChar8 *s1, const FcChar8 *s2) + count = FC_MIN (lsa->map_size, lsb->map_size); + count = FC_MIN (NUM_LANG_SET_MAP, count); + for (i = 0; i < count; i++) + { + if (lsa->map[i] != lsb->map[i]) + return FcFalse; + } + if (!lsa->extra && !lsb->extra) + return FcTrue; + if (lsa->extra && lsb->extra) + return FcStrSetEqual (lsa->extra, lsb->extra); + return FcFalse; +} + +static FcBool +FcLangSetContainsLang (const FcLangSet *ls, const FcChar8 *lang) { - const FcChar8 *orig_s1 = s1; - FcChar8 c1, c2; - FcLangResult result; + int id; + int i; + + id = FcLangSetIndex (lang); + if (id < 0) + id = -id - 1; + else if (FcLangSetBitGet (ls, id)) + return FcTrue; /* - * Compare ISO 639 language codes + * search up and down among equal languages for a match */ - for (;;) + for (i = id - 1; i >= 0; i--) { - c1 = *s1++; - c2 = *s2++; - if (c1 == '\0' || c1 == '-') + if (FcLangCompare (fcLangCharSets[i].lang, lang) == FcLangDifferentLang) break; - if (c2 == '\0' || c2 == '-') + if (FcLangSetBitGet (ls, i) && + FcLangContains (fcLangCharSets[i].lang, lang)) + return FcTrue; + } + for (i = id; i < NUM_LANG_CHAR_SET; i++) + { + if (FcLangCompare (fcLangCharSets[i].lang, lang) == FcLangDifferentLang) break; - c1 = FcToLower (c1); - c2 = FcToLower (c2); - if (c1 != c2) - return FcLangDifferentLang; /* mismatching lang code */ + if (FcLangSetBitGet (ls, i) && + FcLangContains (fcLangCharSets[i].lang, lang)) + return FcTrue; + } + if (ls->extra) + { + FcStrList *list = FcStrListCreate (ls->extra); + FcChar8 *extra; + + if (list) + { + while ((extra = FcStrListNext (list))) + { + if (FcLangContains (extra, lang)) + break; + } + FcStrListDone (list); + if (extra) + return FcTrue; + } + } + return FcFalse; +} + +/* + * return FcTrue if lsa contains every language in lsb + */ +FcBool +FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb) +{ + int i, j, count; + FcChar32 missing; + + if (FcDebug() & FC_DBG_MATCHV) + { + printf ("FcLangSet "); FcLangSetPrint (lsa); + printf (" contains "); FcLangSetPrint (lsb); + printf ("\n"); } - if (!c1 && !c2) - return FcLangEqual; - /* - * Make x-* mismatch as if the lang part didn't match - */ - result = FcLangDifferentCountry; - if (orig_s1[0] == 'x' && (orig_s1[1] == '\0' || orig_s1[1] == '-')) - result = FcLangDifferentLang; - - if (c1 == '\0' || c2 == '\0') - return result; /* - * Compare ISO 3166 country codes + * check bitmaps for missing language support */ - for (;;) + count = FC_MIN (lsa->map_size, lsb->map_size); + count = FC_MIN (NUM_LANG_SET_MAP, count); + for (i = 0; i < count; i++) { - c1 = *s1++; - c2 = *s2++; - if (!c1 || !c2) - break; - c1 = FcToLower (c1); - c2 = FcToLower (c2); - if (c1 != c2) - break; + missing = lsb->map[i] & ~lsa->map[i]; + if (missing) + { + for (j = 0; j < 32; j++) + if (missing & (1 << j)) + { + if (!FcLangSetContainsLang (lsa, + fcLangCharSets[fcLangCharSetIndicesInv[i*32 + j]].lang)) + { + if (FcDebug() & FC_DBG_MATCHV) + printf ("\tMissing bitmap %s\n", fcLangCharSets[fcLangCharSetIndicesInv[i*32+j]].lang); + return FcFalse; + } + } + } } - if (c1 == c2) - return FcLangEqual; - else - return result; + if (lsb->extra) + { + FcStrList *list = FcStrListCreate (lsb->extra); + FcChar8 *extra; + + if (list) + { + while ((extra = FcStrListNext (list))) + { + if (!FcLangSetContainsLang (lsa, extra)) + { + if (FcDebug() & FC_DBG_MATCHV) + printf ("\tMissing string %s\n", extra); + break; + } + } + FcStrListDone (list); + if (extra) + return FcFalse; + } + } + return FcTrue; } -const FcCharSet * -FcCharSetForLang (const FcChar8 *lang) +FcBool +FcLangSetSerializeAlloc (FcSerialize *serialize, const FcLangSet *l) { - int i; - int country = -1; + if (!FcSerializeAlloc (serialize, l, sizeof (FcLangSet))) + return FcFalse; + return FcTrue; +} + +FcLangSet * +FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l) +{ + FcLangSet *l_serialize = FcSerializePtr (serialize, l); + + if (!l_serialize) + return NULL; + memset (l_serialize->map, '\0', sizeof (l_serialize->map)); + memcpy (l_serialize->map, l->map, FC_MIN (sizeof (l_serialize->map), l->map_size * sizeof (l->map[0]))); + l_serialize->map_size = NUM_LANG_SET_MAP; + l_serialize->extra = NULL; /* We don't serialize ls->extra */ + return l_serialize; +} + +FcStrSet * +FcLangSetGetLangs (const FcLangSet *ls) +{ + FcStrSet *langs; + int i; + + langs = FcStrSetCreate(); + if (!langs) + return 0; + for (i = 0; i < NUM_LANG_CHAR_SET; i++) + if (FcLangSetBitGet (ls, i)) + FcStrSetAdd (langs, fcLangCharSets[i].lang); + + if (ls->extra) { - switch (FcLangCompare (lang, fcLangCharSets[i].lang)) { - case FcLangEqual: - return &fcLangCharSets[i].charset; - case FcLangDifferentCountry: - if (country == -1) - country = i; - default: - break; + FcStrList *list = FcStrListCreate (ls->extra); + FcChar8 *extra; + + if (list) + { + while ((extra = FcStrListNext (list))) + FcStrSetAdd (langs, extra); + + FcStrListDone (list); } } - if (country == -1) - return 0; - return &fcLangCharSets[i].charset; + + return langs; } + +#define __fclang__ +#include "fcaliastail.h" +#include "fcftaliastail.h" +#undef __fclang__