diff --git a/.gitattributes b/.gitattributes index a45bf74682..cbb0d0b72d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -51,7 +51,6 @@ README text !eol icu4c/source/common/dtintrv.cpp -text icu4c/source/common/mutex.cpp -text icu4c/source/common/unicode/dtintrv.h -text -icu4c/source/configure -text icu4c/source/data/coll/bn_IN.txt -text icu4c/source/data/coll/pa_Arab.txt -text icu4c/source/data/coll/pa_Arab_PK.txt -text diff --git a/icu4c/source/common/Makefile.in b/icu4c/source/common/Makefile.in index b216833f08..ded40cc21f 100644 --- a/icu4c/source/common/Makefile.in +++ b/icu4c/source/common/Makefile.in @@ -80,7 +80,7 @@ utf_impl.o ustring.o ustrcase.o ucasemap.o cstring.o ustrfmt.o ustrtrns.o ustr_w normlzr.o unorm.o unormcmp.o unorm_it.o chariter.o schriter.o uchriter.o uiter.o \ uchar.o uprops.o ucase.o propname.o ubidi_props.o ubidi.o ubidiwrt.o ubidiln.o ushape.o \ uscript.o usc_impl.o unames.o \ -utrie.o bmpset.o unisetspan.o uset_props.o uniset_props.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \ +utrie.o utrie2.o utrie2_builder.o bmpset.o unisetspan.o uset_props.o uniset_props.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \ uarrsort.o brkiter.o ubrk.o brkeng.o dictbe.o triedict.o \ rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o \ serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \ diff --git a/icu4c/source/common/common.vcproj b/icu4c/source/common/common.vcproj index d0f4c5570a..5f1ed65199 100644 --- a/icu4c/source/common/common.vcproj +++ b/icu4c/source/common/common.vcproj @@ -953,6 +953,22 @@ RelativePath=".\utrie.h" > + + + + + + + + diff --git a/icu4c/source/common/propsvec.c b/icu4c/source/common/propsvec.c index 74158b0511..2f027b5f9c 100644 --- a/icu4c/source/common/propsvec.c +++ b/icu4c/source/common/propsvec.c @@ -20,6 +20,7 @@ #include "unicode/utypes.h" #include "cmemory.h" #include "utrie.h" +#include "utrie2.h" #include "uarrsort.h" #include "propsvec.h" @@ -77,6 +78,7 @@ _findRow(uint32_t *pv, UChar32 rangeStart) { U_CAPI uint32_t * U_EXPORT2 upvec_open(int32_t columns, int32_t maxRows) { uint32_t *pv, *row; + uint32_t cp; int32_t length; if(columns<1 || maxRows<1) { @@ -90,17 +92,20 @@ upvec_open(int32_t columns, int32_t maxRows) { /* set header */ pv[UPVEC_COLUMNS]=(uint32_t)columns; pv[UPVEC_MAXROWS]=(uint32_t)maxRows; - pv[UPVEC_ROWS]=1; + pv[UPVEC_ROWS]=2+(UPVEC_MAX_CP-UPVEC_FIRST_SPECIAL_CP); pv[UPVEC_PREV_ROW]=0; - /* set initial row */ + /* set the all-Unicode row and the special-value rows */ row=pv+UPVEC_HEADER_LENGTH; - *row++=0; - *row++=0x110000; - columns-=2; - do { - *row++=0; - } while(--columns>0); + uprv_memset(row, 0, pv[UPVEC_ROWS]*columns*4); + row[0]=0; + row[1]=0x110000; + row+=columns; + for(cp=UPVEC_FIRST_SPECIAL_CP; cp<=UPVEC_MAX_CP; ++cp) { + row[0]=cp; + row[1]=cp+1; + row+=columns; + } } return pv; } @@ -114,12 +119,13 @@ upvec_close(uint32_t *pv) { U_CAPI UBool U_EXPORT2 upvec_setValue(uint32_t *pv, - UChar32 start, UChar32 limit, + UChar32 start, UChar32 end, int32_t column, uint32_t value, uint32_t mask, UErrorCode *pErrorCode) { uint32_t *firstRow, *lastRow; int32_t columns; + UChar32 limit; UBool splitFirstRow, splitLastRow; /* argument checking */ @@ -128,16 +134,13 @@ upvec_setValue(uint32_t *pv, } if( pv==NULL || - start<0 || start>limit || limit>0x110000 || + start<0 || start>end || end>UPVEC_MAX_CP || column<0 || (uint32_t)(column+1)>=pv[UPVEC_COLUMNS] ) { *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; return FALSE; } - if(start==limit) { - /* empty range, nothing to do */ - return TRUE; - } + limit=end+1; /* initialize */ columns=(int32_t)pv[UPVEC_COLUMNS]; @@ -151,8 +154,25 @@ upvec_setValue(uint32_t *pv, /* find the last row, always successful */ lastRow=firstRow; - while(limit>(UChar32)lastRow[1]) { + /* + * Start searching with an unrolled loop: + * start and limit are often in a single range, or in adjacent ranges. + */ + if(limit>(UChar32)lastRow[1]) { lastRow+=columns; + if(limit>(UChar32)lastRow[1]) { + lastRow+=columns; + if(limit>(UChar32)lastRow[1]) { + if((limit-(UChar32)lastRow[1])<10) { + /* we are close, continue looping */ + do { + lastRow+=columns; + } while(limit>(UChar32)lastRow[1]); + } else { + lastRow=_findRow(pv, limit-1); + } + } + } } /* @@ -226,7 +246,7 @@ U_CAPI uint32_t U_EXPORT2 upvec_getValue(uint32_t *pv, UChar32 c, int32_t column) { uint32_t *row; - if(pv==NULL || c<0 || c>=0x110000) { + if(pv==NULL || c<0 || c>UPVEC_MAX_CP) { return 0; } row=_findRow(pv, c); @@ -235,7 +255,7 @@ upvec_getValue(uint32_t *pv, UChar32 c, int32_t column) { U_CAPI uint32_t * U_EXPORT2 upvec_getRow(uint32_t *pv, int32_t rowIndex, - UChar32 *pRangeStart, UChar32 *pRangeLimit) { + UChar32 *pRangeStart, UChar32 *pRangeEnd) { uint32_t *row; int32_t columns; @@ -248,8 +268,8 @@ upvec_getRow(uint32_t *pv, int32_t rowIndex, if(pRangeStart!=NULL) { *pRangeStart=row[0]; } - if(pRangeLimit!=NULL) { - *pRangeLimit=row[1]; + if(pRangeEnd!=NULL) { + *pRangeEnd=row[1]-1; } return row+2; } @@ -279,7 +299,7 @@ upvec_compareRows(const void *context, const void *l, const void *r) { U_CAPI int32_t U_EXPORT2 upvec_compact(uint32_t *pv, UPVecCompactHandler *handler, void *context, UErrorCode *pErrorCode) { uint32_t *row; - int32_t columns, valueColumns, rows, count; + int32_t i, columns, valueColumns, rows, count; UChar32 start, limit; /* argument checking */ @@ -292,23 +312,58 @@ upvec_compact(uint32_t *pv, UPVecCompactHandler *handler, void *context, UErrorC return 0; } - row=pv+UPVEC_HEADER_LENGTH; - columns=(int32_t)pv[UPVEC_COLUMNS]; rows=(int32_t)pv[UPVEC_ROWS]; - if(rows==0) { return 0; } + row=pv+UPVEC_HEADER_LENGTH; + columns=(int32_t)pv[UPVEC_COLUMNS]; + valueColumns=columns-2; /* not counting start & limit */ + /* sort the properties vectors to find unique vector values */ if(rows>1) { - uprv_sortArray(pv+UPVEC_HEADER_LENGTH, rows, columns*4, + uprv_sortArray(row, rows, columns*4, upvec_compareRows, pv, FALSE, pErrorCode); } if(U_FAILURE(*pErrorCode)) { return 0; } + /* + * Find and set the special values. + * This has to do almost the same work as the compaction below, + * to find the indexes where the special-value rows will move. + */ + count=-valueColumns; + for(i=0; i=UPVEC_FIRST_SPECIAL_CP) { + handler(context, start, start, count, row+2, valueColumns, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return 0; + } + } + + row+=columns; + } + + /* count is at the beginning of the last vector, add valueColumns to include that last vector */ + count+=valueColumns; + + /* Call the handler once more to signal the start of delivering real values. */ + handler(context, UPVEC_START_REAL_VALUES_CP, UPVEC_START_REAL_VALUES_CP, + count, row-valueColumns, valueColumns, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return 0; + } + /* * Move vector contents up to a contiguous array with only unique * vector values, and call the handler function for each vector. @@ -316,10 +371,9 @@ upvec_compact(uint32_t *pv, UPVecCompactHandler *handler, void *context, UErrorC * This destroys the Properties Vector structure and replaces it * with an array of just vector values. */ - valueColumns=columns-2; /* not counting start & limit */ + row=pv+UPVEC_HEADER_LENGTH; count=-valueColumns; - - do { + for(i=0; i0); + } /* count is at the beginning of the last vector, add valueColumns to include that last vector */ return count+valueColumns; } +/* + * TODO(markus): Add upvec_compactToUTrie2WithRowIndexes() function that returns + * a UTrie2 and does not require the caller to pass in a callback function. + * + * Add upvec_16BitsToUTrie2() function that enumerates all rows, extracts + * some 16-bit field and builds and returns a UTrie2. + */ + U_CAPI void U_CALLCONV -upvec_compactToTrieHandler(void *context, - UChar32 start, UChar32 limit, - int32_t rowIndex, uint32_t *row, int32_t columns, - UErrorCode *pErrorCode) { - if(!utrie_setRange32((UNewTrie *)context, start, limit, (uint32_t)rowIndex, FALSE)) { - *pErrorCode=U_BUFFER_OVERFLOW_ERROR; +upvec_compactToUTrieHandler(void *context, + UChar32 start, UChar32 end, + int32_t rowIndex, uint32_t *row, int32_t columns, + UErrorCode *pErrorCode) { + UPVecToUTrieContext *toUTrie=(UPVecToUTrieContext *)context; + if(startnewTrie, start, end+1, (uint32_t)rowIndex, TRUE)) { + *pErrorCode=U_BUFFER_OVERFLOW_ERROR; + } + } else { + switch(start) { + case UPVEC_INITIAL_VALUE_CP: + toUTrie->initialValue=rowIndex; + break; + case UPVEC_START_REAL_VALUES_CP: + if(rowIndex>0xffff) { + /* too many rows for a 16-bit trie */ + *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR; + } else { + toUTrie->newTrie=utrie_open(NULL, NULL, toUTrie->capacity, + toUTrie->initialValue, toUTrie->initialValue, + toUTrie->latin1Linear); + if(toUTrie->newTrie==NULL) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + } + } + break; + default: + break; + } + } +} + +U_CAPI void U_CALLCONV +upvec_compactToUTrie2Handler(void *context, + UChar32 start, UChar32 end, + int32_t rowIndex, uint32_t *row, int32_t columns, + UErrorCode *pErrorCode) { + UPVecToUTrie2Context *toUTrie2=(UPVecToUTrie2Context *)context; + if(starttrie, start, end, (uint32_t)rowIndex, TRUE, pErrorCode); + } else { + switch(start) { + case UPVEC_INITIAL_VALUE_CP: + toUTrie2->initialValue=rowIndex; + break; + case UPVEC_ERROR_VALUE_CP: + toUTrie2->errorValue=rowIndex; + break; + case UPVEC_START_REAL_VALUES_CP: + toUTrie2->maxValue=rowIndex; + if(rowIndex>0xffff) { + /* too many rows for a 16-bit trie */ + *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR; + } else { + toUTrie2->trie=utrie2_open(toUTrie2->initialValue, + toUTrie2->errorValue, pErrorCode); + } + break; + default: + break; + } } } diff --git a/icu4c/source/common/propsvec.h b/icu4c/source/common/propsvec.h index 48530c6415..8ffd3dd433 100644 --- a/icu4c/source/common/propsvec.h +++ b/icu4c/source/common/propsvec.h @@ -21,6 +21,9 @@ #include "unicode/utypes.h" #include "utrie.h" +#include "utrie2.h" + +U_CDECL_BEGIN /* * Unicode Properties Vectors associated with code point ranges. @@ -48,6 +51,22 @@ enum { UPVEC_HEADER_LENGTH }; +/* + * Special pseudo code points for storing the initialValue and the errorValue, + * which are used to initialize a UTrie2 or similar. + */ +#define UPVEC_FIRST_SPECIAL_CP 0x110000 +#define UPVEC_INITIAL_VALUE_CP 0x110000 +#define UPVEC_ERROR_VALUE_CP 0x110001 +#define UPVEC_MAX_CP 0x110001 + +/* + * Special pseudo code point used in upvec_compact() signalling the end of + * delivering special values and the beginning of delivering real ones. + * Stable value, unlike UPVEC_MAX_CP which might grow over time. + */ +#define UPVEC_START_REAL_VALUES_CP 0x200000 + U_CAPI uint32_t * U_EXPORT2 upvec_open(int32_t columns, int32_t maxRows); @@ -56,7 +75,7 @@ upvec_close(uint32_t *pv); U_CAPI UBool U_EXPORT2 upvec_setValue(uint32_t *pv, - UChar32 start, UChar32 limit, + UChar32 start, UChar32 end, int32_t column, uint32_t value, uint32_t mask, UErrorCode *pErrorCode); @@ -65,12 +84,12 @@ U_CAPI uint32_t U_EXPORT2 upvec_getValue(uint32_t *pv, UChar32 c, int32_t column); /* - * pRangeStart and pRangeLimit can be NULL. + * pRangeStart and pRangeEnd can be NULL. * @return NULL if rowIndex out of range and for illegal arguments */ U_CAPI uint32_t * U_EXPORT2 upvec_getRow(uint32_t *pv, int32_t rowIndex, - UChar32 *pRangeStart, UChar32 *pRangeLimit); + UChar32 *pRangeStart, UChar32 *pRangeEnd); /* * Compact the vectors: @@ -82,13 +101,20 @@ upvec_getRow(uint32_t *pv, int32_t rowIndex, * The handler's rowIndex is the uint32_t index of the row in the compacted * memory block. * (Therefore, it starts at 0 increases in increments of the columns value.) + * + * In a first phase, only special values are delivered (each exactly once), + * with start==end both equalling a special pseudo code point. + * Then the handler is called once more with start==end==UPVEC_START_REAL_VALUES_CP + * where rowIndex is the length of the compacted array, + * and the row is arbitrary (but not NULL). + * Then, in the second phase, the handler is called for each row of real values. */ U_CDECL_BEGIN typedef void U_CALLCONV UPVecCompactHandler(void *context, - UChar32 start, UChar32 limit, + UChar32 start, UChar32 end, int32_t rowIndex, uint32_t *row, int32_t columns, UErrorCode *pErrorCode); @@ -97,11 +123,36 @@ U_CDECL_END U_CAPI int32_t U_EXPORT2 upvec_compact(uint32_t *pv, UPVecCompactHandler *handler, void *context, UErrorCode *pErrorCode); -/* context=UNewTrie, stores the rowIndex values into the trie */ +struct UPVecToUTrieContext { + UNewTrie *newTrie; + int32_t capacity; + int32_t initialValue; + UBool latin1Linear; +}; +typedef struct UPVecToUTrieContext UPVecToUTrieContext; + +/* context=UPVecToUTrieContext, creates the trie and stores the rowIndex values */ U_CAPI void U_CALLCONV -upvec_compactToTrieHandler(void *context, - UChar32 start, UChar32 limit, - int32_t rowIndex, uint32_t *row, int32_t columns, - UErrorCode *pErrorCode); +upvec_compactToUTrieHandler(void *context, + UChar32 start, UChar32 end, + int32_t rowIndex, uint32_t *row, int32_t columns, + UErrorCode *pErrorCode); + +struct UPVecToUTrie2Context { + UTrie2 *trie; + int32_t initialValue; + int32_t errorValue; + int32_t maxValue; +}; +typedef struct UPVecToUTrie2Context UPVecToUTrie2Context; + +/* context=UPVecToUTrie2Context, creates the trie and stores the rowIndex values */ +U_CAPI void U_CALLCONV +upvec_compactToUTrie2Handler(void *context, + UChar32 start, UChar32 end, + int32_t rowIndex, uint32_t *row, int32_t columns, + UErrorCode *pErrorCode); + +U_CDECL_END #endif diff --git a/icu4c/source/common/ubidi_props.c b/icu4c/source/common/ubidi_props.c index f50f7f9800..b68613863e 100644 --- a/icu4c/source/common/ubidi_props.c +++ b/icu4c/source/common/ubidi_props.c @@ -24,7 +24,7 @@ #include "umutex.h" #include "uassert.h" #include "cmemory.h" -#include "utrie.h" +#include "utrie2.h" #include "ubidi_props.h" #include "ucln_cmn.h" @@ -34,7 +34,7 @@ struct UBiDiProps { const uint32_t *mirrors; const uint8_t *jgArray; - UTrie trie; + UTrie2 trie; uint8_t formatVersion[4]; }; @@ -321,7 +321,7 @@ ubidi_getDummy(UErrorCode *pErrorCode) { /* set of property starts for UnicodeSet ------------------------------------ */ static UBool U_CALLCONV -_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) { +_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) { /* add the start code point to the USet */ const USetAdder *sa=(const USetAdder *)context; sa->add(sa->set, start); @@ -341,7 +341,7 @@ ubidi_addPropertyStarts(const UBiDiProps *bdp, const USetAdder *sa, UErrorCode * } /* add the start code point of each same-value range of the trie */ - utrie_enum(&bdp->trie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&bdp->trie, NULL, _enumPropertyStartsRange, sa); /* add the code points from the bidi mirroring table */ length=bdp->indexes[UBIDI_IX_MIRROR_LENGTH]; @@ -373,12 +373,6 @@ ubidi_addPropertyStarts(const UBiDiProps *bdp, const USetAdder *sa, UErrorCode * /* (none right now) */ } -/* data access primitives --------------------------------------------------- */ - -/* UTRIE_GET16() itself validates c */ -#define GET_PROPS(bdp, c, result) \ - UTRIE_GET16(&(bdp)->trie, c, result); - /* property access functions ------------------------------------------------ */ U_CFUNC int32_t @@ -404,25 +398,20 @@ ubidi_getMaxValue(const UBiDiProps *bdp, UProperty which) { U_CAPI UCharDirection ubidi_getClass(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - GET_PROPS(bdp, c, props); + uint16_t props=UTRIE2_GET16(&bdp->trie, c); return (UCharDirection)UBIDI_GET_CLASS(props); } U_CFUNC UBool ubidi_isMirrored(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - GET_PROPS(bdp, c, props); + uint16_t props=UTRIE2_GET16(&bdp->trie, c); return (UBool)UBIDI_GET_FLAG(props, UBIDI_IS_MIRRORED_SHIFT); } U_CFUNC UChar32 ubidi_getMirror(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - int32_t delta; - - GET_PROPS(bdp, c, props); - delta=((int16_t)props)>>UBIDI_MIRROR_DELTA_SHIFT; + uint16_t props=UTRIE2_GET16(&bdp->trie, c); + int32_t delta=((int16_t)props)>>UBIDI_MIRROR_DELTA_SHIFT; if(delta!=UBIDI_ESC_MIRROR_DELTA) { return c+delta; } else { @@ -454,22 +443,19 @@ ubidi_getMirror(const UBiDiProps *bdp, UChar32 c) { U_CFUNC UBool ubidi_isBidiControl(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - GET_PROPS(bdp, c, props); + uint16_t props=UTRIE2_GET16(&bdp->trie, c); return (UBool)UBIDI_GET_FLAG(props, UBIDI_BIDI_CONTROL_SHIFT); } U_CFUNC UBool ubidi_isJoinControl(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - GET_PROPS(bdp, c, props); + uint16_t props=UTRIE2_GET16(&bdp->trie, c); return (UBool)UBIDI_GET_FLAG(props, UBIDI_JOIN_CONTROL_SHIFT); } U_CFUNC UJoiningType ubidi_getJoiningType(const UBiDiProps *bdp, UChar32 c) { - uint32_t props; - GET_PROPS(bdp, c, props); + uint16_t props=UTRIE2_GET16(&bdp->trie, c); return (UJoiningType)((props&UBIDI_JT_MASK)>>UBIDI_JT_SHIFT); } diff --git a/icu4c/source/common/ubidi_props_data.c b/icu4c/source/common/ubidi_props_data.c index ecae1aeb33..5953e57602 100644 --- a/icu4c/source/common/ubidi_props_data.c +++ b/icu4c/source/common/ubidi_props_data.c @@ -4,208 +4,258 @@ * * file name: ubidi_props_data.c * - * machine-generated on: 2008-03-20 + * machine-generated on: 2008-10-14 */ static const UVersionInfo ubidi_props_dataVersion={5,1,0,0}; static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x4340,0x4138,0x1a,0x622,0x782,0,0,0,0,0,0,0,0,0,0x3600b2}; -static const uint16_t ubidi_props_trieIndex[8340]={ -0x258,0x260,0x268,0x270,0x278,0x280,0x288,0x290,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x296,0x29e,0x2a6,0x2ae,0x2ae,0x2ae,0x2b2,0x2ba,0x250,0x250,0x2bd, -0x250,0x250,0x250,0x250,0x2c5,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x2cb,0x2d0,0x2d8,0x2da, -0x2e2,0x2ea,0x2f2,0x2fa,0x300,0x307,0x30f,0x317,0x31f,0x327,0x32d,0x334,0x33c,0x343,0x34b,0x351, -0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x359,0x35a,0x362,0x36a,0x372,0x35a,0x37a,0x382, -0x359,0x35a,0x38a,0x38f,0x359,0x35a,0x397,0x39f,0x372,0x3a4,0x3ac,0x36a,0x3b1,0x250,0x3b9,0x3bd, -0x250,0x3c4,0x3cc,0x3d4,0x250,0x3dc,0x3e4,0x3ec,0x250,0x250,0x37a,0x36a,0x250,0x250,0x3f2,0x250, -0x250,0x3f8,0x400,0x250,0x250,0x404,0x40c,0x250,0x410,0x417,0x250,0x41f,0x427,0x42e,0x3b0,0x250, -0x250,0x436,0x43e,0x446,0x44e,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x452,0x250,0x45a,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x462,0x250,0x250,0x250,0x46a,0x46a,0x37e,0x37e,0x250,0x470,0x478,0x45a, -0x480,0x250,0x250,0x250,0x250,0x370,0x250,0x250,0x250,0x488,0x490,0x250,0x250,0x250,0x492,0x49a, -0x4a2,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x4aa,0x4ad,0x3b1,0x4b5,0x4bd,0x4c5,0x250,0x250, -0x250,0x4ca,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x2ae,0x4d2, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x4da,0x4e2,0x4e6, -0x4ee,0x4f4,0x4fb,0x503,0x50b,0x513,0x519,0x431,0x521,0x529,0x531,0x250,0x539,0x49a,0x49a,0x49a, -0x541,0x549,0x551,0x559,0x55e,0x566,0x56e,0x574,0x57c,0x584,0x250,0x58a,0x591,0x49a,0x49a,0x597, -0x49a,0x3da,0x59f,0x49a,0x5a7,0x250,0x250,0x497,0x49a,0x49a,0x49a,0x49a,0x49a,0x49a,0x49a,0x49a, -0x49a,0x49a,0x49a,0x49a,0x5af,0x5b7,0x5bf,0x250,0x5c7,0x5cd,0x5d2,0x5da,0x5e0,0x5e6,0x5ee,0x5f6, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x49a,0x49a,0x49a,0x49a,0x5fe,0x605,0x60d,0x615, -0x61d,0x625,0x62d,0x634,0x63c,0x644,0x64b,0x653,0x49a,0x49a,0x65b,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x662,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x2ae, -0x66a,0x672,0x250,0x250,0x67a,0x49a,0x49a,0x49d,0x49a,0x49a,0x49a,0x49a,0x49a,0x49a,0x681,0x687, -0x68f,0x697,0x250,0x250,0x69f,0x6a6,0x250,0x28f,0x250,0x250,0x250,0x250,0x250,0x250,0x49a,0x5bf, -0x6a7,0x250,0x539,0x6af,0x250,0x6b7,0x6bf,0x250,0x250,0x250,0x250,0x6c3,0x250,0x250,0x492,0x28e, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x49a,0x49a, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x539,0x49a,0x3da,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x6ca,0x250,0x250,0x6cf,0x250,0x250,0x250,0x250,0x49a,0x491,0x250,0x250,0x6d7,0x250,0x250,0x250, -0x6df,0x6e6,0x250,0x6e9,0x250,0x250,0x6f0,0x250,0x250,0x6f7,0x6fe,0x250,0x250,0x250,0x250,0x250, -0x250,0x704,0x70c,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x80a,0x80d,0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815, -0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815,0x250,0x815,0x81d,0x815,0x250,0x815,0x250,0x815, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x710,0x718,0x71c,0x33c,0x33c,0x33c,0x33c,0x33c, -0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x720,0x33c,0x33c,0x33c,0x33c,0x728,0x72c, -0x734,0x73c,0x740,0x748,0x33c,0x33c,0x33c,0x74c,0x754,0x268,0x75c,0x764,0x250,0x250,0x250,0x76c, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x774,0x250,0x49a,0x49a,0x77c,0x250,0x250,0x36b, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x784,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da, -0x78c,0x790,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da, -0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da, -0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da,0x2da, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x798,0x7a0,0x7a6,0x250,0x250, -0x49a,0x49a,0x7ae,0x250,0x250,0x250,0x250,0x250,0x49a,0x49a,0x7b6,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x7bc,0x250,0x7c3,0x250,0x7bf,0x250,0x7c6,0x250,0x7ce,0x7d2, -0x49a,0x7da,0x49a,0x49a,0x49d,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250, -0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x250,0x7e2, -0x7ea,0x7f2,0x7f2,0x7f2,0x7fa,0x7fa,0x7fa,0x7fa,0x2ae,0x2ae,0x2ae,0x2ae,0x2ae,0x2ae,0x2ae,0x802, -0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa, -0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa, -0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa, +static const uint16_t ubidi_props_trieIndex[8988]={ +0x2e6,0x2ee,0x2f6,0x2fe,0x316,0x31e,0x326,0x32e,0x306,0x30e,0x306,0x30e,0x306,0x30e,0x306,0x30e, +0x306,0x30e,0x306,0x30e,0x334,0x33c,0x344,0x34c,0x354,0x35c,0x358,0x360,0x368,0x370,0x36b,0x373, +0x306,0x30e,0x306,0x30e,0x37b,0x383,0x306,0x30e,0x306,0x30e,0x306,0x30e,0x389,0x391,0x399,0x3a1, +0x3a9,0x3b1,0x3b9,0x3c1,0x3c7,0x3cf,0x3d7,0x3df,0x3e7,0x3ef,0x3f5,0x3fd,0x405,0x40d,0x415,0x41d, +0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x425,0x426,0x42e,0x436,0x43e,0x426,0x446,0x44e, +0x425,0x426,0x456,0x45b,0x425,0x426,0x463,0x46b,0x43e,0x470,0x478,0x436,0x47d,0x306,0x485,0x489, +0x306,0x490,0x498,0x4a0,0x306,0x4a8,0x4b0,0x4b8,0x306,0x306,0x446,0x436,0x306,0x306,0x4be,0x306, +0x306,0x4c4,0x4cc,0x306,0x306,0x4d0,0x4d8,0x306,0x4dc,0x4e3,0x306,0x4eb,0x4f3,0x4fa,0x47c,0x306, +0x306,0x502,0x50a,0x512,0x51a,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x51e,0x306,0x526,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x52e,0x306,0x306,0x306,0x536,0x536,0x44a,0x44a,0x306,0x53c,0x544,0x526, +0x54c,0x306,0x306,0x306,0x306,0x43c,0x306,0x306,0x306,0x554,0x55c,0x306,0x306,0x306,0x55e,0x566, +0x56e,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x576,0x579,0x47d,0x581,0x37d,0x589,0x306,0x306, +0x306,0x58e,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x354,0x596, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x59e,0x5a6,0x5aa, +0x5b2,0x5b8,0x5bf,0x5c7,0x5cf,0x5d7,0x5dd,0x4fd,0x5e5,0x5ed,0x5f5,0x306,0x5fd,0x566,0x566,0x566, +0x605,0x60d,0x615,0x61d,0x622,0x62a,0x632,0x638,0x640,0x648,0x306,0x64e,0x655,0x566,0x566,0x65b, +0x566,0x4a6,0x663,0x566,0x66b,0x306,0x306,0x563,0x566,0x566,0x566,0x566,0x566,0x566,0x566,0x566, +0x566,0x566,0x566,0x566,0x673,0x67b,0x683,0x306,0x68b,0x691,0x696,0x69e,0x6a4,0x6aa,0x6b2,0x6ba, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x566,0x566,0x566,0x566,0x6c2,0x6c9,0x6d1,0x6d9, +0x6e1,0x6e9,0x6f1,0x6f8,0x700,0x708,0x70f,0x717,0x566,0x566,0x71f,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x726,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x354, +0x72e,0x736,0x306,0x306,0x73e,0x566,0x566,0x569,0x566,0x566,0x566,0x566,0x566,0x566,0x745,0x74b, +0x753,0x75b,0x306,0x306,0x763,0x76a,0x306,0x32d,0x306,0x306,0x306,0x306,0x306,0x306,0x566,0x683, +0x33b,0x306,0x5fd,0x76b,0x306,0x773,0x77b,0x306,0x306,0x306,0x306,0x77f,0x306,0x306,0x55e,0x32c, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x566,0x566, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x5fd,0x566,0x4a6,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x786,0x306,0x306,0x78b,0x306,0x306,0x306,0x306,0x566,0x55d,0x306,0x306,0x793,0x306,0x306,0x306, +0x79b,0x7a2,0x306,0x7a5,0x306,0x306,0x7ac,0x306,0x306,0x7b3,0x7ba,0x306,0x306,0x306,0x306,0x306, +0x306,0x7c0,0x7c8,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x7cc,0x7d4,0x7d8,0x405,0x405,0x405,0x405,0x405, +0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x7dc,0x405,0x405,0x405,0x405,0x7e4,0x7e8, +0x7f0,0x7f8,0x7fc,0x804,0x405,0x405,0x405,0x808,0x810,0x2f6,0x818,0x820,0x306,0x306,0x306,0x828, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0xc18,0xc18,0xc58,0xc98,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xcd0,0xd10,0xd50,0xd60,0xda0,0xdac, +0xc18,0xc18,0xdec,0xc18,0xc18,0xc18,0xe24,0xe64,0xea4,0xee4,0xf1c,0xf5c,0xf9c,0xfd4,0x1014,0x1054, +0xa40,0xa80,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xac0,0x1a0,0x1a0,0x1a0,0xb00,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0xb45,0xb55,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb05, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x830,0x306,0x566,0x566,0x838,0x306,0x306,0x437, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x840,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b, +0x848,0x84c,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b, +0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b, +0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b,0x39b, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x854,0x85c,0x862,0x306,0x306, +0x566,0x566,0x86a,0x306,0x306,0x306,0x306,0x306,0x566,0x566,0x872,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x878,0x306,0x87f,0x306,0x87b,0x306,0x882,0x306,0x88a,0x88e, +0x566,0x896,0x566,0x566,0x569,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306, +0x306,0x306,0x306,0x306,0x89e,0x8a6,0x8ae,0x8ae,0x8ae,0x8b6,0x8b6,0x8b6,0x8b6,0x354,0x354,0x354, +0x354,0x354,0x354,0x354,0x8be,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6, +0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6, +0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6, +0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6, +0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x2e5,0x2e5,0x2e5,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,8,7,8,9,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,7,7,7,8,9,0xa,0xa,4,4,4,0xa,0xa, +0x300a,0xf00a,0xa,3,6,3,6,6,2,2,2,2,2,2,2,2, +2,2,6,0xa,0x500a,0xa,0xd00a,0xa,0xa,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x500a,0xa,0xd00a,0xa,0xa,0xa,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x500a,0xa,0xd00a,0xa,0x12,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,8,7,8,9,7,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,7,7,7,8, -9,0xa,0xa,4,4,4,0xa,0xa,0x300a,0xf00a,0xa,3,6,3,6,6, -2,2,2,2,2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x500a,0xa,0xd00a,0xa,0xa, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x500a,0xa,0xd00a,0xa,0x12, -0x12,0x12,0x12,0x12,0x12,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x12,0x12,0x12,0x12,0x12,7,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -6,0xa,4,4,4,4,0xa,0xa,0xa,0xa,0,0x900a,0xa,0xb2,0xa,0xa, -4,4,2,2,0xa,0,0xa,0xa,0xa,2,0,0x900a,0xa,0xa,0xa,0xa, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,6,0xa,4,4,4,4,0xa,0xa, +0xa,0xa,0,0x900a,0xa,0xb2,0xa,0xa,4,4,2,2,0xa,0,0xa,0xa, +0xa,2,0,0x900a,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xa,0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xa,0xa,0,0,0,0,0, +0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xa,0xa,0,0, -0,0,0,0,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0xa, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0, -0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xa,0,0,0,0,0,1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,0xb1, -1,0xb1,0xb1,1,0xb1,0xb1,1,0xb1,1,1,1,1,1,1,1,1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0, +0,0,0,0,0xa,0xa,0,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0, +0,0,0,0,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,1,0xb1,1,0xb1,0xb1,1,0xb1,0xb1,1,0xb1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,5,5,5,5,0xd,0xd,0xa,0xa, -0xd,4,4,0xd,6,0xd,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d, -0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x2d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x8d,0x4d,0x4d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,5,5,5,5,5,5,5,5, -5,5,4,5,5,0xd,0x4d,0x4d,0xb1,0x8d,0x8d,0x8d,0xd,0x8d,0x8d,0x8d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,5,5,5,5,0xd,0xd,0xa,0xa,0xd,4,4,0xd, +6,0xd,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x2d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xd,5,5,5,5,5,5,5,5,5,5,4,5, +5,0xd,0x4d,0x4d,0xb1,0x8d,0x8d,0x8d,0xd,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, +0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x8d, 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d, @@ -217,13 +267,14 @@ static const uint16_t ubidi_props_trieIndex[8340]={ 0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd, 0xd,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d, -0x4d,0x8d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d, +0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1, -1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,1,1,1,1,1,1,1,1,1,1,0x41,0x41, +0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,0xa,0xa,0xa,0xa,0x21,1, 1,1,1,1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, @@ -315,8 +366,6 @@ static const uint16_t ubidi_props_trieIndex[8340]={ 0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0, 0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1, @@ -439,8 +488,6 @@ static const uint16_t ubidi_props_trieIndex[8340]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xa,0xa,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, @@ -526,14 +573,7 @@ static const uint16_t ubidi_props_trieIndex[8340]={ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x820,0,0x840,0x860,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x880,0x8a0,0,0,0,0,0,0, -0x8c0,0,0,0x8e0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x8e0,0x900,0x920,0x920,0x920,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0 +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0,0,0 }; static const uint32_t ubidi_props_mirrors[26]={ @@ -573,12 +613,16 @@ static const UBiDiProps ubidi_props_singleton={ ubidi_props_jgArray, { ubidi_props_trieIndex, + ubidi_props_trieIndex+2968, NULL, - utrie_defaultGetFoldingOffset, - 2368, - 5972, - 0, - TRUE + 2968, + 6020, + 0x1a0, + 0xc18, + 0x0, + 0x0, + 0x110000, + 0x2318, }, - { 1,0,5,2 } + { 2,0,0,0 } }; diff --git a/icu4c/source/common/ucase.c b/icu4c/source/common/ucase.c index 491b02a353..bf7a69a0ac 100644 --- a/icu4c/source/common/ucase.c +++ b/icu4c/source/common/ucase.c @@ -25,7 +25,7 @@ #include "umutex.h" #include "uassert.h" #include "cmemory.h" -#include "utrie.h" +#include "utrie2.h" #include "ucase.h" #include "ucln_cmn.h" @@ -35,7 +35,7 @@ struct UCaseProps { const uint16_t *exceptions; const UChar *unfold; - UTrie trie; + UTrie2 trie; uint8_t formatVersion[4]; }; @@ -327,7 +327,7 @@ ucase_getDummy(UErrorCode *pErrorCode) { /* set of property starts for UnicodeSet ------------------------------------ */ static UBool U_CALLCONV -_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) { +_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) { /* add the start code point to the USet */ const USetAdder *sa=(const USetAdder *)context; sa->add(sa->set, start); @@ -341,7 +341,7 @@ ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode * } /* add the start code point of each same-value range of the trie */ - utrie_enum(&csp->trie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&csp->trie, NULL, _enumPropertyStartsRange, sa); /* add code points with hardcoded properties, plus the ones following them */ @@ -355,10 +355,6 @@ ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode * /* data access primitives --------------------------------------------------- */ -/* UTRIE_GET16() itself validates c */ -#define GET_PROPS(csp, c, result) \ - UTRIE_GET16(&(csp)->trie, c, result); - #define GET_EXCEPTIONS(csp, props) ((csp)->exceptions+((props)>>UCASE_EXC_SHIFT)) #define PROPS_HAS_EXCEPTION(props) ((props)&UCASE_EXCEPTION) @@ -409,8 +405,7 @@ static const uint8_t flagsOffset[256]={ U_CAPI UChar32 U_EXPORT2 ucase_tolower(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)>=UCASE_UPPER) { c+=UCASE_GET_DELTA(props); @@ -427,8 +422,7 @@ ucase_tolower(const UCaseProps *csp, UChar32 c) { U_CAPI UChar32 U_EXPORT2 ucase_toupper(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)==UCASE_LOWER) { c+=UCASE_GET_DELTA(props); @@ -445,8 +439,7 @@ ucase_toupper(const UCaseProps *csp, UChar32 c) { U_CAPI UChar32 U_EXPORT2 ucase_totitle(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)==UCASE_LOWER) { c+=UCASE_GET_DELTA(props); @@ -507,7 +500,7 @@ ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa) { break; } - GET_PROPS(csp, c, props); + props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)!=UCASE_NONE) { /* add the one simple case mapping, no matter what type it is */ @@ -676,18 +669,15 @@ ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length /** @return UCASE_NONE, UCASE_LOWER, UCASE_UPPER, UCASE_TITLE */ U_CAPI int32_t U_EXPORT2 ucase_getType(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); return UCASE_GET_TYPE(props); } /** @return same as ucase_getType(), or <0 if c is case-ignorable */ U_CAPI int32_t U_EXPORT2 ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c) { - int32_t type; - uint16_t props; - GET_PROPS(csp, c, props); - type=UCASE_GET_TYPE(props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); + int32_t type=UCASE_GET_TYPE(props); if(type!=UCASE_NONE) { return type; } else if( @@ -703,8 +693,7 @@ ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c) { /** @return UCASE_NO_DOT, UCASE_SOFT_DOTTED, UCASE_ABOVE, UCASE_OTHER_ACCENT */ static U_INLINE int32_t getDotType(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { return props&UCASE_DOT_MASK; } else { @@ -720,8 +709,7 @@ ucase_isSoftDotted(const UCaseProps *csp, UChar32 c) { U_CAPI UBool U_EXPORT2 ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); return (UBool)((props&UCASE_SENSITIVE)!=0); } @@ -912,7 +900,7 @@ isFollowedByCasedLetter(const UCaseProps *csp, UCaseContextIterator *iter, void } for(/* dir!=0 sets direction */; (c=iter(context, dir))>=0; dir=0) { - GET_PROPS(csp, c, props); + props=UTRIE2_GET16(&csp->trie, c); if(UCASE_GET_TYPE(props)!=UCASE_NONE) { return TRUE; /* followed by cased letter */ } else if(c==0x307 || (props&(UCASE_EXCEPTION|UCASE_CASE_IGNORABLE))==UCASE_CASE_IGNORABLE) { @@ -1059,11 +1047,8 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c, const UChar **pString, const char *locale, int32_t *locCache) { - UChar32 result; - uint16_t props; - - result=c; - GET_PROPS(csp, c, props); + UChar32 result=c; + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)>=UCASE_UPPER) { result=c+UCASE_GET_DELTA(props); @@ -1206,11 +1191,8 @@ toUpperOrTitle(const UCaseProps *csp, UChar32 c, const UChar **pString, const char *locale, int32_t *locCache, UBool upperNotTitle) { - UChar32 result; - uint16_t props; - - result=c; - GET_PROPS(csp, c, props); + UChar32 result=c; + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)==UCASE_LOWER) { result=c+UCASE_GET_DELTA(props); @@ -1356,8 +1338,7 @@ ucase_toFullTitle(const UCaseProps *csp, UChar32 c, /* return the simple case folding mapping for c */ U_CAPI UChar32 U_EXPORT2 ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options) { - uint16_t props; - GET_PROPS(csp, c, props); + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)>=UCASE_UPPER) { c+=UCASE_GET_DELTA(props); @@ -1420,11 +1401,8 @@ ucase_toFullFolding(const UCaseProps *csp, UChar32 c, const UChar **pString, uint32_t options) { - UChar32 result; - uint16_t props; - - result=c; - GET_PROPS(csp, c, props); + UChar32 result=c; + uint16_t props=UTRIE2_GET16(&csp->trie, c); if(!PROPS_HAS_EXCEPTION(props)) { if(UCASE_GET_TYPE(props)>=UCASE_UPPER) { result=c+UCASE_GET_DELTA(props); diff --git a/icu4c/source/common/ucase_props_data.c b/icu4c/source/common/ucase_props_data.c index dcd485f675..798d2b4baa 100644 --- a/icu4c/source/common/ucase_props_data.c +++ b/icu4c/source/common/ucase_props_data.c @@ -4,168 +4,198 @@ * * file name: ucase_props_data.c * - * machine-generated on: 2008-04-04 + * machine-generated on: 2008-10-14 */ static const UVersionInfo ucase_props_dataVersion={5,1,0,0}; static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x4b10,0x3df8,0x4fa,0x172,0,0,0,0,0,0,0,0,0,0,3}; -static const uint16_t ucase_props_trieIndex[7924]={ -0x240,0x248,0x250,0x258,0x260,0x268,0x270,0x278,0x280,0x286,0x28d,0x290,0x298,0x2a0,0x2a8,0x2b0, -0x280,0x2b8,0x2c0,0x2c8,0x2d0,0x2d8,0x2e0,0x2e8,0x2f0,0x2f6,0x2fe,0x306,0x30e,0x316,0x31e,0x324, -0x32c,0x330,0x334,0x280,0x33c,0x280,0x344,0x280,0x280,0x34b,0x350,0x358,0x35f,0x367,0x36f,0x372, -0x37a,0x238,0x382,0x38a,0x238,0x238,0x38f,0x397,0x39c,0x3a1,0x3a9,0x238,0x238,0x3b0,0x238,0x3b6, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x3be,0x3bf,0x3c7,0x3cf,0x3d3,0x3bf,0x3db,0x3e3, -0x3be,0x3bf,0x3eb,0x3f0,0x3be,0x3bf,0x3f8,0x3e3,0x3d3,0x3fc,0x404,0x3e3,0x409,0x238,0x411,0x238, -0x238,0x415,0x41d,0x3e3,0x238,0x3fc,0x424,0x3e3,0x238,0x238,0x3db,0x3e3,0x238,0x238,0x42a,0x238, -0x238,0x430,0x437,0x238,0x238,0x43b,0x443,0x238,0x447,0x44e,0x238,0x455,0x45d,0x464,0x46c,0x238, -0x238,0x471,0x479,0x481,0x489,0x491,0x499,0x40a,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x49b,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x4a3,0x4a3,0x3df,0x3df,0x238,0x4a9,0x4b1,0x238, -0x4b9,0x238,0x4c1,0x238,0x238,0x412,0x238,0x238,0x238,0x4c9,0x238,0x238,0x238,0x238,0x238,0x238, -0x4d0,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x4d8,0x4db,0x4e3,0x4e9,0x4f1,0x4f9,0x238,0x238, -0x238,0x4fe,0x238,0x504,0x238,0x238,0x238,0x238,0x50c,0x50c,0x50c,0x514,0x50f,0x51c,0x524,0x52b, -0x280,0x533,0x280,0x53b,0x53e,0x280,0x546,0x280,0x54e,0x556,0x55e,0x566,0x56e,0x576,0x57e,0x586, -0x58e,0x595,0x238,0x59d,0x5a5,0x238,0x5ab,0x5b3,0x5bb,0x5c3,0x5cb,0x5d3,0x5db,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x5de,0x5e4,0x5ea,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x5f2,0x5f7,0x5fb,0x603,0x280,0x280,0x280,0x60b,0x613,0x61b,0x238,0x4be,0x238,0x238,0x238,0x623, -0x238,0x4be,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x3d2,0x62b,0x238,0x238,0x632,0x238,0x238,0x4c2,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x63a,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x640,0x238,0x280,0x648,0x650,0x238,0x238,0x238,0x658,0x660,0x280,0x665,0x66d,0x238,0x238,0x238, -0x675,0x3bd,0x238,0x238,0x238,0x238,0x67c,0x238,0x238,0x683,0x68a,0x238,0x238,0x238,0x238,0x238, -0x238,0x690,0x698,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x7aa,0x7ad,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x7b5,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x6a0,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x6a8,0x6b0,0x6b4,0x238,0x238,0x238,0x238,0x242,0x248,0x6bc,0x6c4,0x6cb,0x415,0x238,0x238,0x6d3, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x6da, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x6e2,0x6e8,0x6ec,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x6f4,0x6f8,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x700,0x708,0x70e,0x238,0x238, -0x238,0x238,0x716,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, -0x71e,0x726,0x72b,0x731,0x739,0x741,0x749,0x722,0x751,0x759,0x761,0x768,0x723,0x71e,0x726,0x721, -0x731,0x724,0x71f,0x770,0x722,0x778,0x780,0x788,0x78f,0x77b,0x783,0x78b,0x792,0x77e,0x79a,0x238, -0x3d3,0x658,0x658,0x658,0x238,0x238,0x238,0x238,0x658,0x658,0x658,0x658,0x658,0x658,0x658,0x7a2, -0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238,0x238, +static const uint16_t ucase_props_trieIndex[8592]={ +0x2b2,0x2ba,0x2c2,0x2ca,0x2d8,0x2e0,0x2e8,0x2f0,0x2f8,0x300,0x307,0x30f,0x317,0x31f,0x327,0x32f, +0x335,0x33d,0x345,0x34d,0x355,0x35d,0x365,0x36d,0x375,0x37d,0x385,0x38d,0x395,0x39d,0x3a5,0x3ad, +0x3b5,0x3bd,0x3c1,0x3c9,0x3d1,0x3d9,0x3e1,0x3e9,0x3e8,0x3f0,0x3f5,0x3fd,0x404,0x40c,0x414,0x41c, +0x424,0x42c,0x434,0x43c,0x2d1,0x2d9,0x441,0x449,0x44e,0x456,0x45e,0x466,0x465,0x46d,0x472,0x47a, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x482,0x483,0x48b,0x493,0x497,0x483,0x49f,0x4a7, +0x482,0x483,0x4af,0x4b4,0x482,0x483,0x4bc,0x4a7,0x497,0x4c0,0x4c8,0x4a7,0x4cd,0x2d1,0x4d5,0x2d1, +0x2d1,0x467,0x4dd,0x4a7,0x2d1,0x4c0,0x4e4,0x4a7,0x2d1,0x2d1,0x49f,0x4a7,0x2d1,0x2d1,0x4ea,0x2d1, +0x2d1,0x4f0,0x4f7,0x2d1,0x2d1,0x4fb,0x503,0x2d1,0x507,0x50e,0x2d1,0x515,0x51d,0x524,0x52c,0x2d1, +0x2d1,0x531,0x539,0x541,0x549,0x551,0x559,0x41a,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x475,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x55d,0x55d,0x4a3,0x4a3,0x2d1,0x563,0x56b,0x2d1, +0x573,0x2d1,0x57b,0x2d1,0x2d1,0x581,0x2d1,0x2d1,0x2d1,0x589,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x590,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x598,0x59b,0x5a3,0x5a9,0x5b1,0x5b9,0x2d1,0x2d1, +0x2d1,0x5be,0x2d1,0x5c4,0x2d1,0x2d1,0x2d1,0x2d1,0x5cc,0x5cc,0x5cc,0x5d4,0x5cf,0x5dc,0x5e4,0x5eb, +0x2f8,0x5f3,0x2f8,0x5fb,0x5fe,0x2f8,0x606,0x2f8,0x60e,0x616,0x61e,0x626,0x62e,0x636,0x63e,0x646, +0x64e,0x655,0x2d1,0x65d,0x665,0x2d1,0x66b,0x673,0x67b,0x683,0x68b,0x693,0x69b,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x69e,0x6a4,0x6aa,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x6b2,0x6b7,0x6bb,0x6c3,0x2f8,0x2f8,0x2f8,0x6cb,0x6d3,0x6db,0x2d1,0x578,0x2d1,0x2d1,0x2d1,0x6e3, +0x2d1,0x578,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x496,0x6eb,0x2d1,0x2d1,0x6f2,0x2d1,0x2d1,0x6fa,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x702,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x708,0x2d1,0x2f8,0x710,0x3eb,0x2d1,0x2d1,0x2d1,0x718,0x720,0x2f8,0x725,0x72d,0x2d1,0x2d1,0x2d1, +0x735,0x481,0x2d1,0x2d1,0x2d1,0x2d1,0x73c,0x2d1,0x2d1,0x743,0x74a,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x750,0x758,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2, +0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x760,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x768,0x770,0x774,0x2d1,0x2d1,0x2d1,0x2d1,0x2b4,0x2ba,0x77c,0x784,0x78b,0x467,0x2d1,0x2d1,0x793, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0xb48,0xb48,0xb60,0xba0,0xbe0,0xc1c,0xc5c,0xc9c,0xcd4,0xd14,0xd54,0xd94,0xdd4,0xe14,0xe54,0xe94, +0xed4,0xf04,0xf44,0xf84,0xfa0,0xfd4,0x1010,0x1050,0x1090,0x10d0,0xb44,0x1104,0x1138,0x1178,0x1194,0x11c8, +0x9e1,0xa11,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0xa46,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0xa86,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x57c,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x79b,0x7a1,0x7a5,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x7ad,0x7b1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x7b9,0x7c1,0x7c7,0x2d1,0x2d1,0x2d1,0x2d1,0x7cf,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x7d7,0x7df,0x7e4,0x7ea,0x7f2,0x7fa,0x802,0x7db,0x80a,0x812, +0x81a,0x821,0x7dc,0x7d7,0x7df,0x7da,0x7ea,0x7dd,0x7d8,0x829,0x7db,0x831,0x839,0x841,0x848,0x834, +0x83c,0x844,0x84b,0x837,0x853,0x2d1,0x497,0x718,0x718,0x718,0x2d1,0x2d1,0x2d1,0x2d1,0x718,0x718, +0x718,0x718,0x718,0x718,0x718,0x85b,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2b1,0x2b1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40, +0,0,0,0,0,0,0x40,0,0,0,0,0,0,0,0,0, +0,0,0x40,0,0,0,0,0,0,0x806,0x806,0x806,0x806,0x806,0x806,0x806, +0x806,0xe,0x5e,0x7e,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0xbe,0x806,0x806,0x806,0x806, +0x806,0x806,0x806,0,0,0,0x40,0,0x40,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805, +0xf805,0xfd,0xf815,0x14d,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0x18d,0xf805,0xf805,0xf805,0xf805, +0xf805,0xf805,0xf805,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x40,0,0,0,0,0,0,0x40,0, -0,0,0,0,0,0,0,0,0,0,0x40,0,0,0,0,0, -0,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0xe,0x5e,0x7e,0x806,0x806,0x806,0x806, -0x806,0x806,0x806,0xbe,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0,0,0,0x40,0, -0x40,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xfd,0xf815,0x14d,0xf805,0xf805,0xf805,0xf805, -0xf805,0xf805,0xf805,0x18d,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0x40,0,1,0,0,0x40,0,0x40, 0,0,0,0,0x40,0x1cd,0,0x40,0x40,0,1,0,0,0,0,0, 0x806,0x806,0x806,0x806,0x806,0x1fe,0x806,0x806,0x806,0x806,0x806,0x806,0x23e,0x25e,0x806,0x806, @@ -174,82 +204,101 @@ static const uint16_t ucase_props_trieIndex[7924]={ 0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0x1e45, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x35e,0xffc5,0x46,0xffc5,0x46,0xffc5,0x37e,0xffd5,0x39e,0x3ed,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -1,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x43d,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x35e,0xffc5,0x46,0xffc5,0x46,0xffc5,0x37e,0xffd5, +0x39e,0x3ed,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,1,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46, +0xffc5,0x46,0xffc5,0x46,0xffc5,0x43d,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0xe1c6,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x4bd, -0x30c5,0x3486,0x46,0xffc5,0x46,0xffc5,0x3386,0x46,0xffc5,0x3346,0x3346,0x46,0xffc5,1,0x13c6,0x3286, -0x32c6,0x46,0xffc5,0x3346,0x33c6,0x1845,0x34c6,0x3446,0x46,0xffc5,0x28c5,1,0x34c6,0x3546,0x2085,0x3586, -0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x3686,0x46,0xffc5,0x3686,1,1,0x46,0xffc5,0x3686,0x46, -0xffc5,0x3646,0x3646,0x46,0xffc5,0x46,0xffc5,0x36c6,0x46,0xffc5,1,0,0x46,0xffc5,1,0xe05, -0,0,0,0,0x4ee,0x51f,0x55d,0x58e,0x5bf,0x5fd,0x62e,0x65f,0x69d,0x46,0xffc5,0x46, -0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0xec45,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x6cd,0x74e,0x77f,0x7bd,0x46,0xffc5,0xe7c6,0xf206,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0xdf86,1,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x46,0xffc5,0x46,0xffc5,1,1,1,1,1,1,0x7ee,0x46,0xffc5,0xd746,0x80e,1, -1,0x46,0xffc5,0xcf46,0x1146,0x11c6,0x46,0xffc5,0x46,0xffd5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x82d,0x84d,1,0xcb85,0xcc85,1,0xccc5,0xccc5,1,0xcd85,1,0xcd45,1,1,1,1, -0xccc5,1,1,0xcc45,1,1,1,1,0xcbd5,0xcb45,1,0x86d,1,1,1,0xcb45, -1,0x88d,0xcac5,1,1,0xca85,1,1,1,1,1,1,1,0x8ad,1,1, -0xc985,1,1,0xc985,1,1,1,1,0xc985,0xeec5,0xc9c5,0xc9c5,0xee45,1,1,1, -1,1,0xc945,1,0,1,1,1,1,1,1,1,1,0x11,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0x11,1,1,1,1,1,1,0x40,0x40,0x40,0x44,0x40,0x44,0x40, -1,1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x46,0xffc5,0x46,0xffc5,0xe1c6,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x4bd,0x30c5,0x3486,0x46,0xffc5, +0x46,0xffc5,0x3386,0x46,0xffc5,0x3346,0x3346,0x46,0xffc5,1,0x13c6,0x3286,0x32c6,0x46,0xffc5,0x3346, +0x33c6,0x1845,0x34c6,0x3446,0x46,0xffc5,0x28c5,1,0x34c6,0x3546,0x2085,0x3586,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x3686,0x46,0xffc5,0x3686,1,1,0x46,0xffc5,0x3686,0x46,0xffc5,0x3646,0x3646,0x46, +0xffc5,0x46,0xffc5,0x36c6,0x46,0xffc5,1,0,0x46,0xffc5,1,0xe05,0,0,0,0, +0x4ee,0x51f,0x55d,0x58e,0x5bf,0x5fd,0x62e,0x65f,0x69d,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46, +0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0xec45,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x6cd,0x74e,0x77f,0x7bd, +0x46,0xffc5,0xe7c6,0xf206,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0xdf86,1,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,1,1,1,1,1,1,0x7ee,0x46, +0xffc5,0xd746,0x80e,1,1,0x46,0xffc5,0xcf46,0x1146,0x11c6,0x46,0xffc5,0x46,0xffd5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x82d,0x84d,1,0xcb85,0xcc85,1,0xccc5,0xccc5,1,0xcd85,1,0xcd45, +1,1,1,1,0xccc5,1,1,0xcc45,1,1,1,1,0xcbd5,0xcb45,1,0x86d, +1,1,1,0xcb45,1,0x88d,0xcac5,1,1,0xca85,1,1,1,1,1,1, +1,0x8ad,1,1,0xc985,1,1,0xc985,1,1,1,1,0xc985,0xeec5,0xc9c5,0xc9c5, +0xee45,1,1,1,1,1,0xc945,1,0,1,1,1,1,1,1,1, +1,0x11,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0x11,1,1,1,1,1,1,0x40,0x40,0x40, +0x44,0x40,0x44,0x40,1,1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -1,1,1,1,1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,1,1,1,1,1,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x64,0x64,0x60,0x60,0x60,0x60,0x60,0x8cc,0x64,0x60,0x64,0x60,0x64,0x60,0x60,0x60, -0x60,0x60,0x60,0x64,0x60,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, -0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x74,0x70,0x70,0x70,0x70,0x70,0x70, -0x70,0x70,0x70,0x70,0x70,0x60,0x60,0x60,0x60,0x60,0x64,0x60,0x60,0x8dd,0x60,0x70, -0x70,0x70,0x60,0x60,0x60,0x70,0x70,0x40,0x60,0x60,0x60,0x70,0x70,0x70,0x70,0x60, -0x70,0x70,0x70,0x60,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x60,0x60,0x60,0x60,0x60, -0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x46,0xffc5,0x46,0xffc5,0x40,0x40,0x46,0xffc5, -0,0,1,0x2085,0x2085,0x2085,0,0,0,0,0,0,0x40,0x40,0x986,0x40, -0x946,0x946,0x946,0,0x1006,0,0xfc6,0xfc6,0x92d,0x806,0x9fe,0x806,0x806,0xa3e,0x806,0x806, -0xa7e,0xace,0xb1e,0x806,0xb5e,0x806,0x806,0x806,0xb9e,0xbde,0,0xc1e,0x806,0x806,0xc5e,0x806, -0x806,0xc9e,0x806,0x806,0xf685,0xf6c5,0xf6c5,0xf6c5,0xcdd,0xf805,0xdad,0xf805,0xf805,0xded,0xf805,0xf805, -0xe2d,0xe7d,0xecd,0xf805,0xf0d,0xf805,0xf805,0xf805,0xf4d,0xf8d,0xfcd,0xffd,0xf805,0xf805,0x103d,0xf805, -0xf805,0x107d,0xf805,0xf805,0xf005,0xf045,0xf045,0x206,0x10bd,0x10ed,2,2,2,0x113d,0x116d,0xfe05, +0x40,0x40,0x40,0x40,0x64,0x64,0x60,0x60,0x60,0x60,0x60,0x8cc,0x64,0x60,0x64,0x60, +0x64,0x60,0x60,0x60,0x60,0x60,0x60,0x64,0x60,0x70,0x70,0x70,0x70,0x70,0x70,0x70, +0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, +0x70,0x70,0x70,0x70,0x70,0x74,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, +0x70,0x60,0x60,0x60,0x60,0x60,0x64,0x60,0x60,0x8dd,0x60,0x70,0x70,0x70,0x60,0x60, +0x60,0x70,0x70,0x40,0x60,0x60,0x60,0x70,0x70,0x70,0x70,0x60,0x70,0x70,0x70,0x60, +0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, +0x60,0x60,0x60,0x60,0x46,0xffc5,0x46,0xffc5,0x40,0x40,0x46,0xffc5,0,0,1,0x2085, +0x2085,0x2085,0,0,0,0,0,0,0x40,0x40,0x986,0x40,0x946,0x946,0x946,0, +0x1006,0,0xfc6,0xfc6,0x92d,0x806,0x9fe,0x806,0x806,0xa3e,0x806,0x806,0xa7e,0xace,0xb1e,0x806, +0xb5e,0x806,0x806,0x806,0xb9e,0xbde,0,0xc1e,0x806,0x806,0xc5e,0x806,0x806,0xc9e,0x806,0x806, +0xf685,0xf6c5,0xf6c5,0xf6c5,0xcdd,0xf805,0xdad,0xf805,0xf805,0xded,0xf805,0xf805,0xe2d,0xe7d,0xecd,0xf805, +0xf0d,0xf805,0xf805,0xf805,0xf4d,0xf8d,0xfcd,0xffd,0xf805,0xf805,0x103d,0xf805,0xf805,0x107d,0xf805,0xf805, +0xf005,0xf045,0xf045,0x206,0x10bd,0x10ed,2,2,2,0x113d,0x116d,0xfe05,0x46,0xffc5,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x119d,0x11cd,0x1c5,0x11,0x11fe,0x124d,0,0x46,0xffc5,0xfe46,0x46,0xffc5,1,0xdf86,0xdf86,0xdf86, -0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406, +0x46,0xffc5,0x46,0xffc5,0x119d,0x11cd,0x1c5,0x11,0x11fe,0x124d,0,0x46,0xffc5,0xfe46,0x46,0xffc5, +1,0xdf86,0xdf86,0xdf86,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406,0x1406, +0x1406,0x1406,0x1406,0x1406,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806, 0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806,0x806, -0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805, -0xec05,0xec05,0xec05,0xec05,0xec05,0xec05,0xec15,0xec05,0xec15,0xec05,0xec05,0xec05,0xec05,0xec05,0xec05,0xec05, -0x46,0xffc5,0,0x60,0x60,0x60,0x60,0x60,0x40,0x40,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x806,0x806,0x806,0x806,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805,0xf805, +0xf805,0xf805,0xf805,0xf805,0xec05,0xec05,0xec05,0xec05,0xec05,0xec05,0xec15,0xec05,0xec15,0xec05,0xec05,0xec05, +0xec05,0xec05,0xec05,0xec05,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x3c6,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0xfc45, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0,0x60,0x60,0x60,0x60,0x60,0x40,0x40,0x46,0xffc5, 0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xc06,0xc06,0xc06, -0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, -0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0,0,0x40,0,0,0,0,0,0, -0,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x3c6,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46, +0xffc5,0x46,0xffc5,0xfc45,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, +0x46,0xffc5,0x46,0xffc5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, +0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0,0,0x40,0,0, +0,0,0,0,0,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405, 0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405, -0xf405,0xf405,0xf405,0x127d,0,0,0,0,0,0,0,0,0,0x70,0x60,0x60, -0x60,0x60,0x70,0x60,0x60,0x60,0x70,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x70, -0x70,0x70,0x70,0x70,0x60,0x60,0x70,0x60,0x60,0x70,0x70,0x60,0x70,0x70,0x70,0x70, -0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0,0x70,0,0x70,0x70,0, -0x60,0x70,0,0x70,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x40,0,0,0, -0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0,0,0,0, -0,0,0,0,0,0,0,0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, -0x70,0x70,0x70,0,0,0,0,0,0x40,0,0,0,0,0,0,0, -0,0,0,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x60,0x60,0x70,0x70,0x60, -0x60,0x60,0x60,0x60,0x70,0x60,0x60,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x70,0,0,0,0,0,0,0, +0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0xf405,0x127d,0,0,0,0,0,0,0,0, +0,0x70,0x60,0x60,0x60,0x60,0x70,0x60,0x60,0x60,0x70,0x70,0x60,0x60,0x60,0x60, +0x60,0x60,0x70,0x70,0x70,0x70,0x70,0x70,0x60,0x60,0x70,0x60,0x60,0x70,0x70,0x60, +0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0,0x70, +0,0x70,0x70,0,0x60,0x70,0,0x70,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x40,0,0,0,0,0,0,0,0,0,0,0, +0x40,0x40,0x40,0x40,0,0,0,0,0,0,0,0,0,0,0,0, +0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x70,0x70,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x40,0,0,0,0,0,0,0,0,0,0,0x70,0x70,0x70,0x70,0x70, +0x70,0x70,0x70,0x60,0x60,0x70,0x70,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x60,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x60,0x60,0x60,0x60,0x60,0x60, +0x60,0x40,0x40,0x60,0x60,0x60,0x60,0x70,0x60,0x40,0x40,0x60,0x60,0,0x70,0x60, +0x60,0x70,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x40,0,0x70,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x60,0x70,0x60,0x60,0x70,0x60,0x60,0x70, +0x70,0x70,0x60,0x70,0x70,0x60,0x70,0x60,0x60,0x60,0x70,0x60,0x70,0x60,0x70,0x60, +0x70,0x60,0x60,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x40,0x40,0x60,0x60,0x60,0x60,0x70, -0x60,0x40,0x40,0x60,0x60,0,0x70,0x60,0x60,0x70,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40, -0,0x70,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x60,0x70,0x60,0x60,0x70,0x60,0x60,0x70,0x70,0x70,0x60,0x70, -0x70,0x60,0x70,0x60,0x60,0x60,0x70,0x60,0x70,0x60,0x70,0x60,0x70,0x60,0x60,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x40,0x40,0,0, 0,0,0x40,0,0,0,0,0,0,0x40,0x40,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -274,8 +323,7 @@ static const uint16_t ucase_props_trieIndex[7924]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x40,0,0,0,0,0,0,0,0,0,0,0, 0,0x70,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x40,0x40,0x40,0,0,0,0,0,0x40,0x40,0x40,0,0x40,0x40, +0,0,0,0,0x40,0,0,0,0,0,0x40,0x40,0x40,0,0x40,0x40, 0x40,0x70,0,0,0,0,0,0,0,0x70,0x70,0,0,0,0,0, 0,0,0,0,0,0,0x40,0,0,0,0,0,0x40,0x70,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -308,15 +356,15 @@ static const uint16_t ucase_props_trieIndex[7924]={ 0x147e,0x149e,0x14be,0x14de,0x14fe,0x151e,0x153e,0x155e,0x157e,0x159e,0x15be,0x15de,0x15fe,0x161e,0x163e,0x165e, 0x167e,0x169e,0x16be,0x16de,0x16fe,0x171e,0x173e,0x175e,0x177e,0x179e,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x60,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40,0x40, -0x70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x40,0x40,0,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0,0,0,0,0,0,0,0,0x40,0,0,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0,0,0,0x40,0,0,0,0, -0,0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40, -0x40,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x40,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x40,0x40,0x70,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x40,0x40,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0, +0,0,0x40,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x40, +0,0,0,0x40,0,0,0,0,0,0x60,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x40,0x40,0x40,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x70,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x40,0x40,0x40,0,0,0,0,0x40,0x40,0,0,0, 0,0,0,0,0,0,0x40,0,0,0,0,0,0,0x70,0x60,0x70, @@ -411,13 +459,13 @@ static const uint16_t ucase_props_trieIndex[7924]={ 0x40,0x40,0,0,0,0,0,0x40,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0x70,0x70,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x40,0x40,0x40,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0x40,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0x40,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0,0x60, 0x40,0x40,0x40,0,0,0,0,0,0,0,0,0,0x60,0x60,0,0x40, -0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, -0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0,0,0,0,0,0,0,0, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5,0x46,0xffc5, @@ -450,64 +498,57 @@ static const uint16_t ucase_props_trieIndex[7924]={ 0,0,0,0,0,0,0,0,0,0,0,0,0x40,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x40, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x40,0x40,0x40,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x70,0,0,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06, +0,0,0,0,0,0x40,0x40,0x40,0,0,0,0,0xa06,0xa06,0xa06,0xa06, 0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06, -0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605, +0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xa06,0xf605,0xf605,0xf605,0xf605, 0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605,0xf605, +0xf605,0xf605,0xf605,0xf605,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x40,0x40,0x40,0,0x40,0x40,0,0,0,0,0, +0x40,0x70,0x40,0x60,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x70,0x70,0, +0,0,0,0x70,0,0,0,0,0,0x30,0x30,0x70,0x70,0x70,0,0, +0,0x30,0x30,0x30,0x30,0x30,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70, +0x70,0x70,0x70,0x70,0x70,0x70,0x70,0,0,0x60,0x60,0x60,0x60,0x60,0x70,0x70, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x40,0x40,0x40,0,0x40,0x40,0,0,0,0,0,0x40,0x70,0x40,0x60, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x60,0x70,0x70,0,0,0,0,0x70, -0,0,0,0,0,0x30,0x30,0x70,0x70,0x70,0,0,0,0x30,0x30,0x30, -0x30,0x30,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x70,0x70,0x70,0x70, -0x70,0x70,0x70,0,0,0x60,0x60,0x60,0x60,0x60,0x70,0x70,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x60,0x60,0x60,0x60,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x60,0x60,0x60,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,1,1,1,1,1,1,1,0x11,0x11,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1, -1,0,0x11,0x11,1,1,1,1,1,1,1,1,2,2,2,2, +0,0,0,0,0,0,0x60,0x60,0x60,0x60,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x60, +0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,1,1,1,1,1,1,1,1,0x11,0x11, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -2,0,2,2,0,0,2,0,0,2,2,0,0,2,2,2, -2,0,2,2,2,2,2,2,2,2,1,1,1,1,0,1, -0,1,0x11,0x11,1,1,1,1,0,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,2,2,0,2,2,2,2,0, -0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2, -2,0,1,1,1,1,1,1,1,1,0x11,0x11,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,0,2, -2,2,2,0,2,2,2,2,2,0,2,0,0,0,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1, +1,1,1,1,1,0,0x11,0x11,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1, +1,1,0x11,0x11,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,2,0,2,2,0,0,2,0,0,2,2,0, +0,2,2,2,2,0,2,2,2,2,2,2,2,2,1,1, +1,1,0,1,0,1,0x11,0x11,1,1,1,1,0,1,1,1, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,1,1,1,2,2,0,2, +2,2,2,0,0,2,2,2,2,2,2,2,2,0,2,2, 2,2,2,2,2,0,1,1,1,1,1,1,1,1,0x11,0x11, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,0,2,2,2,2,0,2,2,2,2,2,0,2,0, +0,0,2,2,2,2,2,2,2,0,1,1,1,1,1,1, +1,1,0x11,0x11,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2, +2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,1,1,1,1,1,1,0,0,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, -1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1, +2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, +1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,0,1,1,1,1,1,1,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,1,1,1,0,1,1,1,1, -1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x820,0x840,0x860,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x880,0x8a0,0,0,0,0,0,0, -0,0,0,0,0x8c0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0 +1,1,1,1,1,0,1,1,1,1,1,1,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,0, +1,1,1,1,1,1,2,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; static const uint16_t ucase_props_exceptions[1274]={ @@ -627,12 +668,16 @@ static const UCaseProps ucase_props_singleton={ ucase_props_unfold, { ucase_props_trieIndex, + ucase_props_trieIndex+2760, NULL, - utrie_defaultGetFoldingOffset, - 2272, - 5652, - 0, - TRUE + 2760, + 5832, + 0x188, + 0xb44, + 0x0, + 0x0, + 0xe0800, + 0x218c, }, - { 1,1,5,2 } + { 2,1,0,0 } }; diff --git a/icu4c/source/common/uchar.c b/icu4c/source/common/uchar.c index 75754a9e88..609d3cbffa 100644 --- a/icu4c/source/common/uchar.c +++ b/icu4c/source/common/uchar.c @@ -26,7 +26,7 @@ #include "umutex.h" #include "cmemory.h" #include "ucln_cmn.h" -#include "utrie.h" +#include "utrie2.h" #include "udataswp.h" #include "unormimp.h" /* JAMO_L_BASE etc. */ #include "uprops.h" @@ -225,7 +225,7 @@ loadPropsData(void) { /* getting a uint32_t properties word from the data */ #if UCHAR_HARDCODE_DATA -#define GET_PROPS(c, result) UTRIE_GET16(&propsTrie, c, result); +#define GET_PROPS(c, result) ((result)=UTRIE2_GET16(&propsTrie, c)); #else @@ -280,11 +280,11 @@ _enumTypeValue(const void *context, uint32_t value) { } static UBool U_CALLCONV -_enumTypeRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) { +_enumTypeRange(const void *context, UChar32 start, UChar32 end, uint32_t value) { /* just cast the value to UCharCategory */ return ((struct _EnumTypeCallback *)context)-> enumRange(((struct _EnumTypeCallback *)context)->context, - start, limit, (UCharCategory)value); + start, end+1, (UCharCategory)value); } U_CAPI void U_EXPORT2 @@ -301,7 +301,7 @@ u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context) { callback.enumRange=enumRange; callback.context=context; - utrie_enum(&propsTrie, _enumTypeValue, _enumTypeRange, &callback); + utrie2_enum(&propsTrie, _enumTypeValue, _enumTypeRange, &callback); } /* Checks if ch is a lower case letter.*/ @@ -724,7 +724,7 @@ u_getUnicodeProperties(UChar32 c, int32_t column) { ) { return 0; } else { - UTRIE_GET16(&propsVectorsTrie, c, vecIndex); + vecIndex=UTRIE2_GET16(&propsVectorsTrie, c); return propsVectors[vecIndex+column]; } } @@ -882,7 +882,7 @@ uhst_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) { } static UBool U_CALLCONV -_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) { +_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) { /* add the start code point to the USet */ const USetAdder *sa=(const USetAdder *)context; sa->add(sa->set, start); @@ -905,7 +905,7 @@ uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) { #endif /* add the start code point of each same-value range of the main trie */ - utrie_enum(&propsTrie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&propsTrie, NULL, _enumPropertyStartsRange, sa); /* add code points with hardcoded properties, plus the ones following them */ @@ -974,6 +974,6 @@ upropsvec_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) { /* add the start code point of each same-value range of the properties vectors trie */ if(propsVectorsColumns>0) { /* if propsVectorsColumns==0 then the properties vectors trie may not be there at all */ - utrie_enum(&propsVectorsTrie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&propsVectorsTrie, NULL, _enumPropertyStartsRange, sa); } } diff --git a/icu4c/source/common/uchar_props_data.c b/icu4c/source/common/uchar_props_data.c index 22b3924f0f..4e0d77a069 100644 --- a/icu4c/source/common/uchar_props_data.c +++ b/icu4c/source/common/uchar_props_data.c @@ -4,619 +4,752 @@ * * file name: uchar_props_data.c * - * machine-generated on: 2008-03-20 + * machine-generated on: 2008-10-14 */ -static const UVersionInfo formatVersion={5,0,5,2}; +static const UVersionInfo formatVersion={6,0,0,0}; static const UVersionInfo dataVersion={5,1,0,0}; -static const uint16_t propsTrie_index[14336]={ -0x2b0,0x2b8,0x2c0,0x2c8,0x2d0,0x2d8,0x2e0,0x2e8,0x2f0,0x2f2,0x2f8,0x2fb,0x303,0x30b,0x313,0x31b, -0x2f0,0x321,0x329,0x32d,0x330,0x336,0x33e,0x346,0x34e,0x34e,0x34e,0x352,0x35a,0x362,0x367,0x36d, -0x375,0x379,0x32d,0x2f0,0x381,0x2f0,0x389,0x2f0,0x2f0,0x390,0x395,0x39d,0x3a3,0x3a8,0x3b0,0x3b6, -0x3be,0x3c6,0x3ce,0x3d6,0x3db,0x3db,0x3de,0x3e6,0x3ee,0x3f3,0x3f9,0x3db,0x3db,0x400,0x408,0x40e, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x416,0x418,0x420,0x428,0x430,0x436,0x43e,0x446, -0x44e,0x454,0x45c,0x464,0x46c,0x472,0x47a,0x482,0x430,0x48a,0x492,0x49a,0x4a2,0x4aa,0x4b2,0x4b9, -0x4c1,0x4c7,0x4cf,0x4d7,0x4df,0x4e5,0x4ed,0x4f5,0x4df,0x4fd,0x505,0x50d,0x515,0x51c,0x524,0x52c, -0x3c6,0x534,0x53c,0x2a8,0x544,0x54c,0x554,0x2a8,0x55c,0x564,0x56c,0x571,0x579,0x580,0x588,0x2a8, -0x3db,0x590,0x598,0x5a0,0x5a8,0x375,0x5b0,0x5b4,0x3db,0x3db,0x5bc,0x3db,0x3db,0x5c4,0x3db,0x5c6, -0x3db,0x3db,0x5ce,0x3db,0x5d6,0x5da,0x5e2,0x3db,0x5e8,0x3db,0x5ee,0x5f6,0x5fe,0x3db,0x3db,0x606, -0x3c6,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x60e,0x616,0x3db,0x3db,0x61e,0x626,0x62e,0x636,0x63e,0x3db,0x646,0x64e,0x656, -0x65e,0x3db,0x666,0x668,0x3db,0x670,0x2a8,0x2a8,0x678,0x680,0x688,0x68d,0x3db,0x695,0x69d,0x6a5, -0x6ad,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x6b5,0x6b8,0x6c0,0x6c8,0x6d0,0x6d8,0x2a8,0x2a8, -0x3db,0x6e0,0x6e8,0x6ef,0x2a8,0x2a8,0x2a8,0x2a8,0x32d,0x6f7,0x6fa,0x702,0x709,0x6fa,0x34e,0x711, -0x2f0,0x2f0,0x2f0,0x2f0,0x719,0x2f0,0x2f0,0x2f0,0x721,0x729,0x731,0x739,0x741,0x745,0x74d,0x755, -0x75d,0x765,0x76d,0x775,0x77d,0x785,0x78b,0x793,0x79b,0x7a3,0x7ab,0x7b3,0x7bb,0x7c3,0x7c8,0x7ce, -0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7db,0x7e3,0x6a5,0x7e6,0x7ee,0x7f5,0x7fa,0x802, -0x6a5,0x80a,0x812,0x81a,0x81d,0x6a5,0x6a5,0x824,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x82c,0x834,0x836, -0x6a5,0x6a5,0x6a5,0x83e,0x842,0x84a,0x852,0x2a8,0x85a,0x860,0x865,0x86d,0x875,0x87b,0x883,0x88a, -0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x7d3,0x7d3,0x7d3,0x7d3,0x892,0x7d3,0x899,0x8a0, -0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x7d3,0x6a5,0x7cf,0x8a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x375,0x8b0,0x8b4,0x8bc,0x2f0,0x2f0,0x2f0,0x8c4,0x32d,0x8cc,0x3db,0x8d3,0x8db,0x8e3,0x8e3,0x34e, -0x8eb,0x8f3,0x2a8,0x2a8,0x8fb,0x6a5,0x6a5,0x902,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x90a,0x910, -0x918,0x920,0x3c6,0x3db,0x928,0x930,0x3db,0x932,0x93a,0x93f,0x3db,0x3db,0x944,0x668,0x6a5,0x94b, -0x953,0x95b,0x962,0x6a5,0x95b,0x96a,0x6a5,0x953,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5, -0xd3c,0x3db,0x3db,0x3db,0xcd4,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0xd42,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd5c,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xa44,0x6a5,0x6a5, -0xcb4,0x3db,0xd74,0x3db,0xcd9,0xdbe,0xd8c,0xcef,0xd3a,0x3db,0x3db,0xda8,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xdc6,0x3db,0xdcd,0xcdf,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd94,0x3db,0x3db,0x3db,0xcf7,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd1a,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xcb8,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0xcbf,0x3db,0x3db,0x3db,0xd7c,0xcc6,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd98,0x3db,0x3db,0xd70,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd60,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd63,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd84,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0xdad,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0xd21,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0xdba,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0xce4,0x3db,0x3db,0x3db,0xce9,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0xdb5,0xd51,0xd55,0x3db,0x3db,0x3db,0xcac,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xc93,0x2a8, -0x972,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x978,0x6a5,0x80a,0x2a8,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x980,0x988,0x2f0,0x990,0x998,0x2a8,0x2a8,0x2a8,0x9a0,0x9a8,0x2f0,0x9ad,0x9b5,0x2a8,0x2a8,0x9b9, -0x9c1,0x9c9,0x3db,0x9d1,0x9d9,0x9dc,0x9e3,0x2a8,0x408,0x9eb,0x9f2,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x3db,0x9fa,0xa02,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xc93,0x2a8,0x2a8, -0xdd5,0xdd8,0xde0,0xde7,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0xdef,0x2a8,0xdf7,0xdf8,0xdf7,0xdf8, -0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b, -0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0x3db,0x3db,0x3db,0xa0a,0x3db,0xa11,0xa16,0xa1b, -0x3db,0xa23,0x3db,0xa29,0x3db,0x3db,0x5c6,0x2a8,0xa31,0xa39,0xa41,0x3db,0x3db,0xa45,0xa4a,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xa4f,0x674,0x3db,0xa57,0x3db,0xa5d,0xa61, -0xa69,0xa71,0xa78,0xa80,0x3db,0x3db,0x3db,0xa86,0xa8e,0x2c0,0xa96,0xa9e,0xaa3,0xaab,0xab3,0xabb, -0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b, -0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b,0xc9b, -0xac3,0xaca,0xad2,0x2a8,0x3db,0x3db,0x3db,0xada,0xae2,0xaea,0xaf2,0xafa,0xb01,0x2a8,0xb08,0xb0c, -0x2a8,0x2a8,0x2a8,0x2a8,0x678,0x3db,0xb14,0x2a8,0xaab,0xb1c,0xb24,0x2a8,0xb2c,0x3db,0xb34,0x2a8, -0x375,0xb3c,0xb40,0x3db,0x417,0xb48,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xb50,0xb53,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0xb5b,0xb63,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xb6b,0xb72,0xb7a,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xb82,0x2a8,0x2a8,0x2a8,0x2a8, -0xb8a,0xb92,0xb9a,0xba2,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x6a5,0x90a,0x6a5,0xbaa,0x6a5,0xbb1,0xbb9,0xbbf,0x842,0x2a8, -0x6a5,0x6a5,0xbc7,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x6a5,0x6a5,0xbcf,0xbd7,0x2a8,0x2a8,0x2a8,0x2a8, -0xbdf,0xbe6,0xbeb,0xbf1,0xbf9,0xc01,0xc09,0xbe3,0xc11,0xc19,0xc21,0xc26,0xbf8,0xbdf,0xbe6,0xbe2, -0xbf1,0xc2e,0xbe0,0xc31,0xbe3,0xc39,0xc41,0xc49,0xc50,0xc3c,0xc44,0xc4c,0xc53,0xc3f,0xc5b,0xc63, -0x6a5,0xc6b,0x6a5,0x6a5,0x902,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xd6b,0x3db,0x3db,0xd28,0x3db,0x3db,0x3db,0xd30,0x3db,0xd4a,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xccc,0x3db,0x3db,0xda0,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xcfd,0xd05,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xce9,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd0c,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0xd13,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0xd35,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x8db,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x3db,0x3db,0x3db,0x3db,0xc73,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, -0x417,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xc7b,0xc83,0xc83,0xc83,0x2a8,0x2a8,0x2a8,0x2a8,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0xc8b, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3, -0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca4, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +static const uint16_t propsTrie_index[15304]={ +0x36e,0x376,0x37e,0x386,0x39e,0x3a6,0x3ae,0x3b6,0x3be,0x3c6,0x3cc,0x3d4,0x3dc,0x3e4,0x3ec,0x3f4, +0x3fa,0x402,0x40a,0x412,0x415,0x41d,0x425,0x42d,0x435,0x43d,0x439,0x441,0x449,0x451,0x456,0x45e, +0x466,0x46e,0x472,0x47a,0x482,0x48a,0x492,0x49a,0x499,0x4a1,0x4a6,0x4ae,0x4b4,0x4bc,0x4c4,0x4cc, +0x4d4,0x4dc,0x4e4,0x4ec,0x4f1,0x4f9,0x4fc,0x504,0x50c,0x514,0x51a,0x522,0x521,0x529,0x531,0x539, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x541,0x543,0x54b,0x553,0x55b,0x561,0x569,0x571, +0x579,0x57f,0x587,0x58f,0x597,0x59d,0x5a5,0x5ad,0x55b,0x5b5,0x5bd,0x5c5,0x5cd,0x5d5,0x5dd,0x5e4, +0x5ec,0x5f2,0x5fa,0x602,0x60a,0x610,0x618,0x620,0x60a,0x628,0x630,0x638,0x640,0x647,0x64f,0x657, +0x4dc,0x65f,0x667,0x38e,0x66f,0x677,0x67f,0x38e,0x687,0x68f,0x697,0x69c,0x6a4,0x6ab,0x6b3,0x38e, +0x4f1,0x6bb,0x6c3,0x6cb,0x6d3,0x466,0x6db,0x6df,0x4f1,0x4f1,0x6e7,0x4f1,0x4f1,0x6ef,0x4f1,0x6f1, +0x4f1,0x4f1,0x6f9,0x4f1,0x701,0x705,0x70d,0x4f1,0x713,0x4f1,0x719,0x721,0x729,0x4f1,0x4f1,0x731, +0x4dc,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x739,0x741,0x4f1,0x4f1,0x749,0x751,0x759,0x761,0x769,0x4f1,0x771,0x779,0x781, +0x789,0x4f1,0x791,0x793,0x4f1,0x79b,0x38e,0x38e,0x7a3,0x7ab,0x7b3,0x7b8,0x4f1,0x7c0,0x7c8,0x7d0, +0x7d8,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x7e0,0x7e3,0x7eb,0x7f3,0x7fb,0x803,0x38e,0x38e, +0x4f1,0x80b,0x813,0x81a,0x38e,0x38e,0x38e,0x38e,0x40e,0x822,0x825,0x82d,0x834,0x825,0x435,0x83c, +0x3be,0x3be,0x3be,0x3be,0x844,0x3be,0x3be,0x3be,0x84c,0x854,0x85c,0x864,0x86c,0x870,0x878,0x880, +0x888,0x890,0x898,0x8a0,0x8a8,0x8b0,0x8b6,0x8be,0x8c6,0x8ce,0x8d6,0x8de,0x8e6,0x8ee,0x8f3,0x8f9, +0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x906,0x90e,0x7d0,0x911,0x919,0x920,0x925,0x92d, +0x7d0,0x935,0x93d,0x945,0x948,0x7d0,0x7d0,0x94f,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x957,0x95f,0x961, +0x7d0,0x7d0,0x7d0,0x969,0x96d,0x975,0x97d,0x38e,0x985,0x98b,0x990,0x998,0x9a0,0x9a6,0x9ae,0x9b5, +0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x8fe,0x8fe,0x8fe,0x8fe,0x9bd,0x8fe,0x9c4,0x9cb, +0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x8fe,0x7d0,0x8fa,0x9d3,0x38e,0x38e,0x38e,0x38e,0x38e, +0x466,0x9db,0x9df,0x9e7,0x3be,0x3be,0x3be,0x9ef,0x40e,0x9f7,0x4f1,0x9fe,0xa06,0xa0e,0xa0e,0x435, +0xa16,0xa1e,0x38e,0x38e,0xa26,0x7d0,0x7d0,0xa2d,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0xa35,0xa3b, +0xa43,0xa4b,0x4dc,0x4f1,0xa53,0xa5b,0x4f1,0xa5d,0xa65,0xa6a,0x4f1,0x4f1,0xa6f,0x793,0x7d0,0xa76, +0xa7e,0xa86,0xa8d,0x7d0,0xa86,0xa95,0x7d0,0xa7e,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0, +0xa9d,0x4f1,0x4f1,0x4f1,0xaa5,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0xaab,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xab0,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xab4,0x7d0,0x7d0, +0xabc,0x4f1,0xabf,0x4f1,0xac7,0xacd,0xad5,0xadd,0xae2,0x4f1,0x4f1,0xae6,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xaed,0x4f1,0xaf4,0xafa,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb02,0x4f1,0x4f1,0x4f1,0xb0a,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb0c,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb13,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0xb1a,0x4f1,0x4f1,0x4f1,0xb21,0xb29,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb2e,0x4f1,0x4f1,0xb36,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb3a,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb3d,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb40,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0xb46,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0xb4e,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0xb53,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb58,0x4f1,0x4f1,0x4f1,0xb5d,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0xb65,0xb6c,0xb70,0x4f1,0x4f1,0x4f1,0xb77,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb7e,0x38e, +0xb86,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0xb8c,0x7d0,0x935,0x38e,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0xb94,0xb9c,0x3be,0xba4,0x49c,0x38e,0x38e,0x38e,0xbac,0xbb4,0x3be,0xbb9,0xbc1,0x38e,0x38e,0xbc5, +0xbcd,0xbd5,0x4f1,0xbdd,0xbe5,0xbe8,0xbef,0x38e,0x531,0xbf7,0xbfe,0x38e,0x38e,0x38e,0x38e,0x38e, +0x4f1,0xc06,0xc0e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb7e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16, +0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0x4f1,0x4f1,0x4f1,0xc26,0x4f1,0xc2d,0xc32,0xc37, +0x4f1,0xc3f,0x4f1,0xc45,0x4f1,0x4f1,0x6f1,0x38e,0xc4d,0xc55,0xc5d,0x4f1,0x4f1,0xc61,0xc66,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xc6b,0x79f,0x4f1,0xc73,0x4f1,0xb7d,0xc7b, +0xc83,0xc8b,0xc92,0xc9a,0x4f1,0x4f1,0x4f1,0xca0,0xca8,0x37e,0xcb0,0xcb8,0xcbd,0xcc5,0xccd,0xcd5, +0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16, +0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16,0xc16, +0xe38,0xe38,0xe78,0xeb8,0xef8,0xf30,0xf70,0xfb0,0xfe8,0x1028,0x1054,0x1094,0x10d4,0x10e4,0x1124,0x1158, +0x1198,0x11c8,0x1208,0x1248,0x1264,0x1298,0x12d0,0x1310,0x1350,0x1390,0x13c4,0x13f0,0x1430,0x1468,0x1484,0x14c4, +0xa80,0xac0,0xa40,0xa40,0xb00,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb40,0xa40,0xa40,0xa40,0xb80,0xa40, +0xbc0,0xbf7,0x1db,0x1db,0xc1b,0xc4f,0x1db,0xc77,0x1db,0x1db,0x1db,0x1db,0xca4,0x1db,0x1db,0x1db, +0x1db,0x1db,0x1db,0x1db,0xcb8,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcf8, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xd38,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0xd78, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0xd78, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0xcdd,0xce4,0xcec,0x38e,0x4f1,0x4f1,0x4f1,0x4c8,0xcf4,0xcfc,0xd04,0xd0c,0xd13,0x38e,0xd1a,0xd1e, +0x38e,0x38e,0x38e,0x38e,0x7a3,0x4f1,0xd26,0x38e,0xcc5,0xd2e,0xd36,0x38e,0xd3e,0x4f1,0xd46,0x38e, +0x466,0x470,0xd4e,0x4f1,0x542,0xd56,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0xd5e,0xd61,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0xd69,0xd71,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0xd79,0xd80,0xd88,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xd90,0x38e,0x38e,0x38e,0x38e, +0xd98,0xda0,0xda8,0xdb0,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0x7d0,0xa35,0x7d0,0xdb8,0x7d0,0xdbf,0xdc7,0xdcd,0x96d,0x38e, +0x7d0,0x7d0,0xdd5,0x38e,0x38e,0x38e,0x38e,0x38e,0x7d0,0x7d0,0xddd,0xde5,0x38e,0x38e,0x38e,0x38e, +0xded,0xdf4,0xdf9,0xdff,0xe07,0xe0f,0xe17,0xdf1,0xe1f,0xe27,0xe2f,0xe34,0xe06,0xded,0xdf4,0xdf0, +0xdff,0xe3c,0xdee,0xe3f,0xdf1,0xe47,0xe4f,0xe57,0xe5e,0xe4a,0xe52,0xe5a,0xe61,0xe4d,0xe69,0xe71, +0x7d0,0xe79,0x7d0,0x7d0,0xa2d,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0xe81,0x4f1,0x4f1,0xe88,0x4f1,0x4f1,0x4f1,0xe90,0x4f1,0xe98,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0xb1e,0x4f1,0x4f1,0xea0,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xea8,0xeb0, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xb5d,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xeb7,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xebe, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xec5,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0xa06,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x4f1,0x4f1,0x4f1,0x4f1,0xec9,0x4f1,0x4f1,0x4f1, +0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x4f1,0x542,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0xed1,0xed9,0xed9,0xed9,0x38e,0x38e,0x38e,0x38e, +0x435,0x435,0x435,0x435,0x435,0x435,0x435,0xee1,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e, +0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0x38e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xee9,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x18,0x18,0x18,0x17, -0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16, -0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf, -0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x1b,0x1a,0x1b,2,0x1c,0x18,0x10,0x1b,0x1a, -0x1b,0x18,0x24b,0x34b,0x1a,2,0x1b,0x17,0x1a,0x14b,2,0x1d,0xa8b,0x88b,0x1a8b,0x17, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17, +0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, +0x829,0x929,0x17,0x17,0x18,0x18,0x18,0x17,0x17,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2, +1,1,1,0x14,0x17,0x15,0x1a,0x16,0x1a,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2, +2,2,2,0x14,0x18,0x15,0x18,0xf,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x1b, +0x1a,0x1b,2,0x1c,0x18,0x10,0x1b,0x1a,0x1b,0x18,0x24b,0x34b,0x1a,2,0x1b,0x17, +0x1a,0x14b,2,0x1d,0xa8b,0x88b,0x1a8b,0x17,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x18, +1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0x18, +2,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,2,2,1,1,2, -1,2,1,1,2,1,1,1,2,2,1,1,1,1,2,1, -1,2,1,1,1,2,2,2,1,1,2,1,1,2,1,2, -1,2,1,1,2,1,2,2,1,2,1,1,2,1,1,1, -2,1,2,1,1,2,2,5,1,2,2,2,5,5,5,5, -1,3,2,1,3,2,1,3,2,1,2,1,2,1,2,1, -2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,2,1,3,2, -1,2,1,1,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,1, -2,1,1,2,2,1,2,1,1,1,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,1,2,1,2,1,2,2, +2,1,1,2,1,2,1,1,2,1,1,1,2,2,1,1, +1,1,2,1,1,2,1,1,1,2,2,2,1,1,2,1, +1,2,1,2,1,2,1,1,2,1,2,2,1,2,1,1, +2,1,1,1,2,1,2,1,1,2,2,5,1,2,2,2, +5,5,5,5,1,3,2,1,3,2,1,3,2,1,2,1, +2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +2,1,3,2,1,2,1,1,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2, +2,2,1,1,2,1,1,2,2,1,2,1,1,1,1,2, +1,2,1,2,1,2,1,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,4,4, -4,4,4,4,4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,0x1a,0x1a,0x1a, -0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6,6,6,6,6,6,6, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,5,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4, +4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +4,0x1a,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,1,2,1,2,4,0x1a,1,2, -0,0,4,2,2,2,0x17,0,0,0,0,0,0x1a,0x1a,1,0x17, -1,1,1,0,1,0,1,1,2,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1, -1,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,1,2,0x18,1,2,1,1,2, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,0x1b,6,6,6,6,6,7,7,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,1,2,1,2,1, -2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0,0,4,0x17,0x17, -0x17,0x17,0x17,0x17,0,2,2,2,2,2,2,2,2,2,2,2, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,1,2,1,2,4,0x1a,1,2,0,0,4,2, +2,2,0x17,0,0,0,0,0,0x1a,0x1a,1,0x17,1,1,1,0, +1,0,1,1,2,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,0,0x17,0x13,0,0,0,0,0,0,6,6,6, +2,2,2,2,2,2,2,1,2,2,1,1,1,2,2,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,2,2,2,2,1,2,0x18,1, +2,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6,6,6, +7,7,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,1,2,1,2,1,2,1, +2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,0,0,0,0,0,0,0,0, +0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, +0,4,0x17,0x17,0x17,0x17,0x17,0x17,0,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,0,0x17,0x13,0,0,0,0,0, +0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x13,6, 0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,0,5,5,5,0x17,0x17,0,0,0, -0,0,0,0,0,0,0,0,0x10,0x10,0x10,0x10,0,0,0x18,0x18, -0x18,0x17,0x17,0x19,0x17,0x17,0x1b,0x1b,6,6,6,6,6,6,6,6, -6,6,6,0x17,0,0,0x17,0x17,0,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5, -5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0x17,0x17,0x17,0x17,5,5,6,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x17,5,6,6, -6,6,6,6,6,0x10,7,6,6,6,6,6,6,4,4,6, -6,0x1b,6,6,6,6,5,5,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,5,5,5,0x1b,0x1b,5,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5,6,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, +5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, +0x10,0x10,0x10,0x10,0,0,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,0x1b,0x1b, +6,6,6,6,6,6,6,6,6,6,6,0x17,0,0,0x17,0x17, 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6, -6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,6,6,6,6,6,6,6,6,6,4,4,0x1b,0x17, -0x17,0x17,4,0,0,0,0,0,0,6,6,8,5,5,5,5, +4,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, +0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x17,0x17,5,5, +6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,6,5,8,8, -8,6,6,6,6,6,6,6,6,8,8,8,8,6,0,0, -5,6,6,6,6,0,0,0,5,5,5,5,5,5,5,5, -5,5,6,6,0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, -0x17,4,5,0,0,0,0,0,0,0,0,5,5,5,5,5, -0,6,8,8,0,5,5,5,5,5,5,5,5,0,0,5, -5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5, -5,5,0,0,6,5,8,8,8,6,6,6,6,0,0,8, -8,0,0,8,8,6,5,0,0,0,0,0,0,0,0,8, -0,0,0,0,5,5,0,5,5,5,6,6,0,0,0x29,0x129, -0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5,0x19,0x19,0x16b,0x26b,0x36b,0x46b, -0xb,0x106b,0x1b,0,0,0,0,0,0,6,6,8,0,5,5,5, -5,5,5,0,0,0,0,5,5,0,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, -5,0,5,5,0,5,5,0,5,5,0,0,6,0,8,8, -8,6,6,0,0,0,0,6,6,0,0,6,6,6,0,0, -0,6,0,0,0,0,0,0,0,5,5,5,5,0,5,0, -0,0,0,0,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, -6,6,5,5,5,6,0,0,0,0,0,0,0,0,0,0, -0,6,6,8,0,5,5,5,5,5,5,5,5,5,0,5, -5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, -5,5,0,0,6,5,8,8,8,6,6,6,6,6,0,6, -6,8,0,8,8,6,0,0,5,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,6,6,0,0,0x29,0x129, -0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0x19,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, -5,5,0,0,6,5,8,6,8,6,6,6,6,0,0,8, -8,0,0,8,8,6,0,0,0,0,0,0,0,0,6,8, -0,0,0,0,5,5,0,5,5,5,6,6,0,0,0x29,0x129, -0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x1b,5,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,6,5,0,5,5,5, -5,5,5,0,0,0,5,5,5,0,5,5,5,5,0,0, -0,5,5,0,5,0,5,5,0,0,0,5,5,0,0,0, -5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,0,0,8,8,6,8,8,0,0,0,8,8, -8,0,8,8,8,6,0,0,5,0,0,0,0,0,0,8, -0,0,0,0,0,0,0,0,0,0,0x29,0x129,0x229,0x329,0x429,0x529, -0x629,0x729,0x829,0x929,0xa6b,0x646b,0x11ab,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0, -0,0,0,0,0,8,8,8,0,5,5,5,5,5,5,5, -5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -0,5,5,5,5,5,0,0,0,5,6,6,6,8,8,8, -8,0,6,6,6,0,6,6,6,6,0,0,0,0,0,0, -0,6,6,0,5,5,0,0,0,0,0,0,5,5,6,6, -0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0, -0,0,0,0,0x6b,0x16b,0x26b,0x36b,0x16b,0x26b,0x36b,0x1b,0,0,8,8, -0,5,5,5,5,5,5,5,5,0,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,0,0, -6,5,8,6,8,8,8,8,8,0,6,8,8,0,8,8, -6,6,0,0,0,0,0,0,0,8,8,0,0,0,0,0, -0,0,5,0,5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529, -0x629,0x729,0x829,0x929,0,0x1b,0x1b,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,5,8,8,8,6,6,6,6,0,8,8,8,0,8,8, -8,6,0,0,0,0,0,0,0,0,0,8,0,0,0,0, -0,0,0,0,5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529, -0x629,0x729,0x829,0x929,0xa6b,0x646b,0x11ab,0xa8b,0x88b,0x1a8b,0,0,0,0x1b,5,5, -5,5,5,5,0,0,8,8,0,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,5,5,5,5,5,5,5,5,5,0,5,0,0, -5,5,5,5,5,5,5,0,0,0,6,0,0,0,0,8, -8,8,6,6,6,0,6,0,8,8,8,8,8,8,8,8, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,8,8,0x17,0,0,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,6,5,5,6,6,6,6,6,6,6,0,0,0,0,0x19, -5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,0x17, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0,0,0,0, -0,5,5,0,5,0,0,5,5,0,5,0,0,5,0,0, -0,0,0,0,5,5,5,5,0,5,5,5,5,5,5,5, -0,5,5,5,0,5,0,5,0,0,5,5,0,5,5,5, -5,6,5,5,6,6,6,6,6,6,0,6,6,5,0,0, -5,5,5,5,5,0,4,0,6,6,6,6,6,6,0,0, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,5,5,0,0, -5,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x88b,0x188b,0x288b,0x388b,0x488b,0x588b, -0x688b,0x788b,0x888b,0x8b,0x1b,6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, +5,5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,7,6, +6,6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5, +0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5,5,0x1b,0x1b,5, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10, +5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,8,6,6,6,6,6,0x17,6,6,5,5,5,5, -0,0,0,0,6,6,6,6,6,6,6,6,0,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,0,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b, -0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,8,8,6,6,6, -6,8,6,6,6,6,6,6,8,6,6,8,8,6,6,5, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x17,0x17,0x17,0x17, -5,5,5,5,5,5,8,8,6,6,5,5,5,5,6,6, -6,5,8,8,8,5,5,8,8,8,8,8,8,8,5,5, -5,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5, -5,5,6,8,8,6,6,8,8,8,8,8,8,6,5,8, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0x1b,0x1b, -1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0, +6,6,6,0,0,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0x17,4,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,5, -5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6, +6,6,6,6,6,5,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,0, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, -5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, +6,6,6,6,6,6,6,6,4,4,0x1b,0x17,0x17,0x17,4,0, +0,0,0,0,0,6,6,8,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0,6,5,8,8,8,6,6,6, +6,6,6,6,6,8,8,8,8,6,0,0,5,6,6,6, +6,0,0,0,5,5,5,5,5,5,5,5,5,5,6,6, +0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,4,5,0, +0,0,0,0,0,0,0,5,5,5,5,5,0,6,8,8, +0,5,5,5,5,5,5,5,5,0,0,5,5,0,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,5,5,5,0,5,0,0,0,5,5,5,5,0,0, +6,5,8,8,8,6,6,6,6,0,0,8,8,0,0,8, +8,6,5,0,0,0,0,0,0,0,0,8,0,0,0,0, +5,5,0,5,5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529, +0x629,0x729,0x829,0x929,5,5,0x19,0x19,0x16b,0x26b,0x36b,0x46b,0xb,0x106b,0x1b,0, +0,0,0,0,0,6,6,8,0,5,5,5,5,5,5,0, +0,0,0,5,5,0,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,5, +0,5,5,0,5,5,0,0,6,0,8,8,8,6,6,0, +0,0,0,6,6,0,0,6,6,6,0,0,0,6,0,0, +0,0,0,0,0,5,5,5,5,0,5,0,0,0,0,0, +0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,6,6,5,5, +5,6,0,0,0,0,0,0,0,0,0,0,0,6,6,8, +0,5,5,5,5,5,5,5,5,5,0,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, +6,5,8,8,8,6,6,6,6,6,0,6,6,8,0,8, +8,6,0,0,5,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529, +0x629,0x729,0x829,0x929,0,0x19,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, +6,5,8,6,8,6,6,6,6,0,0,8,8,0,0,8, +8,6,0,0,0,0,0,0,0,0,6,8,0,0,0,0, +5,5,0,5,5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529, +0x629,0x729,0x829,0x929,0x1b,5,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,6,5,0,5,5,5,5,5,5,0, +0,0,5,5,5,0,5,5,5,5,0,0,0,5,5,0, +5,0,5,5,0,0,0,5,5,0,0,0,5,5,5,0, +0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0,0,8,8,6,8,8,0,0,0,8,8,8,0,8,8, +8,6,0,0,5,0,0,0,0,0,0,8,0,0,0,0, +0,0,0,0,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, +0xa6b,0x646b,0x11ab,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0, +0,8,8,8,0,5,5,5,5,5,5,5,5,0,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,0,5,5,5, +5,5,0,0,0,5,6,6,6,8,8,8,8,0,6,6, +6,0,6,6,6,6,0,0,0,0,0,0,0,6,6,0, +5,5,0,0,0,0,0,0,5,5,6,6,0,0,0x29,0x129, +0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0,0,0,0, +0x6b,0x16b,0x26b,0x36b,0x16b,0x26b,0x36b,0x1b,0,0,8,8,0,5,5,5, +5,5,5,5,5,0,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,0,5,5,5,5,5,0,0,6,5,8,6, +8,8,8,8,8,0,6,8,8,0,8,8,6,6,0,0, +0,0,0,0,0,8,8,0,0,0,0,0,0,0,5,0, +5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, +0,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,5,8,8, +8,6,6,6,6,0,8,8,8,0,8,8,8,6,0,0, +0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0, +5,5,6,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, +0xa6b,0x646b,0x11ab,0xa8b,0x88b,0x1a8b,0,0,0,0x1b,5,5,5,5,5,5, +0,0,8,8,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, +5,5,5,5,5,5,5,5,0,5,0,0,5,5,5,5, +5,5,5,0,0,0,6,0,0,0,0,8,8,8,6,6, +6,0,6,0,8,8,8,8,8,8,8,8,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8, +0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5, +6,6,6,6,6,6,6,0,0,0,0,0x19,5,5,5,5, +5,5,4,6,6,6,6,6,6,6,6,0x17,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0,0,0,0,0,5,5,0, +5,0,0,5,5,0,5,0,0,5,0,0,0,0,0,0, +5,5,5,5,0,5,5,5,5,5,5,5,0,5,5,5, +0,5,0,5,0,0,5,5,0,5,5,5,5,6,5,5, +6,6,6,6,6,6,0,6,6,5,0,0,5,5,5,5, +5,0,4,0,6,6,6,6,6,6,0,0,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0,0,5,5,0,0,5,0x1b,0x1b,0x1b, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b, +0x1b,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0x88b,0x188b,0x288b,0x388b,0x488b,0x588b,0x688b,0x788b,0x888b,0x8b, +0x1b,6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5, +5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, +0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8, +6,6,6,6,6,0x17,6,6,5,5,5,5,0,0,0,0, +6,6,6,6,6,6,6,6,0,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17, +0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,8,8,6,6,6,6,8,6,6, +6,6,6,6,8,6,6,8,8,6,6,5,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5, +5,5,8,8,6,6,5,5,5,5,6,6,6,5,8,8, +8,5,5,8,8,8,8,8,8,8,5,5,5,6,6,6, +6,5,5,5,5,5,5,5,5,5,5,5,5,5,6,8, +8,6,6,8,8,8,8,8,8,6,5,8,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0x1b,0x1b,1,1,1,1, +1,1,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0x17,4,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0,0,0,0,5,5,5,5,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,0,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,0,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,6,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14b,0x24b,0x34b, +0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x146b,0x1e6b,0x286b,0x326b,0x3c6b,0x466b,0x506b,0x5a6b,0x646b, +0x12ab,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,0x17,0x17,5,5,5,5,5,5,5,5,0,0,0,0,0, +0,0,0,0,0xc,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x14, +0x15,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0x17, +0x17,0x17,0x116a,0x126a,0x136a,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,6,6,6,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,6,6,6,0x17,0x17,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,6,6,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,0,6,6,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x10,0x10,8,6,6,6,6,6, +6,6,8,8,8,8,8,8,8,8,6,8,8,6,6,6, +6,6,6,6,6,6,6,6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19, +5,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0, +0,0,0,0,0x6b,0x16b,0x26b,0x36b,0x46b,0x56b,0x66b,0x76b,0x86b,0x96b,0,0, +0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6, +6,6,0xc,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0, +0,0,0,0,5,5,5,4,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,6,5,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,6,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x146b,0x1e6b,0x286b,0x326b,0x3c6b, -0x466b,0x506b,0x5a6b,0x646b,0x12ab,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x17,0x17,5,5,5,5,5,5,5,5,0, -0,0,0,0,0,0,0,0,0xc,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x14,0x15,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,0x17,0x17,0x17,0x116a,0x126a,0x136a,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,6,6,6,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,6,6,6,0x17,0x17,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,6,6,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,0,6,6,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x10,0x10,8,6, -6,6,6,6,6,6,8,8,8,8,8,8,8,8,6,8, -8,6,6,6,6,6,6,6,6,6,6,6,0x17,0x17,0x17,4, -0x17,0x17,0x17,0x19,5,6,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0,0,0,0,0,0,0x6b,0x16b,0x26b,0x36b,0x46b,0x56b,0x66b,0x76b, -0x86b,0x96b,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17, -0x17,0x17,0x17,6,6,6,0xc,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0,0,0,0,0,0,5,5,5,4,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,6,5,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, -6,6,6,8,8,8,8,6,6,8,8,8,0,0,0,0, -8,8,6,8,8,8,8,8,8,6,6,6,0,0,0,0, -0x1b,0,0,0,0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,5,5,5,5,5,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,5,5,5,5,5,5,5,8,8,0,0, -0,0,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0, -0,0,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,8, +8,8,8,6,6,8,8,8,0,0,0,0,8,8,6,8, +8,8,8,8,8,6,6,6,0,0,0,0,0x1b,0,0,0, +0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,5,5,5,5,5,5,5,8,8,0,0,0,0,0,0, +0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0x17,0x17, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,6,6,8,8,8, -0,0,0x17,0x17,6,6,6,6,8,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,6,8,6,6,6,6,6,8,6,8,8,8, -8,8,6,8,8,5,5,5,5,5,5,5,0,0,0,0, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6, -6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, -6,6,8,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,6,6,8,8,8,0,0,0x17,0x17, +6,6,6,6,8,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,8,6,6,6,6,8,8,6,6,8,0,0,0,5,5, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0,0, -5,5,5,5,8,8,8,8,8,8,8,8,6,6,6,6, -6,6,6,6,8,8,6,6,0,0,0,0x17,0x17,0x17,0x17,0x17, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,5,5,5, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,5,5,5,5,5,5, +6,8,6,6,6,6,6,8,6,8,8,8,8,8,6,8, +8,5,5,5,5,5,5,5,0,0,0,0,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,6,6,8,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,4,4,4,4,4,4,0x17,0x17,2,2,2,2, -2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4, +5,5,5,5,5,5,5,5,5,5,5,5,5,8,6,6, +6,6,8,8,6,6,8,0,0,0,5,5,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0,0,5,5,5,5, +8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,6, +8,8,6,6,0,0,0,0x17,0x17,0x17,0x17,0x17,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,5,5,5,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +4,4,4,4,4,4,0x17,0x17,2,2,2,2,2,2,2,2, +2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2, +4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4, -4,4,4,4,6,6,6,6,6,6,6,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4, +6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,2,2,2,2,2,2,2,2,1,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,0,0,1,1,1,1,1,1,0,0, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,0,0,1,1,1,1,1,1,0,0, +2,2,2,2,2,2,2,2,0,1,0,1,0,1,0,1, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0, +2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3, +2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3, +2,2,2,2,2,0,2,2,1,1,1,1,3,0x1a,2,0x1a, +0x1a,0x1a,2,2,2,0,2,2,1,1,1,1,3,0x1a,0x1a,0x1a, +2,2,2,2,0,0,2,2,1,1,1,1,0,0x1a,0x1a,0x1a, +2,2,2,2,2,2,2,2,1,1,1,1,1,0x1a,0x1a,0x1a, +0,0,2,2,2,0,2,2,1,1,1,1,3,0x1a,0x1a,0, +0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10,0x10,0x10,0x10,0x10, +0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c,0x1c,0x1d,0x14,0x1c, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10,0x10,0x10,0x10,0xc, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x16, +0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xc, +0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0x10,0x10,0x10,0x10,0x10,0x10, +0x4b,2,0,0,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0x18,0x18,0x18,0x14,0x15,2, +0x4b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0x18,0x18,0x18,0x14,0x15,0, +4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, +6,6,6,6,6,7,7,7,7,6,7,7,7,6,6,6, +6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1, +0x1b,0x1b,2,1,1,1,2,2,1,1,1,2,0x1b,1,0x1b,0x1b, +0x1b,1,1,1,1,1,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,0x1b,1,0x1b, +1,0x1b,1,1,1,1,0x1b,2,1,1,1,1,2,5,5,5, +5,2,0x1b,0x1b,2,2,1,1,0x18,0x18,0x18,0x18,0x18,1,2,2, +2,2,0x1b,0x18,0x1b,0x1b,2,0x1b,0,0,0,0x98b,0x118b,0xb8b,0x138b,0x1b8b, +0x238b,0xc8b,0x2c8b,0xe8b,0x1e8b,0x2e8b,0x3e8b,0x16b,0x16a,0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a, +0x96a,0xa6a,0xb6a,0xc6a,0x326a,0x646a,0x50aa,0x11aa,0x16a,0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a, +0x96a,0xa6a,0xb6a,0xc6a,0x326a,0x646a,0x50aa,0x11aa,0x11aa,0x51aa,0x12aa,1,2,0x66a,0x326a,0x52aa, +0x13aa,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b, +0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x18,0x1b,0x1b,0x18,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x18,0x1b, +0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,6,6,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2, -2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,0,1,0,1, -0,1,0,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,0,0,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,0,2,2,1,1,1,1, -3,0x1a,2,0x1a,0x1a,0x1a,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,1,1,1, -0,0x1a,0x1a,0x1a,2,2,2,2,2,2,2,2,1,1,1,1, -1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10, -0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c, -0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10, -0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17, -0x17,0x17,0x17,0x16,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0x10,0x10, -0x10,0x10,0x10,0x10,0x4b,2,0,0,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0x18,0x18, -0x18,0x14,0x15,2,0x4b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0x18,0x18, -0x18,0x14,0x15,0,4,4,4,4,4,0,0,0,0,0,0,0, -0,0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, -0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6, -6,6,6,6,6,6,6,6,6,7,7,7,7,6,7,7, -7,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,1,0x1b, -0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1,2,2,1,1,1,2, -0x1b,1,0x1b,0x1b,0x1b,1,1,1,1,1,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -1,0x1b,1,0x1b,1,0x1b,1,1,1,1,0x1b,2,1,1,1,1, -2,5,5,5,5,2,0x1b,0x1b,2,2,1,1,0x18,0x18,0x18,0x18, -0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b,2,0x1b,0,0,0,0x98b, -0x118b,0xb8b,0x138b,0x1b8b,0x238b,0xc8b,0x2c8b,0xe8b,0x1e8b,0x2e8b,0x3e8b,0x16b,0x16a,0x26a,0x36a,0x46a, -0x56a,0x66a,0x76a,0x86a,0x96a,0xa6a,0xb6a,0xc6a,0x326a,0x646a,0x50aa,0x11aa,0x16a,0x26a,0x36a,0x46a, -0x56a,0x66a,0x76a,0x86a,0x96a,0xa6a,0xb6a,0xc6a,0x326a,0x646a,0x50aa,0x11aa,0x11aa,0x51aa,0x12aa,1, -2,0x66a,0x326a,0x52aa,0x13aa,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18, -0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x18, -0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18, -0x1b,0x1b,0x18,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0xb6b,0xc6b, +0xd6b,0xe6b,0xf6b,0x106b,0x116b,0x126b,0x136b,0x146b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b, +0x94b,0xa6b,0xb6b,0xc6b,0xd6b,0xe6b,0xf6b,0x106b,0x116b,0x126b,0x136b,0x146b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x4b,0xb6b,0xc6b,0xd6b,0xe6b,0xf6b,0x106b,0x116b,0x126b,0x136b, +0x146b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x4b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b, -0x94b,0xa6b,0xb6b,0xc6b,0xd6b,0xe6b,0xf6b,0x106b,0x116b,0x126b,0x136b,0x146b,0x14b,0x24b,0x34b,0x44b, -0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0xb6b,0xc6b,0xd6b,0xe6b,0xf6b,0x106b,0x116b,0x126b,0x136b,0x146b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x4b,0xb6b,0xc6b,0xd6b,0xe6b,0xf6b, -0x106b,0x116b,0x126b,0x136b,0x146b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x4b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b, 0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0x1b,0,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15, -0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b, -0x74b,0x84b,0x94b,0xa6b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x14b,0x24b, -0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x18,0x18,0x18,0x18, -0x18,0x14,0x15,0x18,0x18,0x18,0x18,0,0x18,0,0,0,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15, -0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14, -0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14, -0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, -1,2,1,1,1,2,2,1,2,1,2,1,2,1,1,1, -0,2,1,2,2,1,2,2,2,2,2,2,2,4,0,0, -1,2,1,2,2,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x88b,0x17,0x17, -2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,0,0,0,0,0,0,0,4,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,0,5,5,5,5,5,5,5,0,5,5,5,5, -5,5,5,0,5,5,5,5,5,5,5,0,0x17,0x17,0x1c,0x1d, -0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17,0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15, -0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x17,0x17,4,0x17,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0xc,0x17,0x17,0x17,0x1b,4,5,0x6a,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, -0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15, -0x1b,0x16a,0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,6,6,6,6,6,6, -0x13,4,4,4,4,4,0x1b,0x1b,0xa6a,0x146a,0x1e6a,4,5,0x17,0x1b,0x1b, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,0,6,6,0x1a,0x1a,4,4,5, -0x13,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x17,4,4,4,5,0,0,0,0,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -0x1b,0x1b,0x16b,0x26b,0x36b,0x46b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b, +0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0,0, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x16b,0x26b,0x36b,0x46b, -0x56b,0x66b,0x76b,0x86b,0x96b,0xa6b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x156b,0x166b,0x176b,0x186b,0x196b,0x1a6b,0x1b6b, -0x1c6b,0x1d6b,0x1e6b,0x1f6b,0x206b,0x216b,0x226b,0x236b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x246b,0x256b,0x266b,0x276b,0x286b,0x296b,0x2a6b, -0x2b6b,0x2c6b,0x2d6b,0x2e6b,0x2f6b,0x306b,0x316b,0x326b,5,5,5,5,5,5,5,5, +0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0,0x1b, +0x1b,0x1b,0x1b,0,0,0,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, +0x14,0x15,0x14,0x15,0x14,0x15,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b, +0x14b,0x24b,0x34b,0x44b,0x54b,0x64b,0x74b,0x84b,0x94b,0xa6b,0x14b,0x24b,0x34b,0x44b,0x54b,0x64b, +0x74b,0x84b,0x94b,0xa6b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18, +0x18,0x18,0x18,0,0x18,0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15, +0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14, +0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,0,1,2,1,1, +1,2,2,1,2,1,2,1,2,1,1,1,0,2,1,2, +2,1,2,2,2,2,2,2,2,4,0,0,1,2,1,2, +2,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x17,0x17,0x17,0x17,0x88b,0x17,0x17,2,2,2,2, +2,2,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0, +5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0, +5,5,5,5,5,5,5,0,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17, +0x17,0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13, +0x17,0x17,0x13,0x17,0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15, +0x14,0x15,0x17,0x17,0x17,0x17,0x17,4,0x17,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0xc,0x17,0x17,0x17, +0x1b,4,5,0x6a,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x1b,0x1b, +0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15,0x1b,0x16a,0x26a,0x36a, +0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,6,6,6,6,6,6,0x13,4,4,4, +4,4,0x1b,0x1b,0xa6a,0x146a,0x1e6a,4,5,0x17,0x1b,0x1b,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,0,6,6,0x1a,0x1a,4,4,5,0x13,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x17, +4,4,4,5,0,0,0,0,0,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,0x1b,0x1b,0x16b,0x26b, +0x36b,0x46b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x16b,0x26b,0x36b,0x46b,0x56b,0x66b,0x76b,0x86b, +0x96b,0xa6b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b,0x156b,0x166b,0x176b,0x186b,0x196b,0x1a6b,0x1b6b,0x1c6b,0x1d6b,0x1e6b,0x1f6b, +0x206b,0x216b,0x226b,0x236b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x246b,0x256b,0x266b,0x276b,0x286b,0x296b,0x2a6b,0x2b6b,0x2c6b,0x2d6b,0x2e6b, +0x2f6b,0x306b,0x316b,0x326b,5,5,5,5,5,0x565,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0x265,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x565,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x765,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0, +0x165,5,5,0x765,5,5,5,0x12a5,5,0x365,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x965,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x265,5,5,5,5,5,5,5, +0x565,5,0x465,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0x16a5,0xa65,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0x11a5,5,5,5,5,5,5,5,5,0x365,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0x565,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x6465,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x16a5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x1aa5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0x265,5,0x865,5,0x665,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0xa65,5,0x11a5,0x1465,0x1e65,5,5, +5,5,5,5,0x2865,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x365,0x365,0x365,0x365,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0x465,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x165,5,5, +5,5,5,5,5,0x165,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0x165,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0x965,0x1465,5,5,5,5,5,5,5,5,5,5,5,5, +0x165,0x265,0x365,5,0x265,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0xa65,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x865,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x765,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x965,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x6465,5,5,5,5,5,5,5,0x465,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x12a5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x265,5, +5,5,5,0x265,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x265,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0x11a5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x665,5,5,5,5,5,0x6465,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x665,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0x65,5,5,5,5,5,5,5,5,5,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, @@ -626,8 +759,6 @@ static const uint16_t propsTrie_index[14336]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1,2,1,2,1,2,1,2,1,2,1,2,5,6, 7,7,7,0x17,0,0,0,0,0,0,0,0,6,6,0x17,4, -1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,0,0,0,0,0,0,0,0, 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4, 0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,1,2,1,2, @@ -654,7 +785,11 @@ static const uint16_t propsTrie_index[14336]={ 5,6,6,6,6,6,6,8,8,6,6,8,8,6,6,0, 0,0,0,0,0,0,0,0,5,5,5,6,5,5,5,5, 5,5,5,5,6,8,0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0,0,0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5, +0x829,0x929,0,0,0x17,0x17,0x17,0x17,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,5,5,5,5,5,5,5,5, 5,5,5,0x365,5,5,5,5,5,5,5,0xa65,5,5,5,5, 0x265,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,0x65,5,5,5,5,5,5,5,5,5, @@ -676,488 +811,528 @@ static const uint16_t propsTrie_index[14336]={ 5,5,5,5,5,5,5,5,5,5,0x14,0x15,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -0x19,0x1b,0,0,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,0x15,0x17,0,0, -0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0, -0,0,0,0,0x17,0x13,0x13,0x16,0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14, -0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16, -0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17, -0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,0x17,0x19,0x17,0x17,0,0,0,0, -5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,0,0x10,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17, -0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0x17,0x17,0x18,0x18,0x18,0x17,0x1a,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,0x14,0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5, -5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5, -5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5, -5,5,5,5,0,0,5,5,5,0,0,0,0x19,0x19,0x18,0x1a, -0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0,0,0,0,0, -0,0,0,0,0,0x10,0x10,0x10,0x1b,0x1b,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,5,5,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,0,0x17,0x17,0x1b,0,0,0,0,0x16b, -0x26b,0x36b,0x46b,0x56b,0x66b,0x76b,0x86b,0x96b,0xa6b,0x146b,0x1e6b,0x286b,0x326b,0x3c6b,0x466b,0x506b, -0x5a6b,0x646b,0xc86b,0x30ab,0x40ab,0x50ab,0x60ab,0x70ab,0x80ab,0x90ab,0x11ab,0x21ab,0x31ab,0x41ab,0x51ab,0x61ab, -0x71ab,0x81ab,0x91ab,0x12ab,0x22ab,0x32ab,0x42ab,0x52ab,0x62ab,0x72ab,0x82ab,0x92ab,0,0,0,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xa8a,0x88a,0x16a,0x56a,0x326a,0x50aa,0x51aa,0x52aa, -0x56a,0xa6a,0x326a,0x646a,0x50aa,0x11aa,0x51aa,0x56a,0xa6a,0x326a,0x646a,0x50aa,0x11aa,0x12aa,0x52aa,0xa6a, -0x16a,0x16a,0x16a,0x26a,0x26a,0x26a,0x26a,0x56a,0xa6a,0xa6a,0xa6a,0xa6a,0xa6a,0x1e6a,0x326a,0x326a, -0x326a,0x326a,0x646a,0x30aa,0x50aa,0x50aa,0x50aa,0x50aa,0x50aa,0x11aa,0x51aa,0x56a,0x326a,0x88b,0x88b,0x118b, -0x1a8b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x6b,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x16b,0x56b,0xa6b,0x326b,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x5a6a,5,5,5,5,5,5,5,5,0x90aa,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0x17, -5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5, -0x17,0x16a,0x26a,0xa6a,0x146a,0x646a,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,0,0,5,0,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,5,5,0,0,0,5,0,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x16b,0xa6b,0x146b,0x646b,0,0,0,0,0,0x17,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,0,0,0,0x17,5,6,6,6, -0,6,6,0,0,0,0,0,6,6,6,6,5,5,5,5, -0,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, -6,6,6,0,0,0,0,6,0x14b,0x24b,0x34b,0x44b,0xa6b,0x146b,0x646b,0x11ab, -0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a, -0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x16a,0x26a,0x36a, -0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x16a,0x26a,0x36a,0x46a,0x56a,0x26a,0x36a,0x36a,0x46a,0x56a, -0x66a,0x76a,0x86a,0x96a,0x16a,0x26a,0x36a,0x36a,0x46a,0x56a,0xa,0xa,0x16a,0x26a,0x36a,0x36a, -0x46a,0x56a,0x36a,0x36a,0x46a,0x46a,0x46a,0x46a,0x66a,0x76a,0x76a,0x76a,0x86a,0x86a,0x96a,0x96a, -0x96a,0x96a,0x26a,0x36a,0x46a,0x56a,0x66a,0x16a,0x26a,0x36a,0x46a,0x46a,0x56a,0x56a,0xa,0xa, -0x16a,0x26a,0x98a,0x118a,0x2c8a,0x98a,0x118a,0xe8a,0xa8a,0xc8a,0xa8a,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b, -0x1b,8,8,8,8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6, -6,6,6,6,6,6,6,0x1b,0x1b,6,6,6,6,6,6,6, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6, -6,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0x16b,0x26b,0x36b,0x46b, -0x56b,0x66b,0x76b,0x86b,0x96b,0xa6b,0x146b,0x1e6b,0x286b,0x326b,0x3c6b,0x466b,0x506b,0x5a6b,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2, -2,0,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,1, -1,0,1,1,1,1,1,1,1,1,2,2,2,2,0,2, -0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,2,1,1,0,1,1,1,1,0, -0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1, -1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,1, -1,1,1,0,1,1,1,1,1,0,1,0,0,0,1,1, -1,1,1,1,1,0,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0x18,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0x18, -2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x18, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,0x18,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,0x18, -2,2,2,2,2,2,1,2,0,0,0x29,0x129,0x229,0x329,0x429,0x529, -0x629,0x729,0x829,0x929,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x29,0x129, -0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, -0x829,0x929,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x965,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0,0x10,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,0x19,0x1b,0,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x14,0x15,0x17,0,0,0,0,0,0,6,6,6,6, +6,6,6,0,0,0,0,0,0,0,0,0,0x17,0x13,0x13,0x16, +0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14, +0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17, +0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0, +0x17,0x19,0x17,0x17,0,0,0,0,5,5,5,5,5,0,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0x10, +0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17, +0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x17,0x17,0x18,0x18,0x18,0x17, +0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0x14, +0x15,0x17,0x14,0x15,0x17,0x17,5,5,5,5,5,5,5,5,5,5, +4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,0,0,5,5,5,5,5,5,0,0,5,5, +5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5, +5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18, +0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10, +0x1b,0x1b,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0x17,0x17,0x1b,0,0,0,0,0x16b,0x26b,0x36b,0x46b,0x56b,0x66b,0x76b,0x86b,0x96b, +0xa6b,0x146b,0x1e6b,0x286b,0x326b,0x3c6b,0x466b,0x506b,0x5a6b,0x646b,0xc86b,0x30ab,0x40ab,0x50ab,0x60ab,0x70ab, +0x80ab,0x90ab,0x11ab,0x21ab,0x31ab,0x41ab,0x51ab,0x61ab,0x71ab,0x81ab,0x91ab,0x12ab,0x22ab,0x32ab,0x42ab,0x52ab, +0x62ab,0x72ab,0x82ab,0x92ab,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0xa8a,0x88a,0x16a,0x56a,0x326a,0x50aa,0x51aa,0x52aa,0x56a,0xa6a,0x326a,0x646a,0x50aa,0x11aa,0x51aa,0x56a, +0xa6a,0x326a,0x646a,0x50aa,0x11aa,0x12aa,0x52aa,0xa6a,0x16a,0x16a,0x16a,0x26a,0x26a,0x26a,0x26a,0x56a, +0xa6a,0xa6a,0xa6a,0xa6a,0xa6a,0x1e6a,0x326a,0x326a,0x326a,0x326a,0x646a,0x30aa,0x50aa,0x50aa,0x50aa,0x50aa, +0x50aa,0x11aa,0x51aa,0x56a,0x326a,0x88b,0x88b,0x118b,0x1a8b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x6b,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x16b,0x56b,0xa6b,0x326b,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x5a6a,5,5,5,5,5,5, +5,5,0x90aa,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0x17,5,5,5,5,0,0,0,0, +5,5,5,5,5,5,5,5,0x17,0x16a,0x26a,0xa6a,0x146a,0x646a,0,0, +0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729, +0x829,0x929,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,5,5,0,0,0, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x16b,0xa6b,0x146b,0x646b,0,0, +0,0,0,0x17,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0,0,0,0x17,5,6,6,6,0,6,6,0,0,0,0,0, +6,6,6,6,5,5,5,5,0,5,5,5,0,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0,0,0,0,6,6,6,0,0,0,0,6, +0x14b,0x24b,0x34b,0x44b,0xa6b,0x146b,0x646b,0x11ab,0,0,0,0,0,0,0,0, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11, -0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, -0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x65,5,5,5,5,5,5,5,5,5, -0x165,5,5,0x765,5,5,5,0x12a5,5,0x365,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x165,5,5,5,5,5,5,5,0x165,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x165,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x165,0x265,0x365,5,0x265,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x165,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x265,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x265,5,5,5,5,5,5,5,0x565,5,0x465,5,5,5,5,5, -5,5,5,5,5,0x265,5,0x865,5,0x665,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x265,5, -5,5,5,0x265,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x265,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x365,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x365,0x365,0x365, -0x365,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x665,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x365,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x365,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x365,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0x365,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x465,5,5,5,5,5,5,0x465,5,5,5,5,5, +0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x46a, +0x56a,0x66a,0x76a,0x86a,0x96a,0x16a,0x26a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x16a,0x26a, +0x36a,0x46a,0x56a,0x26a,0x36a,0x36a,0x46a,0x56a,0x66a,0x76a,0x86a,0x96a,0x16a,0x26a,0x36a,0x36a, +0x46a,0x56a,0xa,0xa,0x16a,0x26a,0x36a,0x36a,0x46a,0x56a,0x36a,0x36a,0x46a,0x46a,0x46a,0x46a, +0x66a,0x76a,0x76a,0x76a,0x86a,0x86a,0x96a,0x96a,0x96a,0x96a,0x26a,0x36a,0x46a,0x56a,0x66a,0x16a, +0x26a,0x36a,0x46a,0x46a,0x56a,0x56a,0xa,0xa,0x16a,0x26a,0x98a,0x118a,0x2c8a,0x98a,0x118a,0xe8a, +0xa8a,0xc8a,0xa8a,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8,8,8,8,8,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,6,6,6,0x1b, +0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6, +6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0, +0,0,0,0,0x16b,0x26b,0x36b,0x46b,0x56b,0x66b,0x76b,0x86b,0x96b,0xa6b,0x146b,0x1e6b, +0x286b,0x326b,0x3c6b,0x466b,0x506b,0x5a6b,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,2,2,2,2,2,2,2,0,2,2,2,2,2,2, +2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,0,1,1,0,0,1,0, +0,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1, +1,1,2,2,2,2,0,2,0,2,2,2,2,2,2,2, +0,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, +1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1, +1,0,1,1,1,1,1,1,1,0,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,1,1,0,1,1,1,1,0,1,1,1,1, +1,0,1,0,0,0,1,1,1,1,1,1,1,0,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, +2,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,0x18,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,0x18,2,2,2,2,2,2,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x18,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,0x18,2,2, +2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,2,2,2,0x18,2,2,2,2,2,2,1,2, +0,0,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x29,0x129,0x229,0x329, +0x429,0x529,0x629,0x729,0x829,0x929,0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929, +0x29,0x129,0x229,0x329,0x429,0x529,0x629,0x729,0x829,0x929,0x29,0x129,0x229,0x329,0x429,0x529, +0x629,0x729,0x829,0x929,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,5,0x765,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,0x465,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,0x465,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x465,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x565,5,5,5,5,5,5,5,5,5,5, +5,0x565,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x565,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x565,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x665,5,5,5,5,5, -0x6465,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x665,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x765,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x765,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x765,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x865,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x965,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x965,0x1465, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x965,5,5,5,5,5,5,5,5,5, -0xa65,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x11a5, -5,0xa65,5,0x11a5,0x1465,0x1e65,5,5,5,5,5,5,0x2865,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0xa65,5, 5,5,5,0x1e65,5,5,5,5,5,5,5,5,0x2865,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,0x2865,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x665,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x365,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x6465,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x365,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x6465,5,5,0x11a5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x365,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x12a5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0x16a5,5,5,5,5,0x16a5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x1aa5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x820,0x840,0x860,0,0,0,0,0,0x880,0x8a0,0,0, +5,5,5,0x365,5,5,5,5,5,5,5,5,5,5,5,5, +5,0x465,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x965,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0,0x10,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x8c0,0x8e0,0,0,0,0,0,0,0x900,0,0,0, -0x920,0x940,0x960,0x940,0x940,0x940,0x940,0x940,0x980,0x940,0x9a0,0x940,0x940,0x940,0x9c0,0x940, -0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x9e0,0x940,0x940,0x940,0x940,0x940,0x940,0x940, -0x940,0x940,0x940,0x940,0x940,0xa00,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xa20,0,0xa40,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xa60,0xa60,0xa60,0xa60, -0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60, -0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa80 +0,0,0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0x11,0x11,0,0,0,0,0,0 }; -static const UTrie propsTrie={ +static const UTrie2 propsTrie={ propsTrie_index, + propsTrie_index+3512, NULL, - utrie_defaultGetFoldingOffset, - 2720, - 11616, - 0, - TRUE + 3512, + 11792, + 0xa40, + 0xe38, + 0x0, + 0x0, + 0x110000, + 0x3bc4, }; -static const uint16_t propsVectorsTrie_index[18316]={ -0x2b0,0x2b8,0x2c0,0x2c8,0x2d0,0x2d8,0x2e0,0x2e8,0xa6f,0xa76,0xa7e,0xa85,0xa8d,0xa95,0xa9d,0xaa5, -0xaac,0xe50,0xab4,0xab8,0xabb,0xac1,0xac9,0xad1,0xcf9,0xcf9,0xd01,0x340,0x348,0x350,0xae1,0xad9, -0xb15,0xd09,0xaf1,0xaf9,0xae9,0xaff,0xb07,0xb0d,0xfaa,0x358,0x35d,0x365,0x36c,0xb1d,0x374,0x37a, -0x382,0x38a,0x392,0xb2d,0xb3d,0xb3f,0xb25,0xb35,0x39a,0xe58,0x3a2,0x1067,0xe60,0x3aa,0x10e7,0x978, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x3b2,0x3b8,0x3c0,0x3c8,0x3d0,0x3d6,0x3de,0x3e6, -0x3ee,0x3f4,0x3fc,0x404,0x40c,0x412,0x41a,0x422,0x42a,0x430,0x438,0x440,0x448,0x450,0x458,0x45f, -0x467,0x46d,0x475,0x47d,0x485,0x48b,0x493,0x49b,0x4a3,0x4a9,0x4b1,0x4b9,0x4c1,0x4c8,0x4d0,0x4d8, -0x4e0,0x4e4,0x4ec,0x4f3,0x4fb,0x503,0x50b,0x513,0xdfa,0xe02,0x51b,0x523,0x52b,0x533,0x53b,0x541, -0xe78,0xe68,0xe70,0x111c,0x549,0xb47,0x551,0x555,0xd5f,0xd5f,0x55d,0xb57,0xb58,0x565,0xb4f,0x567, -0xe80,0xe82,0x56f,0xe82,0x577,0x57c,0x584,0xe87,0x58a,0xe82,0x590,0x598,0x910,0xe8f,0xe8f,0x5a0, -0x5a8,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97, -0xe97,0xe97,0xe97,0x5ad,0x5b5,0xe9f,0xe9f,0x5bd,0x830,0x838,0x840,0x848,0xeaf,0xea7,0x5c5,0x5cd, -0x5d5,0xeb7,0xebf,0x5dd,0xeb7,0x2f0,0x2a8,0x2a8,0x858,0x860,0x868,0x86d,0x1097,0x943,0x94b,0xff7, -0x8e0,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x10ef,0x10f4,0x980,0x988,0x1130,0x9d2,0x2a8,0x2a8, -0x1138,0x9da,0x9e2,0x1140,0x2a8,0x2a8,0x2a8,0x2a8,0x1017,0xfff,0x100f,0x1007,0x10af,0x10a7,0x106f,0x8f0, -0xb60,0xb60,0xb60,0xb60,0xb63,0xb60,0xb60,0xb6b,0x5e5,0xb73,0x5e9,0x5f1,0xb73,0x5f9,0x601,0x609, -0xb83,0xb7b,0xb8b,0x611,0x619,0x621,0x627,0x62f,0xb93,0xb9b,0x637,0xba3,0x63f,0xbab,0xbb2,0xbba, -0xbc2,0xbca,0xbd2,0xbda,0xbe2,0xbe9,0xbf1,0xbf9,0xc01,0xc09,0xc0c,0xc0e,0xec7,0xf9c,0xfa2,0x647, -0xc16,0x64f,0x657,0xd11,0xd16,0xd19,0xd1f,0xc1e,0xd27,0xd27,0xc2e,0xc26,0xc36,0xc3e,0xc46,0xc4e, -0xc56,0xc5e,0xc66,0xc6e,0x65f,0x667,0x66f,0x670,0x678,0x67e,0x686,0x68e,0x696,0x69c,0x850,0xfb2, -0xecf,0xecf,0xecf,0xecf,0xecf,0xecf,0xecf,0xecf,0xfba,0xfba,0xfba,0xfba,0xfc2,0xfc9,0xfcb,0xfd2, -0xfda,0xfde,0xfde,0xfe1,0xfde,0xfde,0xfe7,0xfde,0x101f,0x10df,0x875,0x87b,0x87b,0x87b,0x87b,0x87b, -0x1087,0x920,0x924,0x990,0x1077,0x1077,0x1077,0x8f8,0x107f,0x918,0x10c7,0x968,0x900,0x908,0x908,0x1148, -0x10b7,0x95b,0x960,0x960,0x6a4,0xed7,0xed7,0x6ac,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0x6b4,0x2f4, -0xd47,0xc76,0x6bc,0xd67,0x6c4,0xd77,0xd7f,0xd6f,0x6cc,0x6d1,0xd87,0xd8e,0x6d6,0x6de,0x10d7,0x8e8, -0x6e6,0xd9e,0x6ee,0xd96,0xdab,0xdaf,0xda3,0x6f6,0xdd6,0xdd6,0xdb7,0xdbd,0xdcd,0xdcd,0xdce,0xdc5, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7, -0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0xee7,0x6fe,0x1027,0x1027, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde, -0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xdde,0xde5,0x706,0x707, -0xeef,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5, -0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5,0xef5, -0xef5,0xef5,0xef5,0xef5,0x70f,0xefd,0x2fc,0x2a8,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154, -0x1150,0x9ea,0x115c,0x9f2,0x9fa,0x2a8,0x2a8,0x2a8,0x108f,0x10fc,0x1124,0x1128,0x998,0x99c,0x99c,0x99e, -0x10bf,0x304,0x1104,0x9a6,0x1164,0x1167,0xa02,0x2a8,0x1177,0x116f,0xa0a,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x117f,0xa12,0xa1a,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43, -0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45, -0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47, -0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42, -0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44, -0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46, -0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48, -0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43, -0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45, -0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47, -0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42, -0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44, -0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46, -0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48, -0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43, -0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45, -0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47, -0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42, -0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44, -0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46, -0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48, -0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0xe48,0xe42,0xe43,0xe44,0xe45,0xe46,0xe47,0x30c,0x2a8,0x2a8, -0x119f,0x11a2,0x11aa,0x11b0,0x11b8,0x11b9,0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1, -0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1,0x2a8,0x11c1,0x11c9,0x11c1,0x11d1,0x11d2,0x11da,0x11db, -0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a, -0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a,0xe1a, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, -0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xded,0xded,0xded,0xded,0xded,0xded,0xded,0xded, -0xdf2,0x717,0xfef,0x71d,0x10cf,0x10cf,0x721,0x728,0x730,0x738,0x740,0xc96,0xc9d,0x748,0x74d,0xca5, -0xcd6,0xcd6,0xc86,0xc8e,0xcad,0xccd,0xcce,0xcde,0xcb5,0xc7e,0x755,0xcbd,0x75d,0xcc5,0x765,0x769, -0x970,0x771,0x779,0x781,0xce6,0xcec,0xcf1,0x789,0x799,0xd4f,0xd57,0xd3f,0xd37,0x7a1,0x7a9,0x791, -0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a, -0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe12,0xe12,0xe12,0xe12, -0x883,0x88a,0x892,0x89a,0x102f,0x102f,0x102f,0x8a2,0x8aa,0x8ad,0x105f,0x1057,0x8d8,0xa22,0xa26,0xa2a, -0x2a8,0x2a8,0x2a8,0x2a8,0xa32,0x1187,0xa3a,0x2a8,0x7b1,0x7b9,0x314,0x2a8,0x8b5,0x109f,0x953,0x2a8, -0xf12,0xf05,0xf0a,0x1037,0x8bd,0x31c,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x8c5,0x8c8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x9ae,0xa42,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x92c,0x933,0x93b,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c, -0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x110c,0x9b6,0x9ba,0x9ba,0x9ba,0x9ba, -0x1114,0x1114,0x1114,0x9c2,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0xf1a,0xf1a,0xf1a,0xf1a,0xf1a,0xf1a,0xf1a,0x7c1,0xf2a,0x7c9,0xf2b,0xf22,0xf33,0xf39,0x7d1,0x7d9, -0x104f,0x104f,0x324,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x103f,0x103f,0x8d0,0x9ca,0x2a8,0x2a8,0x2a8,0x2a8, -0xf6a,0xf71,0x7e1,0xf74,0x7e9,0x7f1,0x7f9,0xf6e,0x801,0x809,0x811,0xf73,0xf7b,0xf6a,0xf71,0xf6d, -0xf74,0xf7c,0xf6b,0xf72,0xf6e,0x818,0xf41,0xf49,0xf50,0xf57,0xf44,0xf4c,0xf53,0xf5a,0x820,0xf62, -0x118f,0xa4a,0x1197,0x1197,0xa4e,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8, -0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x2a8,0x328, -0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c, -0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c, -0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c, -0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xf8c,0xa5f,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, -0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, -0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, -0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94,0xf94, -0xa67,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, -0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, -0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa57, -0x828,0xf84,0xf84,0xf84,0x330,0x330,0x330,0x330,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x338, -0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330, -0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330, -0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330, -0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32, -0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32, -0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32, -0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe32,0xe22, -0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a, -0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a, -0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a, -0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe2a, +static const uint16_t propsVectorsTrie_index[18096]={ +0x366,0x36e,0x376,0x37e,0x396,0x39e,0x3a6,0x3ae,0x3b6,0x3be,0x3c6,0x3ce,0x3d6,0x3de,0x3e6,0x3ee, +0x3f5,0x3fd,0x405,0x40d,0x410,0x418,0x420,0x428,0x430,0x438,0x440,0x448,0x450,0x458,0x460,0x468, +0x470,0x478,0x47f,0x487,0x48f,0x497,0x49f,0x4a7,0x4af,0x4b7,0x4bc,0x4c4,0x4cb,0x4d3,0x4db,0x4e3, +0x4eb,0x4f3,0x4fb,0x503,0x50a,0x512,0x51a,0x522,0x52a,0x532,0x53a,0x542,0x54a,0x552,0x55a,0x562, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x56a,0x570,0x578,0x580,0x588,0x58e,0x596,0x59e, +0x5a6,0x5ac,0x5b4,0x5bc,0x5c4,0x5ca,0x5d2,0x5da,0x5e2,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x617, +0x61f,0x625,0x62d,0x635,0x63d,0x643,0x64b,0x653,0x65b,0x661,0x669,0x671,0x679,0x680,0x688,0x690, +0x698,0x69c,0x6a4,0x6ab,0x6b3,0x6bb,0x6c3,0x6cb,0x6d3,0x6db,0x6e3,0x6eb,0x6f3,0x6fb,0x703,0x709, +0x711,0x719,0x721,0x729,0x731,0x739,0x740,0x744,0x74c,0x74c,0x74e,0x756,0x757,0x75f,0x761,0x763, +0x76b,0x76d,0x774,0x76d,0x77c,0x772,0x784,0x78a,0x78f,0x76d,0x795,0x79d,0x7a5,0x7ad,0x7ad,0x7b0, +0x7b8,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9, +0x7b9,0x7b9,0x7b9,0x7be,0x7c6,0x7ce,0x7ce,0x7d4,0x7dc,0x7e4,0x7ec,0x7f4,0x7fc,0x804,0x80c,0x814, +0x81c,0x824,0x82c,0x82e,0x824,0x836,0x386,0x386,0x83e,0x846,0x84e,0x853,0x85b,0x861,0x869,0x871, +0x879,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x881,0x886,0x88e,0x896,0x89e,0x8a6,0x386,0x386, +0x8ae,0x8b5,0x8bd,0x8c4,0x386,0x386,0x386,0x386,0x8cc,0x8d3,0x8da,0x8e2,0x8ea,0x8f1,0x8f9,0x900, +0x908,0x908,0x908,0x908,0x90b,0x908,0x908,0x913,0x91b,0x923,0x92b,0x933,0x923,0x93b,0x943,0x94b, +0x953,0x95b,0x963,0x96b,0x973,0x97b,0x981,0x989,0x991,0x999,0x9a1,0x9a9,0x9b1,0x9b8,0x9bf,0x9c7, +0x9cf,0x9d7,0x9df,0x9e7,0x9ef,0x9f6,0x9fe,0xa06,0xa0e,0xa16,0xa19,0xa1b,0xa23,0xa2a,0xa30,0xa38, +0xa40,0xa47,0xa4f,0xa57,0xa5c,0xa5f,0xa65,0xa6b,0xa73,0xa73,0xa78,0xa7c,0xa84,0xa8c,0xa94,0xa9c, +0xaa4,0xaac,0xab4,0xabc,0xac4,0xacc,0xad4,0xad5,0xadd,0xae3,0xaeb,0xaf3,0xafb,0xb01,0xb09,0xb10, +0xb18,0xb18,0xb18,0xb18,0xb18,0xb18,0xb18,0xb18,0xb20,0xb20,0xb20,0xb20,0xb28,0xb2f,0xb31,0xb38, +0xb40,0xb44,0xb44,0xb47,0xb44,0xb44,0xb4d,0xb44,0xb55,0xb5d,0xb64,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb72,0xb77,0xb7b,0xb83,0xb8b,0xb8b,0xb8b,0xb92,0xb9a,0xba1,0xba5,0xbac,0xbb4,0xbbc,0xbbc,0xbc4, +0xbcc,0xbd4,0xbd9,0xbd9,0xbe1,0xbe9,0xbe9,0xbed,0xbf5,0xbf5,0xbf5,0xbf5,0xbf5,0xbf5,0xbf8,0xc00, +0xc08,0xc10,0xc18,0xc20,0xc28,0xc30,0xc38,0xc40,0xc48,0xc4d,0xc52,0xc59,0xc5e,0xc66,0xc6e,0xc75, +0xc7d,0xc85,0xc8c,0xc94,0xc9c,0xca0,0xca8,0xcac,0xcb4,0xcb4,0xcb6,0xcbc,0xcc3,0xcc3,0xcc4,0xccc, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4, +0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd4,0xcd7,0xcdf,0xcdf, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7, +0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xcee,0xcf5,0xcf6, +0xcfe,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04, +0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04,0xd04, +0xd04,0xd04,0xd04,0xd04,0xd09,0xd11,0xd19,0x386,0xd21,0xd21,0xd21,0xd21,0xd21,0xd21,0xd21,0xd21, +0xd26,0xd2e,0xd36,0xd3e,0xd46,0x386,0x386,0x386,0xd4e,0xd56,0xd5b,0xd5f,0xd67,0xd6b,0xd6b,0xd6d, +0xd75,0xd7d,0xd85,0xd88,0xd90,0xd93,0xd9a,0x386,0xda2,0xda9,0xdb0,0x386,0x386,0x386,0x386,0x386, +0xdb8,0xdbe,0xdc6,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf, +0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1, +0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3, +0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce, +0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0, +0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2, +0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4, +0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf, +0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1, +0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3, +0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce, +0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0, +0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2, +0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4, +0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf, +0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1, +0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3, +0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce, +0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0, +0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2, +0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4, +0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xdd4,0xdce,0xdcf,0xdd0,0xdd1,0xdd2,0xdd3,0xddb,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3, +0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3,0xdf3, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xe03,0xe03,0xe03,0xe03,0xe03,0xe03,0xe03,0xe03, +0xe08,0xe10,0xe14,0xe1a,0xe1e,0xe1e,0xe20,0xe27,0xe2f,0xe37,0xe3f,0xe44,0xe4b,0xe53,0xe58,0xe60, +0xe68,0xe68,0xe69,0xe71,0xe74,0xe7a,0xe7b,0xe83,0xe89,0xe8e,0xe96,0xe9e,0xea6,0xeae,0xeb6,0xeba, +0xec2,0xeca,0xed2,0xeda,0xee2,0xee8,0xeed,0xef2,0xefa,0xf02,0xf0a,0xf12,0xf17,0xf1f,0xf27,0xf2f, +0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3, +0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xdeb,0xdeb,0xdeb,0xdeb, +0xe18,0xe18,0xe58,0xe98,0xed8,0xf18,0xf58,0xf98,0xfd4,0x1014,0x1040,0x1080,0x10c0,0x1100,0x1140,0x1180, +0x11c0,0x11fc,0x123c,0x127c,0x12bc,0x12f0,0x132c,0x136c,0x13ac,0x13ec,0x1428,0x1468,0x14a8,0x14e8,0x1528,0x1568, +0xa80,0xac0,0xa40,0xa40,0xb00,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb40,0xa40,0xa40,0xa40,0xb80,0xb85, +0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5,0xbc5, +0xbc5,0xbc5,0xbc5,0xbc5,0xbcf,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc46, +0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, +0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc86, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xcc6,0xcd6,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xb85, +0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16, +0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd16,0xd17, +0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57, +0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd57,0xd58, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0xf37,0xf3e,0xf46,0xf4e,0xf56,0xf56,0xf56,0xf58,0xf60,0xf63,0xf6b,0xf6e,0xf74,0xf7b,0xf7f,0xf83, +0x386,0x386,0x386,0x386,0xf8b,0xf93,0xf97,0x386,0xf9f,0xfa7,0xfad,0x386,0xfb5,0xfbd,0xfc4,0x386, +0xfcc,0xfd3,0xfd8,0xfdc,0xfe4,0xfec,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0xff4,0xff7,0x386,0x386,0x386,0x386,0x386,0x386,0xfff,0x1007,0x386,0x386,0x386,0x386,0x386,0x386, +0x100f,0x1016,0x101e,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026, +0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x102b,0x102f,0x102f,0x102f,0x102f, +0x1037,0x1037,0x1037,0x103f,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x104a,0x1052,0x1059,0x105c,0x1064,0x106c,0x1072,0x107a,0x1082, +0x108a,0x108a,0x1092,0x386,0x386,0x386,0x386,0x386,0x109a,0x109a,0x109d,0x10a5,0x386,0x386,0x386,0x386, +0x10ad,0x10b4,0x10b9,0x10bf,0x10c7,0x10cf,0x10d7,0x10b1,0x10df,0x10e7,0x10ef,0x10f4,0x10c6,0x10ad,0x10b4,0x10b0, +0x10bf,0x10fc,0x10ae,0x10ff,0x10b1,0x1107,0x110f,0x1117,0x111e,0x110a,0x1112,0x111a,0x1121,0x110d,0x1129,0x112d, +0x1135,0x113a,0x113e,0x113e,0x1141,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386,0x386, +0x386,0x386,0x386,0x386,0x1149,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151, +0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151, +0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151, +0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151,0x1151, +0x1151,0x1151,0x1151,0x1151,0x1151,0x1154,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164, +0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1165,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x116d,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c,0x115c, +0x115c,0x115c,0x115c,0x115c,0x115c,0x116d,0x1175,0x117d,0x117d,0x117d,0x1185,0x1185,0x1185,0x1185,0x118d,0x118d, +0x118d,0x118d,0x118d,0x118d,0x118d,0x1191,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199, +0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199, +0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199, +0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x1199, +0x1199,0x1199,0x1199,0x1199,0x1199,0x1199,0x119a,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2, +0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2, +0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2, +0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2, +0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a3,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180, +0x180,0x183,0x18c,0x186,0x186,0x189,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180, +0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x6b4,0x6ae,0x690,0x67b,0x687,0x684,0x67b,0x693, +0x681,0x67e,0x67b,0x6a5,0x69c,0x68d,0x6b1,0x68a,0x678,0x678,0x678,0x678,0x678,0x678,0x678,0x678, +0x678,0x678,0x699,0x696,0x69f,0x69f,0x69f,0x6ae,0x67b,0x6c0,0x6c0,0x6c0,0x6c0,0x6c0,0x6c0,0x6ba, +0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba, +0x6ba,0x6ba,0x6ba,0x681,0x687,0x67e,0x6ab,0x675,0x6a8,0x6bd,0x6bd,0x6bd,0x6bd,0x6bd,0x6bd,0x6b7, +0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7, +0x6b7,0x6b7,0x6b7,0x681,0x6a2,0x67e,0x69f,0x180,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x183,0x18c,0x186,0x186,0x189,0x180,0x180, -0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180, -0x6b4,0x6ae,0x690,0x67b,0x687,0x684,0x67b,0x693,0x681,0x67e,0x67b,0x6a5,0x69c,0x68d,0x6b1,0x68a, -0x678,0x678,0x678,0x678,0x678,0x678,0x678,0x678,0x678,0x678,0x699,0x696,0x69f,0x69f,0x69f,0x6ae, -0x67b,0x6c0,0x6c0,0x6c0,0x6c0,0x6c0,0x6c0,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba, -0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x681,0x687,0x67e,0x6ab,0x675, -0x6a8,0x6bd,0x6bd,0x6bd,0x6bd,0x6bd,0x6bd,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7, -0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x681,0x6a2,0x67e,0x69f,0x180, -0x18f,0x18f,0x18f,0x18f,0x18f,0x19e,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x18f,0x18f,0x18f,0x18f,0x18f,0x19e,0x18f,0x18f, 0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f, -0x192,0x513,0x6c9,0x6cc,0x519,0x6cc,0x6c6,0x50d,0x504,0x198,0x522,0x19b,0x6cf,0x4fb,0x510,0x6c3, -0x516,0x51f,0x501,0x501,0x507,0x195,0x50d,0x50a,0x504,0x501,0x522,0x19b,0x4fe,0x4fe,0x4fe,0x513, -0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x52b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4, -0x52b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x51c,0x52b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x52b,0x525, -0x528,0x528,0x1a1,0x1a1,0x1a1,0x1a1,0x525,0x1a1,0x528,0x528,0x528,0x1a1,0x528,0x528,0x1a1,0x1a1, -0x525,0x1a1,0x528,0x528,0x1a1,0x1a1,0x1a1,0x51c,0x525,0x528,0x528,0x1a1,0x528,0x1a1,0x525,0x1a1, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x909,0xdef,0x5a,0x5a,0x5a,0x5a,0x5a, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x96c,0x96c,0x96f,0x96f,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x84,0x84,0x84,0x84, -0x984,0xab9,0x984,0x984,0x984,0xab9,0x984,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xcae,0xcae,0xcae,0xcab,0xcab,0xca2,0xca2,0xcab,0xca8,0xca8,0xca8,0xca8,0x129,0x129,0x129,0x129, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x810,0x810,0x810,0x810,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0xc0,0xc0,0xc0,0xc0,0xc0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xc27,0xc27,0xc24,0xc24,0xc24,0xc27,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7b0,0x7b0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x192,0x513,0x6c9,0x6cc,0x519,0x6cc,0x6c6,0x50d, +0x504,0x198,0x522,0x19b,0x6cf,0x4fb,0x510,0x6c3,0x516,0x51f,0x501,0x501,0x507,0x195,0x50d,0x50a, +0x504,0x501,0x522,0x19b,0x4fe,0x4fe,0x4fe,0x513,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x52b,0x1a4, +0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x52b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x51c, +0x52b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x52b,0x525,0x528,0x528,0x1a1,0x1a1,0x1a1,0x1a1,0x525,0x1a1, +0x528,0x528,0x528,0x1a1,0x528,0x528,0x1a1,0x1a1,0x525,0x1a1,0x528,0x528,0x1a1,0x1a1,0x1a1,0x51c, +0x525,0x528,0x528,0x1a1,0x528,0x1a1,0x525,0x1a1,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7, +0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1ad,0x52e,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7, +0x1b0,0x1a7,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e, +0x1b0,0x1a7,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x52e,0x53a,0x534,0x1b0,0x1a7,0x1b0,0x1a7, +0x52e,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x53a,0x534,0x537,0x52e,0x1b0,0x531,0x1b0,0x1a7,0x1b0, +0x531,0x534,0x537,0x52e,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e,0x1b0,0x1a7,0x1b0,0x1a7, +0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e, +0x1b0,0x1a7,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7, +0x1b0,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1aa,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf,0x1bf, +0x1b3,0x1bf,0x1bf,0x1bf,0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1bf,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1bf, +0x1bf,0x1b3,0x1b3,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1c2,0x1b6,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf,0x1bf, +0x1b3,0x1bf,0x1b3,0x1b3,0x1bf,0x1b3,0x1bf,0x1c2,0x1b6,0x1bf,0x1bf,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf, +0x1bf,0x1b3,0x1b3,0x1bc,0x1bf,0x1b3,0x1b3,0x1b3,0x1bc,0x1bc,0x1bc,0x1bc,0x1c5,0x1c5,0x1b9,0x1c5, +0x1c5,0x1b9,0x1c5,0x1c5,0x1b9,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2, +0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1b3,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1bf,0x1b3,0x1c2,0x1b6, +0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1b6,0x1c5,0x1c5,0x1b9,0x1c2,0x1b6,0x81f,0x81f, +0x822,0x81c,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6, +0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x822,0x81c,0x822,0x81c, +0x81f,0x819,0x822,0x81c,0x9cf,0xac5,0x81f,0x819,0x81f,0x819,0x822,0x81c,0x822,0x81c,0x822,0x81c, +0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0xac5,0xac5,0xac5,0xbb2,0xbb2,0xbb2,0xbb5,0xbb5, +0xbb2,0xbb5,0xbb5,0xbb2,0xbb2,0xbb5,0xce4,0xce7,0xce7,0xce7,0xce7,0xce4,0xce7,0xce4,0xce7,0xce4, +0xce7,0xce4,0xce7,0xce4,0x1c8,0x540,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x540,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x1c8,0x1c8,0x1c8,0x1c8,0x1cb,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x825,0x825,0x825,0x825,0x825,0xac8,0xac8, +0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7, +0x1d4,0x1d4,0x1ce,0x1ce,0x546,0x1ce,0x1d7,0x549,0x1da,0x549,0x549,0x549,0x1da,0x549,0x1d7,0x1d7, +0x54c,0x1dd,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x543,0x543,0x543,0x543,0x1d1,0x543,0x1ce,0x95a, +0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x828,0x828,0x82b,0x828,0x82b,0xacb, +0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb, +0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, +0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, +0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, +0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, +0x55b,0x55b,0x54f,0x552,0x552,0x558,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0xa86, +0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xcb7,0xcb7,0xcb7,0xcb7,0xcba,0xb94,0xb94,0xb94, 0x555,0x555,0x960,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83, 0xd92,0xd8f,0xd92,0xd8f,0x1ec,0x1f5,0xd92,0xd8f,6,6,0x1fb,0xcea,0xcea,0xcea,0x1e3,6, 6,6,6,6,0x1f8,0x1e6,0x20a,0x1e9,0x20a,0x20a,0x20a,6,0x20a,6,0x20a,0x20a, 0x201,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x561, 0x561,0x561,6,0x561,0x561,0x561,0x561,0x561,0x561,0x561,0x20a,0x20a,0x201,0x201,0x201,0x201, 0x201,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e, -0xe10,0xe0d,0xe10,0xe0d,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, -9,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234, -0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,9,9,0x237,0x228,0x228, -0x23a,0x22b,0x23a,0x228,9,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e, +0x55e,0x55e,0x1fe,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x201,0x201,0x201,0x201,0x201,0xd92, +0x20d,0x20d,0x210,0x20a,0x20a,0x20d,0x204,0x82e,0x9d8,0x9d5,0x207,0x82e,0x207,0x82e,0x207,0x82e, +0x207,0x82e,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef, +0x20d,0x20d,0x204,0x1fe,0x98a,0x987,0x9d2,0xad1,0xace,0xad4,0xad1,0xace,0xbb8,0xbbb,0xbbb,0xbbb, +0x83d,0x56d,0x21f,0x222,0x21f,0x21f,0x21f,0x222,0x21f,0x21f,0x21f,0x21f,0x222,0x83d,0x222,0x21f, +0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56d,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a, +0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a, +0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x567,0x564,0x564,0x564,0x564,0x564,0x564, +0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x837,0x567,0x219,0x21c, +0x219,0x219,0x219,0x21c,0x219,0x219,0x219,0x219,0x21c,0x837,0x21c,0x219,0x21f,0x219,0x21f,0x219, +0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, +0x21f,0x219,0x222,0x21c,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x216,0x213, +0x213,0x213,0x213,0xd95,0x831,0x831,0x9de,0x9db,0x83a,0x834,0x83a,0x834,0x21f,0x219,0x21f,0x219, +0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, +0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, +0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x222,0x21c,0x21f, +0x219,0x9de,0x9db,0x21f,0x219,0x9de,0x9db,0x21f,0x219,0x9de,0x9db,0xced,0x222,0x21c,0x222,0x21c, +0x21f,0x219,0x222,0x21c,0x21f,0x219,0x222,0x21c,0x222,0x21c,0x222,0x21c,0x21f,0x219,0x222,0x21c, +0x222,0x21c,0x222,0x21c,0x21f,0x219,0x222,0x21c,0x83d,0x837,0x222,0x21c,0x222,0x21c,0x222,0x21c, +0x222,0x21c,0xbc1,0xbbe,0x222,0x21c,0xcf0,0xced,0xcf0,0xced,0xcf0,0xced,0xa44,0xa41,0xa44,0xa41, +0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xd1d,0xd1a,0xd1d,0xd1a, +0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d, +0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,9,0x234,0x234,0x234, +0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234, +0x234,0x234,0x234,0x234,0x234,0x234,0x234,9,9,0x237,0x228,0x228,0x23a,0x22b,0x23a,0x228, +9,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e, 0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e, -0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x231,9,0x225,0x840,9,9,9,9,9, -0xc,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3, -0x240,0x23d,0x23d,0x24c,0x7b6,0xbc7,0xbca,0xbc7,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0x22e,0x22e,0x22e,0x231,9,0x225,0x840,9,9,9,9,9,0xc,0x7b3,0x7b3,0x7b3, +0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0xbc4,0x7b3, +0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x23d,0x23d,0x23d,0x23d, +0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0xcf3,0x23d,0x23d,0x23d,0x249,0x23d,0x240,0x23d,0x23d,0x24c, +0x7b6,0xbc7,0xbca,0xbc7,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x24f,0x24f,0x24f,0x24f, 0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f, -0x24f,0x24f,0x24f,0xc,0xc,0xc,0xc,0xc,0x24f,0x24f,0x24f,0x246,0x243,0xc,0xc,0xc, -0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xad7,0xad7,0xad7,0xad7,0xf,0xf,0xd9e,0xd9e, -0xd9e,0xd9b,0xd9b,0xbd3,0x258,0xae6,0xae3,0xae3,0xada,0xada,0xada,0xada,0xada,0xada,0xd98,0xd98, -0xd98,0xd98,0xd98,0x255,0xf,0xf,0xbd0,0x261,0xf,0x282,0x285,0x285,0x285,0x285,0x285,0x282, +0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0xc,0xc,0xc,0xc,0xc,0x24f,0x24f,0x24f,0x246, +0x243,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xad7,0xad7,0xad7,0xad7, +0xf,0xf,0xd9e,0xd9e,0xd9e,0xd9b,0xd9b,0xbd3,0x258,0xae6,0xae3,0xae3,0xada,0xada,0xada,0xada, +0xada,0xada,0xd98,0xd98,0xd98,0xd98,0xd98,0x255,0xf,0xf,0xbd0,0x261,0xf,0x282,0x285,0x285, +0x285,0x285,0x285,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, +0x282,0x282,0x282,0x282,0x282,0x282,0x282,0xda1,0xda1,0xda1,0xda1,0xda1,0x25e,0x282,0x282,0x282, +0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x843, +0x843,0x843,0xada,0xae0,0xadd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xf,0x25b,0x25b,0x25b,0x25b, +0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x27c,0x279,0x276,0x273,0x9e1,0x9e1,0x264,0x282,0x282,0x282, +0x282,0x288,0x288,0x288,0x288,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, 0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0xda1,0xda1,0xda1,0xda1,0xda1,0x25e,0x282,0x282,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x843,0x843,0x843,0xada,0xae0, -0xadd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xf,0x861,0x861,0x861,0x85b,0x85b,0x85b,0x85b,0x85b, +0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, +0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, +0x849,0x849,0x282,0x282,0x282,0x282,0x282,0x849,0x285,0x282,0x285,0x282,0x282,0x282,0x282,0x282, +0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x849,0x282,0x282,0x282,0x285,0x28e,0x282,0x26d,0x26d, +0x26d,0x26d,0x26d,0x26d,0x26d,0x252,0x26a,0x270,0x270,0x26d,0x26d,0x26d,0x26d,0x28b,0x28b,0x26d, +0x26d,0x273,0x270,0x270,0x270,0x26d,0xae9,0xae9,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f, +0x27f,0x27f,0x849,0x849,0x849,0x846,0x846,0xae9,0x861,0x861,0x861,0x85b,0x85b,0x85b,0x85b,0x85b, 0x85b,0x85b,0x85b,0x858,0x85b,0x858,0x12,0x84c,0x85e,0x84f,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852, +0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, +0x85e,0x85e,0x85e,0x85e,0x85e,0xaec,0xaec,0xaec,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855, +0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852, 0x852,0x852,0x852,0x12,0x12,0xaec,0xaec,0xaec,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30, -0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0x867,0x867,0x867,0x867,0x867,0x867,0x864,0x864, +0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30, +0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22, +0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867, +0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867, +0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x864,0x864, 0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x9e4,0x15,0x15,0x15,0x15,0x15,0x15, -0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x18,0x29a,0x29a,0x2a6,0xaef,0x2a9,0x2a9,0x2a9, +0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35, +0xd35,0xd35,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38, +0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38, +0xd38,0xd38,0xd38,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd3b,0xd3b,0xd2f,0xd2f, +0xd32,0xd41,0xd3e,0x132,0x132,0x132,0x132,0x132,0x18,0x29a,0x29a,0x2a6,0xaef,0x2a9,0x2a9,0x2a9, 0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, 0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2ac,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, 0x2a9,0x2ac,0x2a9,0x2a9,0x2ac,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x18,0x18,0x29d,0x2a9,0x2a6,0x2a6, @@ -1247,7 +1422,11 @@ static const uint16_t propsVectorsTrie_index[18316]={ 0x399,0x39,0x396,0x39,0x384,0x384,0x384,0x384,0x384,0x381,0x39,0x39,0x387,0x387,0x387,0x387, 0x387,0x387,0x387,0x387,0x387,0x387,0x39,0x39,0x390,0x390,0x39,0x39,0x39,0x39,0x39,0x39, 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, -0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x7ec,0x7ec,0x7ec,0x7ef, +0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x7ec,0x7ce,0x7ce,0x7ce, +0x7ce,0x7c8,0x7ce,0x7ce,0x7e0,0x7ce,0x7ce,0x7cb,0x7d7,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7e0,0x7c8, +0x7d4,0x7c8,0x7c8,0x7c8,0x7c2,0x7c2,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7e3,0x7e3,0x7e3,0x7e3, +0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8, +0x7cb,0x7c2,0x7c8,0x7c2,0x7c8,0x7c2,0x7da,0x7d1,0x7da,0x7d1,0x7e9,0x7e9,0x7ec,0x7ec,0x7ec,0x7ef, 0x7ec,0x7ec,0x7ec,0x7ec,0x3c,0x7ec,0x7ec,0x7ec,0x7ec,0x7ef,0x7ec,0x7ec,0x7ec,0x7ec,0x7ef,0x7ec, 0x7ec,0x7ec,0x7ec,0x7ef,0x7ec,0x7ec,0x7ec,0x7ec,0x7ef,0x7ec,0x7ec,0x7ec,0x7ec,0x7ec,0x7ec,0x7ec, 0x7ec,0x7ec,0x7ec,0x7ec,0x7ec,0x7ef,0x888,0xdd1,0xdd1,0x3c,0x3c,0x3c,0x3c,0x7b9,0x7b9,0x7bc, @@ -1259,192 +1438,57 @@ static const uint16_t propsVectorsTrie_index[18316]={ 0x882,0x882,0x87f,0x882,0x882,0x882,0x882,0x882,0x882,0x3c,0xdc8,0x882,0xbe2,0xbe2,0xdcb,0xdce, 0xdc8,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, -0x3c,0x3c,0x3c,0x3c,0xdec,0xdec,0xdd4,0xde6,0xde6,0xdd4,0xdd4,0xde9,0xde9,0xde9,0xde9,0xde9, +0x3c,0x3c,0x3c,0x3c,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d, +0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d, +0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0xdec,0x89d,0x89d,0x89d,0x8a0,0x89d,0xdec,0x89d,0x89d,0xde6, +0x89a,0x88b,0x88b,0x88b,0x88b,0x89a,0x88b,0xdd4,0xdd4,0xdd4,0x88b,0x88e,0x89a,0x891,0xdda,0xde6, +0xde6,0xdd4,0xdd4,0xdec,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x8a3,0x8a3, +0x894,0x894,0x894,0x894,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89a,0x89a,0x88b,0x88b,0xdec,0xdec, +0xdec,0xdec,0xdd4,0xdd4,0xdd4,0xdec,0xde6,0xde3,0xde3,0xdec,0xdec,0xde6,0xde6,0xde3,0xde3,0xde3, +0xde3,0xde3,0xdec,0xdec,0xdec,0xdd4,0xdd4,0xdd4,0xdd4,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec, +0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdd4,0xde6,0xde6,0xdd4,0xdd4,0xde9,0xde9,0xde9,0xde9,0xde9, 0xde9,0xdd7,0xdec,0xde9,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0x3f,0x3f, -0x3f,0x3f,0xddd,0xddd,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x42,0x42,0x42,0x42,0x42,0x42, -0x42,0x42,0x42,0x42,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f, -0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x9e7,0x9e7,0xbe5,0xbe5,0x39c, -0xbe8,0x42,0x42,0x42,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2, -0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x45,0x45, -0x45,0x45,0x45,0x6d5,0x3a8,0x3a8,0x3a8,0x45,0x45,0x45,0x45,0x45,0x3a5,0x3a5,0x3a5,0x3a5, +0x3f,0x3f,0xddd,0xddd,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2, +0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2, +0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, +0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f, +0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x9e7,0x9e7,0xbe5,0xbe5,0x39c,0xbe8,0x42,0x42,0x42, +0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2, +0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2, +0x6d2,0x6d2,0x45,0x45,0x45,0x45,0x45,0x6d5,0x3ab,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8, +0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8, +0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x45, +0x45,0x45,0x45,0x45,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5, 0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5, 0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x45,0x45,0x45,0x45,0x45,0x45,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x48,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1, -0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x48, +0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, 0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1, 0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48, 0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x48,0x48,0x48,0x48,0xbeb, -0xbee,0x8ac,0x8b5,0x8a9,0x8a9,0x8a9,0x8a9,0x8b5,0x8b5,0x8af,0x8af,0x8af,0x8af,0x8af,0x8af,0x8af, -0x8af,0x8af,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x48,0x48,0x48, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x48,0x8b2,0x8b2, +0x8b2,0x8b2,0x48,0x48,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x8b2,0x8b2,0x8b2, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x48, +0x48,0x48,0x48,0xbeb,0xbee,0x8ac,0x8b5,0x8a9,0x8a9,0x8a9,0x8a9,0x8b5,0x8b5,0x8af,0x8af,0x8af, +0x8af,0x8af,0x8af,0x8af,0x8af,0x8af,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6, +0x8a6,0x48,0x48,0x48,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57, +0xc57,0xc57,0xc57,0xc57,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0x114,0x114, +0x114,0x114,0x114,0x114,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8, 0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8, 0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b, 0x4e,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be, 0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be, -0x8be,0x8bb,0x8c1,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x4e,0x4e,0x4e,0x4e,0x4e, -0x4e,0x4e,0x4e,0x4e,0x8ca,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd, -0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8c7, -0x8c4,0x51,0x51,0x51,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d0, -0x8d0,0x8d0,0x8d3,0x8d3,0x8d3,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54, -0x54,0x54,0x54,0x54,0x8f7,0x8f7,0x8f7,0x8f7,0x8f7,0x8f7,0x8d9,0x8f7,0x8f7,0x8dc,0x8dc,0x8dc, -0x8dc,0x8dc,0x8dc,0x8dc,0x8dc,0x8dc,0x8df,0x8e2,0x8ee,0x8ee,0x8f1,0x8fa,0x8e8,0x8e5,0x8ee,0x8eb, -0x8fa,0xb13,0x57,0x57,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x57,0x57, -0x57,0x57,0x57,0x57,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0x57,0x57, -0x57,0x57,0x57,0x57,0x90c,0x90c,0x903,0x906,0x915,0x900,0x912,0x90c,0x918,0x924,0x90c,0x927, -0x927,0x927,0x90f,0x5a,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x5a,0x5a, -0x5a,0x5a,0x5a,0x5a,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x5a,0x5a,0x5a,0x5a, -0x5a,0x5a,0x5a,0x5a,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x5d,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3c3,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x3c3,0x5d,0x3c3, -0x5d,0x3c3,0x5d,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0, -0x3c0,0x3c0,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3ba,0x3c0,0x3ba,0x3ba,0x3b7,0x3c0,0x3c0,0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3b7,0x3b7,0x3b7,0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x5d,0x3b7,0x3b7,0x3b7,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3b7,0x3b7,0x3b7,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3, -0x3c3,0x3bd,0x3ba,0x5d,0x9ea,0x9ed,0x9ed,0x9ed,0xdf8,0x60,0x60,0x60,0x60,0x60,0x3cc,0x3cc, -0x3cc,0x3cc,0x3cc,0x3cc,0x414,0x9ff,0x63,0x63,0x5a3,0x414,0x414,0x414,0x414,0x414,0x41a,0x42c, -0x41a,0x426,0x420,0x5a6,0x411,0x5a0,0x5a0,0x5a0,0x5a0,0x411,0x411,0x411,0x411,0x411,0x417,0x429, -0x417,0x423,0x41d,0x63,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0x63,0x63,0x63,0x63,0x63,0x63,0x63, -0x63,0x63,0x63,0x63,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x42f,0x435,0x606,0x432,0x7f5, -0x816,0x933,0x933,0x933,0xa02,0xa02,0xbfd,0xbfd,0xbfd,0xbfd,0x66,0x66,0x66,0x66,0x66,0x66, -0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x43b,0x43b,0x43b,0x43b, -0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x438,0x438,0x438,0x438,0x43b,0x936,0x936, -0xa05,0xa0b,0xa0b,0xa08,0xa08,0xa08,0xa08,0xc00,0xcff,0xcff,0xcff,0xcff,0xdfb,0x69,0x69,0x69, -0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0xa14,0xa11,0xa11,0xa11, -0xa11,0xa1a,0xa17,0xa17,0xa17,0xa17,0xa0e,0xa11,0xc03,0xd02,0xd05,0xdfe,0x6c,0x6c,0x6c,0x5c1, -0x5be,0x45f,0x462,0x462,0x462,0x462,0x462,0x5be,0x5c1,0x5c1,0x5be,0x462,0x468,0x468,0x468,0x93f, -0xd08,0xe01,0xe01,0xe01,0xe01,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x5cd,0x5cd,0x5cd,0x5cd, -0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x474,0x474,0x471,0x471,0x471,0x471,0xd0e,0xd0e,0xd0e,0xd0b, -0xd0b,0xd0b,0xd0b,0xd0b,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, -0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x48c,0x48c,0x48c,0x48c, -0x48c,0x948,0x948,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72, -0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x48f,0x48f,0x48f,0x48f, -0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, -0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0xa32,0xa32,0xa32,0xa32, -0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xc0c,0xc0c, -0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xe04,0x78,0x78,0xb28,0xb28,0xc0c,0xc0c, -0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xd11,0xe04, -0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0x78,0x78,0x78,0xe04,0xe04,0xe04,0xe04, -0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, -0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, -0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x7b,0x4ad,0x4ad,0x4ad,0x4ad, -0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x5fd,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x7b,0x7b,0x4ad,0x7b, -0x4ad,0x4ad,0x4ad,0x4b3,0x4b3,0x4b3,0x4b3,0x7b,0x7b,0x4ad,0x4b0,0x4b0,0x4ad,0x4ad,0x4ad,0x4ad, -0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0x5fa,0x5fa, -0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa, -0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4ad,0x7b,0x7b,0x7b, -0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x7b, -0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, -0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x7e,0x963,0x963,0x963,0x963,0x966, -0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, -0x963,0x963,0x963,0x966,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, -0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969, -0x969,0x969,0x969,0x969,0x969,0x969,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, -0x87,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x714,0x717,0x714,0x717,0x714, -0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714, -0x714,0x714,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x714,0x714,0x714,0x714,0x714,0x71a,0x714, -0x714,0x714,0x714,0x714,0x717,0xaad,0xaad,0x87,0x87,0x711,0x711,0x70e,0x70e,0x71d,0x720,0xaaa, -0x8a,0x8a,0x8a,0x8a,0x8a,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, -0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, -0x738,0xf2a,0x8a,0x8a,0x8d,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, -0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x8d,0x741,0x741,0x744,0x744,0x744,0x744,0x744,0x744, -0x744,0x744,0x744,0x744,0x744,0x744,0x744,0x744,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750, -0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750, -0x750,0x750,0x750,0x750,0x750,0xba3,0xba3,0x93,0x74a,0x74a,0x74a,0x74a,0x93,0x93,0x93,0x93, -0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0xba0,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, -0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756, -0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756, -0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x93,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b, -0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x96,0x96, -0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0xf2d,0xf2d,0xf2d,0xf2d,0x99,0x99,0x99,0x99, -0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, -0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x9c,0x9c,0x9c,0x984,0x984,0x984,0x984, -0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x765,0x768,0x765,0x768, -0x768,0x765,0x765,0x768,0x768,0x768,0x765,0x765,0x765,0x765,0xa5,0xa5,0xabc,0xabc,0xabc,0xabc, -0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xa5, -0xa5,0xa5,0xa5,0xa5,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3, -0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, -0xa8,0xa8,0xa8,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0xa8,0xa8,0xa8,0xa8,0xa8,0x954,0x4bc,0x4c2, -0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4bf,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2, -0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0xa8,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0xa8,0x4c2,0xa8, -0x4c2,0x4c2,0xa8,0x4c2,0x4c2,0xa8,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c5, -0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, -0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, -0x4dd,0x4d7,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, -0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd, -0x4d7,0x4dd,0x4dd,0x4d7,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, -0xab,0xab,0xab,0xab,0x4da,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4da,0x4d7,0x4d7, -0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4da,0x4da,0x4da,0x4d7, -0x4da,0x4da,0x4da,0x4da,0xab,0xab,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4d7, -0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4d7,0x4d7,0xab,0xab,0xab,0xab, -0xab,0xab,0xab,0xab,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d, -0x98d,0x98d,0x98d,0x98d,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4d4,0x4d4, -0xa3b,0xb2b,0xab,0xab,0x4e3,0x4e3,0x4e3,0x4e3,0xe07,0xe07,0xe07,0xae,0xae,0xae,0xae,0xae, -0xae,0xae,0xae,0xae,0x771,0x777,0x777,0x783,0x783,0x774,0x76b,0x774,0x76b,0x774,0x76b,0x774, -0x76b,0x774,0x76b,0x774,0x76b,0x77d,0x77a,0x77d,0x77a,0xabf,0xabf,0xbaf,0xbac,0x76e,0x76e,0x76e, -0x76e,0x780,0x780,0x780,0x798,0x79b,0x7aa,0xb1,0x79e,0x7a1,0x7ad,0x7ad,0x795,0x78c,0x786,0x78c, -0x786,0x78c,0x786,0x789,0x789,0x7a4,0x7a4,0x7a7,0x7a4,0x7a4,0x7a4,0xb1,0x7a4,0x792,0x78f,0x789, -0xb1,0xb1,0xb1,0xb1,0x4e9,0x4f5,0x4e9,0xa3e,0x4e9,0xb4,0x4e9,0x4f5,0x4e9,0x4f5,0x4e9,0x4f5, -0x4e9,0x4f5,0x4e9,0x4f5,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef, -0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2, -0x4ec,0xb4,0xb4,0x4e6,0x63c,0x63f,0x654,0x657,0x636,0x63f,0x63f,0xba,0x60c,0x61b,0x61b,0x61b, -0x61b,0x60c,0x60c,0xba,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0x957,0x957,0x957, -0x813,0x603,0x4f8,0x4f8,0xba,0x666,0x645,0x636,0x63f,0x63c,0x636,0x648,0x639,0x633,0x636,0x654, -0x64b,0x642,0x663,0x636,0x660,0x660,0x660,0x660,0x660,0x660,0x660,0x660,0x660,0x660,0x651,0x64e, -0x654,0x654,0x654,0x666,0x627,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624, -0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624, -0x624,0x624,0x624,0xba,0xba,0xba,0x624,0x624,0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624, -0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624,0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624, -0x624,0xba,0xba,0xba,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993, -0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993, -0x993,0x993,0x993,0xbd,0x990,0x990,0x990,0x990,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd, -0xbd,0xbd,0xbd,0xbd,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996, -0x996,0x996,0x996,0x996,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f, -0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, -0xc3,0xc3,0xc3,0xc3,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0xc6,0xc6,0xe0a,0x9ab,0x9ab, -0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, -0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, -0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, -0x9ab,0x9ab,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, -0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, -0xc6,0xc6,0xc6,0xc6,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c3,0xc9,0x9c3,0x9c3,0xc9,0xc9,0x9c3,0xc9,0xc9,0x9c3,0x9c3,0xc9,0xc9,0x9c3,0x9c3,0x9c3, -0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0xc9,0x9c0, -0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0xb34,0x9c0,0x9c0,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0xc9, -0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0xc9,0x9c3, -0x9c3,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c3,0xc9,0xc9,0xc9,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0xc0f,0xc0f,0xc9,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c0,0x9c0,0x9c0,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xd17,0xd14,0xc9,0xc9,0x9bd,0x9bd, -0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, -0xcc,0x9c6,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, -0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, +0x8be,0x8be,0x8be,0x8be,0x8be,0x8bb,0x8c1,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x4e, +0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x8ca,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd, +0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd,0x8cd, +0x8cd,0x8cd,0x8cd,0x8c7,0x8c4,0x51,0x51,0x51,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3, +0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3, +0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d0,0x8d0,0x8d0,0x8d3,0x8d3, +0x8d3,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54, 0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xd2,0xa4d,0xa4d, 0xa4d,0xa4d,0xa47,0xa47,0xa4a,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2, 0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59,0xa59, @@ -1453,19 +1497,469 @@ static const uint16_t propsVectorsTrie_index[18316]={ 0xa5f,0xa5f,0xa5c,0xa5c,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, 0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xa65,0xdb,0xa65,0xa65, 0xa65,0xdb,0xa62,0xa62,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb, -0xc12,0xc12,0xc12,0xc12,0xc12,0xc18,0xc15,0xd20,0xd20,0xd20,0xd20,0xde,0xe13,0xde,0xde,0xde, -0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68, +0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, +0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, +0x8fa,0x8fa,0x8fa,0x8fd,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, +0x8fa,0x8fa,0x8fa,0x8fa,0x8d6,0x8d6,0x8f7,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8f7,0x8f7, +0x8f7,0x8f7,0x8f7,0x8f7,0x8f7,0x8f7,0x8d9,0x8f7,0x8f7,0x8dc,0x8dc,0x8dc,0x8dc,0x8dc,0x8dc,0x8dc, +0x8dc,0x8dc,0x8df,0x8e2,0x8ee,0x8ee,0x8f1,0x8fa,0x8e8,0x8e5,0x8ee,0x8eb,0x8fa,0xb13,0x57,0x57, +0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x57,0x57,0x57,0x57,0x57,0x57, +0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0x57,0x57,0x57,0x57,0x57,0x57, +0x90c,0x90c,0x903,0x906,0x915,0x900,0x912,0x90c,0x918,0x924,0x90c,0x927,0x927,0x927,0x90f,0x5a, +0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a, +0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, +0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, +0x91e,0x91e,0x91e,0x921,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, +0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, +0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, +0x91e,0x909,0xdef,0x5a,0x5a,0x5a,0x5a,0x5a,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, 0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, -0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xe1,0xe1,0xe1, -0xb37,0xb37,0xb37,0xb43,0xb43,0xb43,0xb43,0xb37,0xb37,0xb43,0xb43,0xb43,0xe1,0xe1,0xe1,0xe1, -0xb43,0xb43,0xb37,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb3a,0xb3a,0xb3a,0xe1,0xe1,0xe1,0xe1, -0xb3d,0xe1,0xe1,0xe1,0xb49,0xb49,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40, -0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c, -0xb4c,0xb4c,0xe4,0xe4,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4, -0xe4,0xe4,0xe4,0xe4,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, -0xe1f,0xe7,0xe7,0xe7,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, +0xb46,0xb46,0xb46,0xb46,0xb46,0xe1,0xe1,0xe1,0xb37,0xb37,0xb37,0xb43,0xb43,0xb43,0xb43,0xb37, +0xb37,0xb43,0xb43,0xb43,0xe1,0xe1,0xe1,0xe1,0xb43,0xb43,0xb37,0xb43,0xb43,0xb43,0xb43,0xb43, +0xb43,0xb3a,0xb3a,0xb3a,0xe1,0xe1,0xe1,0xe1,0xb3d,0xe1,0xe1,0xe1,0xb49,0xb49,0xb40,0xb40, +0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c, +0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xe4,0xe4,0xb4c,0xb4c,0xb4c,0xb4c, +0xb4c,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xc81,0xc81,0xc81,0xc81, +0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81, +0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0x120,0x120, +0x120,0x120,0x120,0x120,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e, +0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc7e,0xc7e,0x120,0x120, +0x120,0x120,0x120,0x120,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0x120,0x120, +0x120,0x120,0xc78,0xc78,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f, +0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f, +0xb4f,0xb4f,0xb4f,0xb4f,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c, +0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc33,0xc33,0xc39,0xc39,0xc39, +0x105,0x105,0xc36,0xc36,0xd44,0xd44,0xd44,0xd44,0xd56,0xd5f,0xd62,0xd5f,0xd62,0xd5f,0xd62,0xd5f, +0xd62,0xd5f,0xd62,0xd5f,0xd5f,0xd5f,0xd62,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f, +0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd47,0xd56,0xd44,0xd44, +0xd44,0xd44,0xd44,0xd59,0xd44,0xd59,0xd56,0xd56,0xd59,0xd59,0xd44,0xd59,0xd5c,0xd5f,0xd5f,0xd5f, +0xd5f,0xd5f,0xd5f,0xd5f,0x135,0x135,0x135,0x135,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53, +0xd53,0xd53,0xd65,0xd65,0xd4d,0xd50,0xd65,0xd65,0xd4d,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a, +0xd4a,0xd4a,0xd4a,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd4a,0xd4a,0xd4a,0xd4a, +0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0x135,0x135,0x135,0xe67,0xe67,0xe6d,0xe73,0xe73,0xe73,0xe73,0xe73, +0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73, +0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe6d,0xe67,0xe67,0xe67,0xe67,0xe6d,0xe6d, +0xe67,0xe67,0xe70,0x14d,0x14d,0x14d,0xe73,0xe73,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a, +0xe6a,0xe6a,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, +0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, +0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85, +0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe85,0xe85,0xe7c,0xe79,0x150,0x150,0x150,0xe8b, +0xe8b,0xe7f,0xe7f,0xe7f,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0x150,0x150, +0x150,0xe88,0xe88,0xe88,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe91,0xe91, +0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, +0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe94,0xe94,0xe94,0xe97,0xe94,0xe94,0xe9a,0xe9a, +0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e, +0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e, +0xb5e,0xb5e,0xb55,0xb55,0xb55,0xb55,0xb55,0xb52,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb64,0xb64,0xb64,0xb64,0xb58,0xb58, +0xb58,0xb58,0xb58,0xb5e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1b,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d, +0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d, +0xc8d,0xc8d,0xc8d,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90, +0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90, +0xc90,0xc90,0xc90,0xc8a,0xc3f,0xc3f,0xc3f,0xc3f,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xe28, +0xe28,0xe28,0xe28,0xe28,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25, +0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b, +0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0xd26,0xd26, +0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, +0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, +0x3b4,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3b1,0x7f2,0xdf2,0xdf2,0xdf5,0xdf2,0x3b4,0x3ae,0x3b4,0x3ae, +0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, +0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0xdf5,0xdf2,0xdf5,0xdf2,0xdf5,0xdf2,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x5d,0x5d,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x5d,0x5d,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x3c3,0x5d,0x3c3,0x5d,0x3c3,0x5d,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x5d,0x5d,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3ba,0x3c0,0x3ba,0x3ba,0x3b7,0x3c0,0x3c0, +0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3b7,0x3b7,0x3b7,0x3c0,0x3c0,0x3c0,0x3c0, +0x5d,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x5d,0x3b7,0x3b7,0x3b7,0x3c0,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3b7,0x3b7,0x3b7,0x5d,0x5d,0x3c0,0x3c0, +0x3c0,0x5d,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3bd,0x3ba,0x5d,0x3cf,0x3cf,0x3d2,0x3d2, +0x3d2,0x3d2,0x3d2,0x3d5,0x3d2,0x3d2,0x3d2,0x3c9,0x40e,0x40e,0x40b,0x40b,0x58e,0x3f3,0x3f0,0x58b, +0x588,0x585,0x597,0x3e1,0x594,0x594,0x3f6,0x3f9,0x591,0x591,0x3f6,0x3f9,0x570,0x570,0x573,0x3de, +0x57f,0x57c,0x57c,0x579,0x408,0x408,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x92a,0x582,0x3ea,0x59a,0x59d, +0x3ff,0x582,0x3ed,0x3ed,0x3de,0x3f9,0x3f9,0x570,0x405,0x402,0x576,0x3d8,0x3db,0x3de,0x3de,0x3de, +0x3fc,0x3e7,0x3e4,0x9fc,0x930,0x930,0x92d,0x92d,0x92d,0x92d,0x9f3,0x9f3,0x9f3,0x9f3,0x9f9,0xb1c, +0xb19,0xbf4,0xbf7,0x9f6,0xbf7,0xbf7,0xbf7,0xbf7,0xbf4,0xbf7,0xbf7,0x9f0,0x9ea,0x9ed,0x9ed,0x9ed, +0xdf8,0x60,0x60,0x60,0x60,0x60,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x414,0x9ff,0x63,0x63, +0x5a3,0x414,0x414,0x414,0x414,0x414,0x41a,0x42c,0x41a,0x426,0x420,0x5a6,0x411,0x5a0,0x5a0,0x5a0, +0x5a0,0x411,0x411,0x411,0x411,0x411,0x417,0x429,0x417,0x423,0x41d,0x63,0xbfa,0xbfa,0xbfa,0xbfa, +0xbfa,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x432,0x432,0x432,0x432, +0x432,0x432,0x432,0x42f,0x435,0x606,0x432,0x7f5,0x816,0x933,0x933,0x933,0xa02,0xa02,0xbfd,0xbfd, +0xbfd,0xbfd,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, +0x66,0x66,0x66,0x66,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b,0x43b, +0x43b,0x438,0x438,0x438,0x438,0x43b,0x936,0x936,0xa05,0xa0b,0xa0b,0xa08,0xa08,0xa08,0xa08,0xc00, +0xcff,0xcff,0xcff,0xcff,0xdfb,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69, +0x69,0x69,0x69,0x69,0x441,0x441,0x456,0x5af,0x43e,0x5a9,0x441,0x44d,0x43e,0x5af,0x450,0x456, +0x456,0x456,0x450,0x450,0x456,0x456,0x456,0x5b5,0x43e,0x456,0x5b2,0x43e,0x44a,0x456,0x456,0x456, +0x456,0x456,0x43e,0x43e,0x444,0x5a9,0x5ac,0x43e,0x456,0x43e,0x5b8,0x43e,0x456,0x447,0x45c,0x5bb, +0x456,0x456,0x44a,0x450,0x456,0x456,0x459,0x456,0x450,0x453,0x453,0x453,0x453,0x93c,0x939,0xb1f, +0xc06,0xa17,0xa1a,0xa1a,0xa14,0xa11,0xa11,0xa11,0xa11,0xa1a,0xa17,0xa17,0xa17,0xa17,0xa0e,0xa11, +0xc03,0xd02,0xd05,0xdfe,0x6c,0x6c,0x6c,0x5c1,0x5be,0x45f,0x462,0x462,0x462,0x462,0x462,0x5be, +0x5c1,0x5c1,0x5be,0x462,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7, +0x46b,0x46b,0x46b,0x46b,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x465,0x465, +0x465,0x465,0x465,0x465,0x468,0x468,0x468,0x93f,0xd08,0xe01,0xe01,0xe01,0xe01,0x6c,0x6c,0x6c, +0x6c,0x6c,0x6c,0x6c,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x474,0x474, +0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x46e,0x471,0x471,0x471,0x471,0x471,0x474,0x46e, +0x471,0x471,0x46e,0x46e,0x46e,0x46e,0x471,0x471,0x5ca,0x5ca,0x46e,0x46e,0x471,0x471,0x471,0x471, +0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x474,0x474,0x474,0x471,0x471,0x5cd,0x471, +0x5cd,0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x46e,0x471,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e, +0x471,0x471,0x46e,0x5ca,0x46e,0x46e,0x46e,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942, +0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0x5d0,0x477,0x5d0,0x5d0, +0x47a,0x477,0x477,0x5d0,0x5d0,0x47a,0x477,0x5d0,0x47a,0x477,0x477,0x5d0,0x477,0x5d0,0x483,0x480, +0x477,0x5d0,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477,0x5d0,0x5d0,0x5d0,0x5d0,0x477,0x477,0x5d0, +0x47a,0x5d0,0x47a,0x5d0,0x5d0,0x5d0,0x5d0,0x5d0,0x5d6,0x47d,0x5d0,0x47d,0x47d,0x477,0x477,0x477, +0x5d0,0x5d0,0x5d0,0x5d0,0x477,0x477,0x477,0x477,0x5d0,0x5d0,0x477,0x477,0x477,0x47a,0x477,0x477, +0x47a,0x477,0x477,0x47a,0x5d0,0x47a,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477, +0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d3,0x5d0,0x47a,0x477, +0x5d0,0x5d0,0x5d0,0x5d0,0x477,0x477,0x5d0,0x5d0,0x477,0x47a,0x5d3,0x5d3,0x47a,0x47a,0x477,0x477, +0x47a,0x47a,0x477,0x477,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x5d0,0x5d0, +0x47a,0x47a,0x5d0,0x5d0,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, +0x477,0x5d0,0x477,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477, +0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, +0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, +0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, +0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477, +0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20, +0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0x486,0x945,0x486,0x486,0x486,0x486,0x486,0x486, +0x489,0x489,0x489,0x489,0x486,0x486,0x486,0x486,0x486,0x486,0x5d9,0x486,0x486,0x486,0x486,0x486, +0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x489,0x489,0x486,0x486,0x486,0x486,0x486,0x486, +0x486,0x6db,0x6d8,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486, +0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486, +0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x945,0xa26,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26, +0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa23,0xa26, +0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xb22, +0xb25,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xd0e,0xd0e,0xd0e,0xd0e, +0xd0e,0xd0e,0xd0e,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, +0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, +0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c, +0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c, +0x48c,0x948,0x948,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72, +0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x48f,0x48f,0x48f,0x48f, +0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, +0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x5df,0x5df,0x5df,0x5df, +0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df, +0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc, +0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc, +0x5dc,0x5dc,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5, +0x5e5,0x5e5,0x5e5,0x5e5,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2, +0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x492,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89, +0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xb97,0x5e8,0x5e8,0x5e8,0x5e8, +0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, +0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x498,0x498,0x498,0x498, +0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, +0x5e8,0x5e8,0x5e8,0x5e8,0x495,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498, +0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb, +0x49b,0x49b,0x5eb,0x5eb,0x5eb,0x5eb,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29, +0x5f1,0x5f1,0x49e,0x5ee,0x5ee,0x5ee,0x5ee,0x5ee,0x5ee,0x5ee,0x49e,0x49e,0x49e,0x49e,0x4a1,0x4a1, +0x4a1,0x4a1,0x5f1,0x5f1,0x4a1,0x4a1,0x5f1,0x5f1,0x49e,0x49e,0x49e,0x49e,0x5f1,0x5f1,0x4a1,0x4a1, +0x5f1,0x5f1,0x49e,0x49e,0x49e,0x49e,0x5f1,0x5f1,0x5ee,0x49e,0x4a1,0x5f1,0x49e,0x49e,0x5ee,0x5f1, +0x5f1,0x5f1,0x4a1,0x4a1,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e, +0x49e,0x49e,0x5f1,0x5ee,0x5f1,0x5ee,0x49e,0x4a1,0x4a1,0x4a1,0x4a1,0x4a1,0x4a1,0x49e,0x49e,0x5ee, +0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c, +0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f7,0x5f7,0x4a4,0x4a4,0x5f4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f4,0x5f4, +0x4a4,0x4a4,0x4a4,0x4a4,0xb9a,0xb9a,0xa2f,0xa2f,0xc0c,0x94e,0x4a4,0x4a4,0x5f4,0x4a4,0x5f4,0x4a4, +0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, +0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, +0x5f7,0x4a4,0x5f7,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, +0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, +0x5f7,0x5f7,0x4a7,0x5f7,0x5f4,0x5f4,0x4a4,0x5f4,0x5f4,0x5f4,0x5f4,0x4a4,0x5f4,0x5f7,0x4a7,0x5f7, +0x94e,0x94e,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xc0c,0xc0c, +0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28, +0xb28,0xb28,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xe04,0x78,0x78, +0xb28,0xb28,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c, +0xc0c,0xc0c,0xd11,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0x78,0x78,0x78, +0xe04,0xe04,0xe04,0xe04,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, +0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, +0x78,0x78,0x78,0x78,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x7b, +0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x5fd,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x7b, +0x7b,0x7b,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4b3,0x4b3,0x4b3,0x4b3,0x7b,0x7b,0x4ad,0x4b0,0x4b0, +0x4ad,0x4ad,0x4ad,0x4ad,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35,0xa38,0xa35, +0xa38,0xa35,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x4aa,0x4aa,0x4aa,0x4aa, +0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa, +0x4ad,0x7b,0x7b,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x4ad,0x7b,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x7b,0xc12,0xc12,0xc12,0xc12,0xc12,0xc18,0xc15,0xd20,0xd20,0xd20,0xd20,0xde, +0xe13,0xde,0xde,0xde,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68, +0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa98,0xa95,0xa98,0xa95,0xa98,0xa95,0xf27,0xf24,0xe19,0xe16, +0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b, +0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951, +0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951, +0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e, +0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e, +0xa71,0xa71,0xa71,0xa77,0xa74,0xa9e,0xa9b,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77, +0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa77,0xa74,0xa77,0xa74, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa77,0xa74,0xa71,0xa71, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa80,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, +0xa80,0xa80,0xa80,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7d,0xa7a,0xa7a,0xa7a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xe1c, +0xe1c,0xe1c,0xe1c,0xe1c,0xd23,0xd23,0xd23,0xd23,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c, +0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe7,0xe7,0xe7, +0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, 0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, -0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xb70,0xb70,0xb70,0xb70, +0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60, +0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60, +0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0x11a,0xc5d,0xc5d,0xc5d,0xc5d, +0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d, +0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0x11a,0xd6b,0xd68,0xd6b,0xd6b, +0xd6b,0xd68,0xd68,0xd6b,0xd68,0xd6b,0xd68,0xd6b,0xd68,0xe52,0xe52,0xe52,0x138,0xe49,0xe52,0xe49, +0xd68,0xd6b,0xd68,0xd68,0xe49,0xe49,0xe49,0xe49,0xe4c,0xe4f,0x138,0x138,0xc4e,0xc4b,0xc4e,0xc4b, +0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b, +0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4b,0xc42,0xc42,0xc42, +0xc42,0xc42,0xc42,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e, +0x10e,0xc48,0xc45,0xc45,0xc45,0xc42,0xc48,0xc45,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, +0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, +0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x117,0x117,0x117,0x117,0x117,0x117, +0x117,0x117,0x117,0x117,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1, +0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1, +0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0xcb4, +0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, +0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51, +0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111, +0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111, +0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111, +0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d, +0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d, +0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc96,0xc96, +0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xc93,0xc9c,0xe37,0xe31,0xe40,0xe2e,0xc99,0xc99,0xe2e,0xe2e, +0xe3d,0xe3d,0xe3a,0xe34,0xe3a,0xe34,0xe3a,0xe34,0xe3a,0xe34,0xe31,0xe31,0xe31,0xe31,0xe46,0xe43, +0xe31,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126, +0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126, +0x126,0x126,0x126,0x126,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, +0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x7e,0x963, +0x963,0x963,0x963,0x966,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, +0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, +0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x966,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, +0x7e,0x7e,0x7e,0x7e,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969, +0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969, +0x969,0x969,0x969,0x969,0x969,0x969,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x96c,0x96c,0x96f,0x96f,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x84,0x84,0x84,0x84, +0x630,0x6ff,0x702,0x6ed,0x6de,0x70b,0x6e4,0x708,0x6f0,0x6ea,0x6f0,0x6ea,0x6fc,0x6f9,0x6fc,0x6f9, +0x6f0,0x6ea,0x6ed,0x6ed,0x6f0,0x6ea,0x6f0,0x6ea,0x6f0,0x6ea,0x6f0,0x6ea,0x6f6,0x6fc,0x6f9,0x6f9, +0x6ed,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x705,0x705,0x705,0x705,0x705,0x705, +0x6f3,0x6e7,0x6e7,0x6e7,0x6e7,0x6e7,0x6e1,0x6de,0x975,0x975,0x975,0xaa7,0xaa4,0xaa1,0x972,0x4b6, +0x87,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x714,0x717,0x714,0x717,0x714, +0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x717,0x714, +0x717,0x714,0x717,0x71a,0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x714,0x714,0x714,0x714,0x714, +0x717,0x717,0x714,0x717,0x717,0x714,0x717,0x717,0x714,0x717,0x717,0x714,0x717,0x717,0x714,0x714, +0x714,0x714,0x714,0x71a,0x714,0x71a,0x714,0x71a,0x714,0x714,0x714,0x714,0x714,0x714,0x71a,0x714, +0x714,0x714,0x714,0x714,0x717,0xaad,0xaad,0x87,0x87,0x711,0x711,0x70e,0x70e,0x71d,0x720,0xaaa, +0xab0,0x72f,0x729,0x72f,0x729,0x72f,0x729,0x72f,0x729,0x72f,0x729,0x729,0x72c,0x729,0x72c,0x729, +0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729, +0x72c,0x729,0x72c,0x72f,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x729,0x729,0x729,0x729,0x729, +0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x729, +0x729,0x729,0x729,0x72f,0x729,0x72f,0x729,0x72f,0x729,0x729,0x729,0x729,0x729,0x729,0x72f,0x729, +0x729,0x729,0x729,0x729,0x72c,0x72f,0x72f,0x72c,0x72c,0x72c,0x72c,0x723,0x726,0x732,0x735,0xab3, +0x8a,0x8a,0x8a,0x8a,0x8a,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, +0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, +0x738,0xf2a,0x8a,0x8a,0x8d,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, +0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, +0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73e,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, +0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, +0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x8d,0x741,0x741,0x744,0x744,0x744,0x744,0x744,0x744, +0x744,0x744,0x744,0x744,0x744,0x744,0x744,0x744,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, +0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, +0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6, +0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30, +0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108, +0x108,0x108,0x108,0x108,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2, +0xac2,0xac2,0xac2,0xac2,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750, +0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750, +0x750,0xba3,0xba3,0x93,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a, +0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a, +0x74a,0x74a,0x74a,0x74a,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, +0xba0,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753, +0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0xba6,0xba6,0xcbd,0x747, +0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d, +0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d, +0x74d,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0xba0,0xba0,0xba0,0xba0, +0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756, +0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x93, +0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f, +0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f, +0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759, +0x759,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0xba9,0xba9,0xba9,0xba9,0x75c,0x75c,0x75c,0x75c,0x75c, +0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c, +0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0xba9,0xba9, +0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759, +0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0xba9, +0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b, +0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b, +0x97b,0x97b,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0xb6d,0xb6d,0xb6d,0xb6d, +0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d, +0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0x762,0x762,0x762,0x762, +0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762, +0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0xcc0,0xcc0, +0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0, +0xcc0,0xcc0,0xcc0,0xcc0,0xf2d,0xf2d,0xf2d,0xf2d,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, +0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, +0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, +0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0x97e, +0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, +0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, +0x97e,0x9c,0x9c,0x9c,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984, +0x984,0x984,0x984,0x984,0x984,0x984,0xab9,0xab9,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984, +0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0xab9,0x984,0x984,0x984,0x984,0x984,0x984,0x984, +0x984,0x984,0x984,0x984,0x984,0xab9,0x984,0x984,0x984,0xab9,0x984,0x9f,0x9f,0x9f,0x9f,0x9f, +0x9f,0x9f,0x9f,0x9f,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6, +0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6, +0xea6,0xea6,0xea6,0xea6,0xea9,0xea0,0xeaf,0xeac,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6, +0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3, +0xea3,0xea3,0xea6,0xea6,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153, +0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, +0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, +0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0x156,0x156,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, +0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xebe,0xeb5,0xeb2,0xeb2,0xeb2,0xeb8,0x156,0x156,0x156,0x156, +0x156,0x156,0x156,0x156,0xeb5,0xeb5,0xeb8,0xec4,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, +0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, +0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75, +0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xd29, +0xd29,0xd29,0xd29,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xd6e,0xd6e,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, +0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe5b,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, +0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, +0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe5e,0xe5b,0xe5b,0xe5b, +0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, +0xe64,0xe5b,0xe64,0xe5b,0xe58,0xe55,0xe55,0xe64,0xe5b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, +0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, +0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0xe61, +0xe61,0xe61,0xe61,0xe61,0xcae,0xcae,0xc9f,0xcae,0xcae,0xcae,0xca5,0xcae,0xcae,0xcae,0xcae,0xc9f, +0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae, +0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcab,0xcab,0xca2,0xca2,0xcab,0xca8,0xca8,0xca8,0xca8, +0x129,0x129,0x129,0x129,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, +0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, +0xd74,0xd74,0xd74,0xd74,0xd71,0xd71,0xd77,0xd77,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e, +0xecd,0xecd,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, +0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, +0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xec7,0x159,0x159,0x159, +0x159,0x159,0x159,0x159,0x159,0x159,0xed3,0xed3,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca, +0xeca,0xeca,0x159,0x159,0x159,0x159,0x159,0x159,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf, +0xedf,0xedf,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2, +0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xed6,0xed6,0xed6,0xed6,0xed6,0xed9, +0xed9,0xed9,0xedc,0xee5,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4, +0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8, +0xee8,0xee8,0xeee,0xef1,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0xeeb, +0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03, +0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03, +0xf03,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xf00,0xf00,0xef7,0xef7,0xf00,0xf00,0xef7,0xef7,0x15f, +0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0xf03,0xf03,0xf03,0xef7,0xf03,0xf03,0xf03,0xf03, +0xf03,0xf03,0xf03,0xf03,0xef7,0xf00,0x15f,0x15f,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd, +0xefd,0xefd,0x15f,0x15f,0xefa,0xf06,0xf06,0xf06,0x80d,0x810,0x810,0x810,0x810,0x810,0x810,0x810, +0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, +0x810,0x810,0x810,0x810,0x80d,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, +0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, +0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x7f8,0x7f8,0x7f8,0x7f8, +0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, +0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7fb,0x7fb,0x7fb,0x7fb, +0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb, +0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fe,0x7fe,0x7fe,0x7fe, +0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe, +0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x765,0x765,0x765,0x765, +0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765, +0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x768,0x768, +0x765,0x768,0x765,0x768,0x768,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x768, +0x765,0x768,0x765,0x768,0x768,0x765,0x765,0x768,0x768,0x768,0x765,0x765,0x765,0x765,0xa5,0xa5, +0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc, +0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc, +0xabc,0xabc,0xabc,0xa5,0xa5,0xa5,0xa5,0xa5,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3, +0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3, +0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x4cb,0x4cb,0x4cb,0x4cb, +0x4cb,0x4cb,0x4cb,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x4b9, +0x4b9,0x4b9,0x4b9,0x4b9,0xa8,0xa8,0xa8,0xa8,0xa8,0x954,0x4bc,0x4c2,0x4c8,0x4c8,0x4c8,0x4c8, +0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4bf,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2, +0x4c2,0x4c2,0x4c2,0xa8,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0xa8,0x4c2,0xa8,0x4c2,0x4c2,0xa8,0x4c2, +0x4c2,0xa8,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c5,0x4dd,0x4d7,0x4dd,0x4d7, +0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, +0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, +0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, +0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0, +0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0xab,0xab, +0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, +0xab,0xab,0xab,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4dd,0x4d7, +0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7, +0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4dd,0x4d7,0x4da,0x4dd,0x4d7,0x4da,0x4e0, +0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, +0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, +0x4dd,0x4dd,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da, +0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da, +0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0, +0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0, +0x4e0,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, +0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4e0,0x4e0,0x4e0,0x4e0, +0x4e0,0x4e0,0x4e0,0x4e0,0x4d7,0x4dd,0x4d1,0x4ce,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, +0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x4da,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da, +0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4da,0x4d7,0x4d7,0x4da,0x4da,0x4d7,0x4da,0x4d7,0x4da,0x4d7,0x4d7, +0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4da, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4d7, +0x4da,0x4da,0x4da,0x4d7,0x4da,0x4da,0x4da,0x4da,0xab,0xab,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7, +0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4d7,0x4d7, +0x4da,0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4d7,0x4d7, +0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d, +0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, +0x4dd,0x4dd,0x4d4,0x4d4,0xa3b,0xb2b,0xab,0xab,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c, +0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xcde,0xccf,0xcc9,0xcdb,0xcd8,0xcd2,0xcd2,0xce1, +0xccc,0xcd5,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x4e3,0x4e3,0x4e3,0x4e3,0xe07,0xe07,0xe07,0xae, +0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0x771,0x777,0x777,0x783,0x783,0x774,0x76b,0x774, +0x76b,0x774,0x76b,0x774,0x76b,0x774,0x76b,0x774,0x76b,0x77d,0x77a,0x77d,0x77a,0xabf,0xabf,0xbaf, +0xbac,0x76e,0x76e,0x76e,0x76e,0x780,0x780,0x780,0x798,0x79b,0x7aa,0xb1,0x79e,0x7a1,0x7ad,0x7ad, +0x795,0x78c,0x786,0x78c,0x786,0x78c,0x786,0x789,0x789,0x7a4,0x7a4,0x7a7,0x7a4,0x7a4,0x7a4,0xb1, +0x7a4,0x792,0x78f,0x789,0xb1,0xb1,0xb1,0xb1,0x4e9,0x4f5,0x4e9,0xa3e,0x4e9,0xb4,0x4e9,0x4f5, +0x4e9,0x4f5,0x4e9,0x4f5,0x4e9,0x4f5,0x4e9,0x4f5,0x4f2,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2, +0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef, +0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2, +0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef, +0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef, +0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2, +0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0xb4,0xb4,0x4e6,0xba,0x666,0x645,0x636,0x63f,0x63c,0x636,0x648, +0x639,0x633,0x636,0x654,0x64b,0x642,0x663,0x636,0x660,0x660,0x660,0x660,0x660,0x660,0x660,0x660, +0x660,0x660,0x651,0x64e,0x654,0x654,0x654,0x666,0x636,0x672,0x672,0x672,0x672,0x672,0x672,0x66c, +0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c, +0x66c,0x66c,0x66c,0x639,0x654,0x633,0x65a,0x65d,0x657,0x66f,0x66f,0x66f,0x66f,0x66f,0x66f,0x669, +0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669, +0x669,0x669,0x669,0x639,0x654,0x633,0x654,0xa92,0xa8f,0x621,0x615,0x612,0x618,0x60f,0x62a,0x62d, +0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x61e,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a, +0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a, +0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x609,0x609,0x627,0x624,0x624,0x624, +0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624, +0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0x624,0xba,0xba,0xba,0x624,0x624, +0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624,0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624, +0x624,0x624,0x624,0x624,0xba,0xba,0x624,0x624,0x624,0xba,0xba,0xba,0x63c,0x63f,0x654,0x657, +0x636,0x63f,0x63f,0xba,0x60c,0x61b,0x61b,0x61b,0x61b,0x60c,0x60c,0xba,0xb7,0xb7,0xb7,0xb7, +0xb7,0xb7,0xb7,0xb7,0xb7,0x957,0x957,0x957,0x813,0x603,0x4f8,0x4f8,0xb70,0xb70,0xb70,0xb70, 0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xea,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70, 0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xea, 0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70, @@ -1475,607 +1969,168 @@ static const uint16_t propsVectorsTrie_index[18316]={ 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, 0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, -0xb73,0xb73,0xb73,0xed,0xed,0xed,0xed,0xed,0xb79,0xb79,0xb79,0xf0,0xf0,0xf0,0xf0,0xb76, +0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xed,0xed,0xed,0xed,0xed, +0xb79,0xb79,0xb79,0xf0,0xf0,0xf0,0xf0,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, 0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, -0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xf0,0xf0,0xf0,0xb76,0xb76,0xb76,0xb76,0xb76, -0xb76,0xb76,0xb76,0xb76,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, -0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, -0xb7f,0xb7f,0xf3,0xb7c,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xf6,0xf6,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xf9,0xf9,0xb8b,0xf9,0xb8b,0xb8b, -0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b, -0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xf9,0xb8b,0xb8b,0xf9,0xf9,0xf9,0xb8b,0xf9,0xf9,0xb8b, -0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, -0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, +0xf0,0xf0,0xf0,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xc2d,0xc2d,0xc2d,0xc2d, +0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, +0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2a,0xc2a,0xc2a, 0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0x102,0x102,0x102,0x102,0x102, 0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0x162,0x162,0x162,0x162, -0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c, -0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc33,0xc33,0xc39,0xc39,0xc39,0x105,0x105,0xc36,0xc36, -0xf30,0xf30,0xf30,0xf30,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108, -0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2, -0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b, -0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0xd26,0xd26, -0xc4e,0xc4b,0xc4e,0xc4b,0xc4b,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0x10e,0x10e,0x10e,0x10e,0x10e, -0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xc48,0xc45,0xc45,0xc45,0xc42,0xc48,0xc45, -0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51, -0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111, -0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111, -0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0x111, -0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57, -0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0x114,0x114,0x114,0x114,0x114,0x114, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117, -0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1, -0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0x11a, -0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d, -0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0x11a, -0xc72,0xc66,0xc66,0xc66,0x11d,0xc66,0xc66,0x11d,0x11d,0x11d,0x11d,0x11d,0xc66,0xc66,0xc66,0xc66, -0xc72,0xc72,0xc72,0xc72,0x11d,0xc72,0xc72,0xc72,0x11d,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72, -0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72, -0x11d,0x11d,0x11d,0x11d,0xc63,0xc63,0xc63,0x11d,0x11d,0x11d,0x11d,0xc69,0xc6c,0xc6c,0xc6c,0xc6c, -0xc6c,0xc6c,0xc6c,0xc6c,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0xc6f,0xc6f,0xc6f,0xc6f, -0xc6f,0xc6f,0xc6f,0xc6f,0xc6c,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0xc81,0xc81,0xc81,0xc81, -0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0x120,0x120,0x120,0x120,0x120,0x120,0xc7e,0xc7e,0xc7e,0xc7e, -0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc7e,0xc81,0xc81,0xc81, -0xc81,0xc81,0xc81,0xc81,0xc7e,0xc7e,0x120,0x120,0x120,0x120,0x120,0x120,0xc7b,0xc7b,0xc7b,0xc7b, -0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0xc7b,0x120,0x120,0x120,0x120,0xc78,0xc78,0xc87,0xc87,0xc87,0xc87, -0x123,0x123,0x123,0x123,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc84,0xc87,0xc87,0xc87, -0xc87,0xc87,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0xe3d,0xe3d,0xe3a,0xe34, -0xe3a,0xe34,0xe3a,0xe34,0xe3a,0xe34,0xe31,0xe31,0xe31,0xe31,0xe46,0xe43,0xe31,0x126,0x126,0x126, -0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126, -0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126, -0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0xcb4, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, -0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c, -0xcde,0xccf,0xcc9,0xcdb,0xcd8,0xcd2,0xcd2,0xce1,0xccc,0xcd5,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f, -0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c, -0xd2c,0xd2c,0xd2c,0xd2c,0xd3b,0xd3b,0xd2f,0xd2f,0xd32,0xd41,0xd3e,0x132,0x132,0x132,0x132,0x132, -0xd59,0xd59,0xd44,0xd59,0xd5c,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0x135,0x135,0x135,0x135, -0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd65,0xd65,0xd4d,0xd50,0xd65,0xd65, -0xd4d,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd47,0xd47,0xd47,0xd47,0xd47, -0xd47,0xd47,0xd47,0xd47,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0x135,0x135,0x135, -0xd6b,0xd68,0xd6b,0xd6b,0xd6b,0xd68,0xd68,0xd6b,0xd68,0xd6b,0xd68,0xd6b,0xd68,0xe52,0xe52,0xe52, -0x138,0xe49,0xe52,0xe49,0xd68,0xd6b,0xd68,0xd68,0xe49,0xe49,0xe49,0xe49,0xe4c,0xe4f,0x138,0x138, -0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe58,0xe55,0xe55,0xe64,0xe5b,0x13b,0x13b,0x13b, -0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, -0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, -0x13b,0x13b,0x13b,0xe61,0xe61,0xe61,0xe61,0xe61,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd71,0xd71,0xd77,0xd77, -0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80, -0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd7a,0xd7a, -0xd7a,0xd7a,0x141,0x141,0x141,0x141,0x141,0xd7d,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, -0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144, -0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144, -0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0xd89,0xd89,0xd89,0x147,0x147,0x147,0x147,0x147, -0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0xd86,0xd86,0xd86,0xd86,0x147,0x147,0x147,0x147, -0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c, -0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a, -0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0xe73,0xe6d,0xe67,0xe67,0xe67,0xe67,0xe6d,0xe6d, -0xe67,0xe67,0xe70,0x14d,0x14d,0x14d,0xe73,0xe73,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a, -0xe6a,0xe6a,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d,0xe88,0xe88,0xe88,0xe88,0xe85,0xe85,0xe85,0xe85, -0xe85,0xe85,0xe85,0xe85,0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe85,0xe85,0xe7c,0xe79, -0x150,0x150,0x150,0xe8b,0xe8b,0xe7f,0xe7f,0xe7f,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82, -0xe82,0xe82,0x150,0x150,0x150,0xe88,0xe88,0xe88,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e, -0xe8e,0xe8e,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3, -0xea3,0xea3,0xea6,0xea6,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153, -0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x156,0x156,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, -0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xebe,0xeb5,0xeb2,0xeb2,0xeb2,0xeb8,0x156,0x156,0x156,0x156, -0x156,0x156,0x156,0x156,0xeb5,0xeb5,0xeb8,0xec4,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, -0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, -0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0xecd,0xecd,0xecd,0xecd,0xec7,0x159,0x159,0x159, -0x159,0x159,0x159,0x159,0x159,0x159,0xed3,0xed3,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca,0xeca, -0xeca,0xeca,0x159,0x159,0x159,0x159,0x159,0x159,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xee8, -0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xeee,0xef1,0x15c,0x15c,0x15c,0x15c, -0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0xeeb,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03, -0xf03,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xf00,0xf00,0xef7,0xef7,0xf00,0xf00,0xef7,0xef7,0x15f, -0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0xf03,0xf03,0xf03,0xef7,0xf03,0xf03,0xf03,0xf03, -0xf03,0xf03,0xf03,0xf03,0xef7,0xf00,0x15f,0x15f,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd, -0xefd,0xefd,0x15f,0x15f,0xefa,0xf06,0xf06,0xf06,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162, 0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162, -0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c, +0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0x162,0xf0c,0xf0c,0xf0c,0xf0c, 0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c, -0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0f,0x165,0x165,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12, +0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0f,0x165,0x165,0xf12,0xf12,0xf12,0xf12, 0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12, -0xf12,0xf12,0xf12,0xf12,0xf12,0x168,0x168,0x168,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15, -0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b, -0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0x16e,0x16e,0x16e,0x16e,0x16e,0xf18,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e, -0xf1e,0xf1e,0xf1e,0xf1e,0x171,0x171,0x171,0x171,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21, -0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0x174,0x174,0x174,0x174, -0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, -0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, -0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x7b0,0x7b0,0x9c9,0x9c9,0x9c9,0x9c9, -0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, -0x9c9,0x9c9,0x9c9,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x9cc,0x9cc,0x9cc,0x9cc, -0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc, -0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x17d,0x17d,0x1b0,0x531,0x1b0,0x1a7, -0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1ad,0x52e,0x1b0,0x531, -0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e, -0x1b0,0x1a7,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x52e,0x53a,0x534,0x1b0,0x1a7,0x1b0,0x1a7, -0x52e,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x53a,0x534,0x537,0x52e,0x1b0,0x531,0x1b0,0x1a7,0x1b0, -0x531,0x534,0x537,0x52e,0x1b0,0x531,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e,0x1b0,0x1a7,0x1b0,0x1a7, -0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x537,0x52e,0x1b0,0x1a7,0x1b0,0x531, -0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1a7,0x1b0,0x1b0,0x1a7,0x1b0, -0x1a7,0x1b0,0x1a7,0x1aa,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1bf,0x1bf, -0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1bf,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1bf,0x1bf,0x1b3,0x1b3,0x1b3, -0x1bf,0x1bf,0x1b3,0x1bf,0x1c2,0x1b6,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf,0x1bf,0x1b3,0x1bf,0x1b3,0x1b3, -0x1bf,0x1b3,0x1bf,0x1c2,0x1b6,0x1bf,0x1bf,0x1bf,0x1b3,0x1bf,0x1b3,0x1bf,0x1bf,0x1b3,0x1b3,0x1bc, -0x1bf,0x1b3,0x1b3,0x1b3,0x1bc,0x1bc,0x1bc,0x1bc,0x1c5,0x1c5,0x1b9,0x1c5,0x1c5,0x1b9,0x1c5,0x1c5, -0x1b9,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2,0x53d,0x1c2, -0x53d,0x1b3,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1bf,0x1b3,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6, -0x1c2,0x1b6,0x1c2,0x1b6,0x1b6,0x1c5,0x1c5,0x1b9,0x1c2,0x1b6,0x81f,0x81f,0x822,0x81c,0x1c2,0x1b6, -0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6, -0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x1c2,0x1b6,0x822,0x81c,0x822,0x81c,0x81f,0x819,0x822,0x81c, -0xbb2,0xbb5,0xce4,0xce7,0xce7,0xce7,0xce7,0xce4,0xce7,0xce4,0xce7,0xce4,0xce7,0xce4,0xce7,0xce4, -0x1c8,0x540,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, -0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, -0x1cb,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x825,0x825,0x825, -0x825,0x825,0xac8,0xac8,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1d7,0x1d7,0x1d7, -0x1d7,0x1d7,0x1d7,0x1d7,0x1d4,0x1d4,0x1ce,0x1ce,0x546,0x1ce,0x1d7,0x549,0x1da,0x549,0x549,0x549, -0x1da,0x549,0x1d7,0x1d7,0x54c,0x1dd,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x543,0x543,0x543,0x543, -0x1d1,0x543,0x1ce,0x95a,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x828,0x828, -0x82b,0x828,0x82b,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb, -0xacb,0xacb,0xacb,0xacb,0x207,0x82e,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef,0x1f2,0x1ef, -0x1f2,0x1ef,0x1f2,0x1ef,0x20d,0x20d,0x204,0x1fe,0x98a,0x987,0x9d2,0xad1,0xace,0xad4,0xad1,0xace, -0xbb8,0xbbb,0xbbb,0xbbb,0x55e,0x55e,0x1fe,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x201,0x201, -0x201,0x201,0x201,0xd92,0x20d,0x20d,0x210,0x20a,0x20a,0x20d,0x204,0x82e,0x9d8,0x9d5,0x207,0x82e, -0x207,0x82e,0x207,0x82e,0x21f,0x219,0x216,0x213,0x213,0x213,0x213,0xd95,0x831,0x831,0x9de,0x9db, -0x83a,0x834,0x83a,0x834,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, -0x21f,0x219,0x21f,0x219,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564, -0x564,0x564,0x564,0x564,0x837,0x567,0x219,0x21c,0x219,0x219,0x219,0x21c,0x219,0x219,0x219,0x219, -0x21c,0x837,0x21c,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, -0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x222,0x21c,0x21f,0x219,0x21f,0x219, -0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219, -0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x219,0x21f,0x222,0x21c,0x21f, -0x219,0x9de,0x9db,0x21f,0x219,0x9de,0x9db,0x21f,0x219,0x9de,0x9db,0xced,0x222,0x21c,0x222,0x21c, -0x21f,0x219,0x222,0x21c,0x21f,0x219,0x222,0x21c,0x222,0x21c,0x222,0x21c,0x21f,0x219,0x222,0x21c, -0x83d,0x837,0x222,0x21c,0x222,0x21c,0x222,0x21c,0x222,0x21c,0xbc1,0xbbe,0x222,0x21c,0xcf0,0xced, -0xcf0,0xced,0xcf0,0xced,0x83d,0x56d,0x21f,0x222,0x21f,0x21f,0x21f,0x222,0x21f,0x21f,0x21f,0x21f, -0x222,0x83d,0x222,0x21f,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56d,0x56a,0x56a, -0x56a,0x56a,0x56a,0x56a,0x7b3,0x7b3,0xbc4,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3, -0x7b3,0x7b3,0x7b3,0x7b3,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0xcf3,0x23d, -0x23d,0x23d,0x249,0x23d,0x285,0x282,0x285,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0x849,0x282,0x282,0x282,0x285,0x28e,0x282,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d, -0x26d,0x252,0x26a,0x270,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x27c,0x279, -0x276,0x273,0x9e1,0x9e1,0x264,0x282,0x282,0x282,0x282,0x288,0x288,0x288,0x288,0x282,0x282,0x282, -0x282,0x282,0x282,0x282,0x270,0x26d,0x26d,0x26d,0x26d,0x28b,0x28b,0x26d,0x26d,0x273,0x270,0x270, -0x270,0x26d,0xae9,0xae9,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x849,0x849, -0x849,0x846,0x846,0xae9,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0x282,0x849,0x849,0x282,0x282,0x282,0x282,0x282,0x849,0x3a2,0x3a2,0x3a2,0x3a2, -0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2, -0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a2,0x3a5,0x3a5,0x3a5,0x3a5, -0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5, -0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3ab,0x3a8,0x3a8,0x3a8, -0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8, -0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8, -0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, -0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, -0x3b4,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3b1,0x7f2,0xdf2,0xdf2,0xdf5,0xdf2,0x3b4,0x3ae,0x3b4,0x3ae, -0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae, -0x3b4,0x3ae,0x3b4,0x3ae,0x3b4,0x3ae,0xdf5,0xdf2,0xdf5,0xdf2,0xdf5,0xdf2,0x3c0,0x3c0,0x3c0,0x3c0, -0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c0,0x3c0,0x3c0,0x3c0, -0x3c0,0x3c0,0x3c0,0x3c0,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x570,0x570,0x573,0x3de, -0x57f,0x57c,0x57c,0x579,0x408,0x408,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x92a,0x582,0x3ea,0x59a,0x59d, -0x3ff,0x582,0x3ed,0x3ed,0x3de,0x3f9,0x3f9,0x570,0x405,0x402,0x576,0x3d8,0x3cf,0x3cf,0x3d2,0x3d2, -0x3d2,0x3d2,0x3d2,0x3d5,0x3d2,0x3d2,0x3d2,0x3c9,0x40e,0x40e,0x40b,0x40b,0x58e,0x3f3,0x3f0,0x58b, -0x588,0x585,0x597,0x3e1,0x594,0x594,0x3f6,0x3f9,0x591,0x591,0x3f6,0x3f9,0x3db,0x3de,0x3de,0x3de, -0x3fc,0x3e7,0x3e4,0x9fc,0x930,0x930,0x92d,0x92d,0x92d,0x92d,0x9f3,0x9f3,0x9f3,0x9f3,0x9f9,0xb1c, -0xb19,0xbf4,0xbf7,0x9f6,0xbf7,0xbf7,0xbf7,0xbf7,0xbf4,0xbf7,0xbf7,0x9f0,0x441,0x441,0x456,0x5af, -0x43e,0x5a9,0x441,0x44d,0x43e,0x5af,0x450,0x456,0x456,0x456,0x450,0x450,0x456,0x456,0x456,0x5b5, -0x43e,0x456,0x5b2,0x43e,0x44a,0x456,0x456,0x456,0x456,0x456,0x43e,0x43e,0x444,0x5a9,0x5ac,0x43e, -0x456,0x43e,0x5b8,0x43e,0x456,0x447,0x45c,0x5bb,0x456,0x456,0x44a,0x450,0x456,0x456,0x459,0x456, -0x450,0x453,0x453,0x453,0x453,0x93c,0x939,0xb1f,0xc06,0xa17,0xa1a,0xa1a,0x5c7,0x5c7,0x5c7,0x5c7, -0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x46b,0x46b,0x46b,0x46b,0x5c4,0x5c4,0x5c4,0x5c4, -0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x465,0x465,0x465,0x465,0x465,0x465,0x471,0x471,0x471,0x471, -0x471,0x471,0x471,0x471,0x46e,0x471,0x471,0x471,0x471,0x471,0x474,0x46e,0x471,0x471,0x46e,0x46e, -0x46e,0x46e,0x471,0x471,0x5ca,0x5ca,0x46e,0x46e,0x471,0x471,0x471,0x471,0x471,0x471,0x471,0x471, -0x471,0x471,0x471,0x471,0x471,0x474,0x474,0x474,0x471,0x471,0x5cd,0x471,0x5cd,0x471,0x471,0x471, -0x471,0x471,0x471,0x471,0x46e,0x471,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x471,0x471,0x46e,0x5ca, -0x46e,0x46e,0x46e,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0xa1d,0xa1d,0xa1d,0xa1d, -0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0x5d0,0x477,0x5d0,0x5d0,0x47a,0x477,0x477,0x5d0, -0x5d0,0x47a,0x477,0x5d0,0x47a,0x477,0x477,0x5d0,0x477,0x5d0,0x483,0x480,0x477,0x5d0,0x477,0x477, -0x477,0x477,0x5d0,0x477,0x477,0x5d0,0x5d0,0x5d0,0x5d0,0x477,0x477,0x5d0,0x47a,0x5d0,0x47a,0x5d0, -0x5d0,0x5d0,0x5d0,0x5d0,0x5d6,0x47d,0x5d0,0x47d,0x47d,0x477,0x477,0x477,0x5d0,0x5d0,0x5d0,0x5d0, -0x477,0x477,0x477,0x477,0x5d0,0x5d0,0x477,0x477,0x477,0x47a,0x477,0x477,0x47a,0x477,0x477,0x47a, -0x5d0,0x47a,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477, -0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d3,0x5d0,0x47a,0x477,0x5d0,0x5d0,0x5d0,0x5d0, -0x477,0x477,0x5d0,0x5d0,0x477,0x47a,0x5d3,0x5d3,0x47a,0x47a,0x477,0x477,0x47a,0x47a,0x477,0x477, -0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x5d0,0x5d0,0x47a,0x47a,0x5d0,0x5d0, -0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477, -0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x477, -0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, -0x477,0x477,0x477,0x5d0,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, -0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477, -0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a, -0x47a,0x47a,0x477,0x477,0x477,0x477,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20, -0xa20,0xa20,0xa20,0xa20,0x486,0x945,0x486,0x486,0x486,0x486,0x486,0x486,0x489,0x489,0x489,0x489, -0x486,0x486,0x486,0x486,0x486,0x486,0x5d9,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486, -0x486,0x486,0x486,0x486,0x489,0x489,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x6db,0x6d8,0x486, -0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486, -0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486, -0x486,0x486,0x486,0x945,0xa26,0x945,0x945,0x945,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c, -0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c, -0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x48c,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2, -0x5e2,0x5e2,0x492,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89, -0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xb97,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, -0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x495,0x498,0x498,0x498, -0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, -0x5e8,0x5e8,0x5e8,0x5e8,0x498,0x498,0x498,0x498,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, -0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb, -0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x5eb,0x49b,0x49b,0x5eb,0x5eb,0x5eb,0x5eb,0xa29,0xa29, -0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x5f1,0x5f1,0x49e,0x5ee,0x5ee,0x5ee,0x5ee,0x5ee, -0x5ee,0x5ee,0x49e,0x49e,0x49e,0x49e,0x4a1,0x4a1,0x4a1,0x4a1,0x5f1,0x5f1,0x4a1,0x4a1,0x5f1,0x5f1, -0x49e,0x49e,0x49e,0x49e,0x5f1,0x5f1,0x4a1,0x4a1,0x5f1,0x5f1,0x49e,0x49e,0x49e,0x49e,0x5f1,0x5f1, -0x5ee,0x49e,0x4a1,0x5f1,0x49e,0x49e,0x5ee,0x5f1,0x5f1,0x5f1,0x4a1,0x4a1,0x49e,0x49e,0x49e,0x49e, -0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x5f1,0x5ee,0x5f1,0x5ee,0x49e,0x4a1, -0x4a1,0x4a1,0x4a1,0x4a1,0x4a1,0x49e,0x49e,0x5ee,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b, -0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f7,0x5f7,0x4a4, -0x4a4,0x5f4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f4,0x5f4,0x4a4,0x4a4,0x4a4,0x4a4,0xb9a,0xb9a,0xa2f,0xa2f, -0xc0c,0x94e,0x4a4,0x4a4,0x5f4,0x4a4,0x5f4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, -0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, -0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f7,0x4a4,0x5f7,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, -0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4, -0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x5f7,0x5f7,0x4a7,0x5f7,0x5f4,0x5f4,0x4a4,0x5f4, -0x5f4,0x5f4,0x5f4,0x4a4,0x5f4,0x5f7,0x4a7,0x5f7,0x94e,0x94e,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32, -0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xc0c,0xc0c,0x6ed,0x708,0x708,0x708,0x708,0x708,0x708,0x708, -0x708,0x708,0x705,0x705,0x705,0x705,0x705,0x705,0x6f3,0x6e7,0x6e7,0x6e7,0x6e7,0x6e7,0x6e1,0x6de, -0x975,0x975,0x975,0xaa7,0xaa4,0xaa1,0x972,0x4b6,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4e0,0x4e0,0x4e0,0x4e0, -0x4e0,0x4e0,0x4e0,0x4e0,0x4d7,0x4dd,0x4d1,0x4ce,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, -0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, -0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7, -0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7,0x4da,0x4e0,0x4dd,0x4d7, -0x4da,0x4e0,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4e0,0x4da,0x4e0,0x4dd,0x4d7, -0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4dd,0x4d7,0x4da,0x4dd,0x4d7,0x4da, -0x4dd,0x4d7,0x4da,0x4e0,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da, -0x4da,0x4da,0x4da,0x4da,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4d7,0x4da,0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4da, -0x4d7,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4da,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4d7,0x4d7,0x4da,0x4d7,0x4da,0x4d7, -0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da, -0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da, -0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4e0,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0, -0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4e0,0x4dd,0x4dd,0x4dd, -0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4f2,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2, -0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4ef, -0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2,0x4ec,0x4f2, -0x4ec,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef, -0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef,0x4f5,0x4f2,0x4ec,0x4ef, -0x4f5,0x4f2,0x4ec,0x4ef,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, -0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f,0x54f, -0x54f,0x54f,0x54f,0x54f,0x55b,0x55b,0x54f,0x552,0x552,0x558,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d, -0x95d,0x95d,0x95d,0xa86,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xcb7,0xcb7,0xcb7,0xcb7, -0xcba,0xb94,0xb94,0xb94,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a, -0x56a,0x56a,0x56a,0x56a,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x567,0x564,0x564, -0x564,0x564,0x564,0x564,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df, -0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc, -0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc, -0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5, -0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e2,0x5e2,0x5e2,0x5e2, -0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e8,0x5e8,0x5e8,0x5e8, -0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8, -0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x600,0x600,0x600,0x600, -0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, -0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x62a,0x62a,0x62a,0x62a, -0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a, -0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x609,0x609,0xa8f,0x621,0x615,0x612, -0x618,0x60f,0x62a,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x61e,0x62a,0x62a,0x62a, -0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x630,0x6ff,0x702,0x6ed, -0x6de,0x70b,0x6e4,0x708,0x6f0,0x6ea,0x6f0,0x6ea,0x6fc,0x6f9,0x6fc,0x6f9,0x6f0,0x6ea,0x6ed,0x6ed, -0x6f0,0x6ea,0x6f0,0x6ea,0x6f0,0x6ea,0x6f0,0x6ea,0x6f6,0x6fc,0x6f9,0x6f9,0x636,0x672,0x672,0x672, -0x672,0x672,0x672,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c, -0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x66c,0x639,0x654,0x633,0x65a,0x65d,0x657,0x66f,0x66f,0x66f, -0x66f,0x66f,0x66f,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669, -0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x639,0x654,0x633,0x654,0xa92,0x6d2,0x6d2,0x6d2,0x6d2, -0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2, -0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x6d2,0x717,0x714,0x717,0x71a, -0x714,0x717,0x714,0x717,0x714,0x717,0x714,0x714,0x714,0x714,0x714,0x714,0x717,0x717,0x714,0x717, -0x717,0x714,0x717,0x717,0x714,0x717,0x717,0x714,0x717,0x717,0x714,0x714,0x729,0x729,0x729,0x72f, -0x729,0x72f,0x729,0x72f,0x729,0x729,0x729,0x729,0x729,0x729,0x72f,0x729,0x729,0x729,0x729,0x729, -0x72c,0x72f,0x72f,0x72c,0x72c,0x72c,0x72c,0x723,0x726,0x732,0x735,0xab3,0xab0,0x72f,0x729,0x72f, -0x729,0x72f,0x729,0x72f,0x729,0x72f,0x729,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729, -0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x72c,0x72f, -0x729,0x72c,0x729,0x72c,0x729,0x72c,0x729,0x729,0x729,0x729,0x729,0x729,0x72c,0x72c,0x729,0x72c, -0x72c,0x729,0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x72c,0x72c,0x729,0x729,0x73b,0x73b,0x73b,0x73b, -0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, -0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73e,0x73b,0x73b,0x73b, -0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b, -0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x73b,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753, -0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753, -0x753,0x753,0x753,0x753,0xba6,0xba6,0xcbd,0x747,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a, -0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a, -0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0xba0,0xba0,0xba0,0xba0,0x756,0x756,0x756,0x756, -0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x74d,0x74d,0x74d,0x74d, -0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d, -0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0xab6,0xab6,0xab6, -0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0x75f,0x75f,0x75f,0x75f, -0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f, -0x75f,0x75f,0x75f,0x75f,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759, -0x759,0x759,0x759,0x759,0x759,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0xba9,0xba9,0xba9,0xba9,0x75c, -0x75c,0x75c,0x75c,0x75c,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759, -0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759,0x759, -0x759,0x759,0x759,0xba9,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c, -0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0x75c, -0x75c,0x75c,0x75c,0x75c,0x75c,0x75c,0xba9,0xba9,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f, -0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f, -0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762, -0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762, -0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0, -0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0, -0xf2d,0xf2d,0xf2d,0xf2d,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x765,0x765,0x768,0x768,0x765,0x768,0x765,0x768,0x768,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x768,0x7ec,0x7ce,0x7ce,0x7ce,0x7ce,0x7c8,0x7ce,0x7ce, -0x7e0,0x7ce,0x7ce,0x7cb,0x7d7,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7e0,0x7c8,0x7d4,0x7c8,0x7c8,0x7c8, -0x7c2,0x7c2,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3, -0x7e3,0x7e3,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7c8,0x7cb,0x7c2,0x7c8,0x7c2, -0x7c8,0x7c2,0x7da,0x7d1,0x7da,0x7d1,0x7e9,0x7e9,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb, -0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb, -0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe, -0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe, -0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, -0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, -0x807,0x807,0x807,0x807,0x807,0x807,0x801,0x801,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, -0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, -0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x804,0x804,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, -0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, -0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, -0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, -0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80d,0x810,0x810,0x810,0x810,0x810,0x810,0x810, -0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, -0x810,0x810,0x810,0x810,0x80d,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, -0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810, -0x9cf,0xac5,0x81f,0x819,0x81f,0x819,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c, -0x822,0x81c,0x822,0x81c,0xac5,0xac5,0xac5,0xbb2,0xbb2,0xbb2,0xbb5,0xbb5,0xbb2,0xbb5,0xbb5,0xbb2, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0xaec,0xaec,0xaec, -0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855, -0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867, -0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867, -0x89d,0x89d,0xdec,0x89d,0x89d,0x89d,0x8a0,0x89d,0xdec,0x89d,0x89d,0xde6,0x89a,0x88b,0x88b,0x88b, -0x88b,0x89a,0x88b,0xdd4,0xdd4,0xdd4,0x88b,0x88e,0x89a,0x891,0xdda,0xde6,0xde6,0xdd4,0xdd4,0xdec, -0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x8a3,0x8a3,0x894,0x894,0x894,0x894, -0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89a,0x89a,0x88b,0x88b,0xdec,0xdec,0xdec,0xdec,0xdd4,0xdd4, -0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d, -0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0xbf1,0x8b2,0x8b2,0x8b2,0x8b2, -0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b8,0x8b8,0x8b8,0x8b8, -0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8, -0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8b8,0x8be,0x8be,0x8be,0x8be, -0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be, -0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8d3,0x8d3,0x8d3,0x8d3, -0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3, -0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8fa,0x8fa,0x8fa,0x8fd, -0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, -0x8d6,0x8d6,0x8f7,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8f7,0x8f7,0x8fa,0x8fa,0x8fa,0x8fa, -0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, -0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x921, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x945,0x945,0x945,0x945, -0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, -0x945,0x945,0x945,0x945,0x945,0x945,0x945,0xa26,0xa26,0xa26,0xa26,0xa26,0x951,0x951,0x951,0x951, -0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951, -0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x963,0x963,0x963,0x963, -0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, -0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x969,0x969,0x969,0x969, -0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969, -0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x97b,0x97b,0x97b,0x97b, -0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b, -0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, -0x97e,0x981,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x984,0x984,0xab9,0xab9,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984, -0x984,0x984,0x984,0x984,0x984,0x984,0x984,0x984,0xab9,0x984,0x984,0x984,0x984,0x984,0x984,0x984, -0x984,0x984,0x984,0x984,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0xb31,0xb31,0x999,0x999,0x999,0x999, -0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999, -0x999,0x999,0x999,0x999,0x999,0x999,0xb2e,0xb2e,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82, -0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c, +0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0x168,0x168,0x168,0xf15,0xf15,0xf15,0xf15, +0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15, +0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0x16b,0x16b,0x16b, +0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x993,0x993,0x993,0x993, +0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993, +0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0xbd,0x990,0x990,0x990,0x990, +0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0x996,0x996,0x996,0x996, +0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0xc0, +0xc0,0xc0,0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, +0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, +0xb7f,0xb7f,0xf3,0xb7c,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87, +0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87, +0xc87,0xc87,0xc87,0xc87,0x123,0x123,0x123,0x123,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87, +0xc84,0xc87,0xc87,0xc87,0xc87,0xc87,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123, 0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c, -0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f, +0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c, +0x99c,0x99c,0xb31,0xb31,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999, +0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0xb2e,0xb2e, +0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82, +0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82, +0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, +0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xf6,0xf6, +0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xf9,0xf9,0xb8b,0xf9,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b, +0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b, +0xb8b,0xb8b,0xf9,0xb8b,0xb8b,0xf9,0xf9,0xf9,0xb8b,0xf9,0xf9,0xb8b,0xd80,0xd80,0xd80,0xd80, +0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80, +0xd80,0xd80,0xd7a,0xd7a,0xd7a,0xd7a,0x141,0x141,0x141,0x141,0x141,0xd7d,0xf1b,0xf1b,0xf1b,0xf1b, +0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, +0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0x16e,0x16e,0x16e,0x16e,0x16e,0xf18,0xc72,0xc66,0xc66,0xc66, +0x11d,0xc66,0xc66,0x11d,0x11d,0x11d,0x11d,0x11d,0xc66,0xc66,0xc66,0xc66,0xc72,0xc72,0xc72,0xc72, +0x11d,0xc72,0xc72,0xc72,0x11d,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72, +0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0x11d,0x11d,0x11d,0x11d, +0xc63,0xc63,0xc63,0x11d,0x11d,0x11d,0x11d,0xc69,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c, +0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f, +0xc6c,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, +0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, +0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0x144,0x144,0x144,0x144,0x144, +0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144, +0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0xd89,0xd89,0xd89,0xd89, +0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89, +0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0x147, +0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0xd86,0xd86,0xd86,0xd86, +0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x99f,0x99f,0x99f,0x99f, 0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f, -0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9a5,0x9b1,0x9b7, -0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9b4,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2, -0x9a2,0x9a2,0x9a2,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0xc3,0xc3, +0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, 0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, -0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9b7,0x9b7,0x9b7,0x9ab, -0x9ab,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, -0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9b7,0x9b7, -0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae, -0x9ae,0x9ae,0x9ae,0x9ae,0x9c3,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9ba, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9ba, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0xc6,0xc6,0xe0a,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae, +0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9a5,0x9b1,0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9b4,0x9a8,0x9a8, +0x9a8,0x9a8,0x9a8,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7, +0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9b7,0x9b7,0x9b7,0x9b7,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab, +0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, +0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, +0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27, +0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27, +0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc24,0xc24,0xc24,0xc27,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, +0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, +0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xfc,0xfc,0xfc,0xfc,0xfc, +0xfc,0xfc,0xfc,0xfc,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c, +0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a, +0x14a,0x14a,0x14a,0x14a,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0, 0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, -0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, -0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, -0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0xc9,0x9c3,0x9c3,0xc9,0xc9,0x9c3,0xc9, +0xc9,0x9c3,0x9c3,0xc9,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0xc9,0x9c0,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0xb34,0x9c0,0x9c0, +0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0xc9,0x9c3,0xc9,0xc9,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc9,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3, 0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, 0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, 0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, -0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, -0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, -0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, -0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc, -0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc, -0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26, -0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa23,0xa26,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23, -0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xb22,0xb25,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09, -0xc09,0xc09,0xc09,0xc09,0xd0e,0xd0e,0xd0e,0xd0e,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41, -0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xa44,0xa41,0xd1d,0xd1a,0xd1d,0xd1a,0xe10,0xe0d,0xe10,0xe0d, -0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xe10,0xe0d,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa98,0xa95, -0xa98,0xa95,0xa98,0xa95,0xf27,0xf24,0xe19,0xe16,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b, -0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e, -0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e, -0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa71,0xa71,0xa71,0xa77,0xa74,0xa9e,0xa9b,0xa77, -0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77,0xa74,0xa77, -0xa74,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa77,0xa74,0xa77,0xa74,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa77,0xa74,0xa71,0xa71,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, -0xa7a,0xa7a,0xa7a,0xa7a,0xa80,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, -0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, -0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa80,0xa80,0xa80,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, -0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, -0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7d,0xa7a,0xa7a,0xa7a,0xabc,0xabc,0xabc,0xabc, -0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc, -0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xb4f,0xb4f,0xb4f,0xb4f, -0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f, -0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb5e,0xb5e,0xb5e,0xb5e, -0xb5e,0xb5e,0xb55,0xb55,0xb55,0xb55,0xb55,0xb52,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67, -0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67,0xb5b,0xb5b,0xb64,0xb64, -0xb64,0xb64,0xb58,0xb58,0xb58,0xb58,0xb58,0xb5e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, -0xc1e,0xc1e,0xc1e,0xc1e,0xc1b,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xb67,0xb67,0xb67,0xb67, -0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67, -0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb5b,0xb5b,0xb5b,0xb5e,0xb5e,0xb5e,0xb5e, -0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e, -0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb6a,0xb6a,0xb6a,0xb6a, -0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21, -0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xb6d,0xb6d,0xb6d,0xb6d, -0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d, -0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb73,0xb73,0xb73,0xb73, -0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, -0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb82,0xb82,0xb82,0xb82, -0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82, -0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb8e,0xb8e,0xb8e,0xb8e, -0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, -0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xc27,0xc27,0xc27,0xc27, -0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27, -0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc30,0xc30,0xc30,0xc30, -0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22, -0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xc3f,0xc3f,0xc3f,0xc3f, -0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xe28,0xe28,0xe28,0xe28,0xe28,0xe25,0xe25,0xe25,0xe25, -0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xc4e,0xc4b,0xc4e,0xc4b, -0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b, -0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,0xc5a,0xc5a,0xc5a,0xc5a, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc60,0xc60,0xc60,0xc60, -0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60, -0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc75,0xc75,0xc75,0xc75, -0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75,0xc75, -0xc75,0xc75,0xc75,0xd29,0xd29,0xd29,0xd29,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xc81,0xc81,0xc81,0xc81, -0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81, -0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc87,0xc87,0xc87,0xc87, -0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87, -0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc90,0xc90,0xc90,0xc90, -0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90, -0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc8a,0xc8d,0xc8d,0xc8d,0xc8d, -0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d, -0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc90,0xc90,0xc90,0xc90,0xc90,0xc99,0xc99,0xc99,0xc99, -0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96, -0xc96,0xc96,0xc93,0xc9c,0xe37,0xe31,0xe40,0xe2e,0xc99,0xc99,0xe2e,0xe2e,0xcae,0xcae,0xc9f,0xcae, -0xcae,0xcae,0xca5,0xcae,0xcae,0xcae,0xcae,0xc9f,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae, -0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcae,0xcb1,0xcb1,0xcb1,0xcb1, -0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1, -0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcb1,0xcc3,0xcc3,0xcc3,0xcc3, -0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3, -0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc6,0xcc6,0xcc6,0xcc6, -0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xf30,0xf30,0xf30,0xf30, -0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xd23,0xd23,0xd23,0xd23, -0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f, -0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xd35,0xd35,0xd35,0xd35, -0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38, -0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd44,0xd44,0xd44,0xd44, -0xd56,0xd5f,0xd62,0xd5f,0xd62,0xd5f,0xd62,0xd5f,0xd62,0xd5f,0xd62,0xd5f,0xd5f,0xd5f,0xd62,0xd5f, -0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f, -0xd5f,0xd5f,0xd5f,0xd5f,0xd47,0xd56,0xd44,0xd44,0xd44,0xd44,0xd44,0xd59,0xd44,0xd59,0xd56,0xd56, -0xd6e,0xd6e,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, -0xe5b,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, -0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, -0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, -0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89, -0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89,0xd89, -0xdd4,0xdec,0xde6,0xde3,0xde3,0xdec,0xdec,0xde6,0xde6,0xde3,0xde3,0xde3,0xde3,0xde3,0xdec,0xdec, -0xdec,0xdd4,0xdd4,0xdd4,0xdd4,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec, -0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, -0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe5b, -0xe5e,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe64,0xe5b,0xe64,0xe5b,0xe64,0xe64,0xe5b, -0xe67,0xe67,0xe6d,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73, -0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, -0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, -0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe94,0xe94,0xe94,0xe97,0xe94,0xe94,0xe9a,0xe9a, -0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d, -0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d, -0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea9,0xea0,0xeaf,0xeac, -0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6, -0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6, -0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, -0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb,0xec1,0xebb, -0xecd,0xecd,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, -0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, -0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xee2,0xee2,0xee2,0xee2, -0xee2,0xee2,0xed6,0xed6,0xed6,0xed6,0xed6,0xed9,0xed9,0xed9,0xedc,0xee5,0xef4,0xef4,0xef4,0xef4, -0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xedf,0xedf,0xedf,0xedf, -0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2, -0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xf03,0xf03,0xf03,0xf03, -0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03, -0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf15,0xf15,0xf15,0xf15, -0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15, -0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf1e,0xf1e,0xf1e,0xf1e, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9c0, +0xc0f,0xc0f,0xc9,0xc9,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9ba,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9ba,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c0,0x9c0,0x9c0,0x9ba,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xd17,0xd14, +0xc9,0xc9,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, +0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, +0x9bd,0x9bd,0x9bd,0x9bd,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e, 0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e, -0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf21,0xf21,0xf21,0xf21, +0xf1e,0xf1e,0xf1e,0xf1e,0x171,0x171,0x171,0x171,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21, 0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21, -0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0x820,0x840,0x860,0, -0,0,0,0,0x880,0x8a0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x8c0,0x8e0,0,0, -0,0,0,0,0x900,0,0,0x920,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940, -0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940, -0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x940,0x960,0x980,0x980,0x980,0x980,0x980,0x980, -0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x9a0,0x9c0, -0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980, -0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980,0x980, -0x980,0x980,0x980,0x9c0,0,0,0,0,0,0,0,0,0,0,0,0, +0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174, +0x174,0x174,0x174,0x174,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x920,0x9e0,0xa00,0xa00,0xa00,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20, -0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20, -0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa40,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60, -0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60, -0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa60,0xa80 +0,0,0x7b0,0x7b0,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, +0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, +0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc, +0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc, +0x9cc,0x9cc,0x17d,0x17d,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x177,0x177,0x7b0,0x7b0,0xcc,0x9c6,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, +0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, +0xcc,0xcc,0xcc,0xcc,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, +0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, +0x9c6,0x9c6,0x9c6,0x9c6,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,3,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, +0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, +0xb9d,0xb9d,0xb9d,0xb9d,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,3,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, +0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807, +0x807,0x807,0x807,0x807,0x807,0x807,0x801,0x801,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, +0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a, +0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x80a,0x804,0x804,0,0,0,0 }; -static const UTrie propsVectorsTrie={ +static const UTrie2 propsVectorsTrie={ propsVectorsTrie_index, + propsVectorsTrie_index+3480, NULL, - utrie_defaultGetFoldingOffset, - 2720, - 15596, - 0, - TRUE + 3480, + 14616, + 0xa40, + 0xe18, + 0x0, + 0x0, + 0x110000, + 0x46ac, }; static const uint32_t propsVectors[3891]={ diff --git a/icu4c/source/common/ucnvsel.cpp b/icu4c/source/common/ucnvsel.cpp index 884244ae2a..1889216a7d 100644 --- a/icu4c/source/common/ucnvsel.cpp +++ b/icu4c/source/common/ucnvsel.cpp @@ -33,7 +33,7 @@ #include "unicode/ucnv.h" #include "unicode/ustring.h" #include "unicode/uchriter.h" -#include "utrie.h" +#include "utrie2.h" #include "propsvec.h" #include "uenumimp.h" #include "cmemory.h" @@ -53,9 +53,7 @@ U_NAMESPACE_USE struct UConverterSelector { - uint8_t* serializedTrie; - uint32_t serializedTrieSize; - UTrie constructedTrie; // 16 bit trie containing offsets into pv + UTrie2 *trie; // 16 bit trie containing offsets into pv uint32_t* pv; // table of bits! int32_t pvCount; char** encodings; // which encodings did user ask to use? @@ -64,10 +62,10 @@ struct UConverterSelector { /* internal function */ -void generateSelectorData(UConverterSelector* result, - const USet* excludedEncodings, - const UConverterUnicodeSet whichSet, - UErrorCode* status); +static void generateSelectorData(UConverterSelector* result, + const USet* excludedCodePoints, + const UConverterUnicodeSet whichSet, + UErrorCode* status); U_CAPI int32_t ucnvsel_swap(const UDataSwapper *ds, @@ -116,6 +114,7 @@ U_CAPI UConverterSelector* ucnvsel_open(const char* const* converterList, // make a backup copy of the list of converters if (converterList != NULL && converterListSize > 0) { + // TODO: reduce code duplication, combine the explicit-list and all-converters handling newSelector->encodings = (char**)uprv_malloc(converterListSize*sizeof(char*)); // out of memory. Give user back the 100 bytes or so @@ -131,6 +130,12 @@ U_CAPI UConverterSelector* ucnvsel_open(const char* const* converterList, for (i = 0 ; i < converterListSize ; i++) { totalSize += uprv_strlen(converterList[i])+1; } + // 4-align the totalSize to 4-align the trie in the serialized form + int32_t encodingStrPadding = totalSize & 3; + if (encodingStrPadding != 0) { + encodingStrPadding = 4 - encodingStrPadding; + } + totalSize += encodingStrPadding; allStrings = (char*) uprv_malloc(totalSize); //out of memory :( if (!allStrings) { @@ -147,6 +152,10 @@ U_CAPI UConverterSelector* ucnvsel_open(const char* const* converterList, // twice per string is probably faster than allocating memory to // cache the lengths! } + while (encodingStrPadding > 0) { + *allStrings++ = (char)0xff; + --encodingStrPadding; + } } else { int32_t count = ucnv_countAvailable(); newSelector->encodings = @@ -164,6 +173,12 @@ U_CAPI UConverterSelector* ucnvsel_open(const char* const* converterList, const char* conv_moniker = ucnv_getAvailableName(i); totalSize += uprv_strlen(conv_moniker)+1; } + // 4-align the totalSize to 4-align the trie in the serialized form + int32_t encodingStrPadding = totalSize & 3; + if (encodingStrPadding != 0) { + encodingStrPadding = 4 - encodingStrPadding; + } + totalSize += encodingStrPadding; allStrings = (char*) uprv_malloc(totalSize); //out of memory :( if (!allStrings) { @@ -180,6 +195,10 @@ U_CAPI UConverterSelector* ucnvsel_open(const char* const* converterList, // string is probably faster than allocating memory to cache the // lengths! } + while (encodingStrPadding > 0) { + *allStrings++ = (char)0xff; + --encodingStrPadding; + } converterListSize = ucnv_countAvailable(); } @@ -205,11 +224,7 @@ U_CAPI void ucnvsel_close(UConverterSelector *sel) { uprv_free(sel->encodings[0]); uprv_free(sel->encodings); upvec_close(sel->pv); - if (sel->serializedTrie) { // this can be reached when - // generateSelectorData() has failed, and - // the trie is not serialized yet! - uprv_free(sel->serializedTrie); - } + utrie2_close(sel->trie); uprv_free(sel); } @@ -227,6 +242,10 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, return NULL; } + // TODO: check and document data alignment as usual + // TODO: require that the input memory remains valid while this selector + // is in use, and don't copy the memory? + // TODO: propose renaming to ucnvsel_openFromSerialized() UConverterSelector* sel; int32_t i = 0; // for the for loop // check length! @@ -284,6 +303,8 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, length -= 3 * sizeof(int32_t); //sig, Asciiness, and pvCount // end of check length! + // TODO: fix screwed-up length counting and checking -- + // at the end, the trie size should be exactly the remaining length sel = (UConverterSelector*)uprv_malloc(sizeof(UConverterSelector)); //out of memory :( @@ -297,7 +318,7 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, buffer+=sizeof(int32_t); // check length - if (length < (sel->pvCount+1)*sizeof(uint32_t)) { + if (length < (int32_t)((sel->pvCount+1)*sizeof(uint32_t))) { uprv_free(sel); *status = U_INVALID_FORMAT_ERROR; return NULL; @@ -318,7 +339,7 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, int32_t encodingsLength; memcpy(&encodingsLength, buffer, sizeof(int32_t)); buffer += sizeof(int32_t); - char* tempEncodings = (char*) uprv_malloc(encodingsLength+1); + char* tempEncodings = (char*) uprv_malloc(encodingsLength); if(!tempEncodings) { *status = U_MEMORY_ALLOCATION_ERROR; uprv_free(sel); @@ -327,11 +348,10 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, } memcpy(tempEncodings, buffer, encodingsLength); - tempEncodings[encodingsLength] = 0; buffer += encodingsLength; // count how many strings are there! int32_t numStrings = 0; - for (int32_t i = 0 ; i < encodingsLength + 1 ; i++) { + for (int32_t i = 0 ; i < encodingsLength; i++) { if (tempEncodings[i] == 0) { numStrings++; } @@ -346,11 +366,11 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, return NULL; } - int32_t curString = 0; sel->encodings[0] = tempEncodings; - for (i = 0 ; i < encodingsLength ; i++) { + int32_t curString = 1; + for (i = 0; curString < numStrings; i++) { if (tempEncodings[i] == 0) { - sel->encodings[++curString] = tempEncodings+i+1; + sel->encodings[curString++] = tempEncodings+i+1; } } @@ -367,11 +387,12 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, // end of check length // the trie - memcpy(&sel->serializedTrieSize, buffer, sizeof(uint32_t)); - buffer += sizeof(uint32_t); + int32_t serializedTrieSize; + memcpy(&serializedTrieSize, buffer, sizeof(int32_t)); + buffer += sizeof(int32_t); // check length - if (length < sel->serializedTrieSize) { + if (length < serializedTrieSize) { uprv_free(sel->pv); uprv_free(tempEncodings); uprv_free(sel->encodings); @@ -382,20 +403,14 @@ U_CAPI UConverterSelector* ucnvsel_unserialize(const char* buffer, length -= sizeof(uint32_t); // end of check length - sel->serializedTrie = (uint8_t*) uprv_malloc(sel->serializedTrieSize); - if(!sel->serializedTrie) { - uprv_free(sel->pv); - uprv_free(tempEncodings); - uprv_free(sel->encodings); - uprv_free(sel); - *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; - } - memcpy(sel->serializedTrie, buffer, sel->serializedTrieSize); // unserialize! - utrie_unserialize(&sel->constructedTrie, sel->serializedTrie, - sel->serializedTrieSize, status); - + sel->trie = utrie2_openFromSerialized(UTRIE2_16_VALUE_BITS, + buffer, serializedTrieSize, NULL, + status); + if (U_FAILURE(*status)) { + ucnvsel_close(sel); + sel = NULL; + } return sel; } @@ -417,20 +432,23 @@ U_CAPI int32_t ucnvsel_serialize(const UConverterSelector* sel, *status = U_ILLEGAL_ARGUMENT_ERROR; return 0; } -//utrie_swap(ds, inDa + // TODO: call utrie2_swap()? + // TODO: rethink this serialization; use UDataHeader?! require alignment as usual + UErrorCode localStatus = U_ZERO_ERROR; + int32_t serializedTrieSize = utrie2_serialize(sel->trie, NULL, 0, &localStatus); totalSize = sizeof(uint32_t) /*signature*/+sizeof(uint32_t) /*ASCIIness*/+ sizeof(uint32_t)*sel->pvCount /*pv*/+ sizeof(uint32_t) /*pvCount*/+ - sizeof(uint32_t) /*serializedTrieSize*/+ sel->serializedTrieSize /*trie*/; + sizeof(uint32_t) /*serializedTrieSize*/+ serializedTrieSize /*trie*/; // this is a multi-string! strlen() will stop at the first one encodingStrLength = - uprv_strlen(sel->encodings[sel->encodingsCount-1]) + + uprv_strlen(sel->encodings[sel->encodingsCount-1]) + 1 + (sel->encodings[sel->encodingsCount-1] - sel->encodings[0]); - + encodingStrLength = (encodingStrLength + 3) & ~3; // round up to 4-alignment totalSize += encodingStrLength + sizeof(uint32_t); if (totalSize > bufferCapacity) { - *status = U_INDEX_OUTOFBOUNDS_ERROR; + *status = U_BUFFER_OVERFLOW_ERROR; return totalSize; } // ok, save! @@ -454,28 +472,33 @@ U_CAPI int32_t ucnvsel_serialize(const UConverterSelector* sel, buffer += encodingStrLength; // the trie - memcpy(buffer, &sel->serializedTrieSize, sizeof(uint32_t)); + memcpy(buffer, &serializedTrieSize, sizeof(uint32_t)); buffer+=sizeof(uint32_t); - memcpy(buffer, sel->serializedTrie, sel->serializedTrieSize); + utrie2_serialize(sel->trie, buffer, serializedTrieSize, status); return totalSize; } /* internal function! */ -void generateSelectorData(UConverterSelector* result, - const USet* excludedEncodings, - const UConverterUnicodeSet whichSet, - UErrorCode* status) { - const uint32_t encodingsSize = result->encodingsCount; +static void generateSelectorData(UConverterSelector* result, + const USet* excludedCodePoints, + const UConverterUnicodeSet whichSet, + UErrorCode* status) { + int32_t columns = (result->encodingsCount+31)/32; // 66000 as suggested by Markus [I suggest something like 66000 which // exceeds the number of BMP code points. There will be fewer ranges of // combinations of encodings. (I believe there are no encodings that have // interesting mappings for supplementary code points. All encodings either // support all of them or none of them.)] - result->pv = upvec_open((encodingsSize+31)/32, 66000); // create for all + result->pv = upvec_open(columns, 66000); // create for all // unicode codepoints, and have space for all those bits needed! + // set errorValue to all-ones + for (int32_t col = 0 ; col < columns; col++) { + upvec_setValue(result->pv, UPVEC_ERROR_VALUE_CP, UPVEC_ERROR_VALUE_CP, + col, ~0, ~0, status); + } - for (uint32_t i = 0; i < encodingsSize; ++i) { + for (int32_t i = 0; i < result->encodingsCount; ++i) { uint32_t mask; uint32_t column; int32_t item_count; @@ -506,10 +529,7 @@ void generateSelectorData(UConverterSelector* result, // this will be reached for the converters that fill the set with // strings. Those should be ignored by our system } else { - // IMPORTANT: the intervals for usets are INCLUSIVE. However, the - // intervals for upvec are NOT INCLUSIVE. This is why we need - // end_char+1 here! - upvec_setValue(result->pv, start_char, end_char + 1, column, ~0, mask, + upvec_setValue(result->pv, start_char, end_char, column, ~0, mask, status); if (U_FAILURE(*status)) { return; @@ -522,19 +542,19 @@ void generateSelectorData(UConverterSelector* result, // handle excluded encodings! Simply set their values to all 1's in the upvec - if (excludedEncodings) { - int32_t item_count = uset_getItemCount(excludedEncodings); + if (excludedCodePoints) { + int32_t item_count = uset_getItemCount(excludedCodePoints); for (int32_t j = 0; j < item_count; ++j) { UChar32 start_char; UChar32 end_char; - uset_getItem(excludedEncodings, j, &start_char, &end_char, NULL, 0, + uset_getItem(excludedCodePoints, j, &start_char, &end_char, NULL, 0, status); if (U_FAILURE(*status)) { return; } else { - for (uint32_t col = 0 ; col < (encodingsSize+31)/32 ; col++) { - upvec_setValue(result->pv, start_char, end_char + 1, col, ~0, ~0, + for (int32_t col = 0 ; col < columns; col++) { + upvec_setValue(result->pv, start_char, end_char, col, ~0, ~0, status); } } @@ -543,17 +563,13 @@ void generateSelectorData(UConverterSelector* result, // alright. Now, let's put things in the same exact form you'd get when you // unserialize things. - UNewTrie* trie = utrie_open(NULL, NULL, CAPACITY, 0, 0, TRUE); - result->pvCount = upvec_compact(result->pv, upvec_compactToTrieHandler, - trie, status); - uint32_t length = utrie_serialize(trie, NULL, 0, NULL, TRUE, status); - result->serializedTrie = (uint8_t*) uprv_malloc(length); - length = utrie_serialize(trie, result->serializedTrie, length, NULL, TRUE, - status); - result->serializedTrieSize = length; - utrie_unserialize(&result->constructedTrie, result->serializedTrie, length, - status); - utrie_close(trie); + UPVecToUTrie2Context toUTrie2={ NULL }; + result->pvCount = upvec_compact(result->pv, upvec_compactToUTrie2Handler, + &toUTrie2, status); + if (U_SUCCESS(*status)) { + result->trie = toUTrie2.trie; + utrie2_freeze(result->trie, UTRIE2_16_VALUE_BITS, status); + } } @@ -660,17 +676,59 @@ int16_t countOnes(uint32_t* mask, int32_t len) { /* internal function! */ -UEnumeration *ucnvsel_select(const UConverterSelector* sel, const void *s, -int32_t length, UErrorCode *status, UBool isUTF16) { - const UChar* utf16buffer = (UChar*) s; - const char* utf8buffer = (char*) s; +static UEnumeration *selectForMask(const UConverterSelector* sel, + uint32_t *mask, UErrorCode *status) { + // this is the context we will use. Store a table of indices to which + // encodings are legit. + struct Enumerator* result = (Enumerator*)uprv_malloc(sizeof(Enumerator)); + if (result == NULL) { + uprv_free(mask); + *status = U_MEMORY_ALLOCATION_ERROR; + return NULL; + } + result->index = NULL; // this will be allocated later! + result->length = result->cur = 0; + result->sel = sel; - UEnumeration *en = NULL; - uint32_t* mask; - UChar32 next = 0; - int32_t offset = 0; - int32_t i, j; + UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration)); + if (en == NULL) { + // TODO(markus): Combine Enumerator and UEnumeration into one struct. + uprv_free(mask); + uprv_free(result); + *status = U_MEMORY_ALLOCATION_ERROR; + return NULL; + } + memcpy(en, &defaultEncodings, sizeof(UEnumeration)); + en->context = result; + int32_t columns = (sel->encodingsCount+31)/32; + int16_t numOnes = countOnes(mask, columns); + // now, we know the exact space we need for index + if (numOnes > 0) { + result->index = (int16_t*) uprv_malloc(numOnes * sizeof(int16_t)); + + int32_t i, j; + int16_t k = 0; + for (j = 0 ; j < columns; j++) { + uint32_t v = mask[j]; + for (i = 0 ; i < 32 && k < sel->encodingsCount; i++, k++) { + if ((v & 1) != 0) { + result->index[result->length++] = k; + } + v >>= 1; + } + } + } //otherwise, index will remain NULL (and will never be touched by + //the enumerator code anyway) + uprv_free(mask); + return en; +} + +/* check a string against the selector - UTF16 version */ +U_CAPI UEnumeration *ucnvsel_selectForString(const UConverterSelector* sel, + const UChar *s, + int32_t length, + UErrorCode *status) { // check if already failed if (U_FAILURE(*status)) { return NULL; @@ -681,80 +739,68 @@ int32_t length, UErrorCode *status, UBool isUTF16) { return NULL; } - // this is the context we will use. Store a table of indices to which - // encodings are legit. - struct Enumerator* result = (Enumerator*)uprv_malloc(sizeof(Enumerator)); - result->index = NULL; // this will be allocated later! - result->length = result->cur = 0; - result->sel = sel; + int32_t columns = (sel->encodingsCount+31)/32; + uint32_t* mask = (uint32_t*) uprv_malloc(columns * 4); + if (mask == NULL) { + *status = U_MEMORY_ALLOCATION_ERROR; + return NULL; + } + uprv_memset(mask, ~0, columns *4); - en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration)); - memcpy(en, &defaultEncodings, sizeof(UEnumeration)); - en->context = result; - - mask = (uint32_t*) uprv_malloc((sel->encodingsCount+31)/32 * - sizeof(uint32_t)); - uprv_memset(mask, ~0, (sel->encodingsCount+31)/32 * sizeof(uint32_t)); - - if(length == -1) { - if(isUTF16) - length = u_strlen(utf16buffer); - else - length = uprv_strlen(utf8buffer); + const UChar *limit; + if (length >= 0) { + limit = s + length; + } else { + limit = NULL; } - if(s) { - while (offset < length) { - uint16_t result = 0; - if (isUTF16) - U16_NEXT(utf16buffer, offset, length, next) - else - U8_NEXT(utf8buffer, offset, length, next) - - if (next != -1) { - UTRIE_GET16((&sel->constructedTrie), next, result) - - if (intersectMasks(mask, sel->pv+result, (sel->encodingsCount+31)/32)) { - break; - } - } + while (limit == NULL ? *s != 0 : s != limit) { + UChar32 c; + uint16_t pvIndex; + UTRIE2_U16_NEXT16(sel->trie, s, limit, c, pvIndex); + if (intersectMasks(mask, sel->pv+pvIndex, columns)) { + break; } } - - int16_t numOnes = countOnes(mask, (sel->encodingsCount+31)/32); - // now, we know the exact space we need for index - if (numOnes > 0) { - result->index = (int16_t*) uprv_malloc(numOnes * sizeof(int16_t)); - } //otherwise, index will remain NULL (and will never be touched by - //the enumerator code anyway) - - for (j = 0 ; j < (sel->encodingsCount+31)/32 ; j++) { - for (i = 0 ; i < 32 ; i++) { - uint32_t v = mask[j] & 1; - if (v && j*32+i < sel->encodingsCount) { - result->index[result->length++] = j*32+i; - } - mask[j] >>= 1; - } - } - uprv_free(mask); - return en; -} - -/* check a string against the selector - UTF16 version */ -U_CAPI UEnumeration *ucnvsel_selectForString(const UConverterSelector* sel, - const UChar *s, - int32_t length, - UErrorCode *status) { - return ucnvsel_select(sel, s, length, status, TRUE); + return selectForMask(sel, mask, status); } /* check a string against the selector - UTF8 version */ U_CAPI UEnumeration *ucnvsel_selectForUTF8(const UConverterSelector* sel, - const char *utf8str, + const char *s, int32_t length, UErrorCode *status) { - return ucnvsel_select(sel, utf8str, length, status, FALSE); + // check if already failed + if (U_FAILURE(*status)) { + return NULL; + } + // ensure args make sense! + if (sel == NULL || (s == NULL && length != 0)) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return NULL; + } + + int32_t columns = (sel->encodingsCount+31)/32; + uint32_t* mask = (uint32_t*) uprv_malloc(columns * 4); + if (mask == NULL) { + *status = U_MEMORY_ALLOCATION_ERROR; + return NULL; + } + uprv_memset(mask, ~0, columns *4); + + if (length < 0) { + length = uprv_strlen(s); + } + const char *limit = s + length; + + while (s != limit) { + uint16_t pvIndex; + UTRIE2_U8_NEXT16(sel->trie, s, limit, pvIndex); + if (intersectMasks(mask, sel->pv+pvIndex, columns)) { + break; + } + } + return selectForMask(sel, mask, status); } @@ -811,7 +857,7 @@ U_CAPI int32_t ucnvsel_swap(const UDataSwapper *ds, outDataC += 3 * sizeof(uint32_t); - if(length < pvCount * sizeof(uint32_t)) { + if(length < (int32_t)(pvCount * sizeof(uint32_t))) { * status = U_INDEX_OUTOFBOUNDS_ERROR; return 0; } @@ -853,7 +899,7 @@ U_CAPI int32_t ucnvsel_swap(const UDataSwapper *ds, * status = U_INDEX_OUTOFBOUNDS_ERROR; return 0; } - utrie_swap(ds, inDataC, trieSize, outDataC, status); + utrie2_swap(ds, inDataC, trieSize, outDataC, status); length -= trieSize; return passedLength - length; } diff --git a/icu4c/source/common/unicode/utf.h b/icu4c/source/common/unicode/utf.h index 1682283cc6..e55492f0bc 100644 --- a/icu4c/source/common/unicode/utf.h +++ b/icu4c/source/common/unicode/utf.h @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 1999-2007, International Business Machines +* Copyright (C) 1999-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -216,6 +216,15 @@ */ #define U_IS_SURROGATE_LEAD(c) (((c)&0x400)==0) +/** + * Assuming c is a surrogate code point (U_IS_SURROGATE(c)), + * is it a trail surrogate? + * @param c 32-bit code point + * @return TRUE or FALSE + * @draft ICU 4.2 + */ +#define U_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0) + /* include the utfXX.h ------------------------------------------------------ */ #include "unicode/utf8.h" diff --git a/icu4c/source/common/unicode/utf16.h b/icu4c/source/common/unicode/utf16.h index 719bc043bb..8b756abe0b 100644 --- a/icu4c/source/common/unicode/utf16.h +++ b/icu4c/source/common/unicode/utf16.h @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 1999-2007, International Business Machines +* Copyright (C) 1999-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -82,6 +82,15 @@ */ #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0) +/** + * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)), + * is it a trail surrogate? + * @param c 16-bit code unit + * @return TRUE or FALSE + * @draft ICU 4.2 + */ +#define U16_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0) + /** * Helper constant for U16_GET_SUPPLEMENTARY. * @internal diff --git a/icu4c/source/common/unorm.cpp b/icu4c/source/common/unorm.cpp index 00ee9ec3e7..99681cafad 100644 --- a/icu4c/source/common/unorm.cpp +++ b/icu4c/source/common/unorm.cpp @@ -1,6 +1,6 @@ /* ****************************************************************************** -* Copyright (c) 1996-2007, International Business Machines +* Copyright (c) 1996-2008, International Business Machines * Corporation and others. All Rights Reserved. ****************************************************************************** * File unorm.cpp @@ -38,7 +38,7 @@ #include "ucase.h" #include "cmemory.h" #include "umutex.h" -#include "utrie.h" +#include "utrie2.h" #include "unicode/uset.h" #include "udataswp.h" #include "putilimp.h" @@ -134,11 +134,13 @@ isNorm32Regular(uint32_t norm32) { return norm32<_NORM_MIN_SPECIAL; } +#if 0 // Code changed to use U16_IS_LEAD(c) instead. /* is this a norm32 with a special index for a lead surrogate? */ static inline UBool isNorm32LeadSurrogate(uint32_t norm32) { return _NORM_MIN_SPECIAL<=norm32 && norm32<_NORM_SURROGATES_TOP; } +#endif /* is this a norm32 with a special index for a Hangul syllable or a Jamo? */ static inline UBool @@ -163,29 +165,10 @@ static inline UBool isJamoVTNorm32JamoV(uint32_t norm32) { return norm32<_NORM_JAMO_V_TOP; } +U_CDECL_END /* load unorm.dat ----------------------------------------------------------- */ -/* normTrie: 32-bit trie result may contain a special extraData index with the folding offset */ -static int32_t U_CALLCONV -getFoldingNormOffset(uint32_t norm32) { - if(isNorm32LeadSurrogate(norm32)) { - return - UTRIE_BMP_INDEX_LENGTH+ - (((int32_t)norm32>>(_NORM_EXTRA_SHIFT-UTRIE_SURROGATE_BLOCK_BITS))& - (0x3ff<add(sa->set, start); @@ -411,8 +394,9 @@ unorm_haveData(UErrorCode *pErrorCode) { } U_CAPI const uint16_t * U_EXPORT2 -unorm_getFCDTrie(UErrorCode *pErrorCode) { +unorm_getFCDTrieIndex(UChar32 &fcdHighStart, UErrorCode *pErrorCode) { if(_haveData(*pErrorCode)) { + fcdHighStart=fcdTrie.highStart; return fcdTrie.index; } else { return NULL; @@ -423,20 +407,13 @@ unorm_getFCDTrie(UErrorCode *pErrorCode) { static inline uint32_t _getNorm32(UChar c) { - return UTRIE_GET32_FROM_LEAD(&normTrie, c); + return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(&normTrie, c); } static inline uint32_t -_getNorm32FromSurrogatePair(uint32_t norm32, UChar c2) { - /* - * the surrogate index in norm32 stores only the number of the surrogate index block - * see gennorm/store.c/getFoldedNormValue() - */ - norm32= - UTRIE_BMP_INDEX_LENGTH+ - ((norm32>>(_NORM_EXTRA_SHIFT-UTRIE_SURROGATE_BLOCK_BITS))& - (0x3ff<>_NORM_EXTRA_SHIFT); } +/* + * TODO(markus): Revisit if it makes sense for functions like _getNextCC() + * and their call sites, and a fair bit of other code here, to work with UTF-16 code units, + * or whether code simplification would suggest just using UChar32 and maybe UTRIE2_NEXT32(). + */ + #if 0 /* * It is possible to get the FCD data from the main trie if unorm.icu @@ -785,7 +769,7 @@ unorm_getCanonicalDecomposition(UChar32 c, UChar buffer[4], int32_t *pLength) { return NULL; } - UTRIE_GET32(&normTrie, c, norm32); + norm32=UTRIE2_GET32(&normTrie, c); if(norm32&_NORM_QC_NFD) { if(isNorm32HangulOrJamo(norm32)) { /* Hangul syllable: decompose algorithmically */ @@ -825,26 +809,21 @@ _getNextCC(const UChar *&p, const UChar *limit, UChar &c, UChar &c2) { uint32_t norm32; c=*p++; + c2=0; norm32=_getNorm32(c); if((norm32&_NORM_CC_MASK)==0) { - c2=0; return 0; - } else { - if(!isNorm32LeadSurrogate(norm32)) { - c2=0; + } else if(U16_IS_LEAD(c)) { + /* c is a lead surrogate, get the real norm32 */ + if(p!=limit && U16_IS_TRAIL(c2=*p)) { + ++p; + norm32=_getNorm32FromSurrogatePair(c, c2); } else { - /* c is a lead surrogate, get the real norm32 */ - if(p!=limit && UTF_IS_SECOND_SURROGATE(c2=*p)) { - ++p; - norm32=_getNorm32FromSurrogatePair(norm32, c2); - } else { - c2=0; - return 0; - } + c2=0; + return 0; } - - return (uint8_t)(norm32>>_NORM_CC_SHIFT); } + return (uint8_t)(norm32>>_NORM_CC_SHIFT); } /* @@ -856,32 +835,19 @@ static inline uint32_t _getPrevNorm32(const UChar *start, const UChar *&src, uint32_t minC, uint32_t mask, UChar &c, UChar &c2) { - uint32_t norm32; - c=*--src; c2=0; /* check for a surrogate before getting norm32 to see if we need to predecrement further */ if(c>_NORM_CC_SHIFT); #if !UNORM_HARDCODE_DATA } else { @@ -979,9 +943,7 @@ unorm_internalIsFullCompositionExclusion(UChar32 c) { UErrorCode errorCode=U_ZERO_ERROR; if(_haveData(errorCode) && auxTrie.index!=NULL) { #endif - uint16_t aux; - - UTRIE_GET16(&auxTrie, c, aux); + uint16_t aux=UTRIE2_GET16(&auxTrie, c); return (UBool)((aux&_NORM_AUX_COMP_EX_MASK)!=0); } else { return FALSE; @@ -996,9 +958,7 @@ unorm_isCanonSafeStart(UChar32 c) { UErrorCode errorCode=U_ZERO_ERROR; if(_haveData(errorCode) && auxTrie.index!=NULL) { #endif - uint16_t aux; - - UTRIE_GET16(&auxTrie, c, aux); + uint16_t aux=UTRIE2_GET16(&auxTrie, c); return (UBool)((aux&_NORM_AUX_UNSAFE_MASK)==0); } else { return FALSE; @@ -1122,12 +1082,12 @@ u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *p *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; return 0; } - if(!_haveData(*pErrorCode) || auxTrie.index==NULL) { - return 0; + if(_haveData(*pErrorCode) && auxTrie.index!=NULL) { + aux=UTRIE2_GET16(&auxTrie, c); + aux&=_NORM_AUX_FNC_MASK; + } else { + aux=0; } - - UTRIE_GET16(&auxTrie, c, aux); - aux&=_NORM_AUX_FNC_MASK; if(aux!=0) { const UChar *s; int32_t length; @@ -1153,7 +1113,7 @@ u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *p U_CAPI UBool U_EXPORT2 unorm_isNFSkippable(UChar32 c, UNormalizationMode mode) { uint32_t norm32, mask; - uint16_t aux, fcd; + uint16_t aux; #if !UNORM_HARDCODE_DATA UErrorCode errorCode=U_ZERO_ERROR; @@ -1181,18 +1141,13 @@ unorm_isNFSkippable(UChar32 c, UNormalizationMode mode) { break; case UNORM_FCD: /* FCD: skippable if lead cc==0 and trail cc<=1 */ - if(fcdTrie.index!=NULL) { - UTRIE_GET16(&fcdTrie, c, fcd); - return fcd<=1; - } else { - return FALSE; - } + return fcdTrie.index!=NULL && UTRIE2_GET16(&fcdTrie, c)<=1; default: return FALSE; } /* check conditions (a)..(e), see unormimp.h */ - UTRIE_GET32(&normTrie, c, norm32); + norm32=UTRIE2_GET32(&normTrie, c); if((norm32&mask)!=0) { return FALSE; /* fails (a)..(e), not skippable */ } @@ -1218,7 +1173,7 @@ unorm_isNFSkippable(UChar32 c, UNormalizationMode mode) { return FALSE; /* no (f) data, say not skippable to be safe */ } - UTRIE_GET16(&auxTrie, c, aux); + aux=UTRIE2_GET16(&auxTrie, c); return (aux&_NORM_AUX_NFC_SKIP_F_MASK)==0; /* TRUE=skippable if the (f) flag is not set */ /* } else { FCC, test fcd<=1 instead of the above } */ @@ -1233,12 +1188,12 @@ unorm_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) { } /* add the start code point of each same-value range of each trie */ - utrie_enum(&normTrie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&normTrie, NULL, _enumPropertyStartsRange, sa); if(fcdTrie.index!=NULL) { - utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&fcdTrie, NULL, _enumPropertyStartsRange, sa); } if(auxTrie.index!=NULL) { - utrie_enum(&auxTrie, NULL, _enumPropertyStartsRange, sa); + utrie2_enum(&auxTrie, NULL, _enumPropertyStartsRange, sa); } /* add Hangul LV syllables and LV+1 because of skippables */ @@ -1264,7 +1219,7 @@ unorm_getQuickCheck(UChar32 c, UNormalizationMode mode) { } #endif - UTRIE_GET32(&normTrie, c, norm32); + norm32=UTRIE2_GET32(&normTrie, c); norm32&=qcMask[mode]; if(norm32==0) { @@ -1278,7 +1233,6 @@ unorm_getQuickCheck(UChar32 c, UNormalizationMode mode) { U_CFUNC uint16_t U_EXPORT2 unorm_getFCD16FromCodePoint(UChar32 c) { - uint16_t fcd; #if !UNORM_HARDCODE_DATA UErrorCode errorCode; errorCode=U_ZERO_ERROR; @@ -1292,9 +1246,7 @@ unorm_getFCD16FromCodePoint(UChar32 c) { ) { return 0; } - - UTRIE_GET16(&fcdTrie, c, fcd); - return fcd; + return UTRIE2_GET16(&fcdTrie, c); } /* reorder UTF-16 in-place -------------------------------------------------- */ @@ -1481,12 +1433,12 @@ _findNextStarter(const UChar *src, const UChar *limit, break; /* true starter */ } - if(isNorm32LeadSurrogate(norm32)) { + if(U16_IS_LEAD(c)) { /* c is a lead surrogate, get the real norm32 */ - if((src+1)==limit || !UTF_IS_SECOND_SURROGATE(c2=*(src+1))) { + if((src+1)==limit || !U16_IS_TRAIL(c2=*(src+1))) { break; /* unmatched first surrogate: counts as a true starter */ } - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); if((norm32&ccOrQCMask)==0) { break; /* true starter */ @@ -1548,7 +1500,7 @@ unorm_getDecomposition(UChar32 c, UBool compat, } /* data lookup */ - UTRIE_GET32(&normTrie, c, norm32); + norm32=UTRIE2_GET32(&normTrie, c); if((norm32&qcMask)==0) { /* simple case: no decomposition */ if(c<=0xffff) { @@ -1725,7 +1677,7 @@ _decompose(UChar *dest, int32_t destCapacity, if(src!=limit && UTF_IS_SECOND_SURROGATE(c2=*src)) { ++src; length=2; - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); } else { c2=0; length=1; @@ -1857,7 +1809,7 @@ _getNextCombining(UChar *&p, const UChar *limit, /* c is a lead surrogate, get the real norm32 */ if(p!=limit && UTF_IS_SECOND_SURROGATE(c2=*p)) { ++p; - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); } else { c2=0; return 0; @@ -1890,9 +1842,10 @@ static inline uint16_t _getCombiningIndexFromStarter(UChar c, UChar c2) { uint32_t norm32; - norm32=_getNorm32(c); - if(c2!=0) { - norm32=_getNorm32FromSurrogatePair(norm32, c2); + if(c2==0) { + norm32=_getNorm32(c); + } else { + norm32=_getNorm32FromSurrogatePair(c, c2); } return *(_getExtraData(norm32)-1); } @@ -2462,7 +2415,7 @@ _compose(UChar *dest, int32_t destCapacity, if(src!=limit && UTF_IS_SECOND_SURROGATE(c2=*src)) { ++src; length=2; - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); } else { /* c is an unpaired lead surrogate, nothing to do */ c2=0; @@ -2646,7 +2599,7 @@ _findSafeFCD(const UChar *src, const UChar *limit, uint16_t fcd16) { ++src; } else if((src+1)!=limit && (c2=*(src+1), UTF_IS_SECOND_SURROGATE(c2))) { /* c is a lead surrogate, get the real fcd16 */ - fcd16=_getFCD16FromSurrogatePair(fcd16, c2); + fcd16=_getFCD16FromSurrogatePair(c, c2); if(fcd16<=0xff) { break; } @@ -2700,7 +2653,7 @@ _decomposeFCD(const UChar *src, const UChar *decompLimit, if(src!=decompLimit && UTF_IS_SECOND_SURROGATE(c2=*src)) { ++src; length=2; - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); } else { c2=0; length=1; @@ -2896,7 +2849,7 @@ unorm_makeFCD(UChar *dest, int32_t destCapacity, /* c is a lead surrogate, get the real fcd16 */ if(src!=limit && UTF_IS_SECOND_SURROGATE(c2=*src)) { ++src; - fcd16=_getFCD16FromSurrogatePair(fcd16, c2); + fcd16=_getFCD16FromSurrogatePair(c, c2); } else { c2=0; fcd16=0; @@ -3021,7 +2974,7 @@ unorm_checkFCD(const UChar *src, int32_t srcLength, const UnicodeSet *nx) { /* c is a lead surrogate, get the real fcd16 */ if(src!=limit && UTF_IS_SECOND_SURROGATE(c2=*src)) { ++src; - fcd16=_getFCD16FromSurrogatePair(fcd16, c2); + fcd16=_getFCD16FromSurrogatePair(c, c2); } else { c2=0; fcd16=0; @@ -3173,11 +3126,11 @@ _quickCheck(const UChar *src, } /* check one above-minimum, relevant code unit */ - if(isNorm32LeadSurrogate(norm32)) { + if(U16_IS_LEAD(c)) { /* c is a lead surrogate, get the real norm32 */ - if(src!=limit && UTF_IS_SECOND_SURROGATE(c2=*src)) { + if(src!=limit && U16_IS_TRAIL(c2=*src)) { ++src; - norm32=_getNorm32FromSurrogatePair(norm32, c2); + norm32=_getNorm32FromSurrogatePair(c, c2); } else { c2=0; norm32=0; @@ -3479,7 +3432,7 @@ _getPrevNorm32(UCharIterator &src, uint32_t minC, uint32_t mask, UChar &c, UChar return 0; } else { /* norm32 must be a surrogate special */ - return _getNorm32FromSurrogatePair(norm32, c); + return _getNorm32FromSurrogatePair(c2, c); } } else { /* unpaired second surrogate, undo the c2=src.previous() movement */ @@ -3721,7 +3674,7 @@ _getNextNorm32(UCharIterator &src, uint32_t minC, uint32_t mask, UChar &c, UChar return 0; } else { /* norm32 must be a surrogate special */ - return _getNorm32FromSurrogatePair(norm32, c2); + return _getNorm32FromSurrogatePair(c, c2); } } else { /* unmatched surrogate */ diff --git a/icu4c/source/common/unorm_props_data.c b/icu4c/source/common/unorm_props_data.c index 165e5f8e25..c16e3289ce 100644 --- a/icu4c/source/common/unorm_props_data.c +++ b/icu4c/source/common/unorm_props_data.c @@ -4,10 +4,10 @@ * * file name: unorm_props_data.c * - * machine-generated on: 2008-03-20 + * machine-generated on: 2008-10-14 */ -static const UVersionInfo formatVersion={ 2,3,5,2 }; +static const UVersionInfo formatVersion={ 3,3,0,0 }; static const UVersionInfo dataVersion={ 5,1,0,0 }; @@ -16,270 +16,386 @@ static const int32_t indexes[_NORM_INDEX_TOP]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; -static const uint16_t normTrie_index[2240]={ -0,0x8d9,0x80f,0x817,0,0x555,0x33e,0x346,0x34e,0x356,0x35e,0x366,0,0x36e,0x375,0x37d, -0x385,0x38d,0,0,0x81e,0x55d,0x564,0x56c,0x507,0x50f,0x17d,8,0x185,0x395,0x10,0x16, -0x39d,0x3a5,0x3ad,0x3b5,0x826,0,0x3bd,0x3c5,0,0,0,0,0x573,0x82e,0x836,0, -0x83a,0x3cd,0x517,0x57b,0,0,0x3d5,0x842,0x846,0x84b,0x853,0,0,0,0,0x859, -0,0,0,0,0,0,0,0,0,0x3dd,0x18d,0,0,0x51f,0x195,0, -0,0x19d,0x1a5,0,0,0x85e,0x866,0,0,0x527,0x1ad,0,0x3e5,0x52f,0x3ec,0, -0,0,0x3f3,0,0,0x86a,0x3fb,0,0,0x537,0x402,0,0,0,0x408,0, -0,0x582,0x872,0,0,0x589,0x590,0,0x598,0x875,0x1b5,0x1bd,0x1c5,0x1cd,0x87c,0, -0,0x410,0,0,0x881,0,0,0x59f,0x92b,0,0,0x53f,0,0x545,0x54d,0, -0,0,0,0,0,0,0,0,0,0,0x885,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x88d,0x88d,0,0,0,0,0x893,0, -0,0,0,0,0,0x89b,0,0,0,0x89e,0,0,0,0,0,0, -0x8a5,0,0,0,0,0,0,0,0x417,0x41c,0x424,0x8ac,0,0x8b2,0,0, -0,0x8b5,0,0,0,0,0,0,0,0x1d,0x25,0x5a7,0x5ae,0x5b6,0x8bd,0x8c4, -0x42c,0x434,0x43c,0x444,0x44c,0x454,0x45c,0x464,0x46c,0x474,0x47c,0x1d5,0x484,0x1dd,0x1e5,0x1ed, -0x1f5,0x5be,0x5c6,0x5ce,0x5d6,0x2d,0x8cc,0x8d4,0x35,0x3d,0x45,0x5de,0x48c,0x493,0x498,0, -0x4a0,0x4a8,0x4b0,0x4b8,0x4c0,0x4c8,0,0x4d0,0,0x1fb,0,0,0,0,0,0, -0,0,0,0x5e6,0x5ee,0x5f6,0x5fe,0x606,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x60b,0,0,0x60f,0,0,0x1fe,0,0,0,0,0,0,0,0,0, -0,0,0,0x4d,0,0,0,0,0,0,0,0x615,0,0,0,0x8e1, -0,0,0,0,0x619,0,0,0x621,0x629,0x631,0x639,0x641,0x649,0x651,0x659,0, -0x661,0x667,0x4d7,0x4df,0x4e7,0x4ef,0x4f7,0x4ff,0,0x66e,0x676,0x67e,0x686,0,0,0, -0x68e,0x696,0x55,0x69e,0x6a6,0x6ae,0x5d,0x6b6,0x6be,0x6c6,0x6ce,0x65,0x6d,0x75,0x7d,0x6d6, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x8e9,0,0,0,0,0,0,0,0x6de,0,0,0,0, -0x8f1,0,0,0,0,0,0x8f8,0,0,0x8fe,0x902,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x93a,0,0, -0x942,0x945,0,0x94b,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x206,0x20e,0x216,0x21e,0x226,0x22e,0x236,0x23e, -0x246,0x24e,0x256,0x25e,0x266,0x26e,0x276,0,0x27e,0x286,0x28e,0x6e6,0x6ee,0x6f6,0x6fb,0x703, -0x70b,0x713,0x71b,0x723,0x72b,0x733,0x73b,0x743,0x74b,0x753,0x75b,0x763,0x76b,0x773,0x77b,0x77f, -0x787,0x78f,0x797,0x79f,0x7a7,0x7af,0x7b7,0x7bf,0x7c7,0x7cf,0x7d7,0x7df,0x7e7,0x7ef,0x7f7,0x7ff, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x907, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x90f,0x913,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x296,0x29e,0x91b,0x2a6,0x2ae,0, -0,0,0x923,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x85,0x8d,0x95,0x9d,0xa5,0xad,0xb5,0xbd,0xc5,0xcd,0xd5,0xdd,0xe5,0xed,0xf5,0xfd, -0x105,0x10d,0x115,0x11d,0x125,0x12d,0x135,0x13d,0x145,0x14d,0x155,0x15d,0x165,0x16d,0x175,0x807, -0x2b6,0x2be,0x2c6,0x2ce,0x2d6,0x2de,0x2e6,0x2ee,0x2f6,0x2fe,0x306,0x30e,0x316,0x31e,0x326,0x32e, -0x336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +static const uint16_t normTrie_index[2408]={ +0,8,0x10,0x18,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x77,0x7f, +0x87,0x8f,0x1f,0x27,0x94,0x9c,0xa3,0xab,0xb3,0xbb,0xc3,0xcb,0xd3,0xdb,0xe3,0xeb, +0xf3,0xfb,0x103,0x10b,0x113,0x11b,0x123,0x12b,0x1f,0x27,0x1f,0x27,0x132,0x13a,0x142,0x14a, +0x14e,0x156,0x15c,0x164,0x1f,0x27,0x16c,0x174,0x178,0x180,0x188,0x190,0x1f,0x27,0x18e,0x196, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x19c,0x1a4,0x1f,0x1f,0x1ac,0x1b4,0x1f, +0x1f,0x1bc,0x1c4,0x1f,0x1f,0x1cc,0x1d4,0x1f,0x1f,0x1d8,0x1e0,0x1f,0x1e8,0x1ee,0x1f6,0x1f, +0x1f,0x1f,0x1fd,0x1f,0x1f,0x203,0x20b,0x1f,0x1f,0x211,0x219,0x1f,0x1f,0x1f,0x21f,0x1f, +0x1f,0x227,0x22e,0x1f,0x1f,0x232,0x239,0x1f,0x241,0x248,0x250,0x258,0x260,0x268,0x26f,0x1f, +0x1f,0x276,0x1f,0x1f,0x27d,0x1f,0x1f,0x281,0x289,0x1f,0x1f,0x291,0x1f,0x297,0x29f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x191,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x2a2,0x2a2,0x1f,0x1f,0x1f,0x1f,0x2a8,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x2b0,0x1f,0x1f,0x1f,0x2b3,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x2ba,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x2c1,0x2c6,0x2ce,0x2d4,0x1f,0x2da,0x1f,0x1f, +0x1f,0x2dd,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x2e3,0x2eb,0x2f3,0x2fa,0x302,0x30a,0x311, +0x319,0x321,0x329,0x331,0x339,0x341,0x349,0x351,0x359,0x361,0x369,0x371,0x379,0x381,0x389,0x391, +0x399,0x3a0,0x3a8,0x3b0,0x3b8,0x3be,0x3c2,0x3ca,0x3d2,0x3da,0x3e2,0x3ea,0x3f2,0x3f9,0x3fe,0x1f, +0x406,0x40e,0x416,0x41e,0x426,0x42e,0x1f,0x436,0x1f,0x43c,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x444,0x44c,0x454,0x45c,0x464,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x469,0x1f,0x1f,0x46d,0x1f,0x1f,0x473,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x47b,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x483,0x1f,0x1f,0x1f,0x48b, +0x1f,0x1f,0x1f,0x1f,0x493,0x1f,0x1f,0x49b,0x4a3,0x4ab,0x4b3,0x4bb,0x4c3,0x4cb,0x4d3,0x1f, +0x4db,0x4e1,0x4e8,0x4f0,0x4f8,0x500,0x508,0x510,0x1f,0x518,0x520,0x528,0x530,0x1f,0x1f,0x1f, +0x538,0x540,0x548,0x550,0x558,0x560,0x568,0x570,0x578,0x580,0x588,0x590,0x598,0x5a0,0x5a8,0x5b0, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x5b8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x5c0,0x1f,0x1f,0x1f,0x1f, +0x5c7,0x1f,0x1f,0x1f,0x1f,0x1f,0x5ce,0x1f,0x1f,0x5d4,0x5d8,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0, +0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e0,0x5e7,0x1f,0x1f, +0x966,0x969,0x1f,0x96f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x5ef,0x5f7,0x5ff,0x607,0x60f,0x617,0x61f,0x627, +0x62f,0x637,0x63f,0x647,0x64f,0x657,0x65f,0x1f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x694,0x69c, +0x6a4,0x6ac,0x6b4,0x6bc,0x6c4,0x6cc,0x6d4,0x6dc,0x6e4,0x6ec,0x6f4,0x6fc,0x704,0x70c,0x714,0x718, +0x720,0x728,0x730,0x738,0x740,0x748,0x750,0x758,0x760,0x768,0x770,0x778,0x780,0x788,0x790,0x798, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x80,0x80,0xa0,0xe0,0x120,0x160,0x1a0,0x1dc,0x21c,0x7c,0x250,0x28c,0x2cc,0x30c,0x34c,0x38c, +0x3cc,0x40c,0x44c,0x48c,0x7c,0x7c,0x4c8,0x508,0x538,0x570,0x7c,0x5b0,0x5e0,0x620,0x7c,0x638, +0x880,0x8b0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x8e6,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x926, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x79c, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x7a4,0x7a8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x7b0,0x7b8,0x7c0,0x7c6,0x7ce,0x1f,0x1f,0x1f,0x7d6,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x7de,0x7e6,0x7ee,0x7f6,0x7fe,0x806,0x80e,0x816,0x81e,0x826, +0x82e,0x836,0x83e,0x846,0x84e,0x856,0x85e,0x866,0x86e,0x876,0x87e,0x886,0x88e,0x896,0x89e,0x8a6, +0x8ae,0x8b6,0x8be,0x8c6,0x8ce,0x8d6,0x8de,0x8e6,0x8ee,0x8f6,0x8fe,0x906,0x90e,0x916,0x91e,0x926, +0x92e,0x936,0x93e,0x946,0x94e,0x956,0x95e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, +0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xffff,0xffff }; -static const uint32_t normTrie_data32[9548]={ +static const uint32_t normTrie_data32[9696]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xea00,0xea00,0xe900,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0,0,0,0,0x616000f,0,0,0,0,0,0x13d000a,0,0,0,0x618000f,0, -0,0x3df60040,0,0,0,0x3da70040,0,0,0,0x3da90040,0x14a9004c,0x14ae004c,0x14b2000c,0x14b6000c,0x14bb004c,0, -0x2127000a,0x2129000a,0x142004a,0x144000e,0x14b000e,0x212b000a,0x212d000a,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x212f000a,0x2131000a,0x152000a,0,0x2133000a,0x2135000a,0,0, -0,0x154000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x156000a,0x158000a,0x15a000a,0,0x15c000a,0x15e000a,0x160000a,0x162000a,0x164000a,0x166000a,0x168000a,0x16a000a,0x16c000a,0x16e000a,0x170000a,0, -0x172000a,0x174000a,0x176000a,0x178000a,0x17a000a,0x17c000a,0x17e000a,0x2160000a,0x2162000a,0x2164000a,0x2166000a,0x2168000a,0x216a000a,0x216c000a,0x216e000a,0x2170000a, -0x2172000a,0x2174000a,0,0x2176000a,0x2178000a,0x217a000a,0x217c000a,0x217e000a,0x2180000a,0x2182000a,0x2184000a,0x2186000a,0x2188000a,0x218a000a,0x218c000a,0x218e000a, -0x2190000a,0x2192000a,0x2194000a,0x2196000a,0,0,0,0,0,0,0,0,0x180000a,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x229b000a,0x229f000a,0x183000a,0x185000a,0,0x22a3000a,0x22a7000a,0x188000a,0,0x18a000a,0x22ab000a,0x18d000a, -0x18f000a,0x191000a,0x22ad000a,0x22af000a,0x193000a,0x195000a,0x197000a,0x22b1000a,0,0x199000a,0x19b000a,0,0,0x19e000a,0x1a0000a,0x1a2000a, -0x1a4000a,0x1a6000a,0,0,0x1a8000a,0x1ab000a,0x1af000a,0,0x1b2000a,0,0x6f9000f,0,0x1b4000a,0,0x6fb000f,0x6fd000f, -0x1b6000a,0x1b8000a,0,0x22b3000a,0x1ba000a,0x1bc000a,0,0x1be000a,0x22b5000a,0x22b7000a,0x22b9000a,0x22bb000a,0x22bd000a,0x22bf000a,0,0x1c0000a, -0x22c1000a,0x22c3000a,0x1c4000a,0x1c6000a,0x22c5000a,0,0,0,0,0x1c8000a,0x22c7000a,0x22c9000a,0x22cb000a,0x22cd000a,0,0, -0,0,0,0,0,0,0,0x22cf000a,0x22d3000a,0x22d7000a,0x22db000a,0x22df000a,0x22e3000a,0x22e7000a,0x22eb000a,0x22ef000a, -0x22f3000a,0x22f7000a,0x22fb000a,0x22ff000a,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x3e0a0040,0x3e070040,0x3e0b0040,0, +0,0x3d700040,0x3dea0040,0x3d710040,0x3d800040,0x3d720040,0x3dec0040,0x3d820040,0x3d840040,0x3d730040,0x3d860040,0x3d880040,0x3d8a0040,0x3dee0040,0x3d740040,0x3d750040, +0x3df00040,0,0x3d8c0040,0x3d8e0040,0x3d900040,0x3d760040,0x3df20040,0x3d920040,0x3df40040,0x3d770040,0x3d940040,0,0,0,0,0, +0,0x3d780040,0x3deb0040,0x3d790040,0x3d810040,0x3d7a0040,0x3ded0040,0x3d830040,0x3d850040,0x3d7b0040,0x3d870040,0x3d890040,0x3d8b0040,0x3def0040,0x3d7c0040,0x3d7d0040, +0x3df10040,0,0x3d8d0040,0x3d8f0040,0x3d910040,0x3d7e0040,0x3df30040,0x3d930040,0x3df50040,0x3d7f0040,0x3d950040,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x2523000a,0x1ca000a,0,0,0x28d9000a,0x28dd000a,0x28e1000a,0x28e5000a,0,0,0,0,0,0,0,0, -0,0,0,0,0x1cc000a,0x28e9000a,0x28ec000a,0x28ef000a,0x28f2000a,0x28f5000a,0x28f8000a,0x28fb000a,0x28fe000a,0x2901000a,0x2904000a,0x2907000a, -0x290a000a,0x290d000a,0x2910000a,0x2913000a,0x29f9000a,0x29fc000a,0x29ff000a,0x2a02000a,0x2a05000a,0x2a08000a,0x2a0b000a,0x2a0e000a,0x2a11000a,0x2a14000a,0x2a18000a,0x2a1c000a, -0x1d0000a,0x2a20000a,0x1d3000a,0x1d6000a,0x2a24000a,0x2a26000a,0x2a28000a,0x2a2a000a,0x2a2c000a,0x2a2e000a,0x2a30000a,0x2a32000a,0x2a34000a,0x2a36000a,0x2a38000a,0x2a3a000a, -0x2a3c000a,0x2a3e000a,0x2a40000a,0x2a42000a,0x2c58000a,0x2c5b000a,0x2c5e000a,0x2c62000a,0x2c66000a,0x2c6a000a,0x2c6e000a,0x2c72000a,0x2c76000a,0x2c7a000a,0x2c7e000a,0x2c82000a, -0x2c86000a,0x2c8a000a,0x2c8e000a,0x2c92000a,0x2c96000a,0x1da000a,0x2c9a000a,0x1de000a,0x2c9d000a,0x1e1000a,0x2ca1000a,0x2ca4000a,0x2ca7000a,0x2cab000a,0x1e4000a,0x2caf000a, -0x2cb2000a,0x2cb5000a,0x2cb8000a,0x2cbb000a,0x1e7000a,0x1ea000a,0x1ed000a,0x1f0000a,0x1f3000a,0x1f6000a,0x1f9000a,0x1fc000a,0x2cc0000a,0x2cc4000a,0x1ff000a,0x202000a, -0x205000a,0x2cc9000a,0x2ccc000a,0x2ccf000a,0x208000a,0x20b000a,0x20f000a,0x213000a,0x217000a,0x2cd2000a,0x2cd5000a,0x2cd8000a,0x2cdb000a,0x2cde000a,0x2ce1000a,0x2ce4000a, -0x2ce7000a,0x2cea000a,0x2ced000a,0x2cf0000a,0x2cf4000a,0x2cf8000a,0x2cfb000a,0x2cff000a,0x2d03000a,0x2d07000a,0x2d0a000a,0x2d0e000a,0x2d12000a,0x21b000a,0x21e000a,0x222000a, -0x226000a,0x2d17000a,0x2d1b000a,0x2d21000a,0x2d28000a,0x2d2b000a,0x2d2e000a,0x2d31000a,0x22a000a,0x22d000a,0x230000a,0x233000a,0x236000a,0x239000a,0x23c000a,0x23f000a, -0x242000a,0x245000a,0x248000a,0x24b000a,0x24e000a,0x251000a,0x2d34000a,0x254000a,0x2d39000a,0x2d3c000a,0x257000a,0x25c000a,0x260000a,0x263000a,0x2d3f000a,0x266000a, -0x2d42000a,0x269000a,0x26c000a,0x2d45000a,0x2d48000a,0x2d4b000a,0x2d4e000a,0x2d52000a,0x2d55000a,0x2d58000a,0x2d5c000a,0x26f000a,0x2d60000a,0x272000a,0x276000a,0x2d65000a, -0x279000a,0x27c000a,0x27f000a,0x283000a,0x287000a,0x289000a,0x28b000a,0x28d000a,0x28f000a,0x291000a,0x293000a,0x295000a,0x297000a,0x299000a,0x29b000a,0x29d000a, -0x29f000a,0x2a1000a,0x2a3000a,0x2a5000a,0x2a7000a,0x2a9000a,0x2ab000a,0x2ad000a,0x2af000a,0x2b1000a,0x2b3000a,0x2b5000a,0x2b7000a,0x2b9000a,0x3929000a,0x392b000a, -0x392d000a,0x392f000a,0x3931000a,0x3933000a,0x3935000a,0x3937000a,0x3939000a,0x393b000a,0x393d000a,0x393f000a,0x3941000a,0x3943000a,0x3945000a,0x3947000a,0x3949000a,0x394b000a, -0x394d000a,0x394f000a,0x3951000a,0x3953000a,0x3955000a,0x3957000a,0x3959000a,0x395b000a,0x2bb000a,0x2bd000a,0x2bf000a,0x2c1000a,0x2c3000a,0x2c5000a,0x2c7000a,0x2c9000a, -0x2cb000a,0x2cd000a,0x2cf000a,0x2d1000a,0x2d3000a,0x2d5000a,0x2d7000a,0x2d9000a,0x2db000a,0x2dd000a,0x2df000a,0x2e1000a,0x2e3000a,0x2e5000a,0x2e7000a,0x2e9000a, -0x2eb000a,0x2ed000a,0x395d000a,0x395f000a,0x3961000a,0x3963000a,0x3965000a,0x3967000a,0x3969000a,0,0x396b000a,0x396d000a,0x396f000a,0x3971000a,0x3973000a,0x3975000a, -0x3977000a,0x3979000a,0x397b000a,0x397d000a,0x397f000a,0x3981000a,0x3983000a,0x3985000a,0x3987000a,0x3989000a,0x398b000a,0x398d000a,0x2ef000a,0x2f1000a,0x2f3000a,0x2f5000a, -0x2f7000a,0x2f9000a,0x2fb000a,0x2fd000a,0x2ff000a,0x301000a,0x303000a,0x305000a,0x307000a,0x309000a,0x30b000a,0x30d000a,0x30f000a,0x311000a,0x313000a,0x315000a, -0x317000a,0x319000a,0x31b000a,0x31d000a,0x31f000a,0x321000a,0x398f000a,0x3991000a,0x3993000a,0x3995000a,0x3997000a,0x3999000a,0x399b000a,0x399d000a,0x399f000a,0x39a1000a, -0x39a3000a,0x39a5000a,0x39a7000a,0x39a9000a,0x39ab000a,0x39ad000a,0x39af000a,0x39b1000a,0x39b3000a,0x39b5000a,0x39b7000a,0x39b9000a,0x39bb000a,0x39bd000a,0x39bf000a,0x39c1000a, -0x323000a,0,0x325000a,0x327000a,0,0,0x329000a,0,0,0x32b000a,0x32d000a,0,0,0x32f000a,0x331000a,0x333000a, -0x335000a,0,0x337000a,0x339000a,0x33b000a,0x33d000a,0x33f000a,0x341000a,0x343000a,0x345000a,0x39c3000a,0x39c5000a,0x39c7000a,0x39c9000a,0,0x39cb000a, -0,0x39cd000a,0x39cf000a,0x39d1000a,0x39d3000a,0x39d5000a,0x39d7000a,0x39d9000a,0,0x39db000a,0x39dd000a,0x39df000a,0x39e1000a,0x39e3000a,0x39e5000a,0x39e7000a, -0x39e9000a,0x39eb000a,0x39ed000a,0x39ef000a,0x347000a,0x349000a,0x34b000a,0x34d000a,0x34f000a,0x351000a,0x353000a,0x355000a,0x357000a,0x359000a,0x35b000a,0x35d000a, -0x35f000a,0x361000a,0x363000a,0x365000a,0x367000a,0x369000a,0x36b000a,0x36d000a,0x36f000a,0x371000a,0x373000a,0x375000a,0x377000a,0x379000a,0x39f1000a,0x39f3000a, -0x39f5000a,0x39f7000a,0x39f9000a,0x39fb000a,0x39fd000a,0x39ff000a,0x3a01000a,0x3a03000a,0x3a05000a,0x3a07000a,0x3a09000a,0x3a0b000a,0x3a0d000a,0x3a0f000a,0x3a11000a,0x3a13000a, -0x3a15000a,0x3a17000a,0x3a19000a,0x3a1b000a,0x3a1d000a,0x3a1f000a,0x3a21000a,0x3a23000a,0x37b000a,0x37d000a,0,0x37f000a,0x381000a,0x383000a,0x385000a,0, -0,0x387000a,0x389000a,0x38b000a,0x38d000a,0x38f000a,0x391000a,0x393000a,0x395000a,0,0x397000a,0x399000a,0x39b000a,0x39d000a,0x39f000a,0x3a1000a, -0x3a3000a,0,0x3a25000a,0x3a27000a,0x3a29000a,0x3a2b000a,0x3a2d000a,0x3a2f000a,0x3a31000a,0x3a33000a,0x3a35000a,0x3a37000a,0x3a39000a,0x3a3b000a,0x3a3d000a,0x3a3f000a, -0x3a41000a,0x3a43000a,0x3a45000a,0x3a47000a,0x3a49000a,0x3a4b000a,0x3a4d000a,0x3a4f000a,0x3a51000a,0x3a53000a,0x3a55000a,0x3a57000a,0x3a5000a,0x3a7000a,0,0x3a9000a, -0x3ab000a,0x3ad000a,0x3af000a,0,0x3b1000a,0x3b3000a,0x3b5000a,0x3b7000a,0x3b9000a,0,0x3bb000a,0,0,0,0x3bd000a,0x3bf000a, -0x3c1000a,0x3c3000a,0x3c5000a,0x3c7000a,0x3c9000a,0,0x3a59000a,0x3a5b000a,0x3a5d000a,0x3a5f000a,0x3a61000a,0x3a63000a,0x3a65000a,0x3a67000a,0x3a69000a,0x3a6b000a, -0x3a6d000a,0x3a6f000a,0x3a71000a,0x3a73000a,0x3a75000a,0x3a77000a,0x3a79000a,0x3a7b000a,0x3a7d000a,0x3a7f000a,0x3a81000a,0x3a83000a,0x3a85000a,0x3a87000a,0x3a89000a,0x3a8b000a, -0x3cb000a,0x3cd000a,0x3cf000a,0x3d1000a,0x3d3000a,0x3d5000a,0x3d7000a,0x3d9000a,0x3db000a,0x3dd000a,0x3df000a,0x3e1000a,0x3e3000a,0x3e5000a,0x3e7000a,0x3e9000a, -0x3eb000a,0x3ed000a,0x3ef000a,0x3f1000a,0x3f3000a,0x3f5000a,0x3f7000a,0x3f9000a,0x3fb000a,0x3fd000a,0x3a8d000a,0x3a8f000a,0x3a91000a,0x3a93000a,0x3a95000a,0x3a97000a, -0x3a99000a,0x3a9b000a,0x3a9d000a,0x3a9f000a,0x3aa1000a,0x3aa3000a,0x3aa5000a,0x3aa7000a,0x3aa9000a,0x3aab000a,0x3aad000a,0x3aaf000a,0x3ab1000a,0x3ab3000a,0x3ab5000a,0x3ab7000a, -0x3ab9000a,0x3abb000a,0x3abd000a,0x3abf000a,0x3ff000a,0x401000a,0x403000a,0x405000a,0x407000a,0x409000a,0x40b000a,0x40d000a,0x40f000a,0x411000a,0x413000a,0x415000a, -0x417000a,0x419000a,0x41b000a,0x41d000a,0x41f000a,0x421000a,0x423000a,0x425000a,0x427000a,0x429000a,0x42b000a,0x42d000a,0x42f000a,0x431000a,0x3ac1000a,0x3ac3000a, -0x3ac5000a,0x3ac7000a,0x3ac9000a,0x3acb000a,0x3acd000a,0x3acf000a,0x3ad1000a,0x3ad3000a,0x3ad5000a,0x3ad7000a,0x3ad9000a,0x3adb000a,0x3add000a,0x3adf000a,0x3ae1000a,0x3ae3000a, -0x3ae5000a,0x3ae7000a,0x3ae9000a,0x3aeb000a,0x3aed000a,0x3aef000a,0x3af1000a,0x3af3000a,0x433000a,0x435000a,0x437000a,0x439000a,0x43b000a,0x43d000a,0x43f000a,0x441000a, -0x443000a,0x445000a,0x447000a,0x449000a,0x44b000a,0x44d000a,0x44f000a,0x451000a,0x453000a,0x455000a,0x457000a,0x459000a,0x45b000a,0x45d000a,0x45f000a,0x461000a, -0x463000a,0x465000a,0x3af5000a,0x3af7000a,0x3af9000a,0x3afb000a,0x3afd000a,0x3aff000a,0x3b01000a,0x3b03000a,0x3b05000a,0x3b07000a,0x3b09000a,0x3b0b000a,0x3b0d000a,0x3b0f000a, -0x3b11000a,0x3b13000a,0x3b15000a,0x3b17000a,0x3b19000a,0x3b1b000a,0x3b1d000a,0x3b1f000a,0x3b21000a,0x3b23000a,0x3b25000a,0x3b27000a,0x467000a,0x469000a,0x46b000a,0x46d000a, -0x46f000a,0x471000a,0x473000a,0x475000a,0x477000a,0x479000a,0x47b000a,0x47d000a,0x47f000a,0x481000a,0x483000a,0x485000a,0x487000a,0x489000a,0x48b000a,0x48d000a, -0x48f000a,0x491000a,0x493000a,0x495000a,0x497000a,0x499000a,0x3b29000a,0x3b2b000a,0x3b2d000a,0x3b2f000a,0x3b31000a,0x3b33000a,0x3b35000a,0x3b37000a,0x3b39000a,0x3b3b000a, -0x3b3d000a,0x3b3f000a,0x3b41000a,0x3b43000a,0x3b45000a,0x3b47000a,0x3b49000a,0x3b4b000a,0x3b4d000a,0x3b4f000a,0x3b51000a,0x3b53000a,0x3b55000a,0x3b57000a,0x3b59000a,0x3b5b000a, -0x49b000a,0x49d000a,0x49f000a,0x4a1000a,0x4a3000a,0x4a5000a,0x4a7000a,0x4a9000a,0x4ab000a,0x4ad000a,0x4af000a,0x4b1000a,0x4b3000a,0x4b5000a,0x4b7000a,0x4b9000a, -0x4bb000a,0x4bd000a,0x4bf000a,0x4c1000a,0x4c3000a,0x4c5000a,0x4c7000a,0x4c9000a,0x4cb000a,0x4cd000a,0x3b5d000a,0x3b5f000a,0x3b61000a,0x3b63000a,0x3b65000a,0x3b67000a, -0x3b69000a,0x3b6b000a,0x3b6d000a,0x3b6f000a,0x3b71000a,0x3b73000a,0x3b75000a,0x3b77000a,0x3b79000a,0x3b7b000a,0x3b7d000a,0x3b7f000a,0x3b81000a,0x3b83000a,0x3b85000a,0x3b87000a, -0x3b89000a,0x3b8b000a,0x3b8d000a,0x3b8f000a,0x4cf000a,0x4d1000a,0x4d3000a,0x4d5000a,0x4d7000a,0x4d9000a,0x4db000a,0x4dd000a,0x4df000a,0x4e1000a,0x4e3000a,0x4e5000a, -0x4e7000a,0x4e9000a,0x4eb000a,0x4ed000a,0x4ef000a,0x4f1000a,0x4f3000a,0x4f5000a,0x4f7000a,0x4f9000a,0x4fb000a,0x4fd000a,0x4ff000a,0x501000a,0x3b91000a,0x3b93000a, -0x3b95000a,0x3b97000a,0x3b99000a,0x3b9b000a,0x3b9d000a,0x3b9f000a,0x3ba1000a,0x3ba3000a,0x3ba5000a,0x3ba7000a,0x3ba9000a,0x3bab000a,0x3bad000a,0x3baf000a,0x3bb1000a,0x3bb3000a, -0x3bb5000a,0x3bb7000a,0x3bb9000a,0x3bbb000a,0x3bbd000a,0x3bbf000a,0x3bc1000a,0x3bc3000a,0x3bc5000a,0x3bc7000a,0,0,0x503000a,0x505000a,0x507000a,0x509000a, -0x50b000a,0x50d000a,0x50f000a,0x511000a,0x513000a,0x515000a,0x517000a,0x519000a,0x51b000a,0x51d000a,0x51f000a,0x521000a,0x523000a,0x525000a,0x527000a,0x529000a, -0x52b000a,0x52d000a,0x52f000a,0x531000a,0x533000a,0x3bc9000a,0x3bcb000a,0x3bcd000a,0x3bcf000a,0x3bd1000a,0x3bd3000a,0x3bd5000a,0x3bd7000a,0x3bd9000a,0x3bdb000a,0x3bdd000a, -0x3bdf000a,0x3be1000a,0x3be3000a,0x3be5000a,0x3be7000a,0x3be9000a,0x3beb000a,0x535000a,0x3bed000a,0x3bef000a,0x3bf1000a,0x3bf3000a,0x3bf5000a,0x3bf7000a,0x3bf9000a,0x3bfb000a, -0x3bfd000a,0x3bff000a,0x3c01000a,0x3c03000a,0x3c05000a,0x3c07000a,0x537000a,0x539000a,0x53b000a,0x53d000a,0x53f000a,0x541000a,0x543000a,0x545000a,0x547000a,0x549000a, -0x54b000a,0x54d000a,0x54f000a,0x551000a,0x553000a,0x555000a,0x557000a,0x559000a,0x55b000a,0x55d000a,0x55f000a,0x561000a,0x563000a,0x565000a,0x567000a,0x3c09000a, -0x3c0b000a,0x3c0d000a,0x3c0f000a,0x3c11000a,0x3c13000a,0x3c15000a,0x3c17000a,0x3c19000a,0x3c1b000a,0x3c1d000a,0x3c1f000a,0x3c21000a,0x3c23000a,0x3c25000a,0x3c27000a,0x3c29000a, -0x3c2b000a,0x569000a,0x3c2d000a,0x3c2f000a,0x3c31000a,0x3c33000a,0x3c35000a,0x3c37000a,0x3c39000a,0x3c3b000a,0x3c3d000a,0x3c3f000a,0x3c41000a,0x3c43000a,0x3c45000a,0x3c47000a, -0x56b000a,0x56d000a,0x56f000a,0x571000a,0x573000a,0x575000a,0x577000a,0x579000a,0x57b000a,0x57d000a,0x57f000a,0x581000a,0x583000a,0x585000a,0x587000a,0x589000a, -0x58b000a,0x58d000a,0x58f000a,0x591000a,0x593000a,0x595000a,0x597000a,0x599000a,0x59b000a,0x3c49000a,0x3c4b000a,0x3c4d000a,0x3c4f000a,0x3c51000a,0x3c53000a,0x3c55000a, -0x3c57000a,0x3c59000a,0x3c5b000a,0x3c5d000a,0x3c5f000a,0x3c61000a,0x3c63000a,0x3c65000a,0x3c67000a,0x3c69000a,0x3c6b000a,0x59d000a,0x3c6d000a,0x3c6f000a,0x3c71000a,0x3c73000a, -0x3c75000a,0x3c77000a,0x3c79000a,0x3c7b000a,0x3c7d000a,0x3c7f000a,0x3c81000a,0x3c83000a,0x3c85000a,0x3c87000a,0x59f000a,0x5a1000a,0x5a3000a,0x5a5000a,0x5a7000a,0x5a9000a, -0x5ab000a,0x5ad000a,0x5af000a,0x5b1000a,0x5b3000a,0x5b5000a,0x5b7000a,0x5b9000a,0x5bb000a,0x5bd000a,0x5bf000a,0x5c1000a,0x5c3000a,0x5c5000a,0x5c7000a,0x5c9000a, -0x5cb000a,0x5cd000a,0x5cf000a,0x3c89000a,0x3c8b000a,0x3c8d000a,0x3c8f000a,0x3c91000a,0x3c93000a,0x3c95000a,0x3c97000a,0x3c99000a,0x3c9b000a,0x3c9d000a,0x3c9f000a,0x3ca1000a, -0x3ca3000a,0x3ca5000a,0x3ca7000a,0x3ca9000a,0x3cab000a,0x5d1000a,0x3cad000a,0x3caf000a,0x3cb1000a,0x3cb3000a,0x3cb5000a,0x3cb7000a,0x3cb9000a,0x3cbb000a,0x3cbd000a,0x3cbf000a, -0x3cc1000a,0x3cc3000a,0x3cc5000a,0x3cc7000a,0x5d3000a,0x5d5000a,0x5d7000a,0x5d9000a,0x5db000a,0x5dd000a,0x5df000a,0x5e1000a,0x5e3000a,0x5e5000a,0x5e7000a,0x5e9000a, -0x5eb000a,0x5ed000a,0x5ef000a,0x5f1000a,0x5f3000a,0x5f5000a,0x5f7000a,0x5f9000a,0x5fb000a,0x5fd000a,0x5ff000a,0x601000a,0x603000a,0x3cc9000a,0x3ccb000a,0x3ccd000a, -0x3ccf000a,0x3cd1000a,0x3cd3000a,0x3cd5000a,0x3cd7000a,0x3cd9000a,0x3cdb000a,0x3cdd000a,0x3cdf000a,0x3ce1000a,0x3ce3000a,0x3ce5000a,0x3ce7000a,0x3ce9000a,0x3ceb000a,0x605000a, -0x3ced000a,0x3cef000a,0x3cf1000a,0x3cf3000a,0x3cf5000a,0x3cf7000a,0x3cf9000a,0x3cfb000a,0x3cfd000a,0x3cff000a,0x3d01000a,0x3d03000a,0x3d05000a,0x3d07000a,0x607000a,0x3d09000a, -0,0,0x3d0b000a,0x3d0d000a,0x3d0f000a,0x3d11000a,0x3d13000a,0x3d15000a,0x3d17000a,0x3d19000a,0x3d1b000a,0x3d1d000a,0x3d1f000a,0x3d21000a,0x3d23000a,0x3d25000a, -0x3d27000a,0x3d29000a,0x3d2b000a,0x3d2d000a,0x609e60f,0x60ce60f,0x206fe6b0,0x60fe60f,0x612e60f,0x2070f0b0,0xe600,0xdc00,0xdc00,0xdc00,0xe600,0xe600, -0xe600,0xdc00,0xdc00,0,0xe600,0xe600,0xe600,0xdc00,0xdc00,0xdc00,0xdc00,0xe600,0xe800,0xdc00,0xdc00,0xe600, -0xe900,0xea00,0xea00,0xe900,0,0,0,0,0x2123000a,0x1460000e,0x1468000c,0x61a000f,0x146c000c,0x1470000c,0x1474000c,0, -0x1478000c,0,0x147c000c,0x1480000c,0x1484000c,0x3d9c0040,0,0,0,0x3d9d0040,0,0x3d9e0040,0,0x3d9f0040,0,0, -0,0,0,0x3da00040,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x900,0,0,0,0xe600,0xdc00,0xe600,0xe600,0,0,0,0x61c000f,0x620000f,0x624000f,0x628000f, -0x62c000f,0x630000f,0x634000f,0x638000f,0,0,0,0,0,0,0,0x3dd30040,0,0,0,0x15bb000c, -0x15be000c,0x900,0,0,0,0,0,0,0,0,0,0x207600b0,0,0,0,0, -0x63c000f,0x640000f,0,0x644000f,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x648000f,0,0,0x64c000f,0,0,0,0,0, -0x700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x900,0,0,0,0,0,0,0,0,0,0,0,0x650000f,0x654000f,0x658000f, -0,0,0x65c000f,0,0,0,0,0,0,0,0,0x3dd40040,0x15c1000c,0,0,0x15c4000c, -0x15c7000c,0x900,0,0,0,0,0,0,0,0,0x207800b0,0x207900b0,0,0,0,0, -0x660000f,0x664000f,0,0,0,0,0,0x668000f,0,0,0,0,0,0,0,0, -0,0x66b000f,0,0,0,0,0x66e000f,0,0,0,0,0x671000f,0,0,0,0, -0x674000f,0,0,0,0,0,0,0,0,0,0,0,0,0x677000f,0,0, -0,0,0,0,0,0x8100,0x8200,0x67a000f,0x8400,0x67e000f,0x682000f,0x2154000a,0x686000f,0x2159000a,0x8200,0x8200, -0x8200,0x8200,0,0,0x8200,0x68a000f,0xe600,0xe600,0x900,0,0xe600,0xe600,0,0,0,0, -0,0,0,0,0,0,0,0x68e000f,0,0,0,0,0,0,0,0, -0,0x691000f,0,0,0,0,0x694000f,0,0,0,0,0x697000f,0,0,0,0, -0x69a000f,0,0,0,0,0,0,0,0,0,0,0,0,0x69d000f,0,0, -0,0,0,0,0x1c24004c,0x1c29004c,0x1c2e004c,0x1c34004c,0x1c3a004c,0x1c40004c,0x1c46004c,0x1c4c004c,0x1c52004c,0x1c57004c,0x1c5c004c,0x1c62004c, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x2088000a,0,0,0,0,0,0,0,0x208b004a,0,0x208f000a,0,0,0,0,0x2091000a, +0,0,0x2095000a,0x2097000a,0x2099000a,0x209d000a,0,0,0x209f000a,0x20a3000a,0x20a5000a,0,0x20a7000a,0x20ab000a,0x20af000a,0, +0x102c000c,0x1030000c,0x1035004c,0x1039000c,0x103e004c,0x1043004c,0x3d960040,0x1048004c,0x104c000c,0x1050000c,0x1055004c,0x1059000c,0x105d000c,0x1061000c,0x1065000c,0x106a004c, +0,0x106e000c,0x1072000c,0x1076000c,0x107b004c,0x1080004c,0x1085004c,0,0x3d9a0040,0x1089000c,0x108d000c,0x1091000c,0x1096004c,0x109a000c,0,0, +0x109e000c,0x10a2000c,0x10a7004c,0x10ab000c,0x10b0004c,0x10b5004c,0x3d970040,0x10ba004c,0x10be000c,0x10c2000c,0x10c7004c,0x10cb000c,0x10cf000c,0x10d3000c,0x10d7000c,0x10dc004c, +0,0x10e0000c,0x10e4000c,0x10e8000c,0x10ed004c,0x10f2004c,0x10f7004c,0,0x3d9b0040,0x10fb000c,0x10ff000c,0x1103000c,0x1108004c,0x110c000c,0,0x1110000c, +0x1114000c,0x1118000c,0x111d004c,0x1122004c,0x1126000c,0x112a000c,0x112e000c,0x1132000c,0x1136000c,0x113a000c,0x113e000c,0x1142000c,0x1146000c,0x114a000c,0x114e000c,0x1152000c, +0,0,0x1157004c,0x115c004c,0x1160000c,0x1164000c,0x1168000c,0x116c000c,0x1170000c,0x1174000c,0x1178000c,0x117c000c,0x1180000c,0x1184000c,0x1188000c,0x118c000c, +0x1190000c,0x1194000c,0x1198000c,0x119c000c,0x11a0000c,0x11a4000c,0,0,0x11a8000c,0x11ac000c,0x11b0000c,0x11b4000c,0x11b8000c,0x11bc000c,0x11c0000c,0x11c4000c, +0x11c8000c,0,0x20b3000a,0x20b6000a,0x11cc000c,0x11d0000c,0x11d4000c,0x11d8000c,0,0x11dc000c,0x11e0000c,0x11e4000c,0x11e8000c,0x11ec000c,0x11f0000c,0x20b9000a, +0x20bc000a,0,0,0x11f4000c,0x11f8000c,0x11fc000c,0x1200000c,0x1204000c,0x1208000c,0x20bf000a,0,0,0x120d004c,0x1212004c,0x1216000c,0x121a000c, +0x121e000c,0x1222000c,0,0,0x1226000c,0x122a000c,0x122e000c,0x1232000c,0x1236000c,0x123a000c,0x123f004c,0x1244004c,0x1248000c,0x124c000c,0x1250000c,0x1254000c, +0x1259004c,0x125e004c,0x1262000c,0x1266000c,0x126a000c,0x126e000c,0,0,0x1273004c,0x1278004c,0x127d004c,0x1282004c,0x1286000c,0x128a000c,0x128e000c,0x1292000c, +0x1296000c,0x129a000c,0x129e000c,0x12a2000c,0x12a6000c,0x12aa000c,0x12ae000c,0x12b2000c,0x12b6000c,0x12ba000c,0x12be000c,0x12c2000c,0x12c6000c,0x12ca000c,0x12ce000c,0x20c3004a, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x12d3004c,0x12d8004c,0,0,0,0,0,0,0,0,0,0,0,0,0,0x12dd004c, +0x12e2004c,0,0,0,0,0,0,0x3d980040,0,0,0,0,0,0,0,0, +0x20c5000a,0x20ca000a,0x20cf000a,0x20d4000a,0x20d7000a,0x20da000a,0x20dd000a,0x20e0000a,0x20e3000a,0x12e6000c,0x12ea000c,0x12ee000c,0x12f2000c,0x12f6000c,0x12fa000c,0x12fe000c, +0x1302000c,0x1306000c,0x130b000c,0x1310000c,0x1315000c,0x131a000c,0x131f000c,0x1324000c,0x1329000c,0,0x132e000c,0x1333000c,0x1338000c,0x133d000c,0x1342000c,0x1346000c, +0,0,0x134a000c,0x134e000c,0x1352000c,0x1356000c,0x135b004c,0x1360004c,0x1364000c,0x1369000c,0x136e000c,0x1372000c,0x1376000c,0x20e6000a,0x20e9000a,0x20ec000a, +0x137a000c,0x137e000c,0,0,0x1382000c,0x1386000c,0x138a000c,0x138f000c,0x1394000c,0x1398000c,0x139c000c,0x13a0000c,0x13a4000c,0x13a8000c,0x13ac000c,0x13b0000c, +0x13b4000c,0x13b8000c,0x13bc000c,0x13c0000c,0x13c4000c,0x13c8000c,0x13cc000c,0x13d0000c,0x13d4000c,0x13d8000c,0x13dc000c,0x13e0000c,0x13e4000c,0x13e8000c,0x13ec000c,0x13f0000c, +0x13f4000c,0x13f8000c,0x13fc000c,0x1400000c,0x1404000c,0x1408000c,0x140c000c,0x1410000c,0,0,0x1414000c,0x1418000c,0,0,0,0, +0,0,0x141d004c,0x1422004c,0x1427004c,0x142c004c,0x1430000c,0x1435000c,0x143a000c,0x143f000c,0x1445004c,0x144a004c,0x144e000c,0x1453000c,0x1458000c,0x145c000c, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x3d990040,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x20ef000a,0x20f1000a,0x20f3000a,0x20f5000a,0x20f7000a,0x20f9000a,0x20fb000a,0x20fd000a,0x20ff000a,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x2101000a,0x2105000a,0x2109000a,0x210d000a,0x2111000a,0x2115000a,0,0,0x2119000a,0x211b000a,0x211d000a,0x211f000a, +0x2121000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x2053e6b0,0x2054e6b0,0x2055e6b0,0x2056e6b0, +0x2057e6b0,0xe600,0x2058e6b0,0x2059e6b0,0x205ae6b0,0x205be6b0,0x205ce6b0,0x205de6b0,0x205ee6b0,0xe600,0xe600,0x205fe6b0,0xe600,0x2060e6b0,0xe600,0x2061e6b0, +0x2062e6b0,0xe800,0xdc00,0xdc00,0xdc00,0xdc00,0xe800,0x2063d8b0,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00,0xca00,0xca00,0x2064dcb0, +0x2065dcb0,0x2066dcb0,0x2067dcb0,0x2068cab0,0x2069cab0,0xdc00,0xdc00,0xdc00,0xdc00,0x206adcb0,0x206bdcb0,0xdc00,0x206cdcb0,0x206ddcb0,0xdc00,0xdc00, +0x100,0x100,0x100,0x100,0x206e01b0,0xdc00,0xdc00,0xdc00,0xdc00,0xe600,0xe600,0xe600,0x609e60f,0x60ce60f,0x206fe6b0,0x60fe60f, +0x612e60f,0x2070f0b0,0xe600,0xdc00,0xdc00,0xdc00,0xe600,0xe600,0xe600,0xdc00,0xdc00,0,0xe600,0xe600,0xe600,0xdc00, +0xdc00,0xdc00,0xdc00,0xe600,0xe800,0xdc00,0xdc00,0xe600,0xe900,0xea00,0xea00,0xe900,0xea00,0xea00,0xe900,0xe600, +0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0,0, +0x616000f,0,0,0,0,0,0x13d000a,0,0,0,0x618000f,0,0,0,0,0, +0x2123000a,0x1460000e,0x1468000c,0x61a000f,0x146c000c,0x1470000c,0x1474000c,0,0x1478000c,0,0x147c000c,0x1480000c,0x1484000c,0x3d9c0040,0,0, +0,0x3d9d0040,0,0x3d9e0040,0,0x3d9f0040,0,0,0,0,0,0x3da00040,0,0x3df70040,0,0, +0,0x3da10040,0,0,0,0x3da20040,0x1489000c,0x148d000c,0x1492004c,0x1496000c,0x149b004c,0x149f000c,0x14a3000c,0x3da30040,0,0, +0,0x3da40040,0,0x3da50040,0,0x3da60040,0,0,0,0,0,0x3da80040,0,0x3df60040,0,0, +0,0x3da70040,0,0,0,0x3da90040,0x14a9004c,0x14ae004c,0x14b2000c,0x14b6000c,0x14bb004c,0,0x2127000a,0x2129000a,0x142004a,0x144000e, +0x14b000e,0x212b000a,0x212d000a,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x212f000a,0x2131000a,0x152000a,0, +0x2133000a,0x2135000a,0,0,0,0x154000a,0,0,0,0,0,0,0x14bf000c,0x14c3000c,0,0x14c7000c, +0,0,0x3dac0040,0x14cb000c,0,0,0,0,0x14cf000c,0x14d3000c,0x14d7000c,0,0x3dba0040,0,0,0x3dab0040, +0,0x3daa0040,0x3db80040,0x3dbe0040,0x3dae0040,0x14db000c,0x3dad0040,0,0,0,0x3dc00040,0,0,0,0,0x3daf0040, +0,0,0,0x3dc60040,0,0,0,0x3dc80040,0,0x3dc40040,0,0,0x3dbb0040,0,0,0x3db20040, +0,0x3db10040,0x3db90040,0x3dbf0040,0x3db00040,0x14df000c,0x3db40040,0,0,0,0x3dc10040,0,0,0,0,0x3db50040, +0,0,0,0x3dc70040,0,0,0,0x3dc90040,0,0x3dc50040,0,0,0x14e3000c,0x14e7000c,0,0x14eb000c, +0,0,0x3db30040,0x14ef000c,0,0,0,0,0x14f3000c,0x14f7000c,0x14fb000c,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x3db60040,0x3db70040,0x14ff000c,0x1503000c,0,0,0,0,0,0,0,0,0,0,0,0xe600, +0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x1507000c,0x150b000c,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x150f000c,0x1513000c,0x1517000c,0x151b000c, +0,0,0x151f000c,0x1523000c,0x3dbc0040,0x3dbd0040,0x1527000c,0x152b000c,0x152f000c,0x1533000c,0x1537000c,0x153b000c,0,0,0x153f000c,0x1543000c, +0x1547000c,0x154b000c,0x154f000c,0x1553000c,0x3dc20040,0x3dc30040,0x1557000c,0x155b000c,0x155f000c,0x1563000c,0x1567000c,0x156b000c,0x156f000c,0x1573000c,0x1577000c,0x157b000c, +0x157f000c,0x1583000c,0,0,0x1587000c,0x158b000c,0,0,0,0,0,0,0,0,0,0x2137000a, +0,0,0,0,0,0,0,0,0,0xdc00,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600, +0xe600,0xe600,0xde00,0xdc00,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00, +0xe600,0xe600,0xdc00,0xe600,0xe600,0xde00,0xe400,0xe600,0xa00,0xb00,0xc00,0xd00,0xe00,0xf00,0x1000,0x1100, +0x1200,0x1300,0x1300,0x1400,0x1500,0x1600,0,0x1700,0,0x1800,0x1900,0,0xe600,0xdc00,0,0x1200, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, +0x1e00,0x1f00,0x2000,0,0,0,0,0,0,0,0x158f000c,0x1593000c,0x1597000c,0x159b000c,0x159f000c,0x3dca0040, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x3dcb0040,0,0x3dcc0040,0x1b00,0x1c00,0x1d00,0x1e00,0x1f00, +0x2000,0x2100,0x2200,0x2071e6b0,0x2072e6b0,0x2073dcb0,0xdc00,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600,0xe600,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x2300,0,0,0,0,0x213a000a,0x213d000a,0x2140000a,0x2143000a,0,0,0,0,0,0,0, +0x15a3000c,0x3dce0040,0x15a7000c,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x3dcf0040,0x15ab000c,0,0x3dcd0040,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0xe600, +0xe600,0xe600,0xe600,0xdc00,0xe600,0,0,0xe600,0xe600,0,0xdc00,0xe600,0xe600,0xdc00,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x2400,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xe600,0xdc00,0xe600,0xe600,0xdc00,0xe600,0xe600,0xdc00,0xdc00,0xdc00,0xe600,0xdc00,0xdc00,0xe600,0xdc00,0xe600, +0xe600,0xe600,0xdc00,0xe600,0xdc00,0xe600,0xdc00,0xe600,0xdc00,0xe600,0xe600,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600,0,0,0,0, +0,0,0,0,0,0,0,0,0x3dd00040,0x15af000c,0,0,0,0,0,0, +0x3dd10040,0x15b3000c,0,0x3dd20040,0x15b7000c,0,0,0,0,0,0,0,0x207407b0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x900,0,0, +0,0xe600,0xdc00,0xe600,0xe600,0,0,0,0x61c000f,0x620000f,0x624000f,0x628000f,0x62c000f,0x630000f,0x634000f,0x638000f, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x700,0,0x207500b0,0, +0,0,0,0,0,0,0,0x3dd30040,0,0,0,0x15bb000c,0x15be000c,0x900,0,0, +0,0,0,0,0,0,0,0x207600b0,0,0,0,0,0x63c000f,0x640000f,0,0x644000f, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x648000f,0,0,0x64c000f,0,0,0,0,0,0x700,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x900,0,0, +0,0,0,0,0,0,0,0,0,0x650000f,0x654000f,0x658000f,0,0,0x65c000f,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x700,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x900,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x700,0,0x207700b0,0, +0,0,0,0,0,0,0,0x3dd40040,0x15c1000c,0,0,0x15c4000c,0x15c7000c,0x900,0,0, +0,0,0,0,0,0,0x207800b0,0x207900b0,0,0,0,0,0x660000f,0x664000f,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x3dd50040,0,0x15ca000c,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x207a00b0,0,0,0,0,0,0,0,0x3dd60040,0x3dd70040, +0,0,0x15cd000c,0x15d0000c,0x15d3000c,0x900,0,0,0,0,0,0,0,0,0,0x207b00b0, +0,0,0,0,0,0,0,0,0,0,0x3dd80040,0,0x15d6000c,0,0,0, +0,0x900,0,0,0,0,0,0,0,0x5400,0x207c5bb0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x700,0,0,0x3dd90040,0x15da000c,0,0x207d00b0,0, +0,0,0x3dda0040,0x15dd000c,0x15e0000c,0,0x15e4004c,0x15e7000c,0,0x900,0,0,0,0,0,0, +0,0x207e00b0,0x207f00b0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x208000b0,0,0,0,0,0,0,0,0x3ddb0040,0x3ddc0040,0,0,0x15eb000c,0x15ee000c, +0x15f1000c,0x900,0,0,0,0,0,0,0,0,0,0x208100b0,0,0,0,0, +0,0,0,0,0,0,0x208209b0,0,0,0,0,0x208300b0,0,0,0,0, +0,0,0,0,0,0x3ddd0040,0x15f4000c,0,0x15f9004c,0x15fc000c,0x1601000c,0x208400b0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2146000a, +0,0,0,0,0x6700,0x6700,0x900,0,0,0,0,0,0,0,0,0, +0x6b00,0x6b00,0x6b00,0x6b00,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x2149000a,0,0,0,0, +0x7600,0x7600,0,0,0,0,0,0,0,0,0,0,0x7a00,0x7a00,0x7a00,0x7a00, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x214c000a,0x214f000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x2152000a,0,0,0,0,0,0,0,0,0,0,0,0xdc00,0xdc00,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xdc00,0,0xdc00,0,0xd800,0,0,0,0,0,0, +0,0,0,0x668000f,0,0,0,0,0,0,0,0,0,0x66b000f,0,0, +0,0,0x66e000f,0,0,0,0,0x671000f,0,0,0,0,0x674000f,0,0,0, +0,0,0,0,0,0,0,0,0,0x677000f,0,0,0,0,0,0, +0,0x8100,0x8200,0x67a000f,0x8400,0x67e000f,0x682000f,0x2154000a,0x686000f,0x2159000a,0x8200,0x8200,0x8200,0x8200,0,0, +0x8200,0x68a000f,0xe600,0xe600,0x900,0,0xe600,0xe600,0,0,0,0,0,0,0,0, +0,0,0,0x68e000f,0,0,0,0,0,0,0,0,0,0x691000f,0,0, +0,0,0x694000f,0,0,0,0,0x697000f,0,0,0,0,0x69a000f,0,0,0, +0,0,0,0,0,0,0,0,0,0x69d000f,0,0,0,0,0,0, +0,0,0xdc00,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x3dde0040,0x1604000c,0, +0,0,0,0,0,0,0x208500b0,0,0,0,0,0,0,0,0,0x700, +0,0x900,0x900,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xdc00,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x215e000a,0,0,0,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040, +0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0, +0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0,0,0,0,0,0, +0,0,0,0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0, +0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x900,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x900,0,0,0,0,0,0,0,0,0,0,0xe600,0,0, +0,0,0,0,0,0,0,0,0,0xe400,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xde00,0xe600,0xdc00,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe600, +0xdc00,0,0,0,0,0,0,0,0,0x3ddf0040,0x1607000c,0x3de00040,0x160a000c,0x3de10040,0x160d000c,0x3de20040, +0x1610000c,0x3de30040,0x1613000c,0,0,0x3de40040,0x1616000c,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x700,0x208600b0,0,0, +0,0,0x3de50040,0x1619000c,0x3de60040,0x161c000c,0x3de70040,0x3de80040,0x161f000c,0x1622000c,0x3de90040,0x1625000c,0x900,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xe600,0xdc00,0xe600,0xe600,0xe600, +0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x900,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x700,0,0,0,0, +0,0,0,0,0,0,0,0,0x156000a,0x158000a,0x15a000a,0,0x15c000a,0x15e000a,0x160000a,0x162000a, +0x164000a,0x166000a,0x168000a,0x16a000a,0x16c000a,0x16e000a,0x170000a,0,0x172000a,0x174000a,0x176000a,0x178000a,0x17a000a,0x17c000a,0x17e000a,0x2160000a, +0x2162000a,0x2164000a,0x2166000a,0x2168000a,0x216a000a,0x216c000a,0x216e000a,0x2170000a,0x2172000a,0x2174000a,0,0x2176000a,0x2178000a,0x217a000a,0x217c000a,0x217e000a, +0x2180000a,0x2182000a,0x2184000a,0x2186000a,0x2188000a,0x218a000a,0x218c000a,0x218e000a,0x2190000a,0x2192000a,0x2194000a,0x2196000a,0x2198000a,0x219a000a,0x219c000a,0x219e000a, +0x21a0000a,0x21a2000a,0x21a4000a,0x21a6000a,0x21a8000a,0x21aa000a,0x21ac000a,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x21ae000a,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x21b0000a,0x21b2000a,0x21b4000a,0x21b6000a,0x21b8000a,0x21ba000a,0x21bc000a,0x21be000a,0x21c0000a,0x21c2000a,0x21c4000a,0x21c6000a,0x21c8000a, +0x21ca000a,0x21cc000a,0x21ce000a,0x21d0000a,0x21d2000a,0x21d4000a,0x21d6000a,0x21d8000a,0x21da000a,0x21dc000a,0x21de000a,0x21e0000a,0x21e2000a,0x21e4000a,0x21e6000a,0x21e8000a, +0x21ea000a,0x21ec000a,0x21ee000a,0x21f0000a,0x21f2000a,0x21f4000a,0x21f6000a,0x21f8000a,0xe600,0xe600,0xdc00,0xe600,0xe600,0xe600,0xe600,0xe600, +0xe600,0xe600,0xdc00,0xe600,0xe600,0xea00,0xd600,0xdc00,0xca00,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, +0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xe600,0xdc00,0x1628000c,0x162c000c,0x1630000c,0x1634000c,0x1638000c,0x163c000c,0x1640000c,0x1644000c,0x1648000c,0x164d000c,0x1652000c,0x1656000c, +0x165a000c,0x165e000c,0x1662000c,0x1666000c,0x166a000c,0x166e000c,0x1672000c,0x1676000c,0x167a000c,0x167f000c,0x1684000c,0x1689000c,0x168e000c,0x1692000c,0x1696000c,0x169a000c, +0x169e000c,0x16a3000c,0x16a8000c,0x16ac000c,0x16b0000c,0x16b4000c,0x16b8000c,0x16bc000c,0x16c0000c,0x16c4000c,0x16c8000c,0x16cc000c,0x16d0000c,0x16d4000c,0x16d8000c,0x16dc000c, +0x16e0000c,0x16e4000c,0x16e8000c,0x16ed000c,0x16f2000c,0x16f6000c,0x16fa000c,0x16fe000c,0x1702000c,0x1706000c,0x170b004c,0x1710004c,0x1714000c,0x1719000c,0x171e000c,0x1722000c, +0x1726000c,0x172a000c,0x172e000c,0x1732000c,0x1736000c,0x173a000c,0x173e000c,0x1742000c,0x1746000c,0x174a000c,0x174e000c,0x1752000c,0x1756000c,0x175a000c,0x175e000c,0x1762000c, +0x1766000c,0x176b000c,0x1770000c,0x1775000c,0x177a000c,0x177f000c,0x1784000c,0x1789000c,0x178e000c,0x1792000c,0x1796000c,0x179a000c,0x179e000c,0x17a2000c,0x17a7004c,0x17ac004c, +0x17b0000c,0x17b5000c,0x17ba000c,0x17be000c,0x17c2000c,0x17c6000c,0x17cb004c,0x17d0004c,0x17d4000c,0x17d9000c,0x17de000c,0x17e3000c,0x17e8000c,0x17ed000c,0x17f2000c,0x17f6000c, +0x17fa000c,0x17fe000c,0x1802000c,0x1806000c,0x180a000c,0x180e000c,0x1812000c,0x1816000c,0x181a000c,0x181e000c,0x1822000c,0x1826000c,0x182a000c,0x182f000c,0x1834000c,0x1839000c, +0x183e000c,0x1842000c,0x1846000c,0x184a000c,0x184e000c,0x1852000c,0x1856000c,0x185a000c,0x185e000c,0x1862000c,0x1866000c,0x186a000c,0x186e000c,0x1872000c,0x1876000c,0x187a000c, +0x187e000c,0x1882000c,0x1886000c,0x188a000c,0x188e000c,0x1892000c,0x1896000c,0x189a000c,0x189e000c,0x18a2000c,0x18a6000c,0x18aa000c,0x18ae000c,0x18b2000c,0x21fa000a,0x18b6000e, +0,0,0,0,0x18be004c,0x18c3004c,0x18c7000c,0x18cb000c,0x18cf000c,0x18d4000c,0x18d9000c,0x18de000c,0x18e3000c,0x18e8000c,0x18ed000c,0x18f2000c, +0x18f7000c,0x18fc000c,0x1901000c,0x1906000c,0x190b000c,0x1910000c,0x1915000c,0x191a000c,0x191f000c,0x1924000c,0x1929000c,0x192e000c,0x1934004c,0x1939004c,0x193d000c,0x1941000c, +0x1945000c,0x1949000c,0x194d000c,0x1952000c,0x1957000c,0x195c000c,0x1961000c,0x1966000c,0x196b000c,0x1970000c,0x1975000c,0x197a000c,0x197f000c,0x1983000c,0x1987000c,0x198b000c, +0x1990004c,0x1995004c,0x1999000c,0x199d000c,0x19a1000c,0x19a6000c,0x19ab000c,0x19b0000c,0x19b5000c,0x19ba000c,0x19bf000c,0x19c4000c,0x19c9000c,0x19ce000c,0x19d3000c,0x19d8000c, +0x19dd000c,0x19e2000c,0x19e7000c,0x19ec000c,0x19f1000c,0x19f6000c,0x19fb000c,0x1a00000c,0x1a05000c,0x1a09000c,0x1a0d000c,0x1a11000c,0x1a15000c,0x1a1a000c,0x1a1f000c,0x1a24000c, +0x1a29000c,0x1a2e000c,0x1a33000c,0x1a38000c,0x1a3d000c,0x1a42000c,0x1a47000c,0x1a4b000c,0x1a4f000c,0x1a53000c,0x1a57000c,0x1a5b000c,0x1a5f000c,0x1a63000c,0,0, +0,0,0,0,0x1a68004c,0x1a6d004c,0x1a72004c,0x1a78004c,0x1a7e004c,0x1a84004c,0x1a8a004c,0x1a90004c,0x1a96004c,0x1a9b004c,0x1aa0004c,0x1aa6004c, +0x1aac004c,0x1ab2004c,0x1ab8004c,0x1abe004c,0x1ac4004c,0x1ac9004c,0x1acd000c,0x1ad2000c,0x1ad7000c,0x1adc000c,0,0,0x1ae2004c,0x1ae7004c,0x1aeb000c,0x1af0000c, +0x1af5000c,0x1afa000c,0,0,0x1b00004c,0x1b05004c,0x1b0a004c,0x1b10004c,0x1b16004c,0x1b1c004c,0x1b22004c,0x1b28004c,0x1b2e004c,0x1b33004c,0x1b38004c,0x1b3e004c, +0x1b44004c,0x1b4a004c,0x1b50004c,0x1b56004c,0x1b5c004c,0x1b61004c,0x1b65000c,0x1b6a000c,0x1b6f000c,0x1b74000c,0x1b79000c,0x1b7e000c,0x1b84004c,0x1b89004c,0x1b8d000c,0x1b92000c, +0x1b97000c,0x1b9c000c,0x1ba1000c,0x1ba6000c,0x1bac004c,0x1bb1004c,0x1bb5000c,0x1bba000c,0x1bbf000c,0x1bc4000c,0,0,0x1bca004c,0x1bcf004c,0x1bd3000c,0x1bd8000c, +0x1bdd000c,0x1be2000c,0,0,0x1be8004c,0x1bed004c,0x1bf1000c,0x1bf6000c,0x1bfb000c,0x1c00000c,0x1c05000c,0x1c0a000c,0,0x1c10004c,0,0x1c14000c, +0,0x1c19000c,0,0x1c1e000c,0x1c24004c,0x1c29004c,0x1c2e004c,0x1c34004c,0x1c3a004c,0x1c40004c,0x1c46004c,0x1c4c004c,0x1c52004c,0x1c57004c,0x1c5c004c,0x1c62004c, 0x1c68004c,0x1c6e004c,0x1c74004c,0x1c7a004c,0x1c80004c,0x6a0000f,0x1c84000c,0x6a4000f,0x1c89004c,0x6a8000f,0x1c8d000c,0x6ac000f,0x1c91000c,0x6b0000f,0x1c95000c,0x6b4000f, -0x1c9a004c,0x6b8000f,0,0,0x1d56000c,0x1d5b000c,0x1d60000c,0x1d66000c,0x1d6c000c,0x1d72000c,0x1d78000c,0x1d7e000c,0x1d84000c,0x1d89000c,0x1d8e000c,0x1d94000c, +0x1c9a004c,0x6b8000f,0,0,0x1c9e000c,0x1ca3000c,0x1ca8000c,0x1cae000c,0x1cb4000c,0x1cba000c,0x1cc0000c,0x1cc6000c,0x1ccc000c,0x1cd1000c,0x1cd6000c,0x1cdc000c, +0x1ce2000c,0x1ce8000c,0x1cee000c,0x1cf4000c,0x1cfa000c,0x1cff000c,0x1d04000c,0x1d0a000c,0x1d10000c,0x1d16000c,0x1d1c000c,0x1d22000c,0x1d28000c,0x1d2d000c,0x1d32000c,0x1d38000c, +0x1d3e000c,0x1d44000c,0x1d4a000c,0x1d50000c,0x1d56000c,0x1d5b000c,0x1d60000c,0x1d66000c,0x1d6c000c,0x1d72000c,0x1d78000c,0x1d7e000c,0x1d84000c,0x1d89000c,0x1d8e000c,0x1d94000c, 0x1d9a000c,0x1da0000c,0x1da6000c,0x1dac000c,0x1db2000c,0x1db6000c,0x1dba000c,0x1dbf000c,0x1dc3000c,0,0x1dc9004c,0x1dcd000c,0x1dd2000c,0x1dd6000c,0x1dda000c,0x6bc000f, 0x1dde000c,0x21fd000a,0x6c0000f,0x2202004a,0x2206000a,0x1de2000e,0x1dea000c,0x1def000c,0x1df3000c,0,0x1df9004c,0x1dfd000c,0x1e02000c,0x6c2000f,0x1e06000c,0x6c6000f, 0x1e0a000c,0x1e0e000e,0x1e16000e,0x1e1e000e,0x1e26000c,0x1e2a000c,0x1e2e000c,0x6ca000f,0,0,0x1e33000c,0x1e37000c,0x1e3c000c,0x1e40000c,0x1e44000c,0x6cf000f, @@ -287,53 +403,342 @@ static const uint32_t normTrie_data32[9548]={ 0x1e8a000c,0x1e8e000e,0x6dc000f,0x6e4000f,0,0,0x1e96000c,0x1e9b000c,0x1e9f000c,0,0x1ea5004c,0x1ea9000c,0x1eae000c,0x6e6000f,0x1eb2000c,0x6ea000f, 0x1eb6000c,0x6ee000f,0x220b004a,0,0x6f3000f,0x6f6000f,0x220f000a,0x2211000a,0x2213000a,0x2215000a,0x2217000a,0x2219000a,0x221b000a,0x221d000a,0x221f000a,0, 0,0,0,0,0,0x2221000a,0,0,0,0,0,0x2223000a,0,0,0,0, -0,0,0,0,0,0x701000f,0x703000f,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x2227000a,0x2229000a,0x222c000a,0,0,0,0,0,0,0,0,0x2230000a, +0,0,0,0x2232000a,0x2235000a,0,0x2239000a,0x223c000a,0,0,0,0,0x2240000a,0,0x2243000a,0, +0,0,0,0,0,0,0,0x2247000a,0x224a000a,0x224d000a,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x2250000a,0,0,0,0,0,0,0,0x2255000a, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x705000f,0,0,0,0x709000f,0x70b000f,0x70d000f,0x70f000f,0x711000f,0x713000f,0x715000f,0x717000f, -0x719000f,0x71b000f,0x71d000f,0x71f000f,0x721000f,0x723000f,0x725000f,0x727000f,0x729000f,0x72b000f,0x72d000f,0x72f000f,0x731000f,0x733000f,0x735000f,0x737000f, -0x739000f,0x73b000f,0x73d000f,0x73f000f,0x741000f,0x743000f,0x745000f,0x747000f,0x749000f,0x74b000f,0x74d000f,0x74f000f,0x751000f,0x753000f,0x755000f,0x757000f, -0x759000f,0x75b000f,0x75d000f,0x75f000f,0x761000f,0x763000f,0x765000f,0x767000f,0x769000f,0x76b000f,0x76d000f,0x76f000f,0x771000f,0x773000f,0x775000f,0x777000f, -0x779000f,0x77b000f,0x77d000f,0x77f000f,0x781000f,0x783000f,0x785000f,0x787000f,0x789000f,0x78b000f,0x78d000f,0x78f000f,0x791000f,0x793000f,0x795000f,0x797000f, -0x799000f,0x79b000f,0x79d000f,0x79f000f,0x7a1000f,0x7a3000f,0x7a5000f,0x7a7000f,0x7a9000f,0x7ab000f,0x7ad000f,0x7af000f,0x7b1000f,0x7b3000f,0x7b5000f,0x7b7000f, -0x7b9000f,0x7bb000f,0x7bd000f,0x7bf000f,0x7c1000f,0x7c3000f,0x7c5000f,0x7c7000f,0x7c9000f,0x7cb000f,0x7cd000f,0x7cf000f,0x7d1000f,0x7d3000f,0x7d5000f,0x7d7000f, -0x7d9000f,0x7db000f,0x7dd000f,0x7df000f,0x7e1000f,0x7e3000f,0x7e5000f,0x7e7000f,0x7e9000f,0x7eb000f,0x7ed000f,0x7ef000f,0x7f1000f,0x7f3000f,0x7f5000f,0x7f7000f, -0x7f9000f,0x7fb000f,0x7fd000f,0x7ff000f,0x801000f,0x803000f,0x805000f,0x807000f,0x809000f,0x80b000f,0x80d000f,0x80f000f,0x811000f,0x813000f,0x815000f,0x817000f, -0x819000f,0x81b000f,0x81d000f,0x81f000f,0x821000f,0x823000f,0x825000f,0x827000f,0x829000f,0x82b000f,0x82d000f,0x82f000f,0x831000f,0x833000f,0x835000f,0x837000f, -0x839000f,0x83b000f,0x83d000f,0x83f000f,0x841000f,0x843000f,0x845000f,0x847000f,0x849000f,0x84b000f,0x84d000f,0x84f000f,0x851000f,0x853000f,0x855000f,0x857000f, -0x859000f,0x85b000f,0x85d000f,0x85f000f,0x861000f,0x863000f,0x865000f,0x867000f,0x869000f,0x86b000f,0x86d000f,0x86f000f,0x871000f,0x873000f,0x875000f,0x877000f, -0x879000f,0x87b000f,0x87d000f,0x87f000f,0x881000f,0x883000f,0x885000f,0x887000f,0x889000f,0x88b000f,0x88d000f,0x88f000f,0x891000f,0x893000f,0x895000f,0x897000f, -0x899000f,0x89b000f,0x89d000f,0x89f000f,0x8a1000f,0x8a3000f,0x8a5000f,0x8a7000f,0x8a9000f,0x8ab000f,0x8ad000f,0x8af000f,0x8b1000f,0x8b3000f,0x8b5000f,0x8b7000f, -0x8b9000f,0x8bb000f,0x8bd000f,0x8bf000f,0x8c1000f,0x8c3000f,0x8c5000f,0x8c7000f,0x8c9000f,0x8cb000f,0x8cd000f,0x8cf000f,0x8d1000f,0x8d3000f,0x8d5000f,0x8d7000f, -0x8d9000f,0x8db000f,0x8dd000f,0x8df000f,0x8e1000f,0x8e3000f,0x8e5000f,0x8e7000f,0x8e9000f,0x8eb000f,0x8ed000f,0x8ef000f,0x8f1000f,0x8f3000f,0x8f5000f,0x8f7000f, -0x8f9000f,0x8fb000f,0x8fd000f,0x8ff000f,0x901000f,0x903000f,0x905000f,0x907000f,0x909000f,0x90b000f,0x90d000f,0x90f000f,0x911000f,0x913000f,0x915000f,0x917000f, -0x919000f,0x91b000f,0x91d000f,0x91f000f,0x921000f,0x923000f,0,0,0x925000f,0,0x927000f,0,0,0x929000f,0x92b000f,0x92d000f, -0x92f000f,0x931000f,0x933000f,0x935000f,0x937000f,0x939000f,0x93b000f,0,0x93d000f,0,0x93f000f,0,0,0x941000f,0x943000f,0, -0,0,0x945000f,0x947000f,0x949000f,0x94b000f,0,0,0x94d000f,0x94f000f,0x951000f,0x953000f,0x955000f,0x957000f,0x959000f,0x95b000f, -0x95d000f,0x95f000f,0x961000f,0x963000f,0x965000f,0x967000f,0x969000f,0x96b000f,0x96d000f,0x96f000f,0x971000f,0x973000f,0x975000f,0x977000f,0x979000f,0x97b000f, -0x97d000f,0x97f000f,0x981000f,0x983000f,0x985000f,0x987000f,0x989000f,0x98b000f,0x98d000f,0x98f000f,0x991000f,0x993000f,0x995000f,0x997000f,0x999000f,0x99b000f, -0x99d000f,0x99f000f,0x9a1000f,0x9a3000f,0x9a5000f,0x9a7000f,0x9a9000f,0x9ab000f,0x9ad000f,0x9af000f,0x9b1000f,0x9b3000f,0x9b5000f,0x9b7000f,0x9b9000f,0x9bb000f, -0x9bd000f,0x9bf000f,0x9c1000f,0,0,0,0,0,0x9c3000f,0x9c5000f,0x9c7000f,0x9c9000f,0x9cb000f,0x9cd000f,0x9cf000f,0x9d1000f, -0x9d3000f,0x9d5000f,0x9d7000f,0x9d9000f,0x9db000f,0x9dd000f,0x9df000f,0x9e1000f,0x9e3000f,0x9e5000f,0x9e7000f,0x9e9000f,0x9eb000f,0x9ed000f,0x9ef000f,0x9f1000f, -0x9f3000f,0x9f5000f,0x9f7000f,0x9f9000f,0x9fb000f,0x9fd000f,0x9ff000f,0xa01000f,0xa03000f,0xa05000f,0xa07000f,0xa09000f,0xa0b000f,0xa0d000f,0xa0f000f,0xa11000f, -0xa13000f,0xa15000f,0xa17000f,0xa19000f,0xa1b000f,0xa1d000f,0xa1f000f,0xa21000f,0xa23000f,0xa25000f,0xa27000f,0xa29000f,0xa2b000f,0xa2d000f,0xa2f000f,0xa31000f, -0xa33000f,0xa35000f,0xa37000f,0xa39000f,0xa3b000f,0xa3d000f,0xa3f000f,0xa41000f,0xa43000f,0xa45000f,0xa47000f,0xa49000f,0xa4b000f,0xa4d000f,0xa4f000f,0xa51000f, -0xa53000f,0xa55000f,0xa57000f,0xa59000f,0xa5b000f,0xa5d000f,0xa5f000f,0xa61000f,0xa63000f,0xa65000f,0xa67000f,0xa69000f,0xa6b000f,0xa6d000f,0xa6f000f,0xa71000f, -0xa73000f,0xa75000f,0xa77000f,0xa79000f,0xa7b000f,0xa7d000f,0xa7f000f,0xa81000f,0xa84000f,0xa87000f,0xa8a000f,0xa8c000f,0xa8e000f,0xa90000f,0xa93000f,0xa96000f, -0xa99000f,0xa9b000f,0,0,0,0,0,0,0x2de1000a,0x2de4000a,0x2de7000a,0x2dea000a,0x2dee000a,0x2df2000a,0x2df5000a,0, -0,0,0,0,0,0,0,0,0,0,0,0x2df8000a,0x2dfb000a,0x2dfe000a,0x2e01000a,0x2e04000a, -0,0,0,0,0,0xa9d000f,0x1a00,0xaa1000f,0x2e07000a,0x2e09000a,0x2e0b000a,0x2e0d000a,0x2e0f000a,0x2e11000a,0x2e13000a,0x2e15000a, -0x2e17000a,0x2e19000a,0xaa5000f,0xaa9000f,0xaad000f,0xab2000f,0xab7000f,0xabb000f,0xabf000f,0xac3000f,0xac7000f,0xacb000f,0xacf000f,0xad3000f,0xad7000f,0, -0xadb000f,0xadf000f,0xae3000f,0xae7000f,0xaeb000f,0,0xaef000f,0,0xaf3000f,0xaf7000f,0,0xafb000f,0xaff000f,0,0xb03000f,0xb07000f, -0xb0b000f,0xb0f000f,0xb13000f,0xb17000f,0xb1b000f,0xb1f000f,0xb23000f,0x2e1b000a,0x2e1e000a,0x2e20000a,0x2e22000a,0x2e24000a,0x2e26000a,0x2e28000a,0x2e2a000a,0x2e2c000a, -0x2e2e000a,0x2e30000a,0x2e32000a,0x2e34000a,0x2e36000a,0x2e38000a,0x2e3a000a,0x2e3c000a,0,0,0,0,0,0,0,0, +0x2257000a,0x2259000a,0,0,0x225b000a,0x225d000a,0x225f000a,0x2261000a,0x2263000a,0x2265000a,0x2267000a,0x2269000a,0x226b000a,0x226d000a,0x226f000a,0x2271000a, +0x2273000a,0x2275000a,0x2277000a,0x2279000a,0x227b000a,0x227d000a,0x227f000a,0x2281000a,0x2283000a,0x2285000a,0x2287000a,0x2289000a,0x228b000a,0x228d000a,0x228f000a,0, +0x2291000a,0x2293000a,0x2295000a,0x2297000a,0x2299000a,0,0,0,0,0,0,0,0,0,0,0, +0x180000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xe600,0xe600,0x100,0x100,0xe600,0xe600,0xe600,0xe600, +0x100,0x100,0x100,0xe600,0xe600,0,0,0,0,0xe600,0,0,0,0x100,0x100,0xe600, +0xdc00,0xe600,0x100,0x100,0xdc00,0xdc00,0xdc00,0xdc00,0xe600,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x229b000a,0x229f000a,0x183000a,0x185000a,0,0x22a3000a,0x22a7000a,0x188000a, +0,0x18a000a,0x22ab000a,0x18d000a,0x18f000a,0x191000a,0x22ad000a,0x22af000a,0x193000a,0x195000a,0x197000a,0x22b1000a,0,0x199000a,0x19b000a,0, +0,0x19e000a,0x1a0000a,0x1a2000a,0x1a4000a,0x1a6000a,0,0,0x1a8000a,0x1ab000a,0x1af000a,0,0x1b2000a,0,0x6f9000f,0, +0x1b4000a,0,0x6fb000f,0x6fd000f,0x1b6000a,0x1b8000a,0,0x22b3000a,0x1ba000a,0x1bc000a,0,0x1be000a,0x22b5000a,0x22b7000a,0x22b9000a,0x22bb000a, +0x22bd000a,0x22bf000a,0,0x1c0000a,0x22c1000a,0x22c3000a,0x1c4000a,0x1c6000a,0x22c5000a,0,0,0,0,0x1c8000a,0x22c7000a,0x22c9000a, +0x22cb000a,0x22cd000a,0,0,0,0,0,0,0,0,0,0x22cf000a,0x22d3000a,0x22d7000a,0x22db000a,0x22df000a, +0x22e3000a,0x22e7000a,0x22eb000a,0x22ef000a,0x22f3000a,0x22f7000a,0x22fb000a,0x22ff000a,0x2302000a,0x2304000a,0x2307000a,0x230b000a,0x230e000a,0x2310000a,0x2313000a,0x2317000a, +0x231c000a,0x231f000a,0x2321000a,0x2324000a,0x2328000a,0x232a000a,0x232c000a,0x232e000a,0x2330000a,0x2332000a,0x2335000a,0x2339000a,0x233c000a,0x233e000a,0x2341000a,0x2345000a, +0x234a000a,0x234d000a,0x234f000a,0x2352000a,0x2356000a,0x2358000a,0x235a000a,0x235c000a,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x3df80040,0,0x3df90040,0,0x3dfa0040,0,0,0, +0,0,0x1eba000c,0x1ebe000c,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x1ec2000c,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x1ec6000c,0x1eca000c,0x1ece000c,0x3dfb0040,0,0x3dfd0040,0,0x3dfc0040,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x3dfe0040,0x1ed2000c,0,0,0, +0x3dff0040,0x1ed6000c,0,0x3e000040,0x1eda000c,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x3e010040,0x1ede000c,0x3e020040,0x1ee2000c,0, +0,0,0,0,0x235e000a,0x2361000a,0,0x2365000a,0x2368000a,0,0,0,0,0,0,0, +0,0,0,0,0x3e030040,0,0,0,0,0x1ee6000c,0,0x3e040040,0x1eea000c,0x3e050040,0,0x1eee000c, +0x3e060040,0x1ef2000c,0,0,0,0x3e090040,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1ef6000c,0x3e080040,0x1efa000c,0,0x3e0c0040,0x3e0d0040,0,0, +0,0,0,0,0,0x1efe000c,0x1f02000c,0x1f06000c,0x1f0a000c,0x1f0e000c,0x3e0e0040,0x3e0f0040,0x1f12000c,0x1f16000c,0x3e100040,0x3e110040, +0x1f1a000c,0x1f1e000c,0x3e120040,0x3e130040,0x3e1c0040,0x3e1d0040,0,0,0x1f22000c,0x1f26000c,0x3e140040,0x3e150040,0x1f2a000c,0x1f2e000c,0x3e160040,0x3e170040, +0x1f32000c,0x1f36000c,0,0,0,0,0,0,0,0x3e1e0040,0x3e1f0040,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x3e180040,0,0,0,0,0, +0x3e190040,0x3e1a0040,0,0x3e1b0040,0x1f3a000c,0x1f3e000c,0x1f42000c,0x1f46000c,0,0,0x3e200040,0x3e210040,0x3e220040,0x3e230040,0,0, +0,0,0,0,0,0,0,0,0x1f4a000c,0x1f4e000c,0x1f52000c,0x1f56000c,0,0,0,0, +0,0,0x1f5a000c,0x1f5e000c,0x1f62000c,0x1f66000c,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x701000f,0x703000f,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x236c000a,0x236e000a,0x2370000a,0x2372000a,0x2374000a,0x2376000a,0x2378000a,0x237a000a,0x237c000a,0x237e000a,0x2381000a,0x2384000a,0x2387000a,0x238a000a,0x238d000a,0x2390000a, +0x2393000a,0x2396000a,0x2399000a,0x239c000a,0x239f000a,0x23a3000a,0x23a7000a,0x23ab000a,0x23af000a,0x23b3000a,0x23b7000a,0x23bb000a,0x23bf000a,0x23c3000a,0x23c8000a,0x23cd000a, +0x23d2000a,0x23d7000a,0x23dc000a,0x23e1000a,0x23e6000a,0x23eb000a,0x23f0000a,0x23f5000a,0x23fa000a,0x23fd000a,0x2400000a,0x2403000a,0x2406000a,0x2409000a,0x240c000a,0x240f000a, +0x2412000a,0x2415000a,0x2419000a,0x241d000a,0x2421000a,0x2425000a,0x2429000a,0x242d000a,0x2431000a,0x2435000a,0x2439000a,0x243d000a,0x2441000a,0x2445000a,0x2449000a,0x244d000a, +0x2451000a,0x2455000a,0x2459000a,0x245d000a,0x2461000a,0x2465000a,0x2469000a,0x246d000a,0x2471000a,0x2475000a,0x2479000a,0x247d000a,0x2481000a,0x2485000a,0x2489000a,0x248d000a, +0x2491000a,0x2495000a,0x2499000a,0x249d000a,0x24a1000a,0x24a5000a,0x24a9000a,0x24ab000a,0x24ad000a,0x24af000a,0x24b1000a,0x24b3000a,0x24b5000a,0x24b7000a,0x24b9000a,0x24bb000a, +0x24bd000a,0x24bf000a,0x24c1000a,0x24c3000a,0x24c5000a,0x24c7000a,0x24c9000a,0x24cb000a,0x24cd000a,0x24cf000a,0x24d1000a,0x24d3000a,0x24d5000a,0x24d7000a,0x24d9000a,0x24db000a, +0x24dd000a,0x24df000a,0x24e1000a,0x24e3000a,0x24e5000a,0x24e7000a,0x24e9000a,0x24eb000a,0x24ed000a,0x24ef000a,0x24f1000a,0x24f3000a,0x24f5000a,0x24f7000a,0x24f9000a,0x24fb000a, +0x24fd000a,0x24ff000a,0x2501000a,0x2503000a,0x2505000a,0x2507000a,0x2509000a,0x250b000a,0x250d000a,0x250f000a,0x2511000a,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x2513000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x2518000a,0x251c000a,0x251f000a,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x705000f,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x2523000a,0x1ca000a,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x2525000a,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xe600,0xe600,0xe600,0xe600, +0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, +0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x2527000a,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2529000a, +0,0,0,0,0,0,0,0,0,0,0,0,0x252b000a,0x252d000a,0x252f000a,0x2531000a, +0x2533000a,0x2535000a,0x2537000a,0x2539000a,0x253b000a,0x253d000a,0x253f000a,0x2541000a,0x2543000a,0x2545000a,0x2547000a,0x2549000a,0x254b000a,0x254d000a,0x254f000a,0x2551000a, +0x2553000a,0x2555000a,0x2557000a,0x2559000a,0x255b000a,0x255d000a,0x255f000a,0x2561000a,0x2563000a,0x2565000a,0x2567000a,0x2569000a,0x256b000a,0x256d000a,0x256f000a,0x2571000a, +0x2573000a,0x2575000a,0x2577000a,0x2579000a,0x257b000a,0x257d000a,0x257f000a,0x2581000a,0x2583000a,0x2585000a,0x2587000a,0x2589000a,0x258b000a,0x258d000a,0x258f000a,0x2591000a, +0x2593000a,0x2595000a,0x2597000a,0x2599000a,0x259b000a,0x259d000a,0x259f000a,0x25a1000a,0x25a3000a,0x25a5000a,0x25a7000a,0x25a9000a,0x25ab000a,0x25ad000a,0x25af000a,0x25b1000a, +0x25b3000a,0x25b5000a,0x25b7000a,0x25b9000a,0x25bb000a,0x25bd000a,0x25bf000a,0x25c1000a,0x25c3000a,0x25c5000a,0x25c7000a,0x25c9000a,0x25cb000a,0x25cd000a,0x25cf000a,0x25d1000a, +0x25d3000a,0x25d5000a,0x25d7000a,0x25d9000a,0x25db000a,0x25dd000a,0x25df000a,0x25e1000a,0x25e3000a,0x25e5000a,0x25e7000a,0x25e9000a,0x25eb000a,0x25ed000a,0x25ef000a,0x25f1000a, +0x25f3000a,0x25f5000a,0x25f7000a,0x25f9000a,0x25fb000a,0x25fd000a,0x25ff000a,0x2601000a,0x2603000a,0x2605000a,0x2607000a,0x2609000a,0x260b000a,0x260d000a,0x260f000a,0x2611000a, +0x2613000a,0x2615000a,0x2617000a,0x2619000a,0x261b000a,0x261d000a,0x261f000a,0x2621000a,0x2623000a,0x2625000a,0x2627000a,0x2629000a,0x262b000a,0x262d000a,0x262f000a,0x2631000a, +0x2633000a,0x2635000a,0x2637000a,0x2639000a,0x263b000a,0x263d000a,0x263f000a,0x2641000a,0x2643000a,0x2645000a,0x2647000a,0x2649000a,0x264b000a,0x264d000a,0x264f000a,0x2651000a, +0x2653000a,0x2655000a,0x2657000a,0x2659000a,0x265b000a,0x265d000a,0x265f000a,0x2661000a,0x2663000a,0x2665000a,0x2667000a,0x2669000a,0x266b000a,0x266d000a,0x266f000a,0x2671000a, +0x2673000a,0x2675000a,0x2677000a,0x2679000a,0x267b000a,0x267d000a,0x267f000a,0x2681000a,0x2683000a,0x2685000a,0x2687000a,0x2689000a,0x268b000a,0x268d000a,0x268f000a,0x2691000a, +0x2693000a,0x2695000a,0x2697000a,0x2699000a,0x269b000a,0x269d000a,0x269f000a,0x26a1000a,0x26a3000a,0x26a5000a,0x26a7000a,0x26a9000a,0x26ab000a,0x26ad000a,0x26af000a,0x26b1000a, +0x26b3000a,0x26b5000a,0x26b7000a,0x26b9000a,0x26bb000a,0x26bd000a,0x26bf000a,0x26c1000a,0x26c3000a,0x26c5000a,0x26c7000a,0x26c9000a,0x26cb000a,0x26cd000a,0x26cf000a,0x26d1000a, +0x26d3000a,0x26d5000a,0,0,0,0,0,0,0,0,0,0,0x26d7000a,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xda00,0xe400, +0xe800,0xde00,0xe000,0xe000,0,0,0,0,0,0,0x26d9000a,0,0x26db000a,0x26dd000a,0x26df000a,0, +0,0,0,0,0,0,0x3e380040,0,0,0,0,0x3e240040,0x1f6a000c,0x3e250040,0x1f6e000c,0x3e260040, +0x1f72000c,0x3e270040,0x1f76000c,0x3e280040,0x1f7a000c,0x3e290040,0x1f7e000c,0x3e2a0040,0x1f82000c,0x3e2b0040,0x1f86000c,0x3e2c0040,0x1f8a000c,0x3e2d0040,0x1f8e000c,0x3e2e0040, +0x1f92000c,0x3e2f0040,0x1f96000c,0,0x3e300040,0x1f9a000c,0x3e310040,0x1f9e000c,0x3e320040,0x1fa2000c,0,0,0,0,0,0x3e330040, +0x1fa6000c,0x1faa000c,0x3e340040,0x1fae000c,0x1fb2000c,0x3e350040,0x1fb6000c,0x1fba000c,0x3e360040,0x1fbe000c,0x1fc2000c,0x3e370040,0x1fc6000c,0x1fca000c,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1fce000c,0,0,0,0,0x208708b0,0x208808b0,0x26e1000a,0x26e5000a,0x3e390040,0x1fd2000c,0x26e9000a, +0,0,0,0,0,0,0x3e4e0040,0,0,0,0,0x3e3a0040,0x1fd6000c,0x3e3b0040,0x1fda000c,0x3e3c0040, +0x1fde000c,0x3e3d0040,0x1fe2000c,0x3e3e0040,0x1fe6000c,0x3e3f0040,0x1fea000c,0x3e400040,0x1fee000c,0x3e410040,0x1ff2000c,0x3e420040,0x1ff6000c,0x3e430040,0x1ffa000c,0x3e440040, +0x1ffe000c,0x3e450040,0x2002000c,0,0x3e460040,0x2006000c,0x3e470040,0x200a000c,0x3e480040,0x200e000c,0,0,0,0,0,0x3e490040, +0x2012000c,0x2016000c,0x3e4a0040,0x201a000c,0x201e000c,0x3e4b0040,0x2022000c,0x2026000c,0x3e4c0040,0x202a000c,0x202e000c,0x3e4d0040,0x2032000c,0x2036000c,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x3e4f0040, +0x3e500040,0x3e510040,0x3e520040,0,0x203a000c,0,0,0x203e000c,0x2042000c,0x2046000c,0x204a000c,0,0,0x3e530040,0x204e000c,0x26ec000a, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x26ef000a,0x26f1000a,0x26f3000a,0x26f5000a,0x26f7000a,0x26f9000a,0x26fb000a,0x26fd000a,0x26ff000a,0x2701000a,0x2703000a,0x2705000a,0x2707000a,0x2709000a,0x270b000a, +0x270d000a,0x270f000a,0x2711000a,0x2713000a,0x2715000a,0x2717000a,0x2719000a,0x271b000a,0x271d000a,0x271f000a,0x2721000a,0x2723000a,0x2725000a,0x2727000a,0x2729000a,0x272b000a, +0x272d000a,0x272f000a,0x2731000a,0x2733000a,0x2735000a,0x2737000a,0x2739000a,0x273b000a,0x273d000a,0x273f000a,0x2741000a,0x2743000a,0x2745000a,0x2747000a,0x2749000a,0x274b000a, +0x274d000a,0x274f000a,0x2751000a,0x2753000a,0x2755000a,0x2757000a,0x2759000a,0x275b000a,0x275d000a,0x275f000a,0x2761000a,0x2763000a,0x2765000a,0x2767000a,0x2769000a,0x276b000a, +0x276d000a,0x276f000a,0x2771000a,0x2773000a,0x2775000a,0x2777000a,0x2779000a,0x277b000a,0x277d000a,0x277f000a,0x2781000a,0x2783000a,0x2785000a,0x2787000a,0x2789000a,0x278b000a, +0x278d000a,0x278f000a,0x2791000a,0x2793000a,0x2795000a,0x2797000a,0x2799000a,0x279b000a,0x279d000a,0x279f000a,0x27a1000a,0x27a3000a,0x27a5000a,0x27a7000a,0x27a9000a,0, +0,0,0x27ab000a,0x27ad000a,0x27af000a,0x27b1000a,0x27b3000a,0x27b5000a,0x27b7000a,0x27b9000a,0x27bb000a,0x27bd000a,0x27bf000a,0x27c1000a,0x27c3000a,0x27c5000a, +0x27c7000a,0x27cb000a,0x27cf000a,0x27d3000a,0x27d7000a,0x27db000a,0x27df000a,0x27e3000a,0x27e7000a,0x27eb000a,0x27ef000a,0x27f3000a,0x27f7000a,0x27fb000a,0x27ff000a,0x2804000a, +0x2809000a,0x280e000a,0x2813000a,0x2818000a,0x281d000a,0x2822000a,0x2827000a,0x282c000a,0x2831000a,0x2836000a,0x283b000a,0x2840000a,0x2845000a,0x284a000a,0x2852000a,0, +0x2859000a,0x285d000a,0x2861000a,0x2865000a,0x2869000a,0x286d000a,0x2871000a,0x2875000a,0x2879000a,0x287d000a,0x2881000a,0x2885000a,0x2889000a,0x288d000a,0x2891000a,0x2895000a, +0x2899000a,0x289d000a,0x28a1000a,0x28a5000a,0x28a9000a,0x28ad000a,0x28b1000a,0x28b5000a,0x28b9000a,0x28bd000a,0x28c1000a,0x28c5000a,0x28c9000a,0x28cd000a,0x28d1000a,0x28d5000a, +0x28d9000a,0x28dd000a,0x28e1000a,0x28e5000a,0,0,0,0,0,0,0,0,0,0,0,0, +0x1cc000a,0x28e9000a,0x28ec000a,0x28ef000a,0x28f2000a,0x28f5000a,0x28f8000a,0x28fb000a,0x28fe000a,0x2901000a,0x2904000a,0x2907000a,0x290a000a,0x290d000a,0x2910000a,0x2913000a, +0x2916000a,0x2918000a,0x291a000a,0x291c000a,0x291e000a,0x2920000a,0x2922000a,0x2924000a,0x2926000a,0x2928000a,0x292a000a,0x292c000a,0x292e000a,0x2930000a,0x2932000a,0x2935000a, +0x2938000a,0x293b000a,0x293e000a,0x2941000a,0x2944000a,0x2947000a,0x294a000a,0x294d000a,0x2950000a,0x2953000a,0x2956000a,0x2959000a,0x295c000a,0x2962000a,0x2967000a,0, +0x296a000a,0x296c000a,0x296e000a,0x2970000a,0x2972000a,0x2974000a,0x2976000a,0x2978000a,0x297a000a,0x297c000a,0x297e000a,0x2980000a,0x2982000a,0x2984000a,0x2986000a,0x2988000a, +0x298a000a,0x298c000a,0x298e000a,0x2990000a,0x2992000a,0x2994000a,0x2996000a,0x2998000a,0x299a000a,0x299c000a,0x299e000a,0x29a0000a,0x29a2000a,0x29a4000a,0x29a6000a,0x29a8000a, +0x29aa000a,0x29ac000a,0x29ae000a,0x29b0000a,0x29b2000a,0x29b4000a,0x29b6000a,0x29b8000a,0x29ba000a,0x29bc000a,0x29be000a,0x29c0000a,0x29c2000a,0x29c4000a,0x29c6000a,0x29c8000a, +0x29ca000a,0x29cc000a,0x29cf000a,0x29d2000a,0x29d5000a,0x29d8000a,0x29db000a,0x29de000a,0x29e1000a,0x29e4000a,0x29e7000a,0x29ea000a,0x29ed000a,0x29f0000a,0x29f3000a,0x29f6000a, +0x29f9000a,0x29fc000a,0x29ff000a,0x2a02000a,0x2a05000a,0x2a08000a,0x2a0b000a,0x2a0e000a,0x2a11000a,0x2a14000a,0x2a18000a,0x2a1c000a,0x1d0000a,0x2a20000a,0x1d3000a,0x1d6000a, +0x2a24000a,0x2a26000a,0x2a28000a,0x2a2a000a,0x2a2c000a,0x2a2e000a,0x2a30000a,0x2a32000a,0x2a34000a,0x2a36000a,0x2a38000a,0x2a3a000a,0x2a3c000a,0x2a3e000a,0x2a40000a,0x2a42000a, +0x2a44000a,0x2a46000a,0x2a48000a,0x2a4a000a,0x2a4c000a,0x2a4e000a,0x2a50000a,0x2a52000a,0x2a54000a,0x2a56000a,0x2a58000a,0x2a5a000a,0x2a5c000a,0x2a5e000a,0x2a60000a,0x2a62000a, +0x2a64000a,0x2a66000a,0x2a68000a,0x2a6a000a,0x2a6c000a,0x2a6e000a,0x2a70000a,0x2a72000a,0x2a74000a,0x2a76000a,0x2a78000a,0x2a7a000a,0x2a7c000a,0x2a7e000a,0x2a80000a,0, +0x2a82000a,0x2a88000a,0x2a8d000a,0x2a93000a,0x2a97000a,0x2a9e000a,0x2aa2000a,0x2aa6000a,0x2aae000a,0x2ab3000a,0x2ab7000a,0x2abb000a,0x2abf000a,0x2ac4000a,0x2ac9000a,0x2ace000a, +0x2ad3000a,0x2ad9000a,0x2ade000a,0x2ae3000a,0x2aea000a,0x2aed000a,0x2af4000a,0x2afb000a,0x2b01000a,0x2b06000a,0x2b0d000a,0x2b14000a,0x2b19000a,0x2b1d000a,0x2b21000a,0x2b27000a, +0x2b2c000a,0x2b32000a,0x2b39000a,0x2b3d000a,0x2b41000a,0x2b46000a,0x2b4a000a,0x2b4e000a,0x2b51000a,0x2b54000a,0x2b58000a,0x2b5c000a,0x2b63000a,0x2b68000a,0x2b6e000a,0x2b75000a, +0x2b7a000a,0x2b7e000a,0x2b82000a,0x2b8a000a,0x2b8f000a,0x2b96000a,0x2b9a000a,0x2ba0000a,0x2ba4000a,0x2ba9000a,0x2bad000a,0x2bb2000a,0x2bb9000a,0x2bbe000a,0x2bc4000a,0x2bc9000a, +0x2bcc000a,0x2bd3000a,0x2bd7000a,0x2bdb000a,0x2be0000a,0x2be4000a,0x2be8000a,0x2bec000a,0x2bf2000a,0x2bf7000a,0x2bfa000a,0x2c01000a,0x2c06000a,0x2c0c000a,0x2c11000a,0x2c17000a, +0x2c1b000a,0x2c1f000a,0x2c24000a,0x2c27000a,0x2c2c000a,0x2c32000a,0x2c35000a,0x2c3c000a,0x2c40000a,0x2c43000a,0x2c46000a,0x2c49000a,0x2c4c000a,0x2c4f000a,0x2c52000a,0x2c55000a, +0x2c58000a,0x2c5b000a,0x2c5e000a,0x2c62000a,0x2c66000a,0x2c6a000a,0x2c6e000a,0x2c72000a,0x2c76000a,0x2c7a000a,0x2c7e000a,0x2c82000a,0x2c86000a,0x2c8a000a,0x2c8e000a,0x2c92000a, +0x2c96000a,0x1da000a,0x2c9a000a,0x1de000a,0x2c9d000a,0x1e1000a,0x2ca1000a,0x2ca4000a,0x2ca7000a,0x2cab000a,0x1e4000a,0x2caf000a,0x2cb2000a,0x2cb5000a,0x2cb8000a,0x2cbb000a, +0x1e7000a,0x1ea000a,0x1ed000a,0x1f0000a,0x1f3000a,0x1f6000a,0x1f9000a,0x1fc000a,0x2cc0000a,0x2cc4000a,0x1ff000a,0x202000a,0x205000a,0x2cc9000a,0x2ccc000a,0x2ccf000a, +0x208000a,0x20b000a,0x20f000a,0x213000a,0x217000a,0x2cd2000a,0x2cd5000a,0x2cd8000a,0x2cdb000a,0x2cde000a,0x2ce1000a,0x2ce4000a,0x2ce7000a,0x2cea000a,0x2ced000a,0x2cf0000a, +0x2cf4000a,0x2cf8000a,0x2cfb000a,0x2cff000a,0x2d03000a,0x2d07000a,0x2d0a000a,0x2d0e000a,0x2d12000a,0x21b000a,0x21e000a,0x222000a,0x226000a,0x2d17000a,0x2d1b000a,0x2d21000a, +0x2d28000a,0x2d2b000a,0x2d2e000a,0x2d31000a,0x22a000a,0x22d000a,0x230000a,0x233000a,0x236000a,0x239000a,0x23c000a,0x23f000a,0x242000a,0x245000a,0x248000a,0x24b000a, +0x24e000a,0x251000a,0x2d34000a,0x254000a,0x2d39000a,0x2d3c000a,0x257000a,0x25c000a,0x260000a,0x263000a,0x2d3f000a,0x266000a,0x2d42000a,0x269000a,0x26c000a,0x2d45000a, +0x2d48000a,0x2d4b000a,0x2d4e000a,0x2d52000a,0x2d55000a,0x2d58000a,0x2d5c000a,0x26f000a,0x2d60000a,0x272000a,0x276000a,0x2d65000a,0x279000a,0x27c000a,0x27f000a,0x283000a, +0x2d68000a,0x2d6b000a,0x2d6e000a,0x2d71000a,0x2d74000a,0x2d77000a,0x2d7a000a,0x2d7d000a,0x2d80000a,0x2d83000a,0x2d87000a,0x2d8b000a,0x2d8f000a,0x2d93000a,0x2d97000a,0x2d9b000a, +0x2d9f000a,0x2da3000a,0x2da7000a,0x2dab000a,0x2daf000a,0x2db3000a,0x2db7000a,0x2dbb000a,0x2dbf000a,0x2dc3000a,0x2dc7000a,0x2dcb000a,0x2dcf000a,0x2dd3000a,0x2dd7000a,0x2ddb000a, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe600, +0,0,0,0,0,0,0,0,0,0,0,0,0xe600,0xe600,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x2ddf000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x900,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x900,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xdc00,0xdc00,0xdc00,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x900,0,0,0,0,0,0,0,0,0,0,0,0, +0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c, +0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x709000f,0x70b000f,0x70d000f,0x70f000f, +0x711000f,0x713000f,0x715000f,0x717000f,0x719000f,0x71b000f,0x71d000f,0x71f000f,0x721000f,0x723000f,0x725000f,0x727000f,0x729000f,0x72b000f,0x72d000f,0x72f000f, +0x731000f,0x733000f,0x735000f,0x737000f,0x739000f,0x73b000f,0x73d000f,0x73f000f,0x741000f,0x743000f,0x745000f,0x747000f,0x749000f,0x74b000f,0x74d000f,0x74f000f, +0x751000f,0x753000f,0x755000f,0x757000f,0x759000f,0x75b000f,0x75d000f,0x75f000f,0x761000f,0x763000f,0x765000f,0x767000f,0x769000f,0x76b000f,0x76d000f,0x76f000f, +0x771000f,0x773000f,0x775000f,0x777000f,0x779000f,0x77b000f,0x77d000f,0x77f000f,0x781000f,0x783000f,0x785000f,0x787000f,0x789000f,0x78b000f,0x78d000f,0x78f000f, +0x791000f,0x793000f,0x795000f,0x797000f,0x799000f,0x79b000f,0x79d000f,0x79f000f,0x7a1000f,0x7a3000f,0x7a5000f,0x7a7000f,0x7a9000f,0x7ab000f,0x7ad000f,0x7af000f, +0x7b1000f,0x7b3000f,0x7b5000f,0x7b7000f,0x7b9000f,0x7bb000f,0x7bd000f,0x7bf000f,0x7c1000f,0x7c3000f,0x7c5000f,0x7c7000f,0x7c9000f,0x7cb000f,0x7cd000f,0x7cf000f, +0x7d1000f,0x7d3000f,0x7d5000f,0x7d7000f,0x7d9000f,0x7db000f,0x7dd000f,0x7df000f,0x7e1000f,0x7e3000f,0x7e5000f,0x7e7000f,0x7e9000f,0x7eb000f,0x7ed000f,0x7ef000f, +0x7f1000f,0x7f3000f,0x7f5000f,0x7f7000f,0x7f9000f,0x7fb000f,0x7fd000f,0x7ff000f,0x801000f,0x803000f,0x805000f,0x807000f,0x809000f,0x80b000f,0x80d000f,0x80f000f, +0x811000f,0x813000f,0x815000f,0x817000f,0x819000f,0x81b000f,0x81d000f,0x81f000f,0x821000f,0x823000f,0x825000f,0x827000f,0x829000f,0x82b000f,0x82d000f,0x82f000f, +0x831000f,0x833000f,0x835000f,0x837000f,0x839000f,0x83b000f,0x83d000f,0x83f000f,0x841000f,0x843000f,0x845000f,0x847000f,0x849000f,0x84b000f,0x84d000f,0x84f000f, +0x851000f,0x853000f,0x855000f,0x857000f,0x859000f,0x85b000f,0x85d000f,0x85f000f,0x861000f,0x863000f,0x865000f,0x867000f,0x869000f,0x86b000f,0x86d000f,0x86f000f, +0x871000f,0x873000f,0x875000f,0x877000f,0x879000f,0x87b000f,0x87d000f,0x87f000f,0x881000f,0x883000f,0x885000f,0x887000f,0x889000f,0x88b000f,0x88d000f,0x88f000f, +0x891000f,0x893000f,0x895000f,0x897000f,0x899000f,0x89b000f,0x89d000f,0x89f000f,0x8a1000f,0x8a3000f,0x8a5000f,0x8a7000f,0x8a9000f,0x8ab000f,0x8ad000f,0x8af000f, +0x8b1000f,0x8b3000f,0x8b5000f,0x8b7000f,0x8b9000f,0x8bb000f,0x8bd000f,0x8bf000f,0x8c1000f,0x8c3000f,0x8c5000f,0x8c7000f,0x8c9000f,0x8cb000f,0x8cd000f,0x8cf000f, +0x8d1000f,0x8d3000f,0x8d5000f,0x8d7000f,0x8d9000f,0x8db000f,0x8dd000f,0x8df000f,0x8e1000f,0x8e3000f,0x8e5000f,0x8e7000f,0x8e9000f,0x8eb000f,0x8ed000f,0x8ef000f, +0x8f1000f,0x8f3000f,0x8f5000f,0x8f7000f,0x8f9000f,0x8fb000f,0x8fd000f,0x8ff000f,0x901000f,0x903000f,0x905000f,0x907000f,0x909000f,0x90b000f,0x90d000f,0x90f000f, +0x911000f,0x913000f,0x915000f,0x917000f,0x919000f,0x91b000f,0x91d000f,0x91f000f,0x921000f,0x923000f,0,0,0x925000f,0,0x927000f,0, +0,0x929000f,0x92b000f,0x92d000f,0x92f000f,0x931000f,0x933000f,0x935000f,0x937000f,0x939000f,0x93b000f,0,0x93d000f,0,0x93f000f,0, +0,0x941000f,0x943000f,0,0,0,0x945000f,0x947000f,0x949000f,0x94b000f,0,0,0x94d000f,0x94f000f,0x951000f,0x953000f, +0x955000f,0x957000f,0x959000f,0x95b000f,0x95d000f,0x95f000f,0x961000f,0x963000f,0x965000f,0x967000f,0x969000f,0x96b000f,0x96d000f,0x96f000f,0x971000f,0x973000f, +0x975000f,0x977000f,0x979000f,0x97b000f,0x97d000f,0x97f000f,0x981000f,0x983000f,0x985000f,0x987000f,0x989000f,0x98b000f,0x98d000f,0x98f000f,0x991000f,0x993000f, +0x995000f,0x997000f,0x999000f,0x99b000f,0x99d000f,0x99f000f,0x9a1000f,0x9a3000f,0x9a5000f,0x9a7000f,0x9a9000f,0x9ab000f,0x9ad000f,0x9af000f,0x9b1000f,0x9b3000f, +0x9b5000f,0x9b7000f,0x9b9000f,0x9bb000f,0x9bd000f,0x9bf000f,0x9c1000f,0,0,0,0,0,0x9c3000f,0x9c5000f,0x9c7000f,0x9c9000f, +0x9cb000f,0x9cd000f,0x9cf000f,0x9d1000f,0x9d3000f,0x9d5000f,0x9d7000f,0x9d9000f,0x9db000f,0x9dd000f,0x9df000f,0x9e1000f,0x9e3000f,0x9e5000f,0x9e7000f,0x9e9000f, +0x9eb000f,0x9ed000f,0x9ef000f,0x9f1000f,0x9f3000f,0x9f5000f,0x9f7000f,0x9f9000f,0x9fb000f,0x9fd000f,0x9ff000f,0xa01000f,0xa03000f,0xa05000f,0xa07000f,0xa09000f, +0xa0b000f,0xa0d000f,0xa0f000f,0xa11000f,0xa13000f,0xa15000f,0xa17000f,0xa19000f,0xa1b000f,0xa1d000f,0xa1f000f,0xa21000f,0xa23000f,0xa25000f,0xa27000f,0xa29000f, +0xa2b000f,0xa2d000f,0xa2f000f,0xa31000f,0xa33000f,0xa35000f,0xa37000f,0xa39000f,0xa3b000f,0xa3d000f,0xa3f000f,0xa41000f,0xa43000f,0xa45000f,0xa47000f,0xa49000f, +0xa4b000f,0xa4d000f,0xa4f000f,0xa51000f,0xa53000f,0xa55000f,0xa57000f,0xa59000f,0xa5b000f,0xa5d000f,0xa5f000f,0xa61000f,0xa63000f,0xa65000f,0xa67000f,0xa69000f, +0xa6b000f,0xa6d000f,0xa6f000f,0xa71000f,0xa73000f,0xa75000f,0xa77000f,0xa79000f,0xa7b000f,0xa7d000f,0xa7f000f,0xa81000f,0xa84000f,0xa87000f,0xa8a000f,0xa8c000f, +0xa8e000f,0xa90000f,0xa93000f,0xa96000f,0xa99000f,0xa9b000f,0,0,0,0,0,0,0x2de1000a,0x2de4000a,0x2de7000a,0x2dea000a, +0x2dee000a,0x2df2000a,0x2df5000a,0,0,0,0,0,0,0,0,0,0,0,0,0x2df8000a, +0x2dfb000a,0x2dfe000a,0x2e01000a,0x2e04000a,0,0,0,0,0,0xa9d000f,0x1a00,0xaa1000f,0x2e07000a,0x2e09000a,0x2e0b000a,0x2e0d000a, +0x2e0f000a,0x2e11000a,0x2e13000a,0x2e15000a,0x2e17000a,0x2e19000a,0xaa5000f,0xaa9000f,0xaad000f,0xab2000f,0xab7000f,0xabb000f,0xabf000f,0xac3000f,0xac7000f,0xacb000f, +0xacf000f,0xad3000f,0xad7000f,0,0xadb000f,0xadf000f,0xae3000f,0xae7000f,0xaeb000f,0,0xaef000f,0,0xaf3000f,0xaf7000f,0,0xafb000f, +0xaff000f,0,0xb03000f,0xb07000f,0xb0b000f,0xb0f000f,0xb13000f,0xb17000f,0xb1b000f,0xb1f000f,0xb23000f,0x2e1b000a,0x2e1e000a,0x2e20000a,0x2e22000a,0x2e24000a, +0x2e26000a,0x2e28000a,0x2e2a000a,0x2e2c000a,0x2e2e000a,0x2e30000a,0x2e32000a,0x2e34000a,0x2e36000a,0x2e38000a,0x2e3a000a,0x2e3c000a,0x2e3e000a,0x2e40000a,0x2e42000a,0x2e44000a, +0x2e46000a,0x2e48000a,0x2e4a000a,0x2e4c000a,0x2e4e000a,0x2e50000a,0x2e52000a,0x2e54000a,0x2e56000a,0x2e58000a,0x2e5a000a,0x2e5c000a,0x2e5e000a,0x2e60000a,0x2e62000a,0x2e64000a, +0x2e66000a,0x2e68000a,0x2e6a000a,0x2e6c000a,0x2e6e000a,0x2e70000a,0x2e72000a,0x2e74000a,0x2e76000a,0x2e78000a,0x2e7a000a,0x2e7c000a,0x2e7e000a,0x2e80000a,0x2e82000a,0x2e84000a, +0x2e86000a,0x2e88000a,0x2e8a000a,0x2e8c000a,0x2e8e000a,0x2e90000a,0x2e92000a,0x2e94000a,0x2e96000a,0x2e98000a,0x2e9a000a,0x2e9c000a,0x2e9e000a,0x2ea0000a,0x2ea2000a,0x2ea4000a, +0x2ea6000a,0x2ea8000a,0x2eaa000a,0x2eac000a,0x2eae000a,0x2eb0000a,0x2eb2000a,0x2eb4000a,0x2eb6000a,0x2eb8000a,0x2eba000a,0x2ebc000a,0x2ebe000a,0x2ec0000a,0x2ec2000a,0x2ec4000a, +0x2ec6000a,0x2eca000a,0x2ece000a,0x2ed0000a,0x2ed2000a,0x2ed4000a,0x2ed6000a,0x2ed8000a,0x2eda000a,0x2edc000a,0x2ede000a,0x2ee0000a,0x2ee2000a,0x2ee6000a,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x2eea000a,0x2eec000a,0x2eee000a,0x2ef0000a,0x2ef2000a,0x2ef4000a,0x2ef6000a,0x2ef8000a,0x2efa000a,0x2efc000a,0x2efe000a,0x2f01000a,0x2f03000a, +0x2f05000a,0x2f07000a,0x2f09000a,0x2f0b000a,0x2f0d000a,0x2f0f000a,0x2f11000a,0x2f13000a,0x2f15000a,0x2f17000a,0x2f19000a,0x2f1d000a,0x2f21000a,0x2f25000a,0x2f29000a,0x2f2d000a, +0x2f31000a,0x2f35000a,0x2f39000a,0x2f3d000a,0x2f41000a,0x2f45000a,0x2f49000a,0x2f4d000a,0x2f51000a,0x2f55000a,0x2f59000a,0x2f5d000a,0x2f61000a,0x2f63000a,0x2f65000a,0x2f67000a, +0x2f69000a,0x2f6d000a,0x2f71000a,0x2f75000a,0x2f79000a,0x2f7d000a,0x2f80000a,0x2f83000a,0x2f86000a,0x2f89000a,0x2f8c000a,0x2f8f000a,0x2f92000a,0x2f95000a,0x2f98000a,0x2f9b000a, +0x2f9e000a,0x2fa1000a,0x2fa4000a,0x2fa7000a,0x2faa000a,0x2fad000a,0x2fb0000a,0x2fb3000a,0x2fb6000a,0x2fb9000a,0x2fbc000a,0x2fbf000a,0x2fc2000a,0x2fc5000a,0x2fc8000a,0x2fcb000a, +0x2fce000a,0x2fd1000a,0x2fd4000a,0x2fd7000a,0x2fda000a,0x2fdd000a,0x2fe0000a,0x2fe3000a,0x2fe6000a,0x2fe9000a,0x2fec000a,0x2fef000a,0x2ff2000a,0x2ff5000a,0x2ff8000a,0x2ffb000a, +0x2ffe000a,0x3001000a,0x3004000a,0x3007000a,0x300a000a,0x300d000a,0x3010000a,0x3013000a,0x3016000a,0x3019000a,0x301c000a,0x301f000a,0x3022000a,0x3025000a,0x3028000a,0x302b000a, +0x302e000a,0x3031000a,0x3034000a,0x3037000a,0x303a000a,0x303d000a,0x3040000a,0x3043000a,0x3046000a,0x3049000a,0x304c000a,0x304f000a,0x3052000a,0x3055000a,0x3058000a,0x305b000a, +0x305e000a,0x3061000a,0x3064000a,0x3067000a,0x306a000a,0x306d000a,0x3070000a,0x3073000a,0x3076000a,0x3079000a,0x307c000a,0x307f000a,0x3083000a,0x3087000a,0x308b000a,0x3090000a, +0x3095000a,0x309a000a,0x309f000a,0x30a4000a,0x30a9000a,0x30ad000a,0x30b1000a,0x30b5000a,0x30b9000a,0x30bd000a,0x30c1000a,0x30c4000a,0x30c7000a,0x30ca000a,0x30cd000a,0x30d0000a, +0x30d3000a,0x30d6000a,0x30d9000a,0x30dc000a,0x30df000a,0x30e2000a,0x30e5000a,0x30e8000a,0x30eb000a,0x30ee000a,0x30f1000a,0x30f4000a,0x30f7000a,0x30fa000a,0x30fd000a,0x3100000a, +0x3103000a,0x3106000a,0x3109000a,0x310c000a,0x310f000a,0x3112000a,0x3115000a,0x3118000a,0x311b000a,0x311e000a,0x3121000a,0x3124000a,0x3127000a,0x312a000a,0x312d000a,0x3130000a, +0x3133000a,0x3137000a,0x313a000a,0x313d000a,0x3140000a,0x3143000a,0x3146000a,0x3149000a,0x314d000a,0x3151000a,0x3155000a,0x3159000a,0x315d000a,0x3160000a,0x3163000a,0x3166000a, +0x3169000a,0x316c000a,0x316f000a,0x3172000a,0x3175000a,0x3178000a,0x317b000a,0x317e000a,0x3181000a,0x3184000a,0x3187000a,0x318a000a,0x318d000a,0x3190000a,0x3193000a,0x3196000a, +0x3199000a,0x319c000a,0x319f000a,0x31a2000a,0x31a5000a,0x31a8000a,0x31ab000a,0x31ae000a,0x31b1000a,0x31b4000a,0x31b7000a,0x31ba000a,0x31bd000a,0x31c0000a,0x31c3000a,0x31c6000a, +0x31c9000a,0x31cc000a,0x31cf000a,0x31d2000a,0x31d5000a,0x31d8000a,0x31db000a,0x31de000a,0x31e1000a,0x31e4000a,0x31e7000a,0x31ea000a,0x31ed000a,0x31f0000a,0x31f3000a,0x31f6000a, +0x31f9000a,0x31fc000a,0x31ff000a,0x3202000a,0x3205000a,0x3208000a,0x320b000a,0x320e000a,0x3211000a,0x3214000a,0x3218000a,0x321b000a,0x321e000a,0x3221000a,0x3224000a,0x3227000a, +0x322b000a,0x322f000a,0x3232000a,0x3235000a,0x3238000a,0x323b000a,0x323e000a,0x3241000a,0x3244000a,0x3247000a,0x324a000a,0x324d000a,0x3250000a,0x3253000a,0x3256000a,0x3259000a, +0x325c000a,0x325f000a,0x3262000a,0x3267000a,0x326c000a,0x3271000a,0x3274000a,0x3277000a,0x327a000a,0x327d000a,0x3280000a,0x3283000a,0x3286000a,0x3289000a,0x328c000a,0x328f000a, +0x3292000a,0x3295000a,0x3298000a,0x329b000a,0x329e000a,0x32a1000a,0x32a4000a,0x32a7000a,0x32aa000a,0x32ad000a,0x32b0000a,0x32b3000a,0x32b6000a,0x32b9000a,0x32bc000a,0x32bf000a, +0x32c2000a,0x32c5000a,0x32c8000a,0x32cb000a,0x32ce000a,0x32d1000a,0x32d4000a,0x32d7000a,0x32da000a,0x32dd000a,0x32e0000a,0x32e3000a,0x32e6000a,0x32e9000a,0x32ec000a,0x32ef000a, +0x32f2000a,0x32f5000a,0x32f8000a,0x32fb000a,0x32fe000a,0x3301000a,0x3304000a,0x3307000a,0x330a000a,0x330d000a,0x3310000a,0x3313000a,0x3316000a,0x3319000a,0x331c000a,0x331f000a, +0x3322000a,0x3325000a,0x3328000a,0x332b000a,0x332e000a,0x3331000a,0x3334000a,0x3337000a,0x333a000a,0x333d000a,0x3340000a,0x3343000a,0x3346000a,0x334a000a,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x334e000a,0x3352000a,0x3356000a,0x335a000a,0x335e000a,0x3362000a,0x3366000a,0x336a000a,0x336e000a,0x3372000a,0x3376000a,0x337a000a,0x337e000a,0x3382000a,0x3386000a,0x338a000a, +0x338e000a,0x3392000a,0x3396000a,0x339a000a,0x339e000a,0x33a2000a,0x33a6000a,0x33aa000a,0x33ae000a,0x33b2000a,0x33b6000a,0x33ba000a,0x33be000a,0x33c2000a,0x33c6000a,0x33ca000a, +0x33ce000a,0x33d2000a,0x33d6000a,0x33da000a,0x33de000a,0x33e2000a,0x33e6000a,0x33ea000a,0x33ee000a,0x33f2000a,0x33f6000a,0x33fa000a,0x33fe000a,0x3402000a,0x3406000a,0x340a000a, +0x340e000a,0x3412000a,0x3416000a,0x341a000a,0x341e000a,0x3422000a,0x3426000a,0x342a000a,0x342e000a,0x3432000a,0x3436000a,0x343a000a,0x343e000a,0x3442000a,0x3446000a,0x344a000a, +0,0,0x344e000a,0x3452000a,0x3456000a,0x345a000a,0x345e000a,0x3462000a,0x3466000a,0x346a000a,0x346e000a,0x3472000a,0x3476000a,0x347a000a,0x347e000a,0x3482000a, +0x3486000a,0x348a000a,0x348e000a,0x3492000a,0x3496000a,0x349a000a,0x349e000a,0x34a2000a,0x34a6000a,0x34aa000a,0x34ae000a,0x34b2000a,0x34b6000a,0x34ba000a,0x34be000a,0x34c2000a, +0x34c6000a,0x34ca000a,0x34ce000a,0x34d2000a,0x34d6000a,0x34da000a,0x34de000a,0x34e2000a,0x34e6000a,0x34ea000a,0x34ee000a,0x34f2000a,0x34f6000a,0x34fa000a,0x34fe000a,0x3502000a, +0x3506000a,0x350a000a,0x350e000a,0x3512000a,0x3516000a,0x351a000a,0x351e000a,0x3522000a,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x3526000a,0x352a000a,0x352e000a,0x3533000a,0x3538000a,0x353d000a,0x3542000a,0x3547000a,0x354c000a,0x3551000a,0x3555000a,0x3568000a,0x3571000a,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x3576000a,0x3578000a,0x357a000a,0x357c000a,0x357e000a,0x3580000a,0x3582000a,0x3584000a,0x3586000a,0x3588000a,0,0,0,0,0,0, +0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0, +0x358c000a,0x358f000a,0x3591000a,0x3593000a,0x3595000a,0x3597000a,0x3599000a,0x359b000a,0x359d000a,0x359f000a,0x35a1000a,0x35a3000a,0x35a5000a,0x35a7000a,0x35a9000a,0x35ab000a, +0x35ad000a,0x35af000a,0x35b1000a,0x35b3000a,0x35b5000a,0,0,0x35b7000a,0x35b9000a,0x35bb000a,0x35bf000a,0x35c3000a,0x35c7000a,0x35cb000a,0x35cd000a,0x35cf000a, +0x35d1000a,0x35d3000a,0x35d5000a,0,0x35d7000a,0x35d9000a,0x35db000a,0x35dd000a,0x35df000a,0x35e1000a,0x35e3000a,0x35e5000a,0x35e7000a,0x35e9000a,0x35eb000a,0x35ed000a, +0x35ef000a,0x35f1000a,0x35f3000a,0x35f5000a,0x35f7000a,0x35f9000a,0x35fb000a,0,0x35fd000a,0x35ff000a,0x3601000a,0x3603000a,0,0,0,0, +0x3605000a,0x3609000a,0x360d000a,0,0x3611000a,0,0x3615000a,0x3619000a,0x361d000a,0x3621000a,0x3625000a,0x3629000a,0x362d000a,0x3631000a,0x3635000a,0x3639000a, +0x363d000a,0x363f000a,0x3643000a,0x3647000a,0x364b000a,0x364f000a,0x3653000a,0x3657000a,0x365b000a,0x365f000a,0x3663000a,0x3667000a,0x366b000a,0x366f000a,0x3671000a,0x3673000a, +0x3675000a,0x3677000a,0x3679000a,0x367b000a,0x367d000a,0x367f000a,0x3681000a,0x3683000a,0x3685000a,0x3687000a,0x3689000a,0x368b000a,0x368d000a,0x368f000a,0x3691000a,0x3693000a, +0x3695000a,0x3697000a,0x3699000a,0x369b000a,0x369d000a,0x369f000a,0x36a1000a,0x36a3000a,0x36a5000a,0x36a7000a,0x36a9000a,0x36ab000a,0x36ad000a,0x36af000a,0x36b1000a,0x36b3000a, +0x36b5000a,0x36b7000a,0x36b9000a,0x36bb000a,0x36bd000a,0x36bf000a,0x36c1000a,0x36c3000a,0x36c5000a,0x36c7000a,0x36c9000a,0x36cb000a,0x36cd000a,0x36cf000a,0x36d1000a,0x36d3000a, +0x36d5000a,0x36d7000a,0x36d9000a,0x36db000a,0x36dd000a,0x36df000a,0x36e1000a,0x36e3000a,0x36e5000a,0x36e7000a,0x36e9000a,0x36eb000a,0x36ed000a,0x36ef000a,0x36f1000a,0x36f3000a, +0x36f5000a,0x36f7000a,0x36f9000a,0x36fb000a,0x36fd000a,0x36ff000a,0x3701000a,0x3703000a,0x3705000a,0x3707000a,0x3709000a,0x370b000a,0x370d000a,0x370f000a,0x3711000a,0x3713000a, +0x3715000a,0x3717000a,0x3719000a,0x371b000a,0x371d000a,0x371f000a,0x3721000a,0x3723000a,0x3725000a,0x3727000a,0x3729000a,0x372b000a,0x372d000a,0x372f000a,0x3731000a,0x3733000a, +0x3735000a,0x3737000a,0x3739000a,0x373b000a,0x373d000a,0x373f000a,0x3744000a,0x3749000a,0x374e000a,0x3753000a,0x3758000a,0x375d000a,0x3760000a,0,0,0, +0,0x3763000a,0x3765000a,0x3767000a,0x3769000a,0x376b000a,0x376d000a,0x376f000a,0x3771000a,0x3773000a,0x3775000a,0x3777000a,0x3779000a,0x377b000a,0x377d000a,0x377f000a, +0x3781000a,0x3783000a,0x3785000a,0x3787000a,0x3789000a,0x378b000a,0x378d000a,0x378f000a,0x3791000a,0x3793000a,0x3795000a,0x3797000a,0x3799000a,0x379b000a,0x379d000a,0x379f000a, +0x37a1000a,0x37a3000a,0x37a5000a,0x37a7000a,0x37a9000a,0x37ab000a,0x37ad000a,0x37af000a,0x37b1000a,0x37b3000a,0x37b5000a,0x37b7000a,0x37b9000a,0x37bb000a,0x37bd000a,0x37bf000a, +0x37c1000a,0x37c3000a,0x37c5000a,0x37c7000a,0x37c9000a,0x37cb000a,0x37cd000a,0x37cf000a,0x37d1000a,0x37d3000a,0x37d5000a,0x37d7000a,0x37d9000a,0x37db000a,0x37dd000a,0x37df000a, +0x37e1000a,0x37e3000a,0x37e5000a,0x37e7000a,0x37e9000a,0x37eb000a,0x37ed000a,0x37ef000a,0x37f1000a,0x37f3000a,0x37f5000a,0x37f7000a,0x37f9000a,0x37fb000a,0x37fd000a,0x37ff000a, +0x3801000a,0x3803000a,0x3805000a,0x3807000a,0x3809000a,0x380b000a,0x380d000a,0x380f000a,0x3811000a,0x3813000a,0x3815000a,0x3817000a,0x3819000a,0x381b000a,0x381d000a,0x381f000a, +0x3821000a,0x3823000a,0x3825000a,0x3827000a,0x3829000a,0x382b000a,0x382d000a,0x382f000a,0x3831000a,0x3833000a,0x3835000a,0x3837000a,0x3839000a,0x383b000a,0x383d000a,0x383f000a, +0x3841000a,0x3843000a,0x3845000a,0x3847000a,0x3849000a,0x384b000a,0x384d000a,0x384f000a,0x3851000a,0x3853000a,0x3855000a,0x3857000a,0x3859000a,0x385b000a,0x385d000a,0x385f000a, +0x3861000a,0x3863000a,0x3865000a,0x3867000a,0x3869000a,0x386b000a,0x386d000a,0x386f000a,0x3871000a,0x3873000a,0x3875000a,0x3877000a,0x3879000a,0x387b000a,0x387d000a,0x387f000a, +0x3881000a,0x3883000a,0x3885000a,0x3887000a,0x3889000a,0x388b000a,0x388d000a,0x388f000a,0x3891000a,0x3893000a,0x3895000a,0x3897000a,0x3899000a,0x389b000a,0x389d000a,0x38a0000a, +0x38a3000a,0x38a5000a,0x38a7000a,0x38a9000a,0x38ab000a,0x38ad000a,0x38af000a,0x38b1000a,0x38b3000a,0x38b5000a,0x38b7000a,0x38b9000a,0x38bb000a,0x38bd000a,0x38bf000a,0x38c1000a, +0x38c3000a,0x38c5000a,0x38c7000a,0x38c9000a,0x38cb000a,0x38cd000a,0x38cf000a,0x38d1000a,0x38d3000a,0x38d5000a,0x38d7000a,0x38d9000a,0x38db000a,0x38dd000a,0x38df000a,0, +0,0,0x38e1000a,0x38e3000a,0x38e5000a,0x38e7000a,0x38e9000a,0x38eb000a,0,0,0x38ed000a,0x38ef000a,0x38f1000a,0x38f3000a,0x38f5000a,0x38f7000a, +0,0,0x38f9000a,0x38fb000a,0x38fd000a,0x38ff000a,0x3901000a,0x3903000a,0,0,0x3905000a,0x3907000a,0x3909000a,0,0,0, +0x390b000a,0x390d000a,0x390f000a,0x3911000a,0x3915000a,0x3917000a,0x3919000a,0,0x391b000a,0x391d000a,0x391f000a,0x3921000a,0x3923000a,0x3925000a,0x3927000a,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xdc00,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xdc00,0,0xe600, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xe600,0x100,0xdc00,0,0,0,0,0x900, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb27000f,0xb2d000f, +0xb33000f,0xb3b000f,0xb43000f,0xb4b000f,0xb53000f,0xd800,0xd800,0x100,0x100,0x100,0,0,0,0xe200,0xd800,0xd800, +0xd800,0xd800,0xd800,0,0,0,0,0,0,0,0,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00, +0xdc00,0xdc00,0xdc00,0,0,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xdc00,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb27000f,0xb2d000f,0xb33000f,0xb3b000f,0xb43000f,0xb4b000f,0xb53000f,0xd800,0xd800,0x100, -0x100,0x100,0,0,0,0xe200,0xd800,0xd800,0xd800,0xd800,0xd800,0,0,0,0,0, -0,0,0,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00,0,0,0,0,0,0,0,0, 0,0,0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0, 0,0,0,0xb5b000f,0xb61000f,0xb67000f,0xb6f000f,0xb77000f,0xb7f000f,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb87000f,0xb89000f,0xb8b000f,0xb8d000f,0xb90000f,0xb92000f,0xb94000f,0xb96000f, +0,0,0,0,0,0,0,0,0,0,0xe600,0xe600,0xe600,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x287000a,0x289000a,0x28b000a,0x28d000a,0x28f000a,0x291000a,0x293000a,0x295000a, +0x297000a,0x299000a,0x29b000a,0x29d000a,0x29f000a,0x2a1000a,0x2a3000a,0x2a5000a,0x2a7000a,0x2a9000a,0x2ab000a,0x2ad000a,0x2af000a,0x2b1000a,0x2b3000a,0x2b5000a, +0x2b7000a,0x2b9000a,0x3929000a,0x392b000a,0x392d000a,0x392f000a,0x3931000a,0x3933000a,0x3935000a,0x3937000a,0x3939000a,0x393b000a,0x393d000a,0x393f000a,0x3941000a,0x3943000a, +0x3945000a,0x3947000a,0x3949000a,0x394b000a,0x394d000a,0x394f000a,0x3951000a,0x3953000a,0x3955000a,0x3957000a,0x3959000a,0x395b000a,0x2bb000a,0x2bd000a,0x2bf000a,0x2c1000a, +0x2c3000a,0x2c5000a,0x2c7000a,0x2c9000a,0x2cb000a,0x2cd000a,0x2cf000a,0x2d1000a,0x2d3000a,0x2d5000a,0x2d7000a,0x2d9000a,0x2db000a,0x2dd000a,0x2df000a,0x2e1000a, +0x2e3000a,0x2e5000a,0x2e7000a,0x2e9000a,0x2eb000a,0x2ed000a,0x395d000a,0x395f000a,0x3961000a,0x3963000a,0x3965000a,0x3967000a,0x3969000a,0,0x396b000a,0x396d000a, +0x396f000a,0x3971000a,0x3973000a,0x3975000a,0x3977000a,0x3979000a,0x397b000a,0x397d000a,0x397f000a,0x3981000a,0x3983000a,0x3985000a,0x3987000a,0x3989000a,0x398b000a,0x398d000a, +0x2ef000a,0x2f1000a,0x2f3000a,0x2f5000a,0x2f7000a,0x2f9000a,0x2fb000a,0x2fd000a,0x2ff000a,0x301000a,0x303000a,0x305000a,0x307000a,0x309000a,0x30b000a,0x30d000a, +0x30f000a,0x311000a,0x313000a,0x315000a,0x317000a,0x319000a,0x31b000a,0x31d000a,0x31f000a,0x321000a,0x398f000a,0x3991000a,0x3993000a,0x3995000a,0x3997000a,0x3999000a, +0x399b000a,0x399d000a,0x399f000a,0x39a1000a,0x39a3000a,0x39a5000a,0x39a7000a,0x39a9000a,0x39ab000a,0x39ad000a,0x39af000a,0x39b1000a,0x39b3000a,0x39b5000a,0x39b7000a,0x39b9000a, +0x39bb000a,0x39bd000a,0x39bf000a,0x39c1000a,0x323000a,0,0x325000a,0x327000a,0,0,0x329000a,0,0,0x32b000a,0x32d000a,0, +0,0x32f000a,0x331000a,0x333000a,0x335000a,0,0x337000a,0x339000a,0x33b000a,0x33d000a,0x33f000a,0x341000a,0x343000a,0x345000a,0x39c3000a,0x39c5000a, +0x39c7000a,0x39c9000a,0,0x39cb000a,0,0x39cd000a,0x39cf000a,0x39d1000a,0x39d3000a,0x39d5000a,0x39d7000a,0x39d9000a,0,0x39db000a,0x39dd000a,0x39df000a, +0x39e1000a,0x39e3000a,0x39e5000a,0x39e7000a,0x39e9000a,0x39eb000a,0x39ed000a,0x39ef000a,0x347000a,0x349000a,0x34b000a,0x34d000a,0x34f000a,0x351000a,0x353000a,0x355000a, +0x357000a,0x359000a,0x35b000a,0x35d000a,0x35f000a,0x361000a,0x363000a,0x365000a,0x367000a,0x369000a,0x36b000a,0x36d000a,0x36f000a,0x371000a,0x373000a,0x375000a, +0x377000a,0x379000a,0x39f1000a,0x39f3000a,0x39f5000a,0x39f7000a,0x39f9000a,0x39fb000a,0x39fd000a,0x39ff000a,0x3a01000a,0x3a03000a,0x3a05000a,0x3a07000a,0x3a09000a,0x3a0b000a, +0x3a0d000a,0x3a0f000a,0x3a11000a,0x3a13000a,0x3a15000a,0x3a17000a,0x3a19000a,0x3a1b000a,0x3a1d000a,0x3a1f000a,0x3a21000a,0x3a23000a,0x37b000a,0x37d000a,0,0x37f000a, +0x381000a,0x383000a,0x385000a,0,0,0x387000a,0x389000a,0x38b000a,0x38d000a,0x38f000a,0x391000a,0x393000a,0x395000a,0,0x397000a,0x399000a, +0x39b000a,0x39d000a,0x39f000a,0x3a1000a,0x3a3000a,0,0x3a25000a,0x3a27000a,0x3a29000a,0x3a2b000a,0x3a2d000a,0x3a2f000a,0x3a31000a,0x3a33000a,0x3a35000a,0x3a37000a, +0x3a39000a,0x3a3b000a,0x3a3d000a,0x3a3f000a,0x3a41000a,0x3a43000a,0x3a45000a,0x3a47000a,0x3a49000a,0x3a4b000a,0x3a4d000a,0x3a4f000a,0x3a51000a,0x3a53000a,0x3a55000a,0x3a57000a, +0x3a5000a,0x3a7000a,0,0x3a9000a,0x3ab000a,0x3ad000a,0x3af000a,0,0x3b1000a,0x3b3000a,0x3b5000a,0x3b7000a,0x3b9000a,0,0x3bb000a,0, +0,0,0x3bd000a,0x3bf000a,0x3c1000a,0x3c3000a,0x3c5000a,0x3c7000a,0x3c9000a,0,0x3a59000a,0x3a5b000a,0x3a5d000a,0x3a5f000a,0x3a61000a,0x3a63000a, +0x3a65000a,0x3a67000a,0x3a69000a,0x3a6b000a,0x3a6d000a,0x3a6f000a,0x3a71000a,0x3a73000a,0x3a75000a,0x3a77000a,0x3a79000a,0x3a7b000a,0x3a7d000a,0x3a7f000a,0x3a81000a,0x3a83000a, +0x3a85000a,0x3a87000a,0x3a89000a,0x3a8b000a,0x3cb000a,0x3cd000a,0x3cf000a,0x3d1000a,0x3d3000a,0x3d5000a,0x3d7000a,0x3d9000a,0x3db000a,0x3dd000a,0x3df000a,0x3e1000a, +0x3e3000a,0x3e5000a,0x3e7000a,0x3e9000a,0x3eb000a,0x3ed000a,0x3ef000a,0x3f1000a,0x3f3000a,0x3f5000a,0x3f7000a,0x3f9000a,0x3fb000a,0x3fd000a,0x3a8d000a,0x3a8f000a, +0x3a91000a,0x3a93000a,0x3a95000a,0x3a97000a,0x3a99000a,0x3a9b000a,0x3a9d000a,0x3a9f000a,0x3aa1000a,0x3aa3000a,0x3aa5000a,0x3aa7000a,0x3aa9000a,0x3aab000a,0x3aad000a,0x3aaf000a, +0x3ab1000a,0x3ab3000a,0x3ab5000a,0x3ab7000a,0x3ab9000a,0x3abb000a,0x3abd000a,0x3abf000a,0x3ff000a,0x401000a,0x403000a,0x405000a,0x407000a,0x409000a,0x40b000a,0x40d000a, +0x40f000a,0x411000a,0x413000a,0x415000a,0x417000a,0x419000a,0x41b000a,0x41d000a,0x41f000a,0x421000a,0x423000a,0x425000a,0x427000a,0x429000a,0x42b000a,0x42d000a, +0x42f000a,0x431000a,0x3ac1000a,0x3ac3000a,0x3ac5000a,0x3ac7000a,0x3ac9000a,0x3acb000a,0x3acd000a,0x3acf000a,0x3ad1000a,0x3ad3000a,0x3ad5000a,0x3ad7000a,0x3ad9000a,0x3adb000a, +0x3add000a,0x3adf000a,0x3ae1000a,0x3ae3000a,0x3ae5000a,0x3ae7000a,0x3ae9000a,0x3aeb000a,0x3aed000a,0x3aef000a,0x3af1000a,0x3af3000a,0x433000a,0x435000a,0x437000a,0x439000a, +0x43b000a,0x43d000a,0x43f000a,0x441000a,0x443000a,0x445000a,0x447000a,0x449000a,0x44b000a,0x44d000a,0x44f000a,0x451000a,0x453000a,0x455000a,0x457000a,0x459000a, +0x45b000a,0x45d000a,0x45f000a,0x461000a,0x463000a,0x465000a,0x3af5000a,0x3af7000a,0x3af9000a,0x3afb000a,0x3afd000a,0x3aff000a,0x3b01000a,0x3b03000a,0x3b05000a,0x3b07000a, +0x3b09000a,0x3b0b000a,0x3b0d000a,0x3b0f000a,0x3b11000a,0x3b13000a,0x3b15000a,0x3b17000a,0x3b19000a,0x3b1b000a,0x3b1d000a,0x3b1f000a,0x3b21000a,0x3b23000a,0x3b25000a,0x3b27000a, +0x467000a,0x469000a,0x46b000a,0x46d000a,0x46f000a,0x471000a,0x473000a,0x475000a,0x477000a,0x479000a,0x47b000a,0x47d000a,0x47f000a,0x481000a,0x483000a,0x485000a, +0x487000a,0x489000a,0x48b000a,0x48d000a,0x48f000a,0x491000a,0x493000a,0x495000a,0x497000a,0x499000a,0x3b29000a,0x3b2b000a,0x3b2d000a,0x3b2f000a,0x3b31000a,0x3b33000a, +0x3b35000a,0x3b37000a,0x3b39000a,0x3b3b000a,0x3b3d000a,0x3b3f000a,0x3b41000a,0x3b43000a,0x3b45000a,0x3b47000a,0x3b49000a,0x3b4b000a,0x3b4d000a,0x3b4f000a,0x3b51000a,0x3b53000a, +0x3b55000a,0x3b57000a,0x3b59000a,0x3b5b000a,0x49b000a,0x49d000a,0x49f000a,0x4a1000a,0x4a3000a,0x4a5000a,0x4a7000a,0x4a9000a,0x4ab000a,0x4ad000a,0x4af000a,0x4b1000a, +0x4b3000a,0x4b5000a,0x4b7000a,0x4b9000a,0x4bb000a,0x4bd000a,0x4bf000a,0x4c1000a,0x4c3000a,0x4c5000a,0x4c7000a,0x4c9000a,0x4cb000a,0x4cd000a,0x3b5d000a,0x3b5f000a, +0x3b61000a,0x3b63000a,0x3b65000a,0x3b67000a,0x3b69000a,0x3b6b000a,0x3b6d000a,0x3b6f000a,0x3b71000a,0x3b73000a,0x3b75000a,0x3b77000a,0x3b79000a,0x3b7b000a,0x3b7d000a,0x3b7f000a, +0x3b81000a,0x3b83000a,0x3b85000a,0x3b87000a,0x3b89000a,0x3b8b000a,0x3b8d000a,0x3b8f000a,0x4cf000a,0x4d1000a,0x4d3000a,0x4d5000a,0x4d7000a,0x4d9000a,0x4db000a,0x4dd000a, +0x4df000a,0x4e1000a,0x4e3000a,0x4e5000a,0x4e7000a,0x4e9000a,0x4eb000a,0x4ed000a,0x4ef000a,0x4f1000a,0x4f3000a,0x4f5000a,0x4f7000a,0x4f9000a,0x4fb000a,0x4fd000a, +0x4ff000a,0x501000a,0x3b91000a,0x3b93000a,0x3b95000a,0x3b97000a,0x3b99000a,0x3b9b000a,0x3b9d000a,0x3b9f000a,0x3ba1000a,0x3ba3000a,0x3ba5000a,0x3ba7000a,0x3ba9000a,0x3bab000a, +0x3bad000a,0x3baf000a,0x3bb1000a,0x3bb3000a,0x3bb5000a,0x3bb7000a,0x3bb9000a,0x3bbb000a,0x3bbd000a,0x3bbf000a,0x3bc1000a,0x3bc3000a,0x3bc5000a,0x3bc7000a,0,0, +0x503000a,0x505000a,0x507000a,0x509000a,0x50b000a,0x50d000a,0x50f000a,0x511000a,0x513000a,0x515000a,0x517000a,0x519000a,0x51b000a,0x51d000a,0x51f000a,0x521000a, +0x523000a,0x525000a,0x527000a,0x529000a,0x52b000a,0x52d000a,0x52f000a,0x531000a,0x533000a,0x3bc9000a,0x3bcb000a,0x3bcd000a,0x3bcf000a,0x3bd1000a,0x3bd3000a,0x3bd5000a, +0x3bd7000a,0x3bd9000a,0x3bdb000a,0x3bdd000a,0x3bdf000a,0x3be1000a,0x3be3000a,0x3be5000a,0x3be7000a,0x3be9000a,0x3beb000a,0x535000a,0x3bed000a,0x3bef000a,0x3bf1000a,0x3bf3000a, +0x3bf5000a,0x3bf7000a,0x3bf9000a,0x3bfb000a,0x3bfd000a,0x3bff000a,0x3c01000a,0x3c03000a,0x3c05000a,0x3c07000a,0x537000a,0x539000a,0x53b000a,0x53d000a,0x53f000a,0x541000a, +0x543000a,0x545000a,0x547000a,0x549000a,0x54b000a,0x54d000a,0x54f000a,0x551000a,0x553000a,0x555000a,0x557000a,0x559000a,0x55b000a,0x55d000a,0x55f000a,0x561000a, +0x563000a,0x565000a,0x567000a,0x3c09000a,0x3c0b000a,0x3c0d000a,0x3c0f000a,0x3c11000a,0x3c13000a,0x3c15000a,0x3c17000a,0x3c19000a,0x3c1b000a,0x3c1d000a,0x3c1f000a,0x3c21000a, +0x3c23000a,0x3c25000a,0x3c27000a,0x3c29000a,0x3c2b000a,0x569000a,0x3c2d000a,0x3c2f000a,0x3c31000a,0x3c33000a,0x3c35000a,0x3c37000a,0x3c39000a,0x3c3b000a,0x3c3d000a,0x3c3f000a, +0x3c41000a,0x3c43000a,0x3c45000a,0x3c47000a,0x56b000a,0x56d000a,0x56f000a,0x571000a,0x573000a,0x575000a,0x577000a,0x579000a,0x57b000a,0x57d000a,0x57f000a,0x581000a, +0x583000a,0x585000a,0x587000a,0x589000a,0x58b000a,0x58d000a,0x58f000a,0x591000a,0x593000a,0x595000a,0x597000a,0x599000a,0x59b000a,0x3c49000a,0x3c4b000a,0x3c4d000a, +0x3c4f000a,0x3c51000a,0x3c53000a,0x3c55000a,0x3c57000a,0x3c59000a,0x3c5b000a,0x3c5d000a,0x3c5f000a,0x3c61000a,0x3c63000a,0x3c65000a,0x3c67000a,0x3c69000a,0x3c6b000a,0x59d000a, +0x3c6d000a,0x3c6f000a,0x3c71000a,0x3c73000a,0x3c75000a,0x3c77000a,0x3c79000a,0x3c7b000a,0x3c7d000a,0x3c7f000a,0x3c81000a,0x3c83000a,0x3c85000a,0x3c87000a,0x59f000a,0x5a1000a, +0x5a3000a,0x5a5000a,0x5a7000a,0x5a9000a,0x5ab000a,0x5ad000a,0x5af000a,0x5b1000a,0x5b3000a,0x5b5000a,0x5b7000a,0x5b9000a,0x5bb000a,0x5bd000a,0x5bf000a,0x5c1000a, +0x5c3000a,0x5c5000a,0x5c7000a,0x5c9000a,0x5cb000a,0x5cd000a,0x5cf000a,0x3c89000a,0x3c8b000a,0x3c8d000a,0x3c8f000a,0x3c91000a,0x3c93000a,0x3c95000a,0x3c97000a,0x3c99000a, +0x3c9b000a,0x3c9d000a,0x3c9f000a,0x3ca1000a,0x3ca3000a,0x3ca5000a,0x3ca7000a,0x3ca9000a,0x3cab000a,0x5d1000a,0x3cad000a,0x3caf000a,0x3cb1000a,0x3cb3000a,0x3cb5000a,0x3cb7000a, +0x3cb9000a,0x3cbb000a,0x3cbd000a,0x3cbf000a,0x3cc1000a,0x3cc3000a,0x3cc5000a,0x3cc7000a,0x5d3000a,0x5d5000a,0x5d7000a,0x5d9000a,0x5db000a,0x5dd000a,0x5df000a,0x5e1000a, +0x5e3000a,0x5e5000a,0x5e7000a,0x5e9000a,0x5eb000a,0x5ed000a,0x5ef000a,0x5f1000a,0x5f3000a,0x5f5000a,0x5f7000a,0x5f9000a,0x5fb000a,0x5fd000a,0x5ff000a,0x601000a, +0x603000a,0x3cc9000a,0x3ccb000a,0x3ccd000a,0x3ccf000a,0x3cd1000a,0x3cd3000a,0x3cd5000a,0x3cd7000a,0x3cd9000a,0x3cdb000a,0x3cdd000a,0x3cdf000a,0x3ce1000a,0x3ce3000a,0x3ce5000a, +0x3ce7000a,0x3ce9000a,0x3ceb000a,0x605000a,0x3ced000a,0x3cef000a,0x3cf1000a,0x3cf3000a,0x3cf5000a,0x3cf7000a,0x3cf9000a,0x3cfb000a,0x3cfd000a,0x3cff000a,0x3d01000a,0x3d03000a, +0x3d05000a,0x3d07000a,0x607000a,0x3d09000a,0,0,0x3d0b000a,0x3d0d000a,0x3d0f000a,0x3d11000a,0x3d13000a,0x3d15000a,0x3d17000a,0x3d19000a,0x3d1b000a,0x3d1d000a, +0x3d1f000a,0x3d21000a,0x3d23000a,0x3d25000a,0x3d27000a,0x3d29000a,0x3d2b000a,0x3d2d000a,0x3d2f000a,0x3d31000a,0x3d33000a,0x3d35000a,0x3d37000a,0x3d39000a,0x3d3b000a,0x3d3d000a, +0x3d3f000a,0x3d41000a,0x3d43000a,0x3d45000a,0x3d47000a,0x3d49000a,0x3d4b000a,0x3d4d000a,0x3d4f000a,0x3d51000a,0x3d53000a,0x3d55000a,0x3d57000a,0x3d59000a,0x3d5b000a,0x3d5d000a, +0x3d5f000a,0x3d61000a,0x3d63000a,0x3d65000a,0x3d67000a,0x3d69000a,0x3d6b000a,0x3d6d000a,0xb87000f,0xb89000f,0xb8b000f,0xb8d000f,0xb90000f,0xb92000f,0xb94000f,0xb96000f, 0xb98000f,0xb9a000f,0xb9c000f,0xb9e000f,0xba0000f,0xba2000f,0xba5000f,0xba7000f,0xba9000f,0xbab000f,0xbad000f,0xbb0000f,0xbb2000f,0xbb4000f,0xbb6000f,0xbb9000f, 0xbbb000f,0xbbd000f,0xbbf000f,0xbc1000f,0xbc3000f,0xbc6000f,0xbc8000f,0xbca000f,0xbcc000f,0xbce000f,0xbd0000f,0xbd2000f,0xbd4000f,0xbd6000f,0xbd8000f,0xbda000f, 0xbdc000f,0xbde000f,0xbe0000f,0xbe2000f,0xbe4000f,0xbe6000f,0xbe8000f,0xbea000f,0xbec000f,0xbee000f,0xbf0000f,0xbf2000f,0xbf4000f,0xbf7000f,0xbf9000f,0xbfb000f, @@ -367,406 +772,25 @@ static const uint32_t normTrie_data32[9548]={ 0xfb3000f,0xfb5000f,0xfb7000f,0xfb9000f,0xfbb000f,0xfbd000f,0xfc0000f,0xfc2000f,0xfc4000f,0xfc6000f,0xfc9000f,0xfcb000f,0xfcd000f,0xfcf000f,0xfd1000f,0xfd4000f, 0xfd7000f,0xfd9000f,0xfdb000f,0xfdd000f,0xfe0000f,0xfe2000f,0xfe5000f,0xfe7000f,0xfe9000f,0xfeb000f,0xfee000f,0xff0000f,0xff2000f,0xff4000f,0xff6000f,0xff8000f, 0xffa000f,0xffc000f,0xfff000f,0x1001000f,0x1003000f,0x1005000f,0x1007000f,0x1009000f,0x100b000f,0x100e000f,0x1010000f,0x1013000f,0x1016000f,0x1019000f,0x101b000f,0x101d000f, -0x101f000f,0x1021000f,0x1023000f,0x1025000f,0x1027000f,0x1029000f,0,0,0x102c000c,0x1030000c,0x1035004c,0x1039000c,0x103e004c,0x1043004c,0x3d960040,0x1048004c, -0x104c000c,0x1050000c,0x1055004c,0x1059000c,0x105d000c,0x1061000c,0x1065000c,0x106a004c,0,0x106e000c,0x1072000c,0x1076000c,0x107b004c,0x1080004c,0x1085004c,0, -0x3d9a0040,0x1089000c,0x108d000c,0x1091000c,0x1096004c,0x109a000c,0,0,0x109e000c,0x10a2000c,0x10a7004c,0x10ab000c,0x10b0004c,0x10b5004c,0x3d970040,0x10ba004c, -0x10be000c,0x10c2000c,0x10c7004c,0x10cb000c,0x10cf000c,0x10d3000c,0x10d7000c,0x10dc004c,0,0x10e0000c,0x10e4000c,0x10e8000c,0x10ed004c,0x10f2004c,0x10f7004c,0, -0x3d9b0040,0x10fb000c,0x10ff000c,0x1103000c,0x1108004c,0x110c000c,0,0x1110000c,0x1114000c,0x1118000c,0x111d004c,0x1122004c,0x1126000c,0x112a000c,0x112e000c,0x1132000c, -0x1136000c,0x113a000c,0x113e000c,0x1142000c,0x1146000c,0x114a000c,0x114e000c,0x1152000c,0,0,0x1157004c,0x115c004c,0x1160000c,0x1164000c,0x1168000c,0x116c000c, -0x1170000c,0x1174000c,0x1178000c,0x117c000c,0x1180000c,0x1184000c,0x1188000c,0x118c000c,0x1190000c,0x1194000c,0x1198000c,0x119c000c,0x11a0000c,0x11a4000c,0,0, -0x11a8000c,0x11ac000c,0x11b0000c,0x11b4000c,0x11b8000c,0x11bc000c,0x11c0000c,0x11c4000c,0x11c8000c,0,0x20b3000a,0x20b6000a,0x11cc000c,0x11d0000c,0x11d4000c,0x11d8000c, -0,0x11dc000c,0x11e0000c,0x11e4000c,0x11e8000c,0x11ec000c,0x11f0000c,0x20b9000a,0x20bc000a,0,0,0x11f4000c,0x11f8000c,0x11fc000c,0x1200000c,0x1204000c, -0x1208000c,0x20bf000a,0,0,0x120d004c,0x1212004c,0x1216000c,0x121a000c,0x121e000c,0x1222000c,0,0,0x1226000c,0x122a000c,0x122e000c,0x1232000c, -0x1236000c,0x123a000c,0x123f004c,0x1244004c,0x1248000c,0x124c000c,0x1250000c,0x1254000c,0x1259004c,0x125e004c,0x1262000c,0x1266000c,0x126a000c,0x126e000c,0,0, -0x1273004c,0x1278004c,0x127d004c,0x1282004c,0x1286000c,0x128a000c,0x128e000c,0x1292000c,0x1296000c,0x129a000c,0x129e000c,0x12a2000c,0x12a6000c,0x12aa000c,0x12ae000c,0x12b2000c, -0x12b6000c,0x12ba000c,0x12be000c,0x12c2000c,0x12c6000c,0x12ca000c,0x12ce000c,0x20c3004a,0x12d3004c,0x12d8004c,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x12dd004c,0x12e2004c,0,0,0,0,0,0,0x3d980040, -0,0,0,0,0,0,0,0,0x20c5000a,0x20ca000a,0x20cf000a,0x20d4000a,0x20d7000a,0x20da000a,0x20dd000a,0x20e0000a, -0x20e3000a,0x12e6000c,0x12ea000c,0x12ee000c,0x12f2000c,0x12f6000c,0x12fa000c,0x12fe000c,0x1302000c,0x1306000c,0x130b000c,0x1310000c,0x1315000c,0x131a000c,0x131f000c,0x1324000c, -0x1329000c,0,0x132e000c,0x1333000c,0x1338000c,0x133d000c,0x1342000c,0x1346000c,0,0,0x134a000c,0x134e000c,0x1352000c,0x1356000c,0x135b004c,0x1360004c, -0x1364000c,0x1369000c,0x136e000c,0x1372000c,0x1376000c,0x20e6000a,0x20e9000a,0x20ec000a,0x137a000c,0x137e000c,0,0,0x1382000c,0x1386000c,0x138a000c,0x138f000c, -0x1394000c,0x1398000c,0x139c000c,0x13a0000c,0x13a4000c,0x13a8000c,0x13ac000c,0x13b0000c,0x13b4000c,0x13b8000c,0x13bc000c,0x13c0000c,0x13c4000c,0x13c8000c,0x13cc000c,0x13d0000c, -0x13d4000c,0x13d8000c,0x13dc000c,0x13e0000c,0x13e4000c,0x13e8000c,0x13ec000c,0x13f0000c,0x13f4000c,0x13f8000c,0x13fc000c,0x1400000c,0x1404000c,0x1408000c,0x140c000c,0x1410000c, -0,0,0x1414000c,0x1418000c,0,0,0,0,0,0,0x141d004c,0x1422004c,0x1427004c,0x142c004c,0x1430000c,0x1435000c, -0x143a000c,0x143f000c,0x1445004c,0x144a004c,0x144e000c,0x1453000c,0x1458000c,0x145c000c,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x3df70040,0,0,0,0x3da10040,0,0,0,0x3da20040,0x1489000c,0x148d000c, -0x1492004c,0x1496000c,0x149b004c,0x149f000c,0x14a3000c,0x3da30040,0,0,0,0x3da40040,0,0x3da50040,0,0x3da60040,0,0, -0,0,0,0x3da80040,0x14bf000c,0x14c3000c,0,0x14c7000c,0,0,0x3dac0040,0x14cb000c,0,0,0,0, -0x14cf000c,0x14d3000c,0x14d7000c,0,0x3dba0040,0,0,0x3dab0040,0,0x3daa0040,0x3db80040,0x3dbe0040,0x3dae0040,0x14db000c,0x3dad0040,0, -0,0,0x3dc00040,0,0,0,0,0x3daf0040,0,0,0,0x3dc60040,0,0,0,0x3dc80040, -0,0x3dc40040,0,0,0x3dbb0040,0,0,0x3db20040,0,0x3db10040,0x3db90040,0x3dbf0040,0x3db00040,0x14df000c,0x3db40040,0, -0,0,0x3dc10040,0,0,0,0,0x3db50040,0,0,0,0x3dc70040,0,0,0,0x3dc90040, -0,0x3dc50040,0,0,0x14e3000c,0x14e7000c,0,0x14eb000c,0,0,0x3db30040,0x14ef000c,0,0,0,0, -0x14f3000c,0x14f7000c,0x14fb000c,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x3db60040,0x3db70040,0x14ff000c,0x1503000c,0,0,0,0, -0,0,0,0,0,0x1507000c,0x150b000c,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x150f000c,0x1513000c,0x1517000c,0x151b000c,0,0,0x151f000c,0x1523000c,0x3dbc0040,0x3dbd0040,0x1527000c,0x152b000c, -0x152f000c,0x1533000c,0x1537000c,0x153b000c,0,0,0x153f000c,0x1543000c,0x1547000c,0x154b000c,0x154f000c,0x1553000c,0x3dc20040,0x3dc30040,0x1557000c,0x155b000c, -0x155f000c,0x1563000c,0x1567000c,0x156b000c,0x156f000c,0x1573000c,0x1577000c,0x157b000c,0x157f000c,0x1583000c,0,0,0x1587000c,0x158b000c,0,0, -0,0,0,0,0,0,0x158f000c,0x1593000c,0x1597000c,0x159b000c,0x159f000c,0x3dca0040,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x15a3000c,0x3dce0040,0x15a7000c,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x3dcf0040,0x15ab000c,0,0x3dcd0040,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0xe600,0,0,0xe600,0,0,0,0,0,0,0,0,0x3dd00040,0x15af000c,0,0, -0,0,0,0,0x3dd10040,0x15b3000c,0,0x3dd20040,0x15b7000c,0,0,0,0,0,0,0, -0x207407b0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x3dd50040,0,0x15ca000c,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x3dd60040,0x3dd70040,0,0,0x15cd000c,0x15d0000c,0x15d3000c,0x900,0,0, -0,0,0,0,0,0,0,0x207b00b0,0,0,0,0,0,0,0,0, -0,0,0x3dd80040,0,0x15d6000c,0,0,0,0,0x900,0,0,0,0,0,0, -0,0x5400,0x207c5bb0,0,0,0,0,0,0,0,0,0,0x15da000c,0,0x207d00b0,0, -0,0,0x3dda0040,0x15dd000c,0x15e0000c,0,0x15e4004c,0x15e7000c,0,0x900,0,0,0,0,0,0, -0,0x207e00b0,0x207f00b0,0,0,0,0,0,0,0,0,0,0,0,0x3ddb0040,0x3ddc0040, -0,0,0x15eb000c,0x15ee000c,0x15f1000c,0x900,0,0,0,0,0,0,0,0,0,0x208100b0, -0,0,0,0,0,0,0,0,0,0,0x208209b0,0,0,0,0,0x208300b0, -0,0,0,0,0,0,0,0,0,0x3ddd0040,0x15f4000c,0,0x15f9004c,0x15fc000c,0x1601000c,0x208400b0, -0,0,0,0,0,0x3dde0040,0x1604000c,0,0,0,0,0,0,0,0x208500b0,0, -0,0,0,0,0,0,0,0x700,0,0x900,0x900,0,0,0,0,0, -0,0x3ddf0040,0x1607000c,0x3de00040,0x160a000c,0x3de10040,0x160d000c,0x3de20040,0x1610000c,0x3de30040,0x1613000c,0,0,0x3de40040,0x1616000c,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x700,0x208600b0,0,0,0,0,0x3de50040,0x1619000c,0x3de60040,0x161c000c,0x3de70040,0x3de80040, -0x161f000c,0x1622000c,0x3de90040,0x1625000c,0x900,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1628000c,0x162c000c,0x1630000c,0x1634000c,0x1638000c,0x163c000c,0x1640000c,0x1644000c,0x1648000c,0x164d000c,0x1652000c,0x1656000c,0x165a000c,0x165e000c,0x1662000c,0x1666000c, -0x166a000c,0x166e000c,0x1672000c,0x1676000c,0x167a000c,0x167f000c,0x1684000c,0x1689000c,0x168e000c,0x1692000c,0x1696000c,0x169a000c,0x169e000c,0x16a3000c,0x16a8000c,0x16ac000c, -0x16b0000c,0x16b4000c,0x16b8000c,0x16bc000c,0x16c0000c,0x16c4000c,0x16c8000c,0x16cc000c,0x16d0000c,0x16d4000c,0x16d8000c,0x16dc000c,0x16e0000c,0x16e4000c,0x16e8000c,0x16ed000c, -0x16f2000c,0x16f6000c,0x16fa000c,0x16fe000c,0x1702000c,0x1706000c,0x170b004c,0x1710004c,0x1714000c,0x1719000c,0x171e000c,0x1722000c,0x1726000c,0x172a000c,0x172e000c,0x1732000c, -0x1736000c,0x173a000c,0x173e000c,0x1742000c,0x1746000c,0x174a000c,0x174e000c,0x1752000c,0x1756000c,0x175a000c,0x175e000c,0x1762000c,0x1766000c,0x176b000c,0x1770000c,0x1775000c, -0x177a000c,0x177f000c,0x1784000c,0x1789000c,0x178e000c,0x1792000c,0x1796000c,0x179a000c,0x179e000c,0x17a2000c,0x17a7004c,0x17ac004c,0x17b0000c,0x17b5000c,0x17ba000c,0x17be000c, -0x17c2000c,0x17c6000c,0x17cb004c,0x17d0004c,0x17d4000c,0x17d9000c,0x17de000c,0x17e3000c,0x17e8000c,0x17ed000c,0x17f2000c,0x17f6000c,0x17fa000c,0x17fe000c,0x1802000c,0x1806000c, -0x180a000c,0x180e000c,0x1812000c,0x1816000c,0x181a000c,0x181e000c,0x1822000c,0x1826000c,0x182a000c,0x182f000c,0x1834000c,0x1839000c,0x183e000c,0x1842000c,0x1846000c,0x184a000c, -0x184e000c,0x1852000c,0x1856000c,0x185a000c,0x185e000c,0x1862000c,0x1866000c,0x186a000c,0x186e000c,0x1872000c,0x1876000c,0x187a000c,0x187e000c,0x1882000c,0x1886000c,0x188a000c, -0x188e000c,0x1892000c,0x1896000c,0x189a000c,0x189e000c,0x18a2000c,0x18a6000c,0x18aa000c,0x18ae000c,0x18b2000c,0x21fa000a,0x18b6000e,0,0,0,0, -0x18be004c,0x18c3004c,0x18c7000c,0x18cb000c,0x18cf000c,0x18d4000c,0x18d9000c,0x18de000c,0x18e3000c,0x18e8000c,0x18ed000c,0x18f2000c,0x18f7000c,0x18fc000c,0x1901000c,0x1906000c, -0x190b000c,0x1910000c,0x1915000c,0x191a000c,0x191f000c,0x1924000c,0x1929000c,0x192e000c,0x1934004c,0x1939004c,0x193d000c,0x1941000c,0x1945000c,0x1949000c,0x194d000c,0x1952000c, -0x1957000c,0x195c000c,0x1961000c,0x1966000c,0x196b000c,0x1970000c,0x1975000c,0x197a000c,0x197f000c,0x1983000c,0x1987000c,0x198b000c,0x1990004c,0x1995004c,0x1999000c,0x199d000c, -0x19a1000c,0x19a6000c,0x19ab000c,0x19b0000c,0x19b5000c,0x19ba000c,0x19bf000c,0x19c4000c,0x19c9000c,0x19ce000c,0x19d3000c,0x19d8000c,0x19dd000c,0x19e2000c,0x19e7000c,0x19ec000c, -0x19f1000c,0x19f6000c,0x19fb000c,0x1a00000c,0x1a05000c,0x1a09000c,0x1a0d000c,0x1a11000c,0x1a15000c,0x1a1a000c,0x1a1f000c,0x1a24000c,0x1a29000c,0x1a2e000c,0x1a33000c,0x1a38000c, -0x1a3d000c,0x1a42000c,0x1a47000c,0x1a4b000c,0x1a4f000c,0x1a53000c,0x1a57000c,0x1a5b000c,0x1a5f000c,0x1a63000c,0,0,0,0,0,0, -0x1a68004c,0x1a6d004c,0x1a72004c,0x1a78004c,0x1a7e004c,0x1a84004c,0x1a8a004c,0x1a90004c,0x1a96004c,0x1a9b004c,0x1aa0004c,0x1aa6004c,0x1aac004c,0x1ab2004c,0x1ab8004c,0x1abe004c, -0x1ac4004c,0x1ac9004c,0x1acd000c,0x1ad2000c,0x1ad7000c,0x1adc000c,0,0,0x1ae2004c,0x1ae7004c,0x1aeb000c,0x1af0000c,0x1af5000c,0x1afa000c,0,0, -0x1b00004c,0x1b05004c,0x1b0a004c,0x1b10004c,0x1b16004c,0x1b1c004c,0x1b22004c,0x1b28004c,0x1b2e004c,0x1b33004c,0x1b38004c,0x1b3e004c,0x1b44004c,0x1b4a004c,0x1b50004c,0x1b56004c, -0x1b5c004c,0x1b61004c,0x1b65000c,0x1b6a000c,0x1b6f000c,0x1b74000c,0x1b79000c,0x1b7e000c,0x1b84004c,0x1b89004c,0x1b8d000c,0x1b92000c,0x1b97000c,0x1b9c000c,0x1ba1000c,0x1ba6000c, -0x1bac004c,0x1bb1004c,0x1bb5000c,0x1bba000c,0x1bbf000c,0x1bc4000c,0,0,0x1bca004c,0x1bcf004c,0x1bd3000c,0x1bd8000c,0x1bdd000c,0x1be2000c,0,0, -0x1be8004c,0x1bed004c,0x1bf1000c,0x1bf6000c,0x1bfb000c,0x1c00000c,0x1c05000c,0x1c0a000c,0,0x1c10004c,0,0x1c14000c,0,0x1c19000c,0,0x1c1e000c, -0x1c9e000c,0x1ca3000c,0x1ca8000c,0x1cae000c,0x1cb4000c,0x1cba000c,0x1cc0000c,0x1cc6000c,0x1ccc000c,0x1cd1000c,0x1cd6000c,0x1cdc000c,0x1ce2000c,0x1ce8000c,0x1cee000c,0x1cf4000c, -0x1cfa000c,0x1cff000c,0x1d04000c,0x1d0a000c,0x1d10000c,0x1d16000c,0x1d1c000c,0x1d22000c,0x1d28000c,0x1d2d000c,0x1d32000c,0x1d38000c,0x1d3e000c,0x1d44000c,0x1d4a000c,0x1d50000c, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x3df80040,0,0x3df90040,0,0x3dfa0040,0,0,0,0,0,0x1eba000c,0x1ebe000c,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x1ec2000c,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x1ec6000c,0x1eca000c,0x1ece000c, -0x3dfb0040,0,0x3dfd0040,0,0x3dfc0040,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x3dfe0040,0x1ed2000c,0,0,0,0x3dff0040,0x1ed6000c,0,0x3e000040,0x1eda000c,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x3e010040,0x1ede000c,0x3e020040,0x1ee2000c,0,0,0,0,0,0x235e000a,0x2361000a,0,0x2365000a, -0x2368000a,0,0,0,0,0,0,0,0,0,0,0,0x3e030040,0,0,0, -0,0x1ee6000c,0,0x3e040040,0x1eea000c,0x3e050040,0,0x1eee000c,0x3e060040,0x1ef2000c,0,0,0,0x3e090040,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1ef6000c,0x3e080040,0x1efa000c,0,0x3e0c0040,0x3e0d0040,0,0,0,0,0,0,0,0x1efe000c,0x1f02000c,0x1f06000c, -0x1f0a000c,0x1f0e000c,0x3e0e0040,0x3e0f0040,0x1f12000c,0x1f16000c,0x3e100040,0x3e110040,0x1f1a000c,0x1f1e000c,0x3e120040,0x3e130040,0x3e1c0040,0x3e1d0040,0,0, -0x1f22000c,0x1f26000c,0x3e140040,0x3e150040,0x1f2a000c,0x1f2e000c,0x3e160040,0x3e170040,0x1f32000c,0x1f36000c,0,0,0,0,0,0, -0,0x3e1e0040,0x3e1f0040,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x3e180040,0,0,0,0,0,0x3e190040,0x3e1a0040,0,0x3e1b0040,0x1f3a000c,0x1f3e000c,0x1f42000c,0x1f46000c, -0,0,0x3e200040,0x3e210040,0x3e220040,0x3e230040,0,0,0,0,0,0,0,0,0,0, -0x1f4a000c,0x1f4e000c,0x1f52000c,0x1f56000c,0,0,0,0,0,0,0x1f5a000c,0x1f5e000c,0x1f62000c,0x1f66000c,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x3e380040,0,0,0,0,0x3e240040,0x1f6a000c,0x3e250040,0x1f6e000c,0x3e260040,0x1f72000c,0x3e270040,0x1f76000c,0x3e280040, -0x1f7a000c,0x3e290040,0x1f7e000c,0x3e2a0040,0x1f82000c,0x3e2b0040,0x1f86000c,0x3e2c0040,0x1f8a000c,0x3e2d0040,0x1f8e000c,0x3e2e0040,0x1f92000c,0x3e2f0040,0x1f96000c,0, -0x3e300040,0x1f9a000c,0x3e310040,0x1f9e000c,0x3e320040,0x1fa2000c,0,0,0,0,0,0x3e330040,0x1fa6000c,0x1faa000c,0x3e340040,0x1fae000c, -0x1fb2000c,0x3e350040,0x1fb6000c,0x1fba000c,0x3e360040,0x1fbe000c,0x1fc2000c,0x3e370040,0x1fc6000c,0x1fca000c,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1fce000c,0,0,0,0,0x208708b0,0x208808b0,0x26e1000a,0x26e5000a,0x3e390040,0x1fd2000c,0x26e9000a,0,0,0,0, -0,0,0x3e4e0040,0,0,0,0,0x3e3a0040,0x1fd6000c,0x3e3b0040,0x1fda000c,0x3e3c0040,0x1fde000c,0x3e3d0040,0x1fe2000c,0x3e3e0040, -0x1fe6000c,0x3e3f0040,0x1fea000c,0x3e400040,0x1fee000c,0x3e410040,0x1ff2000c,0x3e420040,0x1ff6000c,0x3e430040,0x1ffa000c,0x3e440040,0x1ffe000c,0x3e450040,0x2002000c,0, -0x3e460040,0x2006000c,0x3e470040,0x200a000c,0x3e480040,0x200e000c,0,0,0,0,0,0x3e490040,0x2012000c,0x2016000c,0x3e4a0040,0x201a000c, -0x201e000c,0x3e4b0040,0x2022000c,0x2026000c,0x3e4c0040,0x202a000c,0x202e000c,0x3e4d0040,0x2032000c,0x2036000c,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x3e4f0040,0x3e500040,0x3e510040,0x3e520040,0, -0x203a000c,0,0,0x203e000c,0x2042000c,0x2046000c,0x204a000c,0,0,0x3e530040,0x204e000c,0x26ec000a,0x2053e6b0,0x2054e6b0,0x2055e6b0,0x2056e6b0, -0x2057e6b0,0xe600,0x2058e6b0,0x2059e6b0,0x205ae6b0,0x205be6b0,0x205ce6b0,0x205de6b0,0x205ee6b0,0xe600,0xe600,0x205fe6b0,0xe600,0x2060e6b0,0xe600,0x2061e6b0, -0x2062e6b0,0xe800,0xdc00,0xdc00,0xdc00,0xdc00,0xe800,0x2063d8b0,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00,0xca00,0xca00,0x2064dcb0, -0x2065dcb0,0x2066dcb0,0x2067dcb0,0x2068cab0,0x2069cab0,0xdc00,0xdc00,0xdc00,0xdc00,0x206adcb0,0x206bdcb0,0xdc00,0x206cdcb0,0x206ddcb0,0xdc00,0xdc00, -0x100,0x100,0x100,0x100,0x206e01b0,0xdc00,0xdc00,0xdc00,0xdc00,0xe600,0xe600,0xe600,0,0,0,0, -0,0,0,0,0x3dcb0040,0,0x3dcc0040,0x1b00,0x1c00,0x1d00,0x1e00,0x1f00,0x2000,0x2100,0x2200,0x2071e6b0, -0x2072e6b0,0x2073dcb0,0xdc00,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600,0xe600,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x700,0,0x207500b0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x700,0,0x207700b0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x207a00b0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x208000b0,0,0,0xfff200b0,0xfff200b0,0xfff200b0, -0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0,0xfff200b0, -0xfff200b0,0xfff200b0,0,0,0,0,0,0,0,0,0,0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0, -0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0, -0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0xfff300b0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x2088000a,0,0,0,0,0,0,0,0x208b004a,0,0x208f000a,0, -0,0,0,0x2091000a,0,0,0x2095000a,0x2097000a,0x2099000a,0x209d000a,0,0,0x209f000a,0x20a3000a,0x20a5000a,0, -0x20a7000a,0x20ab000a,0x20af000a,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x20ef000a,0x20f1000a,0x20f3000a,0x20f5000a,0x20f7000a,0x20f9000a,0x20fb000a,0x20fd000a,0x20ff000a,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2101000a,0x2105000a,0x2109000a,0x210d000a,0x2111000a,0x2115000a,0,0, -0x2119000a,0x211b000a,0x211d000a,0x211f000a,0x2121000a,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x2137000a,0,0,0,0,0,0,0,0,0,0xdc00,0xe600,0xe600, -0xe600,0xe600,0xdc00,0xe600,0xe600,0xe600,0xde00,0xdc00,0xe600,0xe600,0xe600,0xe600,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x2300,0,0,0, -0,0x213a000a,0x213d000a,0x2140000a,0x2143000a,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x2146000a,0,0,0,0, -0x6700,0x6700,0x900,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x2149000a,0,0,0,0,0x7600,0x7600,0,0, -0,0,0,0,0,0,0,0,0x7a00,0x7a00,0x7a00,0x7a00,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x214c000a,0x214f000a,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x2152000a,0,0,0, -0,0,0,0,0,0,0,0,0xdc00,0xdc00,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x215e000a,0,0,0,0x2198000a,0x219a000a,0x219c000a,0x219e000a, -0x21a0000a,0x21a2000a,0x21a4000a,0x21a6000a,0x21a8000a,0x21aa000a,0x21ac000a,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x21ae000a,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x21b0000a,0x21b2000a,0x21b4000a,0x21b6000a,0x21b8000a,0x21ba000a,0x21bc000a,0x21be000a,0x21c0000a,0x21c2000a,0x21c4000a,0x21c6000a,0x21c8000a, -0x21ca000a,0x21cc000a,0x21ce000a,0x21d0000a,0x21d2000a,0x21d4000a,0x21d6000a,0x21d8000a,0x21da000a,0x21dc000a,0x21de000a,0x21e0000a,0x21e2000a,0x21e4000a,0x21e6000a,0x21e8000a, -0x21ea000a,0x21ec000a,0x21ee000a,0x21f0000a,0x21f2000a,0x21f4000a,0x21f6000a,0x21f8000a,0,0,0,0,0x2227000a,0x2229000a,0x222c000a,0, -0,0,0,0,0,0,0,0x2230000a,0,0,0,0x2232000a,0x2235000a,0,0x2239000a,0x223c000a, -0,0,0,0,0x2240000a,0,0x2243000a,0,0,0,0,0,0,0,0,0x2247000a, -0x224a000a,0x224d000a,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2250000a, -0,0,0,0,0,0,0,0x2255000a,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2257000a,0x2259000a,0,0,0x225b000a,0x225d000a,0x225f000a,0x2261000a, -0x2263000a,0x2265000a,0x2267000a,0x2269000a,0x226b000a,0x226d000a,0x226f000a,0x2271000a,0x2273000a,0x2275000a,0x2277000a,0x2279000a,0x227b000a,0x227d000a,0x227f000a,0x2281000a, -0x2283000a,0x2285000a,0x2287000a,0x2289000a,0x228b000a,0x228d000a,0x228f000a,0,0x2291000a,0x2293000a,0x2295000a,0x2297000a,0x2299000a,0,0,0, -0,0,0,0,0,0,0,0,0x2302000a,0x2304000a,0x2307000a,0x230b000a,0x230e000a,0x2310000a,0x2313000a,0x2317000a, -0x231c000a,0x231f000a,0x2321000a,0x2324000a,0x2328000a,0x232a000a,0x232c000a,0x232e000a,0x2330000a,0x2332000a,0x2335000a,0x2339000a,0x233c000a,0x233e000a,0x2341000a,0x2345000a, -0x234a000a,0x234d000a,0x234f000a,0x2352000a,0x2356000a,0x2358000a,0x235a000a,0x235c000a,0x236c000a,0x236e000a,0x2370000a,0x2372000a,0x2374000a,0x2376000a,0x2378000a,0x237a000a, -0x237c000a,0x237e000a,0x2381000a,0x2384000a,0x2387000a,0x238a000a,0x238d000a,0x2390000a,0x2393000a,0x2396000a,0x2399000a,0x239c000a,0x239f000a,0x23a3000a,0x23a7000a,0x23ab000a, -0x23af000a,0x23b3000a,0x23b7000a,0x23bb000a,0x23bf000a,0x23c3000a,0x23c8000a,0x23cd000a,0x23d2000a,0x23d7000a,0x23dc000a,0x23e1000a,0x23e6000a,0x23eb000a,0x23f0000a,0x23f5000a, -0x23fa000a,0x23fd000a,0x2400000a,0x2403000a,0x2406000a,0x2409000a,0x240c000a,0x240f000a,0x2412000a,0x2415000a,0x2419000a,0x241d000a,0x2421000a,0x2425000a,0x2429000a,0x242d000a, -0x2431000a,0x2435000a,0x2439000a,0x243d000a,0x2441000a,0x2445000a,0x2449000a,0x244d000a,0x2451000a,0x2455000a,0x2459000a,0x245d000a,0x2461000a,0x2465000a,0x2469000a,0x246d000a, -0x2471000a,0x2475000a,0x2479000a,0x247d000a,0x2481000a,0x2485000a,0x2489000a,0x248d000a,0x2491000a,0x2495000a,0x2499000a,0x249d000a,0x24a1000a,0x24a5000a,0x24a9000a,0x24ab000a, -0x24ad000a,0x24af000a,0x24b1000a,0x24b3000a,0x24b5000a,0x24b7000a,0x24b9000a,0x24bb000a,0x24bd000a,0x24bf000a,0x24c1000a,0x24c3000a,0x24c5000a,0x24c7000a,0x24c9000a,0x24cb000a, -0x24cd000a,0x24cf000a,0x24d1000a,0x24d3000a,0x24d5000a,0x24d7000a,0x24d9000a,0x24db000a,0x24dd000a,0x24df000a,0x24e1000a,0x24e3000a,0x24e5000a,0x24e7000a,0x24e9000a,0x24eb000a, -0x24ed000a,0x24ef000a,0x24f1000a,0x24f3000a,0x24f5000a,0x24f7000a,0x24f9000a,0x24fb000a,0x24fd000a,0x24ff000a,0x2501000a,0x2503000a,0x2505000a,0x2507000a,0x2509000a,0x250b000a, -0x250d000a,0x250f000a,0x2511000a,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2513000a,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x2518000a,0x251c000a,0x251f000a,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x2525000a,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x2527000a,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x2529000a,0,0,0,0,0,0,0,0, -0,0,0,0,0x252b000a,0x252d000a,0x252f000a,0x2531000a,0x2533000a,0x2535000a,0x2537000a,0x2539000a,0x253b000a,0x253d000a,0x253f000a,0x2541000a, -0x2543000a,0x2545000a,0x2547000a,0x2549000a,0x254b000a,0x254d000a,0x254f000a,0x2551000a,0x2553000a,0x2555000a,0x2557000a,0x2559000a,0x255b000a,0x255d000a,0x255f000a,0x2561000a, -0x2563000a,0x2565000a,0x2567000a,0x2569000a,0x256b000a,0x256d000a,0x256f000a,0x2571000a,0x2573000a,0x2575000a,0x2577000a,0x2579000a,0x257b000a,0x257d000a,0x257f000a,0x2581000a, -0x2583000a,0x2585000a,0x2587000a,0x2589000a,0x258b000a,0x258d000a,0x258f000a,0x2591000a,0x2593000a,0x2595000a,0x2597000a,0x2599000a,0x259b000a,0x259d000a,0x259f000a,0x25a1000a, -0x25a3000a,0x25a5000a,0x25a7000a,0x25a9000a,0x25ab000a,0x25ad000a,0x25af000a,0x25b1000a,0x25b3000a,0x25b5000a,0x25b7000a,0x25b9000a,0x25bb000a,0x25bd000a,0x25bf000a,0x25c1000a, -0x25c3000a,0x25c5000a,0x25c7000a,0x25c9000a,0x25cb000a,0x25cd000a,0x25cf000a,0x25d1000a,0x25d3000a,0x25d5000a,0x25d7000a,0x25d9000a,0x25db000a,0x25dd000a,0x25df000a,0x25e1000a, -0x25e3000a,0x25e5000a,0x25e7000a,0x25e9000a,0x25eb000a,0x25ed000a,0x25ef000a,0x25f1000a,0x25f3000a,0x25f5000a,0x25f7000a,0x25f9000a,0x25fb000a,0x25fd000a,0x25ff000a,0x2601000a, -0x2603000a,0x2605000a,0x2607000a,0x2609000a,0x260b000a,0x260d000a,0x260f000a,0x2611000a,0x2613000a,0x2615000a,0x2617000a,0x2619000a,0x261b000a,0x261d000a,0x261f000a,0x2621000a, -0x2623000a,0x2625000a,0x2627000a,0x2629000a,0x262b000a,0x262d000a,0x262f000a,0x2631000a,0x2633000a,0x2635000a,0x2637000a,0x2639000a,0x263b000a,0x263d000a,0x263f000a,0x2641000a, -0x2643000a,0x2645000a,0x2647000a,0x2649000a,0x264b000a,0x264d000a,0x264f000a,0x2651000a,0x2653000a,0x2655000a,0x2657000a,0x2659000a,0x265b000a,0x265d000a,0x265f000a,0x2661000a, -0x2663000a,0x2665000a,0x2667000a,0x2669000a,0x266b000a,0x266d000a,0x266f000a,0x2671000a,0x2673000a,0x2675000a,0x2677000a,0x2679000a,0x267b000a,0x267d000a,0x267f000a,0x2681000a, -0x2683000a,0x2685000a,0x2687000a,0x2689000a,0x268b000a,0x268d000a,0x268f000a,0x2691000a,0x2693000a,0x2695000a,0x2697000a,0x2699000a,0x269b000a,0x269d000a,0x269f000a,0x26a1000a, -0x26a3000a,0x26a5000a,0x26a7000a,0x26a9000a,0x26ab000a,0x26ad000a,0x26af000a,0x26b1000a,0x26b3000a,0x26b5000a,0x26b7000a,0x26b9000a,0x26bb000a,0x26bd000a,0x26bf000a,0x26c1000a, -0x26c3000a,0x26c5000a,0x26c7000a,0x26c9000a,0x26cb000a,0x26cd000a,0x26cf000a,0x26d1000a,0x26d3000a,0x26d5000a,0,0,0,0,0,0, -0,0,0,0,0x26d7000a,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xda00,0xe400,0xe800,0xde00,0xe000,0xe000,0,0,0,0, -0,0,0x26d9000a,0,0x26db000a,0x26dd000a,0x26df000a,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x26ef000a,0x26f1000a,0x26f3000a,0x26f5000a,0x26f7000a,0x26f9000a,0x26fb000a, -0x26fd000a,0x26ff000a,0x2701000a,0x2703000a,0x2705000a,0x2707000a,0x2709000a,0x270b000a,0x270d000a,0x270f000a,0x2711000a,0x2713000a,0x2715000a,0x2717000a,0x2719000a,0x271b000a, -0x271d000a,0x271f000a,0x2721000a,0x2723000a,0x2725000a,0x2727000a,0x2729000a,0x272b000a,0x272d000a,0x272f000a,0x2731000a,0x2733000a,0x2735000a,0x2737000a,0x2739000a,0x273b000a, -0x273d000a,0x273f000a,0x2741000a,0x2743000a,0x2745000a,0x2747000a,0x2749000a,0x274b000a,0x274d000a,0x274f000a,0x2751000a,0x2753000a,0x2755000a,0x2757000a,0x2759000a,0x275b000a, -0x275d000a,0x275f000a,0x2761000a,0x2763000a,0x2765000a,0x2767000a,0x2769000a,0x276b000a,0x276d000a,0x276f000a,0x2771000a,0x2773000a,0x2775000a,0x2777000a,0x2779000a,0x277b000a, -0x277d000a,0x277f000a,0x2781000a,0x2783000a,0x2785000a,0x2787000a,0x2789000a,0x278b000a,0x278d000a,0x278f000a,0x2791000a,0x2793000a,0x2795000a,0x2797000a,0x2799000a,0x279b000a, -0x279d000a,0x279f000a,0x27a1000a,0x27a3000a,0x27a5000a,0x27a7000a,0x27a9000a,0,0,0,0x27ab000a,0x27ad000a,0x27af000a,0x27b1000a,0x27b3000a,0x27b5000a, -0x27b7000a,0x27b9000a,0x27bb000a,0x27bd000a,0x27bf000a,0x27c1000a,0x27c3000a,0x27c5000a,0x27c7000a,0x27cb000a,0x27cf000a,0x27d3000a,0x27d7000a,0x27db000a,0x27df000a,0x27e3000a, -0x27e7000a,0x27eb000a,0x27ef000a,0x27f3000a,0x27f7000a,0x27fb000a,0x27ff000a,0x2804000a,0x2809000a,0x280e000a,0x2813000a,0x2818000a,0x281d000a,0x2822000a,0x2827000a,0x282c000a, -0x2831000a,0x2836000a,0x283b000a,0x2840000a,0x2845000a,0x284a000a,0x2852000a,0,0x2859000a,0x285d000a,0x2861000a,0x2865000a,0x2869000a,0x286d000a,0x2871000a,0x2875000a, -0x2879000a,0x287d000a,0x2881000a,0x2885000a,0x2889000a,0x288d000a,0x2891000a,0x2895000a,0x2899000a,0x289d000a,0x28a1000a,0x28a5000a,0x28a9000a,0x28ad000a,0x28b1000a,0x28b5000a, -0x28b9000a,0x28bd000a,0x28c1000a,0x28c5000a,0x28c9000a,0x28cd000a,0x28d1000a,0x28d5000a,0x2916000a,0x2918000a,0x291a000a,0x291c000a,0x291e000a,0x2920000a,0x2922000a,0x2924000a, -0x2926000a,0x2928000a,0x292a000a,0x292c000a,0x292e000a,0x2930000a,0x2932000a,0x2935000a,0x2938000a,0x293b000a,0x293e000a,0x2941000a,0x2944000a,0x2947000a,0x294a000a,0x294d000a, -0x2950000a,0x2953000a,0x2956000a,0x2959000a,0x295c000a,0x2962000a,0x2967000a,0,0x296a000a,0x296c000a,0x296e000a,0x2970000a,0x2972000a,0x2974000a,0x2976000a,0x2978000a, -0x297a000a,0x297c000a,0x297e000a,0x2980000a,0x2982000a,0x2984000a,0x2986000a,0x2988000a,0x298a000a,0x298c000a,0x298e000a,0x2990000a,0x2992000a,0x2994000a,0x2996000a,0x2998000a, -0x299a000a,0x299c000a,0x299e000a,0x29a0000a,0x29a2000a,0x29a4000a,0x29a6000a,0x29a8000a,0x29aa000a,0x29ac000a,0x29ae000a,0x29b0000a,0x29b2000a,0x29b4000a,0x29b6000a,0x29b8000a, -0x29ba000a,0x29bc000a,0x29be000a,0x29c0000a,0x29c2000a,0x29c4000a,0x29c6000a,0x29c8000a,0x29ca000a,0x29cc000a,0x29cf000a,0x29d2000a,0x29d5000a,0x29d8000a,0x29db000a,0x29de000a, -0x29e1000a,0x29e4000a,0x29e7000a,0x29ea000a,0x29ed000a,0x29f0000a,0x29f3000a,0x29f6000a,0x2a44000a,0x2a46000a,0x2a48000a,0x2a4a000a,0x2a4c000a,0x2a4e000a,0x2a50000a,0x2a52000a, -0x2a54000a,0x2a56000a,0x2a58000a,0x2a5a000a,0x2a5c000a,0x2a5e000a,0x2a60000a,0x2a62000a,0x2a64000a,0x2a66000a,0x2a68000a,0x2a6a000a,0x2a6c000a,0x2a6e000a,0x2a70000a,0x2a72000a, -0x2a74000a,0x2a76000a,0x2a78000a,0x2a7a000a,0x2a7c000a,0x2a7e000a,0x2a80000a,0,0x2a82000a,0x2a88000a,0x2a8d000a,0x2a93000a,0x2a97000a,0x2a9e000a,0x2aa2000a,0x2aa6000a, -0x2aae000a,0x2ab3000a,0x2ab7000a,0x2abb000a,0x2abf000a,0x2ac4000a,0x2ac9000a,0x2ace000a,0x2ad3000a,0x2ad9000a,0x2ade000a,0x2ae3000a,0x2aea000a,0x2aed000a,0x2af4000a,0x2afb000a, -0x2b01000a,0x2b06000a,0x2b0d000a,0x2b14000a,0x2b19000a,0x2b1d000a,0x2b21000a,0x2b27000a,0x2b2c000a,0x2b32000a,0x2b39000a,0x2b3d000a,0x2b41000a,0x2b46000a,0x2b4a000a,0x2b4e000a, -0x2b51000a,0x2b54000a,0x2b58000a,0x2b5c000a,0x2b63000a,0x2b68000a,0x2b6e000a,0x2b75000a,0x2b7a000a,0x2b7e000a,0x2b82000a,0x2b8a000a,0x2b8f000a,0x2b96000a,0x2b9a000a,0x2ba0000a, -0x2ba4000a,0x2ba9000a,0x2bad000a,0x2bb2000a,0x2bb9000a,0x2bbe000a,0x2bc4000a,0x2bc9000a,0x2bcc000a,0x2bd3000a,0x2bd7000a,0x2bdb000a,0x2be0000a,0x2be4000a,0x2be8000a,0x2bec000a, -0x2bf2000a,0x2bf7000a,0x2bfa000a,0x2c01000a,0x2c06000a,0x2c0c000a,0x2c11000a,0x2c17000a,0x2c1b000a,0x2c1f000a,0x2c24000a,0x2c27000a,0x2c2c000a,0x2c32000a,0x2c35000a,0x2c3c000a, -0x2c40000a,0x2c43000a,0x2c46000a,0x2c49000a,0x2c4c000a,0x2c4f000a,0x2c52000a,0x2c55000a,0x2d68000a,0x2d6b000a,0x2d6e000a,0x2d71000a,0x2d74000a,0x2d77000a,0x2d7a000a,0x2d7d000a, -0x2d80000a,0x2d83000a,0x2d87000a,0x2d8b000a,0x2d8f000a,0x2d93000a,0x2d97000a,0x2d9b000a,0x2d9f000a,0x2da3000a,0x2da7000a,0x2dab000a,0x2daf000a,0x2db3000a,0x2db7000a,0x2dbb000a, -0x2dbf000a,0x2dc3000a,0x2dc7000a,0x2dcb000a,0x2dcf000a,0x2dd3000a,0x2dd7000a,0x2ddb000a,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2ddf000a,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2e3e000a,0x2e40000a,0x2e42000a,0x2e44000a,0x2e46000a,0x2e48000a,0x2e4a000a,0x2e4c000a, -0x2e4e000a,0x2e50000a,0x2e52000a,0x2e54000a,0x2e56000a,0x2e58000a,0x2e5a000a,0x2e5c000a,0x2e5e000a,0x2e60000a,0x2e62000a,0x2e64000a,0x2e66000a,0x2e68000a,0x2e6a000a,0x2e6c000a, -0x2e6e000a,0x2e70000a,0x2e72000a,0x2e74000a,0x2e76000a,0x2e78000a,0x2e7a000a,0x2e7c000a,0x2e7e000a,0x2e80000a,0x2e82000a,0x2e84000a,0x2e86000a,0x2e88000a,0x2e8a000a,0x2e8c000a, -0x2e8e000a,0x2e90000a,0x2e92000a,0x2e94000a,0x2e96000a,0x2e98000a,0x2e9a000a,0x2e9c000a,0x2e9e000a,0x2ea0000a,0x2ea2000a,0x2ea4000a,0x2ea6000a,0x2ea8000a,0x2eaa000a,0x2eac000a, -0x2eae000a,0x2eb0000a,0x2eb2000a,0x2eb4000a,0x2eb6000a,0x2eb8000a,0x2eba000a,0x2ebc000a,0x2ebe000a,0x2ec0000a,0x2ec2000a,0x2ec4000a,0x2ec6000a,0x2eca000a,0x2ece000a,0x2ed0000a, -0x2ed2000a,0x2ed4000a,0x2ed6000a,0x2ed8000a,0x2eda000a,0x2edc000a,0x2ede000a,0x2ee0000a,0x2ee2000a,0x2ee6000a,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2eea000a, -0x2eec000a,0x2eee000a,0x2ef0000a,0x2ef2000a,0x2ef4000a,0x2ef6000a,0x2ef8000a,0x2efa000a,0x2efc000a,0x2efe000a,0x2f01000a,0x2f03000a,0x2f05000a,0x2f07000a,0x2f09000a,0x2f0b000a, -0x2f0d000a,0x2f0f000a,0x2f11000a,0x2f13000a,0x2f15000a,0x2f17000a,0x2f19000a,0x2f1d000a,0x2f21000a,0x2f25000a,0x2f29000a,0x2f2d000a,0x2f31000a,0x2f35000a,0x2f39000a,0x2f3d000a, -0x2f41000a,0x2f45000a,0x2f49000a,0x2f4d000a,0x2f51000a,0x2f55000a,0x2f59000a,0x2f5d000a,0x2f61000a,0x2f63000a,0x2f65000a,0x2f67000a,0x2f69000a,0x2f6d000a,0x2f71000a,0x2f75000a, -0x2f79000a,0x2f7d000a,0x2f80000a,0x2f83000a,0x2f86000a,0x2f89000a,0x2f8c000a,0x2f8f000a,0x2f92000a,0x2f95000a,0x2f98000a,0x2f9b000a,0x2f9e000a,0x2fa1000a,0x2fa4000a,0x2fa7000a, -0x2faa000a,0x2fad000a,0x2fb0000a,0x2fb3000a,0x2fb6000a,0x2fb9000a,0x2fbc000a,0x2fbf000a,0x2fc2000a,0x2fc5000a,0x2fc8000a,0x2fcb000a,0x2fce000a,0x2fd1000a,0x2fd4000a,0x2fd7000a, -0x2fda000a,0x2fdd000a,0x2fe0000a,0x2fe3000a,0x2fe6000a,0x2fe9000a,0x2fec000a,0x2fef000a,0x2ff2000a,0x2ff5000a,0x2ff8000a,0x2ffb000a,0x2ffe000a,0x3001000a,0x3004000a,0x3007000a, -0x300a000a,0x300d000a,0x3010000a,0x3013000a,0x3016000a,0x3019000a,0x301c000a,0x301f000a,0x3022000a,0x3025000a,0x3028000a,0x302b000a,0x302e000a,0x3031000a,0x3034000a,0x3037000a, -0x303a000a,0x303d000a,0x3040000a,0x3043000a,0x3046000a,0x3049000a,0x304c000a,0x304f000a,0x3052000a,0x3055000a,0x3058000a,0x305b000a,0x305e000a,0x3061000a,0x3064000a,0x3067000a, -0x306a000a,0x306d000a,0x3070000a,0x3073000a,0x3076000a,0x3079000a,0x307c000a,0x307f000a,0x3083000a,0x3087000a,0x308b000a,0x3090000a,0x3095000a,0x309a000a,0x309f000a,0x30a4000a, -0x30a9000a,0x30ad000a,0x30b1000a,0x30b5000a,0x30b9000a,0x30bd000a,0x30c1000a,0x30c4000a,0x30c7000a,0x30ca000a,0x30cd000a,0x30d0000a,0x30d3000a,0x30d6000a,0x30d9000a,0x30dc000a, -0x30df000a,0x30e2000a,0x30e5000a,0x30e8000a,0x30eb000a,0x30ee000a,0x30f1000a,0x30f4000a,0x30f7000a,0x30fa000a,0x30fd000a,0x3100000a,0x3103000a,0x3106000a,0x3109000a,0x310c000a, -0x310f000a,0x3112000a,0x3115000a,0x3118000a,0x311b000a,0x311e000a,0x3121000a,0x3124000a,0x3127000a,0x312a000a,0x312d000a,0x3130000a,0x3133000a,0x3137000a,0x313a000a,0x313d000a, -0x3140000a,0x3143000a,0x3146000a,0x3149000a,0x314d000a,0x3151000a,0x3155000a,0x3159000a,0x315d000a,0x3160000a,0x3163000a,0x3166000a,0x3169000a,0x316c000a,0x316f000a,0x3172000a, -0x3175000a,0x3178000a,0x317b000a,0x317e000a,0x3181000a,0x3184000a,0x3187000a,0x318a000a,0x318d000a,0x3190000a,0x3193000a,0x3196000a,0x3199000a,0x319c000a,0x319f000a,0x31a2000a, -0x31a5000a,0x31a8000a,0x31ab000a,0x31ae000a,0x31b1000a,0x31b4000a,0x31b7000a,0x31ba000a,0x31bd000a,0x31c0000a,0x31c3000a,0x31c6000a,0x31c9000a,0x31cc000a,0x31cf000a,0x31d2000a, -0x31d5000a,0x31d8000a,0x31db000a,0x31de000a,0x31e1000a,0x31e4000a,0x31e7000a,0x31ea000a,0x31ed000a,0x31f0000a,0x31f3000a,0x31f6000a,0x31f9000a,0x31fc000a,0x31ff000a,0x3202000a, -0x3205000a,0x3208000a,0x320b000a,0x320e000a,0x3211000a,0x3214000a,0x3218000a,0x321b000a,0x321e000a,0x3221000a,0x3224000a,0x3227000a,0x322b000a,0x322f000a,0x3232000a,0x3235000a, -0x3238000a,0x323b000a,0x323e000a,0x3241000a,0x3244000a,0x3247000a,0x324a000a,0x324d000a,0x3250000a,0x3253000a,0x3256000a,0x3259000a,0x325c000a,0x325f000a,0x3262000a,0x3267000a, -0x326c000a,0x3271000a,0x3274000a,0x3277000a,0x327a000a,0x327d000a,0x3280000a,0x3283000a,0x3286000a,0x3289000a,0x328c000a,0x328f000a,0x3292000a,0x3295000a,0x3298000a,0x329b000a, -0x329e000a,0x32a1000a,0x32a4000a,0x32a7000a,0x32aa000a,0x32ad000a,0x32b0000a,0x32b3000a,0x32b6000a,0x32b9000a,0x32bc000a,0x32bf000a,0x32c2000a,0x32c5000a,0x32c8000a,0x32cb000a, -0x32ce000a,0x32d1000a,0x32d4000a,0x32d7000a,0x32da000a,0x32dd000a,0x32e0000a,0x32e3000a,0x32e6000a,0x32e9000a,0x32ec000a,0x32ef000a,0x32f2000a,0x32f5000a,0x32f8000a,0x32fb000a, -0x32fe000a,0x3301000a,0x3304000a,0x3307000a,0x330a000a,0x330d000a,0x3310000a,0x3313000a,0x3316000a,0x3319000a,0x331c000a,0x331f000a,0x3322000a,0x3325000a,0x3328000a,0x332b000a, -0x332e000a,0x3331000a,0x3334000a,0x3337000a,0x333a000a,0x333d000a,0x3340000a,0x3343000a,0x3346000a,0x334a000a,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x334e000a,0x3352000a,0x3356000a,0x335a000a, -0x335e000a,0x3362000a,0x3366000a,0x336a000a,0x336e000a,0x3372000a,0x3376000a,0x337a000a,0x337e000a,0x3382000a,0x3386000a,0x338a000a,0x338e000a,0x3392000a,0x3396000a,0x339a000a, -0x339e000a,0x33a2000a,0x33a6000a,0x33aa000a,0x33ae000a,0x33b2000a,0x33b6000a,0x33ba000a,0x33be000a,0x33c2000a,0x33c6000a,0x33ca000a,0x33ce000a,0x33d2000a,0x33d6000a,0x33da000a, -0x33de000a,0x33e2000a,0x33e6000a,0x33ea000a,0x33ee000a,0x33f2000a,0x33f6000a,0x33fa000a,0x33fe000a,0x3402000a,0x3406000a,0x340a000a,0x340e000a,0x3412000a,0x3416000a,0x341a000a, -0x341e000a,0x3422000a,0x3426000a,0x342a000a,0x342e000a,0x3432000a,0x3436000a,0x343a000a,0x343e000a,0x3442000a,0x3446000a,0x344a000a,0,0,0x344e000a,0x3452000a, -0x3456000a,0x345a000a,0x345e000a,0x3462000a,0x3466000a,0x346a000a,0x346e000a,0x3472000a,0x3476000a,0x347a000a,0x347e000a,0x3482000a,0x3486000a,0x348a000a,0x348e000a,0x3492000a, -0x3496000a,0x349a000a,0x349e000a,0x34a2000a,0x34a6000a,0x34aa000a,0x34ae000a,0x34b2000a,0x34b6000a,0x34ba000a,0x34be000a,0x34c2000a,0x34c6000a,0x34ca000a,0x34ce000a,0x34d2000a, -0x34d6000a,0x34da000a,0x34de000a,0x34e2000a,0x34e6000a,0x34ea000a,0x34ee000a,0x34f2000a,0x34f6000a,0x34fa000a,0x34fe000a,0x3502000a,0x3506000a,0x350a000a,0x350e000a,0x3512000a, -0x3516000a,0x351a000a,0x351e000a,0x3522000a,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x3526000a,0x352a000a,0x352e000a,0x3533000a, -0x3538000a,0x353d000a,0x3542000a,0x3547000a,0x354c000a,0x3551000a,0x3555000a,0x3568000a,0x3571000a,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x3576000a,0x3578000a,0x357a000a,0x357c000a, -0x357e000a,0x3580000a,0x3582000a,0x3584000a,0x3586000a,0x3588000a,0,0,0,0,0,0,0xe600,0xe600,0xe600,0xe600, -0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0x358c000a,0x358f000a,0x3591000a,0x3593000a, -0x3595000a,0x3597000a,0x3599000a,0x359b000a,0x359d000a,0x359f000a,0x35a1000a,0x35a3000a,0x35a5000a,0x35a7000a,0x35a9000a,0x35ab000a,0x35ad000a,0x35af000a,0x35b1000a,0x35b3000a, -0x35b5000a,0,0,0x35b7000a,0x35b9000a,0x35bb000a,0x35bf000a,0x35c3000a,0x35c7000a,0x35cb000a,0x35cd000a,0x35cf000a,0x35d1000a,0x35d3000a,0x35d5000a,0, -0x35d7000a,0x35d9000a,0x35db000a,0x35dd000a,0x35df000a,0x35e1000a,0x35e3000a,0x35e5000a,0x35e7000a,0x35e9000a,0x35eb000a,0x35ed000a,0x35ef000a,0x35f1000a,0x35f3000a,0x35f5000a, -0x35f7000a,0x35f9000a,0x35fb000a,0,0x35fd000a,0x35ff000a,0x3601000a,0x3603000a,0,0,0,0,0x3605000a,0x3609000a,0x360d000a,0, -0x3611000a,0,0x3615000a,0x3619000a,0x361d000a,0x3621000a,0x3625000a,0x3629000a,0x362d000a,0x3631000a,0x3635000a,0x3639000a,0x363d000a,0x363f000a,0x3643000a,0x3647000a, -0x364b000a,0x364f000a,0x3653000a,0x3657000a,0x365b000a,0x365f000a,0x3663000a,0x3667000a,0x366b000a,0x366f000a,0x3671000a,0x3673000a,0x3675000a,0x3677000a,0x3679000a,0x367b000a, -0x367d000a,0x367f000a,0x3681000a,0x3683000a,0x3685000a,0x3687000a,0x3689000a,0x368b000a,0x368d000a,0x368f000a,0x3691000a,0x3693000a,0x3695000a,0x3697000a,0x3699000a,0x369b000a, -0x369d000a,0x369f000a,0x36a1000a,0x36a3000a,0x36a5000a,0x36a7000a,0x36a9000a,0x36ab000a,0x36ad000a,0x36af000a,0x36b1000a,0x36b3000a,0x36b5000a,0x36b7000a,0x36b9000a,0x36bb000a, -0x36bd000a,0x36bf000a,0x36c1000a,0x36c3000a,0x36c5000a,0x36c7000a,0x36c9000a,0x36cb000a,0x36cd000a,0x36cf000a,0x36d1000a,0x36d3000a,0x36d5000a,0x36d7000a,0x36d9000a,0x36db000a, -0x36dd000a,0x36df000a,0x36e1000a,0x36e3000a,0x36e5000a,0x36e7000a,0x36e9000a,0x36eb000a,0x36ed000a,0x36ef000a,0x36f1000a,0x36f3000a,0x36f5000a,0x36f7000a,0x36f9000a,0x36fb000a, -0x36fd000a,0x36ff000a,0x3701000a,0x3703000a,0x3705000a,0x3707000a,0x3709000a,0x370b000a,0x370d000a,0x370f000a,0x3711000a,0x3713000a,0x3715000a,0x3717000a,0x3719000a,0x371b000a, -0x371d000a,0x371f000a,0x3721000a,0x3723000a,0x3725000a,0x3727000a,0x3729000a,0x372b000a,0x372d000a,0x372f000a,0x3731000a,0x3733000a,0x3735000a,0x3737000a,0x3739000a,0x373b000a, -0x373d000a,0x373f000a,0x3744000a,0x3749000a,0x374e000a,0x3753000a,0x3758000a,0x375d000a,0x3760000a,0,0,0,0,0x3763000a,0x3765000a,0x3767000a, -0x3769000a,0x376b000a,0x376d000a,0x376f000a,0x3771000a,0x3773000a,0x3775000a,0x3777000a,0x3779000a,0x377b000a,0x377d000a,0x377f000a,0x3781000a,0x3783000a,0x3785000a,0x3787000a, -0x3789000a,0x378b000a,0x378d000a,0x378f000a,0x3791000a,0x3793000a,0x3795000a,0x3797000a,0x3799000a,0x379b000a,0x379d000a,0x379f000a,0x37a1000a,0x37a3000a,0x37a5000a,0x37a7000a, -0x37a9000a,0x37ab000a,0x37ad000a,0x37af000a,0x37b1000a,0x37b3000a,0x37b5000a,0x37b7000a,0x37b9000a,0x37bb000a,0x37bd000a,0x37bf000a,0x37c1000a,0x37c3000a,0x37c5000a,0x37c7000a, -0x37c9000a,0x37cb000a,0x37cd000a,0x37cf000a,0x37d1000a,0x37d3000a,0x37d5000a,0x37d7000a,0x37d9000a,0x37db000a,0x37dd000a,0x37df000a,0x37e1000a,0x37e3000a,0x37e5000a,0x37e7000a, -0x37e9000a,0x37eb000a,0x37ed000a,0x37ef000a,0x37f1000a,0x37f3000a,0x37f5000a,0x37f7000a,0x37f9000a,0x37fb000a,0x37fd000a,0x37ff000a,0x3801000a,0x3803000a,0x3805000a,0x3807000a, -0x3809000a,0x380b000a,0x380d000a,0x380f000a,0x3811000a,0x3813000a,0x3815000a,0x3817000a,0x3819000a,0x381b000a,0x381d000a,0x381f000a,0x3821000a,0x3823000a,0x3825000a,0x3827000a, -0x3829000a,0x382b000a,0x382d000a,0x382f000a,0x3831000a,0x3833000a,0x3835000a,0x3837000a,0x3839000a,0x383b000a,0x383d000a,0x383f000a,0x3841000a,0x3843000a,0x3845000a,0x3847000a, -0x3849000a,0x384b000a,0x384d000a,0x384f000a,0x3851000a,0x3853000a,0x3855000a,0x3857000a,0x3859000a,0x385b000a,0x385d000a,0x385f000a,0x3861000a,0x3863000a,0x3865000a,0x3867000a, -0x3869000a,0x386b000a,0x386d000a,0x386f000a,0x3871000a,0x3873000a,0x3875000a,0x3877000a,0x3879000a,0x387b000a,0x387d000a,0x387f000a,0x3881000a,0x3883000a,0x3885000a,0x3887000a, -0x3889000a,0x388b000a,0x388d000a,0x388f000a,0x3891000a,0x3893000a,0x3895000a,0x3897000a,0x3899000a,0x389b000a,0x389d000a,0x38a0000a,0x38a3000a,0x38a5000a,0x38a7000a,0x38a9000a, -0x38ab000a,0x38ad000a,0x38af000a,0x38b1000a,0x38b3000a,0x38b5000a,0x38b7000a,0x38b9000a,0x38bb000a,0x38bd000a,0x38bf000a,0x38c1000a,0x38c3000a,0x38c5000a,0x38c7000a,0x38c9000a, -0x38cb000a,0x38cd000a,0x38cf000a,0x38d1000a,0x38d3000a,0x38d5000a,0x38d7000a,0x38d9000a,0x38db000a,0x38dd000a,0x38df000a,0,0,0,0x38e1000a,0x38e3000a, -0x38e5000a,0x38e7000a,0x38e9000a,0x38eb000a,0,0,0x38ed000a,0x38ef000a,0x38f1000a,0x38f3000a,0x38f5000a,0x38f7000a,0,0,0x38f9000a,0x38fb000a, -0x38fd000a,0x38ff000a,0x3901000a,0x3903000a,0,0,0x3905000a,0x3907000a,0x3909000a,0,0,0,0x390b000a,0x390d000a,0x390f000a,0x3911000a, -0x3915000a,0x3917000a,0x3919000a,0,0x391b000a,0x391d000a,0x391f000a,0x3921000a,0x3923000a,0x3925000a,0x3927000a,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x3d2f000a,0x3d31000a,0x3d33000a,0x3d35000a, -0x3d37000a,0x3d39000a,0x3d3b000a,0x3d3d000a,0x3d3f000a,0x3d41000a,0x3d43000a,0x3d45000a,0x3d47000a,0x3d49000a,0x3d4b000a,0x3d4d000a,0x3d4f000a,0x3d51000a,0x3d53000a,0x3d55000a, -0x3d57000a,0x3d59000a,0x3d5b000a,0x3d5d000a,0x3d5f000a,0x3d61000a,0x3d63000a,0x3d65000a,0x3d67000a,0x3d69000a,0x3d6b000a,0x3d6d000a,0,0x3d700040,0x3dea0040,0x3d710040, -0x3d800040,0x3d720040,0x3dec0040,0x3d820040,0x3d840040,0x3d730040,0x3d860040,0x3d880040,0x3d8a0040,0x3dee0040,0x3d740040,0x3d750040,0x3df00040,0,0x3d8c0040,0x3d8e0040, -0x3d900040,0x3d760040,0x3df20040,0x3d920040,0x3df40040,0x3d770040,0x3d940040,0,0,0,0,0,0,0x3d780040,0x3deb0040,0x3d790040, -0x3d810040,0x3d7a0040,0x3ded0040,0x3d830040,0x3d850040,0x3d7b0040,0x3d870040,0x3d890040,0x3d8b0040,0x3def0040,0x3d7c0040,0x3d7d0040,0x3df10040,0,0x3d8d0040,0x3d8f0040, -0x3d910040,0x3d7e0040,0x3df30040,0x3d930040,0x3df50040,0x3d7f0040,0x3d950040,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x3d990040,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xe600,0xe600,0xe600,0xe600,0xe600, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xe600,0xe600,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00,0xdc00, -0xe600,0xe600,0xdc00,0xe600,0xe600,0xde00,0xe400,0xe600,0xa00,0xb00,0xc00,0xd00,0xe00,0xf00,0x1000,0x1100, -0x1200,0x1300,0x1300,0x1400,0x1500,0x1600,0,0x1700,0,0x1800,0x1900,0,0xe600,0xdc00,0,0x1200, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0x1e00,0x1f00,0x2000,0,0,0,0,0,0xe600,0xe600,0xe600,0xdc00,0xe600,0,0,0xe600, -0xe600,0,0xdc00,0xe600,0xe600,0xdc00,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x2400,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe600,0xdc00,0xe600,0xe600, -0xdc00,0xe600,0xe600,0xdc00,0xdc00,0xdc00,0xe600,0xdc00,0xdc00,0xe600,0xdc00,0xe600,0xe600,0xe600,0xdc00,0xe600, -0xdc00,0xe600,0xdc00,0xe600,0xdc00,0xe600,0xe600,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe600, -0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x700,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x900,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x700,0,0,0x3dd90040,0,0,0,0,0,0,0,0, -0x6b00,0x6b00,0x6b00,0x6b00,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xdc00,0,0xdc00,0,0xd800,0,0, -0,0,0,0,0,0,0xdc00,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xdc00,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x900,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x900,0, -0,0,0,0,0,0,0,0,0,0xe600,0,0,0,0,0,0, -0,0,0,0,0,0xe400,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xde00,0xe600,0xdc00,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xe600,0xdc00,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xe600,0xdc00,0xe600,0xe600,0xe600, -0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x900,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x700,0,0,0,0, -0,0,0,0,0xe600,0xe600,0xdc00,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xe600, -0xe600,0xea00,0xd600,0xdc00,0xca00,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe600,0xdc00, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xe600,0xe600,0x100,0x100,0xe600,0xe600,0xe600,0xe600,0x100,0x100,0x100,0xe600,0xe600,0,0,0, -0,0xe600,0,0,0,0x100,0x100,0xe600,0xdc00,0xe600,0x100,0x100,0xdc00,0xdc00,0xdc00,0xdc00, -0xe600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x3e0a0040,0x3e070040,0x3e0b0040,0,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600,0xe600, -0xe600,0xe600,0xe600,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xe600,0,0,0,0,0,0,0,0,0,0,0,0, -0xe600,0xe600,0,0,0,0,0,0,0,0,0x900,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x900,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xdc00,0xdc00,0xdc00,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x900,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xdc00,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xdc00,0,0xe600,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xe600,0x100,0xdc00,0,0,0,0,0x900,0xdc00,0xdc00,0xdc00,0, -0,0xe600,0xe600,0xe600,0xe600,0xe600,0xdc00,0xdc00,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe600,0xe600, -0xe600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xfff10040,0xfff10040,0xfff10040,0xfff10040, -0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0xfff10040,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c, -0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c, -0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0xfff0000c,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xfc01ff00,0,0xfc02ff00,0,0,0,0,0, +0x101f000f,0x1021000f,0x1023000f,0x1025000f,0x1027000f,0x1029000f,0,0,0xfc01ff00,0,0xfc02ff00,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xfc03ff0f,0xfc04000a,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xfc05000f,0 +0,0,0,0,0,0,0,0,0,0,0xfc05000f,0,0,0,0,0 }; -static const UTrie normTrie={ +static const UTrie2 normTrie={ normTrie_index, + NULL, normTrie_data32, - getFoldingNormOffset, - 2240, - 9548, - 0, - FALSE + 2408, + 9696, + 0x1a0, + 0x7c, + 0x0, + 0x0, + 0x30000, + 0x25dc, }; static const uint16_t extraData[15955]={ @@ -1896,189 +1920,162 @@ static const uint16_t combiningTable[1959]={ 0x87da,0x8000,0x30fa,0x87da,0x8000,0x30fe,0x1234 }; -static const uint16_t fcdTrie_index[5776]={ -0x220,0x220,0x220,0x220,0x220,0x220,0x2dd,0x2e5,0x2ed,0x2f5,0x2fd,0x304,0x220,0x30c,0x311,0x319, -0x31f,0x327,0x220,0x220,0x220,0x220,0x220,0x220,0x45e,0x466,0x23c,0x228,0x244,0x32d,0x22e,0x220, -0x335,0x33c,0x343,0x34b,0x4b3,0x220,0x353,0x359,0x220,0x220,0x220,0x220,0x47e,0x4bb,0x4c3,0x220, -0x4c7,0x361,0x46e,0x486,0x220,0x220,0x369,0x4cf,0x4d3,0x4d8,0x4e0,0x220,0x220,0x220,0x220,0x4e6, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x371,0x249,0x220,0x220,0x476,0x251,0x220, -0x220,0x259,0x261,0x220,0x220,0x476,0x379,0x220,0x220,0x476,0x269,0x220,0x220,0x220,0x379,0x220, -0x220,0x220,0x37f,0x220,0x220,0x476,0x379,0x220,0x220,0x220,0x379,0x220,0x220,0x220,0x385,0x220, -0x220,0x48b,0x4ec,0x220,0x220,0x492,0x499,0x220,0x49c,0x4ef,0x220,0x271,0x279,0x220,0x4f6,0x220, -0x220,0x38d,0x220,0x220,0x4fb,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x4ff,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x507,0x507,0x220,0x220,0x220,0x220,0x50d,0x220, -0x220,0x220,0x220,0x220,0x220,0x515,0x220,0x220,0x220,0x518,0x220,0x220,0x220,0x220,0x220,0x220, -0x51f,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x394,0x39b,0x526,0x220,0x52c,0x220,0x220, -0x220,0x52f,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x537,0x53e, -0x3a3,0x3aa,0x3b2,0x3b9,0x3c1,0x3c9,0x3d0,0x3d8,0x3e0,0x3e8,0x3ef,0x281,0x3f7,0x289,0x291,0x299, -0x220,0x220,0x220,0x220,0x220,0x220,0x546,0x54e,0x220,0x234,0x220,0x220,0x3ff,0x406,0x40b,0x220, -0x412,0x419,0x421,0x429,0x42d,0x432,0x220,0x43a,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x2a1,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x556, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x4a3,0x43f,0x446,0x44e,0x43f,0x446,0x456,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x55e,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x566,0x220,0x220,0x220,0x220,0x220,0x39b,0x220,0x220,0x56c,0x570,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x599,0x59c,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x2a9,0x2b1,0x2b9,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x4ab,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x575, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x57d,0x581,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, -0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x2bd,0x2c5,0x589,0x2cd,0x2d5,0x220, -0x220,0x220,0x591,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220,0x220, +static const uint16_t fcdTrie_index[6092]={ +0x241,0x249,0x251,0x259,0x241,0x249,0x271,0x279,0x281,0x289,0x291,0x299,0x2a1,0x2a9,0x2ae,0x2b6, +0x2bc,0x2c4,0x241,0x249,0x241,0x249,0x241,0x249,0x2cc,0x2d4,0x2dc,0x2e4,0x2eb,0x2f3,0x2f9,0x301, +0x309,0x311,0x318,0x320,0x328,0x330,0x338,0x340,0x241,0x249,0x241,0x249,0x347,0x34f,0x357,0x35f, +0x363,0x36b,0x371,0x379,0x241,0x249,0x381,0x389,0x38d,0x395,0x39d,0x3a5,0x241,0x249,0x3a3,0x3ab, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x3b1,0x3b9,0x241,0x241,0x3c1,0x3c9,0x241, +0x241,0x3d1,0x3d9,0x241,0x241,0x3c1,0x3e1,0x241,0x241,0x3c1,0x3e6,0x241,0x241,0x241,0x3e1,0x241, +0x241,0x241,0x3ee,0x241,0x241,0x3c1,0x3e1,0x241,0x241,0x241,0x3e1,0x241,0x241,0x241,0x3f4,0x241, +0x241,0x3fc,0x403,0x241,0x241,0x406,0x40d,0x241,0x410,0x417,0x241,0x41e,0x426,0x241,0x42d,0x241, +0x241,0x430,0x241,0x241,0x437,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x3a6,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x43b,0x43b,0x241,0x241,0x241,0x241,0x441,0x241, +0x241,0x241,0x241,0x241,0x241,0x449,0x241,0x241,0x241,0x44c,0x241,0x241,0x241,0x241,0x241,0x241, +0x453,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x3c3,0x45a,0x460,0x241,0x466,0x241,0x241, +0x241,0x469,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x471,0x478, +0x480,0x487,0x48f,0x496,0x49e,0x4a6,0x4ad,0x4b5,0x4bd,0x4c5,0x4cc,0x4c6,0x4d4,0x4d8,0x4e0,0x4e8, +0x241,0x241,0x241,0x241,0x241,0x241,0x4f0,0x4f8,0x241,0x4fe,0x241,0x241,0x501,0x508,0x50d,0x241, +0x514,0x51b,0x523,0x52b,0x52f,0x534,0x241,0x53c,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x540,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x548, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x550,0x555,0x55c,0x564,0x555,0x55c,0x56c,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x574,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x57c,0x241,0x241,0x241,0x241,0x241,0x45a,0x241,0x241,0x582,0x586,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x5e7,0x5ea,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x58b,0x593,0x59b,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x5a3,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x984,0x984,0x904,0x9c4,0xa04,0xa44,0xa84,0xab8,0xaf0,0x904,0x904,0x904,0xb30,0xb70,0xbac,0xbe4, +0xc24,0xc60,0xca0,0xce0,0x904,0x904,0xd1c,0xd5c,0xd8c,0xdc4,0x904,0xe04,0xe34,0xe74,0x904,0xe8c, +0x85b,0x88b,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x8c1,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x5a5,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x5ad,0x5b1,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x5b9,0x5c1,0x5c9,0x5cf,0x5d7, +0x241,0x241,0x241,0x5df,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241,0x241, +0x241,0x240,0x240,0x240,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xeaea,0xeaea,0xe9e9,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0,0,0xe6,0xe6,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xe6,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xf0f0,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0, -0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe8e8,0xdcdc,0xdcdc,0xe6e6,0xe9e9,0xeaea,0xeaea,0xe9e9, -0,0,0,0,0,0xe6,0xe6,0,0xe6,0xe6,0xe6,0,0xe6,0,0xe6,0xe6, -0xe6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x909,0,0,0,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0,0,0,7,7,7,7, -7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -7,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0, -0x707,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x909,0,0,0,0,0,0,0,0,0,0,0,7,7,7, -0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x8181,0x8282,0x8182,0x8484,0x8184,0x82,0,0x82,0,0x8282,0x8282, -0x8282,0x8282,0,0,0x8282,0x8182,0xe6e6,0xe6e6,0x909,0,0xe6e6,0xe6e6,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0,0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, -0xf0,0xf0,0xf0,0xf0,0xe6,0xe6,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6, -0xf0,0,0,0,0,0xe6,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6, -0xf0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0,0,0,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6, -0xf0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xe,0x1a1a,0x11,0,0,0,0,0,0,0,0,0,0,0x18,0x19, -0x18,0x19,0x11,0x12,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0,0x15,0x15,0x15,0x15, -0x15,0,0x15,0,0x15,0x15,0,0x15,0x15,0,0x15,0x15,0x15,0x15,0x15,0x13, -0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8d8,0xd8d8,0x101,0x101,0x101,0,0, -0,0xe2e2,0xd8d8,0xd8d8,0xd8d8,0xd8d8,0xd8d8,0,0,0,0,0,0,0,0,0xdcdc, -0xdcdc,0xdcdc,0xdcdc,0xdcdc,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0,0xd8, -0xd8,0xd8,0xd8,0xd8,0xd8,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0xca,0xe6,0xe6,0xe6,0xe6, 0xe6,0xe6,0xe6,0xe6,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6, @@ -2090,347 +2087,560 @@ static const uint16_t fcdTrie_index[5776]={ 0xe6,0xe6,0xca,0xca,0xe6,0,0,0,0xe6,0xe6,0xca,0xca,0,0xe6,0xe6,0xca, 0xca,0xe6,0xe6,0,0,0,0,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0,0,0, 0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xca,0xca,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0, -0xd8,0xd8,0,0,0,0,0,0,0,0,0,0,0,0,0,0xd8, -0xd8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xca,0xca, -0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xd8,0xd8,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xd8,0xd8,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6, +0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0,0xe6,0xe6,0,0, 0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0,0,0xe6,0xe6,0,0,0,0, -0,0,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0,0,0xe6,0xe6, +0,0,0,0,0,0,0xe6,0xe6,0xca,0xca,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0,0,0, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe8e8,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe8e8,0xd8d8,0xdcdc,0xdcdc,0xdcdc,0xdcdc, +0xdcdc,0xcaca,0xcaca,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xcaca,0xcaca,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc, +0xdcdc,0xdcdc,0xdcdc,0xdcdc,0x101,0x101,0x101,0x101,0x101,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xf0f0,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0, +0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe8e8,0xdcdc,0xdcdc,0xe6e6,0xe9e9,0xeaea,0xeaea,0xe9e9, +0xeaea,0xeaea,0xe9e9,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xe6,0xe6,0,0xe6,0xe6,0xe6,0,0xe6,0,0xe6,0xe6,0xe6,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0,0, +0xe6,0xe6,0xe6,0,0,0,0,0xe6,0xe6,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xe6,0xe6,0,0xe6,0,0,0,0xe6,0,0,0,0, 0xe6,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0,0xe6,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xe6,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe6,0xe6,0,0xe6, -0,0,0,0xe6,0,0,0,0,0xe6,0xe6,0xe6,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0xe6,0xe6,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe6,0xe6,0xe6,0xe6, -0,0,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0,0, -0,0,0,0,0,0,0xe6,0xe6,0xe6,0xdc,0xe6,0,0,0,0,0, +0xe6,0xe6,0,0xe6,0,0,0,0xe6,0,0,0,0,0xe6,0xe6,0xe6,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xe6,0xe6,0,0,0,0,0,0,0,0, +0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xe6,0xe6,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xdcdc,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xdede,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc, +0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdede,0xe4e4,0xe6e6,0xa0a,0xb0b,0xc0c,0xd0d, +0xe0e,0xf0f,0x1010,0x1111,0x1212,0x1313,0x1313,0x1414,0x1515,0x1616,0,0x1717,0,0x1818,0x1919,0, +0xe6e6,0xdcdc,0,0x1212,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0x1e1e,0x1f1f,0x2020,0,0,0,0,0,0,0,0xe6,0xe6, +0xe6,0xdc,0xe6,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1b1b, +0x1c1c,0x1d1d,0x1e1e,0x1f1f,0x2020,0x2121,0x2222,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xdcdc,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x2323,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xe6,0,0xe6,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0xe6,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0,0,0xe6e6,0,0,0,0,0,0,0,0,0,7,0,0, +0xe6e6,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0,0,0xe6e6,0xe6e6,0,0xdcdc,0xe6e6, +0xe6e6,0xdcdc,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x2424,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xdcdc, +0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6, +0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0, 0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0, 0x707,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x909,0,0,0,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0,0,0,7,7,7,7, +7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x707,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x5b,0,0,0,0,0x909,0,0,0,0,0,0, -0,0x5454,0x5b5b,0,0,0,0,0,0,0,0,0,0,0,0x909,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0, -0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x707,0,0x909,0x909,0, +7,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0, +0x707,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x909,0,0,0,0,0,0,0,0,0,0,0,7,7,7, +0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x909,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0, +0x5b,0,0,0,0,0x909,0,0,0,0,0,0,0,0x5454,0x5b5b,0, +0,0,0,0,0,0,0,0,0,0,0x909,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x707,0,0,0,0,0,0,0,0,0,0,0, -0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xdc,0xdc,0xe6,0xe6, -0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xca,0xca,0xdc,0xdc, -0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6, -0xca,0xca,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc, -0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xdc,0xdc, -0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0,0xe6, -0,0,0,0,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0,0,0,0,0,0, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6, -0xe6,0xe6,0xe6,0xe6,0,0xe6,0,0xe6,0,0xe6,0,0xe6,0xf0,0xf0,0xf0,0xf0, -0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, -0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0, -0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0, -8,0,8,0,8,0,8,0,8,0,8,0,0,8,0,8, -0,8,0,0,0,0,0,0,8,8,0,8,8,0,8,8, -0,8,8,0,8,8,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, -0,0x808,0x808,0,0,0,8,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,8, -8,8,8,0,0,0,8,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe8e8,0xdcdc,0xdcdc, -0xdcdc,0xdcdc,0xe8e8,0xd8d8,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xcaca,0xcaca,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xcaca, -0xcaca,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0x101,0x101,0x101,0x101, -0x101,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0, -0,0,0,0x1b1b,0x1c1c,0x1d1d,0x1e1e,0x1f1f,0x2020,0x2121,0x2222,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x707,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6, -0xe6e6,0xe6e6,0xdede,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2323,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x6767,0x6767,0x909,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x6767,0x6767,0x909,0,0,0,0,0, +0,0,0,0,0x6b6b,0x6b6b,0x6b6b,0x6b6b,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x7676,0x7676,0,0,0,0,0,0,0,0,0,0,0x7a7a,0x7a7a,0x7a7a,0x7a7a, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xdcdc,0xdcdc,0,0,0,0,0,0, -0,0,0,0,0,0,0xdada,0xe4e4,0xe8e8,0xdede,0xe0e0,0xe0e0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xdcdc,0xdcdc, -0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdede,0xe4e4,0xe6e6,0xa0a,0xb0b,0xc0c,0xd0d, -0xe0e,0xf0f,0x1010,0x1111,0x1212,0x1313,0x1313,0x1414,0x1515,0x1616,0,0x1717,0,0x1818,0x1919,0, -0xe6e6,0xdcdc,0,0x1212,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0x1e1e,0x1f1f,0x2020,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xdcdc, -0xe6e6,0,0,0xe6e6,0xe6e6,0,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x2424,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0xdcdc,0xdcdc,0xe6e6,0xdcdc,0xe6e6, -0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0,0,0,0,0, +0,0xdcdc,0,0xdcdc,0,0xd8d8,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x8181,0x8282,0x8182,0x8484,0x8184,0x82,0, +0x82,0,0x8282,0x8282,0x8282,0x8282,0,0,0x8282,0x8182,0xe6e6,0xe6e6,0x909,0,0xe6e6,0xe6e6, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0,0,0,0, -0,0,0,0,0,0,0,0,0x6b6b,0x6b6b,0x6b6b,0x6b6b,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xdcdc,0,0xdcdc,0,0xd8d8,0,0,0,0,0,0,0,0,0xdcdc,0, +0,0,0,0,0,0,0,0,0,0,0xdcdc,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x707,0,0x909,0x909,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0xdcdc,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0x909,0,0,0,0,0,0,0,0,0, 0,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0xe4e4,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0xdede,0xe6e6,0xdcdc,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xe6e6,0xdcdc,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x909,0,0,0,0,0, +0,0,0,0xe6e6,0xdcdc,0,0,0,0,0,0,0,0x909,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x707,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xdcdc,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xeaea,0xd6d6,0xdcdc,0xcaca,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0, +0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0x909,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x707,0,0,0,0, +0,0,0,0,0xe6e6,0xe6e6,0xdcdc,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xe6e6, +0xe6e6,0xeaea,0xd6d6,0xdcdc,0xcaca,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xdcdc, +0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc, +0xca,0xca,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6, +0xdc,0xdc,0xe6,0xe6,0xca,0xca,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc, +0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc, +0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xdc,0xe6, +0xe6,0xe6,0,0xe6,0,0,0,0,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc, +0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xdc,0xdc,0xe6,0xe6,0xe6,0xe6,0,0, +0,0,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0xe6,0,0xe6,0,0xe6,0,0xe6, +0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, +0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, +0xe6,0xe6,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6,0xf0,0,0,0, +0,0xe6,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6,0xf0,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0,0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0,0xe6,0xe6,0xe6, +0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0, +0,0,0xf0,0xf0,0xf0,0,0xe6,0xf0,0xe6,0xe6,0xe6,0xe6,0xf0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xe6e6,0xdcdc,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0x101,0x101,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0x101,0x101,0x101,0xe6e6,0xe6e6,0,0,0,0,0xe6e6,0,0,0,0x101,0x101,0xe6e6, -0xdcdc,0xe6e6,0x101,0x101,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xe6e6,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0x101,0x101,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0x101,0x101,0x101,0xe6e6,0xe6e6,0,0,0, +0,0xe6e6,0,0,0,0x101,0x101,0xe6e6,0xdcdc,0xe6e6,0x101,0x101,0xdcdc,0xdcdc,0xdcdc,0xdcdc, +0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xe6,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, +0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0, +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, -0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xe6e6,0,0,0,0,0,0,0,0, -0,0,0,0,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0x909,0, +0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0,0,0,0,0,0,0,0,0,0,0xdada,0xe4e4,0xe8e8,0xdede,0xe0e0,0xe0e0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xdcdc,0xdcdc,0xdcdc,0,0, +8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, +8,0,8,0,0,8,0,8,0,8,0,0,0,0,0,0, +8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x909,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,8,0,0,0,0,0x808,0x808,0,0,0,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,8,0,0,8,8,8,8,0,0,0,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6, +0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0,0, +0,0,0,0,0,0,0x909,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xdcdc,0xdcdc,0xdcdc,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x909,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xe,0x1a1a,0x11,0,0,0,0, +0,0,0,0,0,0,0x18,0x19,0x18,0x19,0x11,0x12,0x15,0x15,0x15,0x15, +0x15,0x15,0x15,0,0x15,0x15,0x15,0x15,0x15,0,0x15,0,0x15,0x15,0,0x15, +0x15,0,0x15,0x15,0x15,0x15,0x15,0x13,0x17,0x17,0x17,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6, +0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xdcdc,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xdcdc,0,0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0x101,0xdcdc,0, -0,0,0,0x909,0xdcdc,0xdcdc,0xdcdc,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc, +0,0,0,0x909,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0,0, +0,0,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8d8,0xd8d8,0x101,0x101,0x101,0,0, +0,0xe2e2,0xd8d8,0xd8d8,0xd8d8,0xd8d8,0xd8d8,0,0,0,0,0,0,0,0,0xdcdc, +0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0xdcdc,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0xdcdc,0xdcdc, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x820,0,0x840,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xe6e6,0xe6e6,0xe6e6,0xe6e6,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x860,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xe6e6,0xe6e6, +0xe6e6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x820,0,0x840,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x860,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0 }; -static const UTrie fcdTrie={ +static const UTrie2 fcdTrie={ fcdTrie_index, + fcdTrie_index+2308, NULL, - utrie_defaultGetFoldingOffset, - 2176, - 3600, - 0, - FALSE + 2308, + 3784, + 0x188, + 0x904, + 0x0, + 0x0, + 0x1d800, + 0x17c8, }; -static const uint16_t auxTrie_index[5960]={ -0x230,0x230,0x230,0x230,0x230,0x230,0x3f8,0x400,0x408,0x410,0x418,0x420,0x230,0x230,0x428,0x430, -0x438,0x440,0x230,0x230,0x230,0x230,0x230,0x230,0x4cc,0x4cc,0x323,0x238,0x32b,0x230,0x240,0x246, -0x230,0x230,0x230,0x230,0x51e,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x4fa,0x526,0x52e,0x230, -0x532,0x448,0x4d4,0x456,0x230,0x230,0x44b,0x53a,0x53e,0x234,0x4d9,0x230,0x230,0x230,0x230,0x544, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x453,0x330,0x230,0x230,0x4dc,0x338,0x230, -0x230,0x340,0x348,0x230,0x230,0x453,0x549,0x230,0x230,0x4dc,0x350,0x230,0x230,0x4e4,0x45b,0x230, -0x230,0x230,0x461,0x230,0x230,0x453,0x469,0x230,0x230,0x4e4,0x45b,0x230,0x230,0x230,0x46f,0x230, -0x230,0x502,0x510,0x230,0x230,0x509,0x510,0x230,0x509,0x54d,0x358,0x360,0x368,0x370,0x554,0x230, -0x230,0x477,0x230,0x230,0x549,0x230,0x230,0x230,0x230,0x230,0x230,0x4ec,0x230,0x4f2,0x4db,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x556,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x455,0x455,0x230,0x230,0x230,0x230,0x55e,0x230, -0x230,0x230,0x230,0x230,0x230,0x54a,0x230,0x230,0x230,0x566,0x230,0x230,0x230,0x230,0x230,0x230, -0x56d,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x47e,0x485,0x544,0x230,0x574,0x230,0x230, -0x230,0x558,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x24d,0x255,0x230,0x230,0x230,0x4cc,0x57c, -0x48d,0x495,0x49a,0x4a0,0x4a8,0x4b0,0x4b3,0x4b7,0x230,0x230,0x230,0x377,0x4bd,0x37f,0x387,0x38d, -0x395,0x230,0x230,0x230,0x230,0x25b,0x584,0x58c,0x263,0x26b,0x273,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x39b,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x39e,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x275,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x4cc, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x516,0x230,0x230,0x4c4,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x27d,0x230,0x230,0x230,0x282,0x230,0x230,0x230,0x230,0x286,0x28e,0x294,0x29c,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x591,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x554,0x230,0x230,0x230,0x230,0x230,0x485,0x230,0x230,0x599,0x559,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x5c1,0x5c4,0x230,0x5ca,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6, -0x3ab,0x3b3,0x3a6,0x3b9,0x3a6,0x3a6,0x3bd,0x230,0x3c4,0x3cc,0x3d4,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x4da,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x59d, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x5a5,0x5a9,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x3d8,0x3e0,0x5b1,0x3e8,0x3f0,0x230, -0x230,0x230,0x5b9,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, -0x2a4,0x2ab,0x2a7,0x2ae,0x2b6,0x2be,0x2ac,0x2a8,0x2c5,0x2cd,0x2d5,0x2ad,0x2b5,0x2a4,0x2ab,0x2a7, -0x2ae,0x2dd,0x2a5,0x2ac,0x2a8,0x2e5,0x2ed,0x2f5,0x2fc,0x304,0x2f0,0x30c,0x2ff,0x314,0x31b,0x230, -0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6,0x3a6, -0x3a7,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230,0x230, +static const uint16_t auxTrie_index[6256]={ +0x25a,0x262,0x26a,0x272,0x25a,0x262,0x28a,0x292,0x29a,0x2a2,0x2aa,0x2b2,0x25a,0x262,0x2ba,0x2c2, +0x2ca,0x2d2,0x25a,0x262,0x25a,0x262,0x25a,0x262,0x2da,0x2e2,0x2ea,0x2f2,0x2fa,0x302,0x306,0x30e, +0x25a,0x262,0x25a,0x262,0x316,0x31e,0x25a,0x262,0x25a,0x262,0x25a,0x262,0x322,0x32a,0x332,0x33a, +0x33e,0x346,0x34c,0x354,0x25a,0x262,0x359,0x361,0x365,0x36d,0x373,0x37b,0x25a,0x262,0x379,0x381, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x386,0x38e,0x25a,0x25a,0x396,0x39e,0x25a, +0x25a,0x3a6,0x3ae,0x25a,0x25a,0x386,0x366,0x25a,0x25a,0x396,0x3b6,0x25a,0x25a,0x3be,0x3c6,0x25a, +0x25a,0x25a,0x3cc,0x25a,0x25a,0x386,0x3d4,0x25a,0x25a,0x3be,0x3c6,0x25a,0x25a,0x25a,0x3da,0x25a, +0x25a,0x3e2,0x3e9,0x25a,0x25a,0x3ec,0x3e9,0x25a,0x3ec,0x3f3,0x3fb,0x403,0x40b,0x413,0x41a,0x25a, +0x25a,0x41f,0x25a,0x25a,0x366,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x427,0x25a,0x2d8,0x375,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x347,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x388,0x388,0x25a,0x25a,0x25a,0x25a,0x42d,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x367,0x25a,0x25a,0x25a,0x435,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x43c,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x3ed,0x443,0x381,0x25a,0x449,0x25a,0x25a, +0x25a,0x44c,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x452,0x45a,0x25a,0x25a,0x25a,0x2da,0x462, +0x46a,0x472,0x477,0x47d,0x485,0x48d,0x490,0x494,0x25a,0x25a,0x25a,0x49b,0x4a3,0x4a7,0x4af,0x4b5, +0x3bd,0x25a,0x25a,0x25a,0x25a,0x4bd,0x4c1,0x4c9,0x4d1,0x4d9,0x4e1,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x4e7,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x4ea,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x4f2,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x2da, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x4fa,0x25a,0x25a,0x4fe,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x505,0x25a,0x25a,0x25a,0x50a,0x25a,0x25a,0x25a,0x25a,0x50e,0x516,0x51c,0x524,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x52c,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x41a,0x25a,0x25a,0x25a,0x25a,0x25a,0x443,0x25a,0x25a,0x534,0x44d,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c, +0x541,0x549,0x53c,0x54f,0x53c,0x53c,0x553,0x25a,0x55a,0x562,0x56a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x374,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x9e8,0x9e8,0x968,0xa28,0xa68,0xaa8,0x968,0xae8,0xb28,0x968,0x968,0x968,0xb68,0xba8,0xbe8,0xc18, +0x968,0x968,0xc58,0x968,0x968,0x968,0xc88,0xcc8,0xcf8,0xd30,0x968,0xd64,0xd94,0xdcc,0x968,0xde4, +0x880,0x8b0,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f, +0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x8e6,0x19f,0x19f,0x19f,0x19f,0x19f, +0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f, +0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x19f,0x926, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x56e, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x576,0x57a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x582,0x58a,0x592,0x598,0x4f1,0x25a,0x25a,0x25a,0x5a0,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x5a8,0x5a3,0x5ab,0x5a6,0x5ae,0x5b6,0x5a4,0x5ac,0x5bd,0x5c5, +0x5cd,0x5a5,0x5ad,0x5a8,0x5a3,0x5ab,0x5a6,0x5d5,0x5a9,0x5a4,0x5ac,0x5dd,0x5e5,0x5ed,0x5f4,0x5fc, +0x5e8,0x604,0x5f7,0x60c,0x613,0x25a,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53c, +0x53c,0x53c,0x53c,0x53c,0x53c,0x53c,0x53d,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x25a, +0x25a,0x25a,0x25a,0x25a,0x25a,0x25a,0x259,0x259,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1000,0x1000,0,0x1000,0,0,0,0, +0x1000,0x1000,0,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0,0,0,0, +0,0x1000,0x1000,0x1000,0,0x1000,0,0,0x1000,0x1000,0,0x1000,0,0,0,0, +0x1000,0x1000,0,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0,0,0,0, +0,0x1000,0x1000,0x1000,0,0x1000,0,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000, +0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0,0, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0,0,0,0,0,0,0, +0,0x1000,0x1000,0,0,0x1000,0x1000,0,0,0,0,0x1000,0x1000,0,0,0x1000, +0x1000,0,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0,0, +0x1000,0x1000,0,0,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000,0,0, +0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000, +0x1000,0x1000,0,0,0,0,0,0,0,0,0,0,0x1000,0x1000,0,0, +0x1000,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0,0,0,0,0,0,0,0, +0,0,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0, +0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, 0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0,0,0,0,0x400,0,0,0,0,0,1,0,0,0,0x400,0, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0xc00,0xc00,0x800,0xc00,0xc00,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0x400,0,0,0, +0,0,1,0,0,0,0x400,0,0,0,0,0,0,0,0,0x400, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,6,8,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,4,6,8,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0, -0,0xb,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xc,0xe,0x10,0,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0, -0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0,0,0,0,0,0,0,0,0, +0,0xb,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x36,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x39,0x3b, -0,0,0,0x3e,0,0x40,0,0x1b,0x1b,0x1b,0,0,0x1d,0x1d,0x23,0, -0,0x27,0x43,0,0,0x2d,0x46,0x2f,0x2f,0x2f,0,0,0x48,0x4b,0x4f,0, -0x52,0,0x400,0,0x53,0,0x400,0x400,0x11,0x3a,0,0,0x15,0x42,0,0x25, -0,0,0,0,0,0,0,0x54,0,0,0x58,0x5a,0,0,0,0, -0,0x13,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x5c,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0,0x800,0,0x800,0x800,0,0x800,0x800,0,0x800, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0,0,0,0,0,0,0,0x1000,0x1000,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0x800,0x800,0,0x800,0x800, +0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0x800,0x800,0x800,0x800,0,0,0, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x800,0,0x800,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0x800, +0,0,0,0,0x400,0x400,0,0x400,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x400,0,0,0x400,0, +0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0, +0,0x400,0x400,0x400,0,0,0x400,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0x800,0x800, +0,0,0,0,0x400,0x400,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0x800, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0, +0,0,0,0,0,0x800,0x800,0,0,0,0,0,0,0,0,0, +0,0,0x800,0,0,0,0,0,0,0,0,0,0,0x800,0,0, +0,0,0,0,0,0x800,0x800,0,0,0,0,0,0,0,0,0, +0,0,0x800,0,0,0,0,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x800,0x800,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x800,0,0x800,0,0x800,0,0,0,0,0,0,0,0,0,0x400, +0,0,0,0,0,0,0,0,0,0x400,0,0,0,0,0x400,0, +0,0,0,0x400,0,0,0,0,0x400,0,0,0,0,0,0,0, +0,0,0,0,0,0x400,0,0,0,0,0,0,0,0x800,0x800,0x400, +0x800,0x400,0x400,0,0x400,0,0x800,0x800,0x800,0x800,0,0,0x800,0x400,0x800,0x800, +0x800,0,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0x400, +0,0,0,0,0,0,0,0,0,0x400,0,0,0,0,0x400,0, +0,0,0,0x400,0,0,0,0,0x400,0,0,0,0,0,0,0, +0,0x800,0,0x800,0,0x400,0,0,0,0,0,0,0,0,0x800,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0, +0,0,0,0x800,0,0x800,0x800,0,0,0,0,0,0,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0, +0,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x800,0x800,0,0,0,0,0,0,0, +0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0xc,0xe,0x10,0,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20, +0x22,0x24,0x26,0,0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x800,0x800,0x1000,0x1000,0x1000,0x1000,0,0,0,0, +0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0,0,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0,0, +0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0, +0,0,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, +0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x400,0,0x400, +0,0x400,0,0x400,0,0x400,0,0x400,0,0x400,0,0,0x1000,0x1000,0,0, +0,0,0,0,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000,0,0, +0,0,0,0,0x1000,0x1000,0,0,0,0,0,0,0,0,0,0x1000, +0,0,0,0,0,0,0,0x400,0x1000,0,0x400,0,0,0,0,0x1000, +0,0,0,0,0,0x400,0,0x400,0x1000,0,0,0,0,0,0,0x400, +0,0,0,0,0,0,0,0x400,0,0,0,0,0,0,0,0x400, +0,0,0x400,0x400,0,0,0,0x1000,0,0,0,0,0,0x400,0,0x400, +0x1000,0x400,0,0,0,0,0,0,0,0,0,0,0x36,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0,0,0,0,0x800,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x39,0x3b,0,0,0,0x3e,0,0x40,0,0x1b, +0x1b,0x1b,0,0,0x1d,0x1d,0x23,0,0,0x27,0x43,0,0,0x2d,0x46,0x2f, +0x2f,0x2f,0,0,0x48,0x4b,0x4f,0,0x52,0,0x400,0,0x53,0,0x400,0x400, +0x11,0x3a,0,0,0x15,0x42,0,0x25,0,0,0,0,0,0,0,0x54, +0,0,0x58,0x5a,0,0,0,0,0,0x13,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x400,0x400,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x400,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x5c,0,0,0,0,0,0,0,0,0,0, +0,0,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x5e,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x62,0,0x65,0x68,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0x6c,0,0x70,0,0x73,0,0, @@ -2440,8 +2650,36 @@ static const uint16_t auxTrie_index[5960]={ 0,0,0,0,0xbc,0xbf,0xc2,0xc5,0xc8,0xcb,0xce,0xd1,0xd4,0xd7,0xda,0xdd, 0xe0,0xe3,0,0xe6,0,0,0xe9,0xee,0xf2,0xf5,0,0xf8,0,0xfb,0xfe,0, 0,0,0,0,0,0,0,0x101,0,0x104,0x108,0,0x10b,0x10e,0x111,0x115, -0xd,0x11,0x3a,0x13,0x15,0x42,0x19,0x1b,0x1d,0x1f,0x21,0x23,0x25,0x27,0x29,0x2d, -0x47,0x2f,0x38,0x31,0x33,0x5d,0x35,0x57,0xf7,0x53,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800, +0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, +0x400,0x400,0,0,0x400,0,0x400,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400, +0x400,0x400,0x400,0,0x400,0,0x400,0,0,0x400,0x400,0,0,0,0x400,0x400, +0x400,0x400,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0,0,0,0,0x400,0x400,0x400,0x400, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, +0x400,0x400,0x400,0x400,0x400,0x400,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x400,0x800,0x400,0,0,0,0,0,0,0,0, +0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0, +0x400,0x400,0x400,0x400,0x400,0,0x400,0,0x400,0x400,0,0x400,0x400,0,0x400,0x400, +0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x800,0,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x800,0x800,0x800,0,0,0,0,0x800,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x800,0x800,0x800, +0x800,0x800,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0, +0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x400,0x400,0x400,0x400,0x400, +0,0,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0xd,0x11,0x3a,0x13,0x15,0x42,0x19,0x1b,0x1d,0x1f,0x21,0x23,0x25,0x27,0x29,0x2d, 0x47,0x2f,0x38,0x31,0x33,0x5d,0x35,0x57,0xf7,0x53,0,0,0,0,0,0, @@ -2471,189 +2709,21 @@ static const uint16_t auxTrie_index[5960]={ 0x132,0x126,0xb,0x134,5,0x136,0x138,0x13a,0xe2,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0xb,0,0,0,0, 0,0,0,0,0,0,0x13b,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xc00,0xc00,0x800,0xc00, -0xc00,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0, -0,0,0,0x400,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0, -0,0x800,0x800,0x800,0x800,0,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0, -0,0,0,0,0,0,0,0x800,0,0,0,0,0x400,0x400,0,0x400, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x400,0,0,0x400,0,0,0,0,0,0x800,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0, -0,0,0,0,0,0,0,0,0,0x400,0x400,0x400,0,0,0x400,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0, -0,0,0,0,0,0,0x800,0x800,0,0,0,0,0x400,0x400,0,0, -0,0,0,0x400,0,0,0,0,0,0,0,0,0,0x400,0,0, -0,0,0x400,0,0,0,0,0x400,0,0,0,0,0x400,0,0,0, -0,0,0,0,0,0,0,0,0,0x400,0,0,0,0,0,0, -0,0x800,0x800,0x400,0x800,0x400,0x400,0,0x400,0,0x800,0x800,0x800,0x800,0,0, -0x800,0x400,0x800,0x800,0x800,0,0x800,0x800,0,0,0,0,0,0,0,0, -0,0,0,0x400,0,0,0,0,0,0,0,0,0,0x400,0,0, -0,0,0x400,0,0,0,0,0x400,0,0,0,0,0x400,0,0,0, -0,0,0,0,0,0x800,0,0x800,0,0x400,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x400,0,0x400, -0,0x400,0,0x400,0,0x400,0,0x400,0,0x400,0,0,0x1000,0x1000,0,0, -0,0,0,0,0x1000,0x1000,0,0,0,0,0,0,0,0,0,0x1000, -0,0,0,0,0,0,0,0x400,0x1000,0,0x400,0,0,0,0,0x1000, -0,0,0,0,0,0x400,0,0x400,0x1000,0,0,0,0,0,0,0x400, -0,0,0,0,0,0,0,0x400,0,0,0,0,0,0,0,0x400, -0,0,0x400,0x400,0,0,0,0x1000,0,0,0,0,0,0x400,0,0x400, -0x1000,0x400,0,0,0x400,0x400,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x400,0x400,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x400,0,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0,0x400,0,0x400,0, -0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0x400,0,0x400,0, -0,0x400,0x400,0,0,0,0x400,0x400,0x400,0x400,0,0,0x400,0x400,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0, -0,0,0,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x400,0x800,0x400, -0,0,0,0,0,0,0,0,0,0,0x400,0x400,0x400,0x400,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x400,0x400,0,0x400,0x400,0x400,0x400,0x400,0,0x400,0, -0x400,0x400,0,0x400,0x400,0,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0x400,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x400,0x400, -0x400,0x400,0x400,0x400,0x400,0x800,0x800,0x800,0x800,0x800,0,0,0,0x800,0x800,0x800, -0x800,0x800,0x800,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, -0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x400,0x400,0x400,0x400,0x400, -0x400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1000,0x1000,0,0x1000,0,0,0,0,0x1000,0x1000,0,0x1000,0x1000,0x1000,0x1000,0, -0,0x1000,0x1000,0x1000,0,0,0,0,0,0x1000,0x1000,0x1000,0,0x1000,0,0, -0x1000,0x1000,0,0x1000,0,0,0,0,0x1000,0x1000,0,0x1000,0x1000,0x1000,0x1000,0, -0,0x1000,0x1000,0x1000,0,0,0,0,0,0x1000,0x1000,0x1000,0,0x1000,0,0x1000, -0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0, -0x1000,0,0,0,0,0,0,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0, -0,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0,0,0,0,0,0x1000,0x1000, -0x1000,0x1000,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0,0, -0,0,0,0,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0x1000,0x1000, -0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0, -0,0,0,0,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000, -0,0,0,0,0,0,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0, -0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x1000,0x1000,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0x800,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x800,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0,0, -0,0,0,0x800,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x800,0,0,0,0,0,0,0,0x800,0x800,0,0,0,0,0, -0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0, -0,0x800,0,0,0,0,0,0,0,0x800,0x800,0,0,0,0,0, -0,0,0,0,0,0,0x800,0,0,0,0,0x800,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x800,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0, -0,0,0,0x800,0,0x800,0x800,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0,0, -0,0,0,0,0,0,0,0,0x800,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0,0,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0,0, -0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000, -0x1000,0x1000,0,0,0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0, -0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0,0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, -0,0,0x1000,0x1000,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000,0,0, -0,0,0,0,0x1000,0x1000,0,0,0,0,0,0,0x1000,0x1000,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x800,0x800,0,0,0,0,0, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x800,0,0x800,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0, -0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0,0, -0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0x800,0x800,0,0x800,0,0x800,0x800,0,0x800,0x800,0,0x800, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800,0,0,0x800, -0x800,0,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0x800,0x800, -0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x800,0,0x800,0,0x800,0,0, -0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x800,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0, -0,0,0,0,0,0x800,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x800,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0,0,0, -0,0x800,0,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x800,0,0,0,0,0,0,0,0,0,0,0,0, -0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0x800, -0x800,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x800,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x800,0,0x800,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x800,0x800,0x800,0, -0,0,0,0x800,0x800,0x800,0x800,0,0,0x800,0x800,0x800,0x800,0x800,0x800,0x800, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x800,0x800,0x800,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x841,0,0x842,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xc43,0x44,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x445,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; -static const UTrie auxTrie={ +static const UTrie2 auxTrie={ auxTrie_index, + auxTrie_index+2408, NULL, - getFoldingAuxOffset, - 2240, - 3720, - 0, - FALSE + 2408, + 3848, + 0x19f, + 0x968, + 0x0, + 0x0, + 0x30000, + 0x186c, }; static const uint16_t canonStartSets[7726]={ diff --git a/icu4c/source/common/unormimp.h b/icu4c/source/common/unormimp.h index 498bf0a8b5..109907496a 100644 --- a/icu4c/source/common/unormimp.h +++ b/icu4c/source/common/unormimp.h @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 2001-2007, International Business Machines +* Copyright (C) 2001-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -28,7 +28,7 @@ #include "unicode/uiter.h" #include "unicode/unorm.h" #include "unicode/uset.h" -#include "utrie.h" +#include "utrie2.h" #include "ustr_imp.h" #include "udataswp.h" @@ -313,18 +313,19 @@ unorm_internalQuickCheck(const UChar *src, U_CFUNC uint16_t U_EXPORT2 unorm_getFCD16FromCodePoint(UChar32 c); +#ifdef XP_CPLUSPLUS + /** * Internal API, used by collation code. * Get access to the internal FCD trie table to be able to perform * incremental, per-code unit, FCD checks in collation. * One pointer is sufficient because the trie index values are offset * by the index size, so that the same pointer is used to access the trie data. + * Code points at fcdHighStart and above have a zero FCD value. * @internal */ U_CAPI const uint16_t * U_EXPORT2 -unorm_getFCDTrie(UErrorCode *pErrorCode); - -#ifdef XP_CPLUSPLUS +unorm_getFCDTrieIndex(UChar32 &fcdHighStart, UErrorCode *pErrorCode); /** * Internal API, used by collation code. @@ -333,45 +334,76 @@ unorm_getFCDTrie(UErrorCode *pErrorCode); * bits 7..0 trail combining class * * If c is a lead surrogate and the value is not 0, - * then instead of combining classes the value - * is used in unorm_getFCD16FromSurrogatePair() to get the real value - * of the supplementary code point. + * then some of c's associated supplementary code points have a non-zero FCD value. * * @internal */ static inline uint16_t unorm_getFCD16(const uint16_t *fcdTrieIndex, UChar c) { - return - fcdTrieIndex[ - (fcdTrieIndex[ - c>>UTRIE_SHIFT - ]<>UTRIE_SHIFT) - ]<index; @@ -455,7 +458,8 @@ utrie_fold(UNewTrie *trie, UNewTrieGetFoldedValue *getFoldedValue, UErrorCode *p c&=~0x3ff; #ifdef UTRIE_DEBUG - printf("supplementary data for lead surrogate U+%04lx\n", (long)(0xd7c0+(c>>10))); + ++countLeadCUWithData; + /* printf("supplementary data for lead surrogate U+%04lx\n", (long)(0xd7c0+(c>>10))); */ #endif /* is there an identical index block? */ @@ -488,6 +492,11 @@ utrie_fold(UNewTrie *trie, UNewTrieGetFoldedValue *getFoldedValue, UErrorCode *p c+=UTRIE_DATA_BLOCK_LENGTH; } } +#ifdef UTRIE_DEBUG + if(countLeadCUWithData>0) { + printf("supplementary data for %d lead surrogates\n", countLeadCUWithData); + } +#endif /* * index array overflow? @@ -785,6 +794,11 @@ utrie_serialize(UNewTrie *trie, void *dt, int32_t capacity, return length; /* preflighting */ } +#ifdef UTRIE_DEBUG + printf("**UTrieLengths(serialize)** index:%6ld data:%6ld serialized:%6ld\n", + (long)trie->indexLength, (long)trie->dataLength, (long)length); +#endif + /* set the header fields */ header=(UTrieHeader *)data; data+=sizeof(UTrieHeader); diff --git a/icu4c/source/common/utrie.h b/icu4c/source/common/utrie.h index d8d77ac4cb..2a9dc0db39 100644 --- a/icu4c/source/common/utrie.h +++ b/icu4c/source/common/utrie.h @@ -1,7 +1,7 @@ /* ****************************************************************************** * -* Copyright (C) 2001-2006, International Business Machines +* Copyright (C) 2001-2008, International Business Machines * Corporation and others. All Rights Reserved. * ****************************************************************************** @@ -168,7 +168,9 @@ struct UTrie { UBool isLatin1Linear; }; +#ifndef __UTRIE2_H__ typedef struct UTrie UTrie; +#endif /** Internal trie getter from an offset (0 if c16 is a BMP/lead units) and a 16-bit unit */ #define _UTRIE_GET_RAW(trie, data, offset, c16) \ diff --git a/icu4c/source/common/utrie2.c b/icu4c/source/common/utrie2.c new file mode 100644 index 0000000000..0ff5f42ed1 --- /dev/null +++ b/icu4c/source/common/utrie2.c @@ -0,0 +1,698 @@ +/* +****************************************************************************** +* +* Copyright (C) 2001-2008, International Business Machines +* Corporation and others. All Rights Reserved. +* +****************************************************************************** +* file name: utrie2.c +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +* +* created on: 2008aug16 (starting from a copy of utrie.c) +* created by: Markus W. Scherer +* +* This is a common implementation of a Unicode trie. +* It is a kind of compressed, serializable table of 16- or 32-bit values associated with +* Unicode code points (0..0x10ffff). +* This is the second common version of a Unicode trie (hence the name UTrie2). +* See utrie2.h for a comparison. +* +* This file contains only the runtime and enumeration code, for read-only access. +* See utrie2_builder.c for the builder code. +*/ +#ifdef UTRIE2_DEBUG +# include +#endif + +#include "unicode/utypes.h" +#include "cmemory.h" +#include "utrie2.h" +#include "utrie2_impl.h" + +/* Public UTrie2 API implementation ----------------------------------------- */ + +static uint32_t +get32(const UNewTrie2 *trie, UChar32 c, UBool fromLSCP) { + int32_t i2, block; + + if(c>=trie->highStart && (!U_IS_LEAD(c) || fromLSCP)) { + return trie->data[trie->dataLength-UTRIE2_DATA_GRANULARITY]; + } + + if(U_IS_LEAD(c) && fromLSCP) { + i2=(UTRIE2_LSCP_INDEX_2_OFFSET-(0xd800>>UTRIE2_SHIFT_2))+ + (c>>UTRIE2_SHIFT_2); + } else { + i2=trie->index1[c>>UTRIE2_SHIFT_1]+ + ((c>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK); + } + block=trie->index2[i2]; + return trie->data[block+(c&UTRIE2_DATA_MASK)]; +} + +U_CAPI uint32_t U_EXPORT2 +utrie2_get32(const UTrie2 *trie, UChar32 c) { + if(trie->data16!=NULL) { + return UTRIE2_GET16(trie, c); + } else if(trie->data32!=NULL) { + return UTRIE2_GET32(trie, c); + } else if((uint32_t)c>0x10ffff) { + return trie->errorValue; + } else { + return get32(trie->newTrie, c, TRUE); + } +} + +U_CAPI uint32_t U_EXPORT2 +utrie2_get32FromLeadSurrogateCodeUnit(const UTrie2 *trie, UChar32 c) { + if(!U_IS_LEAD(c)) { + return trie->errorValue; + } + if(trie->data16!=NULL) { + return UTRIE2_GET16_FROM_U16_SINGLE_LEAD(trie, c); + } else if(trie->data32!=NULL) { + return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c); + } else { + return get32(trie->newTrie, c, FALSE); + } +} + +static U_INLINE int32_t +u8Index(const UTrie2 *trie, UChar32 c, int32_t i) { + int32_t index= + _UTRIE2_INDEX_FROM_CP( + trie, + trie->data32==NULL ? trie->indexLength : 0, + c); + return (index<<3)|i; +} + +U_CAPI int32_t U_EXPORT2 +utrie2_internalU8NextIndex(const UTrie2 *trie, UChar32 c, + const uint8_t *src, const uint8_t *limit) { + int32_t i, length; + i=0; + /* support 64-bit pointers by avoiding cast of arbitrary difference */ + if((limit-src)<=7) { + length=(int32_t)(limit-src); + } else { + length=7; + } + c=utf8_nextCharSafeBody(src, &i, length, c, -1); + return u8Index(trie, c, i); +} + +U_CAPI int32_t U_EXPORT2 +utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, + const uint8_t *start, const uint8_t *src) { + int32_t i, length; + /* support 64-bit pointers by avoiding cast of arbitrary difference */ + if((src-start)<=7) { + i=length=(int32_t)(src-start); + } else { + i=length=7; + start=src-7; + } + c=utf8_prevCharSafeBody(start, 0, &i, c, -1); + i=length-i; /* number of bytes read backward from src */ + return u8Index(trie, c, i); +} + +U_CAPI UTrie2 * U_EXPORT2 +utrie2_openFromSerialized(UTrie2ValueBits valueBits, + const void *data, int32_t length, int32_t *pActualLength, + UErrorCode *pErrorCode) { + const UTrie2Header *header; + const uint16_t *p16; + int32_t actualLength; + + UTrie2 tempTrie={ NULL }; + UTrie2 *trie; + + if(U_FAILURE(*pErrorCode)) { + return 0; + } + + if( length<=0 || (((int32_t)data&3)!=0) || + valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits + ) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + + /* enough data for a trie header? */ + if(lengthsignature!=UTRIE2_SIG) { + *pErrorCode=U_INVALID_FORMAT_ERROR; + return 0; + } + + /* get the options */ + if(valueBits!=(UTrie2ValueBits)(header->options&UTRIE2_OPTIONS_VALUE_BITS_MASK)) { + *pErrorCode=U_INVALID_FORMAT_ERROR; + return 0; + } + + /* get the length values and offsets */ + tempTrie.indexLength=header->indexLength; + tempTrie.dataLength=header->shiftedDataLength<index2NullOffset; + tempTrie.dataNullOffset=header->dataNullOffset; + + tempTrie.highStart=header->shiftedHighStart<memory=(uint32_t *)data; + trie->length=actualLength; + trie->isMemoryOwned=FALSE; + + /* set the pointers to its index and data arrays */ + p16=(const uint16_t *)(header+1); + trie->index=p16; + p16+=trie->indexLength; + + /* get the data */ + switch(valueBits) { + case UTRIE2_16_VALUE_BITS: + trie->data16=p16; + trie->data32=NULL; + trie->initialValue=trie->index[trie->dataNullOffset]; + trie->errorValue=trie->data16[UTRIE2_BAD_UTF8_DATA_OFFSET]; + break; + case UTRIE2_32_VALUE_BITS: + trie->data16=NULL; + trie->data32=(const uint32_t *)p16; + trie->initialValue=trie->data32[trie->dataNullOffset]; + trie->errorValue=trie->data32[UTRIE2_BAD_UTF8_DATA_OFFSET]; + break; + default: + *pErrorCode=U_INVALID_FORMAT_ERROR; + return 0; + } + + if(pActualLength!=NULL) { + *pActualLength=actualLength; + } + return trie; +} + +U_CAPI UTrie2 * U_EXPORT2 +utrie2_openDummy(UTrie2ValueBits valueBits, + uint32_t initialValue, uint32_t errorValue, + UErrorCode *pErrorCode) { + UTrie2 *trie; + UTrie2Header *header; + uint32_t *p; + uint16_t *dest16; + int32_t indexLength, dataLength, length, i; + int32_t dataMove; /* >0 if the data is moved to the end of the index array */ + + if(U_FAILURE(*pErrorCode)) { + return 0; + } + + if(valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + + /* calculate the total length of the dummy trie data */ + indexLength=UTRIE2_INDEX_1_OFFSET; + dataLength=UTRIE2_DATA_START_OFFSET+UTRIE2_DATA_GRANULARITY; + length=(int32_t)sizeof(UTrie2Header)+indexLength*2; + if(valueBits==UTRIE2_16_VALUE_BITS) { + length+=dataLength*2; + } else { + length+=dataLength*4; + } + + /* allocate the trie */ + trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2)); + if(trie==NULL) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return 0; + } + uprv_memset(trie, 0, sizeof(UTrie2)); + trie->memory=uprv_malloc(length); + if(trie->memory==NULL) { + uprv_free(trie); + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return 0; + } + trie->length=length; + trie->isMemoryOwned=TRUE; + + /* set the UTrie2 fields */ + if(valueBits==UTRIE2_16_VALUE_BITS) { + dataMove=indexLength; + } else { + dataMove=0; + } + + trie->indexLength=indexLength; + trie->dataLength=dataLength; + trie->index2NullOffset=UTRIE2_INDEX_2_OFFSET; + trie->dataNullOffset=(uint16_t)dataMove; + trie->initialValue=initialValue; + trie->errorValue=errorValue; + trie->highStart=0; + trie->highValueIndex=dataMove+UTRIE2_DATA_START_OFFSET; + + /* set the header fields */ + header=(UTrie2Header *)trie->memory; + + header->signature=UTRIE2_SIG; /* "Tri2" */ + header->options=(uint16_t)valueBits; + + header->indexLength=(uint16_t)indexLength; + header->shiftedDataLength=(uint16_t)(dataLength>>UTRIE2_INDEX_SHIFT); + header->index2NullOffset=(uint16_t)UTRIE2_INDEX_2_OFFSET; + header->dataNullOffset=(uint16_t)dataMove; + header->shiftedHighStart=0; + + /* fill the index and data arrays */ + dest16=(uint16_t *)(header+1); + trie->index=dest16; + + /* write the index-2 array values shifted right by UTRIE2_INDEX_SHIFT */ + for(i=0; i>UTRIE2_INDEX_SHIFT); /* null data block */ + } + + /* write UTF-8 2-byte index-2 values, not right-shifted */ + for(i=0; i<(0xc2-0xc0); ++i) { /* C0..C1 */ + *dest16++=(uint16_t)(dataMove+UTRIE2_BAD_UTF8_DATA_OFFSET); + } + for(; i<(0xe0-0xc0); ++i) { /* C2..DF */ + *dest16++=(uint16_t)dataMove; + } + + /* write the 16/32-bit data array */ + switch(valueBits) { + case UTRIE2_16_VALUE_BITS: + /* write 16-bit data values */ + trie->data16=dest16; + trie->data32=NULL; + for(i=0; i<0x80; ++i) { + *dest16++=(uint16_t)initialValue; + } + for(; i<0xc0; ++i) { + *dest16++=(uint16_t)errorValue; + } + /* highValue and reserved values */ + for(i=0; idata16=NULL; + trie->data32=p; + for(i=0; i<0x80; ++i) { + *p++=initialValue; + } + for(; i<0xc0; ++i) { + *p++=errorValue; + } + /* highValue and reserved values */ + for(i=0; iisMemoryOwned) { + uprv_free(trie->memory); + } + if(trie->newTrie!=NULL) { + uprv_free(trie->newTrie->data); + uprv_free(trie->newTrie); + } + uprv_free(trie); + } +} + +U_CAPI int32_t U_EXPORT2 +utrie2_getVersion(const void *data, int32_t length, UBool anyEndianOk) { + uint32_t signature; + if(length<16 || data==NULL || (((int32_t)data&3)!=0)) { + return 0; + } + signature=*(const uint32_t *)data; + if(signature==UTRIE2_SIG) { + return 2; + } + if(anyEndianOk && signature==UTRIE2_OE_SIG) { + return 2; + } + if(signature==UTRIE_SIG) { + return 1; + } + if(anyEndianOk && signature==UTRIE_OE_SIG) { + return 1; + } + return 0; +} + +U_CAPI int32_t U_EXPORT2 +utrie2_swap(const UDataSwapper *ds, + const void *inData, int32_t length, void *outData, + UErrorCode *pErrorCode) { + const UTrie2Header *inTrie; + UTrie2Header trie; + int32_t dataLength, size; + UTrie2ValueBits valueBits; + + if(U_FAILURE(*pErrorCode)) { + return 0; + } + if(ds==NULL || inData==NULL || (length>=0 && outData==NULL)) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + + /* setup and swapping */ + if(length>=0 && lengthreadUInt32(inTrie->signature); + trie.options=ds->readUInt16(inTrie->options); + trie.indexLength=ds->readUInt16(inTrie->indexLength); + trie.shiftedDataLength=ds->readUInt16(inTrie->shiftedDataLength); + + valueBits=trie.options&UTRIE2_OPTIONS_VALUE_BITS_MASK; + dataLength=(int32_t)trie.shiftedDataLength<=0) { + UTrie2Header *outTrie; + + if(lengthswapArray32(ds, &inTrie->signature, 4, &outTrie->signature, pErrorCode); + ds->swapArray16(ds, &inTrie->options, 12, &outTrie->options, pErrorCode); + + /* swap the index and the data */ + switch(valueBits) { + case UTRIE2_16_VALUE_BITS: + ds->swapArray16(ds, inTrie+1, (trie.indexLength+dataLength)*2, outTrie+1, pErrorCode); + break; + case UTRIE2_32_VALUE_BITS: + ds->swapArray16(ds, inTrie+1, trie.indexLength*2, outTrie+1, pErrorCode); + ds->swapArray32(ds, (const uint16_t *)(inTrie+1)+trie.indexLength, dataLength*4, + (uint16_t *)(outTrie+1)+trie.indexLength, pErrorCode); + break; + default: + *pErrorCode=U_INVALID_FORMAT_ERROR; + return 0; + } + } + + return size; +} + +/* enumeration -------------------------------------------------------------- */ + +#define MIN(a, b) ((a)<(b) ? (a) : (b)) + +/* default UTrie2EnumValue() returns the input value itself */ +static uint32_t U_CALLCONV +enumSameValue(const void *context, uint32_t value) { + return value; +} + +/** + * Enumerate all ranges of code points with the same relevant values. + * The values are transformed from the raw trie entries by the enumValue function. + * + * Currently requires startnewTrie==NULL) { + /* frozen trie */ + index=trie->index; + data32=trie->data32; + + index2NullOffset=trie->index2NullOffset; + nullBlock=trie->dataNullOffset; + } else { + /* unfrozen, mutable trie */ + index=NULL; + data32=trie->newTrie->data; + + index2NullOffset=trie->newTrie->index2NullOffset; + nullBlock=trie->newTrie->dataNullOffset; + } + + highStart=trie->highStart; + + /* get the enumeration value that corresponds to an initial-value trie data entry */ + initialValue=enumValue(context, trie->initialValue); + + /* set variables for previous range */ + prevI2Block=-1; + prevBlock=-1; + prev=start; + prevValue=0; + + /* enumerate index-2 blocks */ + for(c=start; c>UTRIE2_SHIFT_2; + } else if(U_IS_SURROGATE_LEAD(c)) { + /* + * Enumerate values for lead surrogate code points, not code units: + * This special block has half the normal length. + */ + i2Block=UTRIE2_LSCP_INDEX_2_OFFSET; + tempLimit=MIN(0xdc00, limit); + } else { + /* + * Switch back to the normal part of the index-2 table. + * Enumerate the second half of the surrogates block. + */ + i2Block=0xd800>>UTRIE2_SHIFT_2; + tempLimit=MIN(0xe000, limit); + } + } else { + /* supplementary code points */ + if(index!=NULL) { + i2Block=index[(UTRIE2_INDEX_1_OFFSET-UTRIE2_OMITTED_BMP_INDEX_1_LENGTH)+ + (c>>UTRIE2_SHIFT_1)]; + } else { + i2Block=trie->newTrie->index1[c>>UTRIE2_SHIFT_1]; + } + if(i2Block==prevI2Block && (c-prev)>=UTRIE2_CP_PER_INDEX_1_ENTRY) { + /* + * The index-2 block is the same as the previous one, and filled with prevValue. + * Only possible for supplementary code points because the linear-BMP index-2 + * table creates unique i2Block values. + */ + c+=UTRIE2_CP_PER_INDEX_1_ENTRY; + continue; + } + } + prevI2Block=i2Block; + if(i2Block==index2NullOffset) { + /* this is the null index-2 block */ + if(prevValue!=initialValue) { + if(prev>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK; + if((c>>UTRIE2_SHIFT_1)==(tempLimit>>UTRIE2_SHIFT_1)) { + i2Limit=(tempLimit>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK; + } else { + i2Limit=UTRIE2_INDEX_2_BLOCK_LENGTH; + } + for(; i2newTrie->index2[i2Block+i2]; + } + if(block==prevBlock && (c-prev)>=UTRIE2_DATA_BLOCK_LENGTH) { + /* the block is the same as the previous one, and filled with prevValue */ + c+=UTRIE2_DATA_BLOCK_LENGTH; + continue; + } + prevBlock=block; + if(block==nullBlock) { + /* this is the null data block */ + if(prevValue!=initialValue) { + if(prevlimit) { + c=limit; /* could be higher if in the index2NullOffset */ + } else if(chighValueIndex] : + index[trie->highValueIndex]; + } else { + highValue=trie->newTrie->data[trie->newTrie->dataLength-UTRIE2_DATA_GRANULARITY]; + } + value=enumValue(context, highValue); + if(value!=prevValue) { + if(preverrorValue if c is not in the range 0..U+10ffff. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code point + * @return (uint16_t) The code point's trie value. + */ +#define UTRIE2_GET16(trie, c) _UTRIE2_GET((trie), index, (trie)->indexLength, (c)) + +/** + * Return a 32-bit trie value from a code point, with range checking. + * Returns trie->errorValue if c is not in the range 0..U+10ffff. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code point + * @return (uint32_t) The code point's trie value. + */ +#define UTRIE2_GET32(trie, c) _UTRIE2_GET((trie), data32, 0, (c)) + +/** + * UTF-16: Get the next code point (UChar32 c, out), post-increment src, + * and get a 16-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param src (const UChar *, in/out) the source text pointer + * @param limit (const UChar *, in) the limit pointer for the text, or NULL if NUL-terminated + * @param c (UChar32, out) variable for the code point + * @param result (uint16_t, out) uint16_t variable for the trie lookup result + */ +#define UTRIE2_U16_NEXT16(trie, src, limit, c, result) _UTRIE2_U16_NEXT(trie, index, src, limit, c, result) + +/** + * UTF-16: Get the next code point (UChar32 c, out), post-increment src, + * and get a 32-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param src (const UChar *, in/out) the source text pointer + * @param limit (const UChar *, in) the limit pointer for the text, or NULL if NUL-terminated + * @param c (UChar32, out) variable for the code point + * @param result (uint32_t, out) uint32_t variable for the trie lookup result + */ +#define UTRIE2_U16_NEXT32(trie, src, limit, c, result) _UTRIE2_U16_NEXT(trie, data32, src, limit, c, result) + +/** + * UTF-16: Get the previous code point (UChar32 c, out), pre-decrement src, + * and get a 16-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param start (const UChar *, in) the start pointer for the text + * @param src (const UChar *, in/out) the source text pointer + * @param c (UChar32, out) variable for the code point + * @param result (uint16_t, out) uint16_t variable for the trie lookup result + */ +#define UTRIE2_U16_PREV16(trie, start, src, c, result) _UTRIE2_U16_PREV(trie, index, start, src, c, result) + +/** + * UTF-16: Get the previous code point (UChar32 c, out), pre-decrement src, + * and get a 32-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param start (const UChar *, in) the start pointer for the text + * @param src (const UChar *, in/out) the source text pointer + * @param c (UChar32, out) variable for the code point + * @param result (uint32_t, out) uint32_t variable for the trie lookup result + */ +#define UTRIE2_U16_PREV32(trie, start, src, c, result) _UTRIE2_U16_PREV(trie, data32, start, src, c, result) + +/** + * UTF-8: Post-increment src and get a 16-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param src (const char *, in/out) the source text pointer + * @param limit (const char *, in) the limit pointer for the text (must not be NULL) + * @param result (uint16_t, out) uint16_t variable for the trie lookup result + */ +#define UTRIE2_U8_NEXT16(trie, src, limit, result)\ + _UTRIE2_U8_NEXT(trie, data16, index, src, limit, result) + +/** + * UTF-8: Post-increment src and get a 32-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param src (const char *, in/out) the source text pointer + * @param limit (const char *, in) the limit pointer for the text (must not be NULL) + * @param result (uint16_t, out) uint32_t variable for the trie lookup result + */ +#define UTRIE2_U8_NEXT32(trie, src, limit, result) \ + _UTRIE2_U8_NEXT(trie, data32, data32, src, limit, result) + +/** + * UTF-8: Pre-decrement src and get a 16-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param start (const char *, in) the start pointer for the text + * @param src (const char *, in/out) the source text pointer + * @param result (uint16_t, out) uint16_t variable for the trie lookup result + */ +#define UTRIE2_U8_PREV16(trie, start, src, result) \ + _UTRIE2_U8_PREV(trie, data16, index, start, src, result) + +/** + * UTF-8: Pre-decrement src and get a 32-bit value from the trie. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param start (const char *, in) the start pointer for the text + * @param src (const char *, in/out) the source text pointer + * @param result (uint16_t, out) uint32_t variable for the trie lookup result + */ +#define UTRIE2_U8_PREV32(trie, start, src, result) \ + _UTRIE2_U8_PREV(trie, data32, data32, start, src, result) + +/* Public UTrie2 API: optimized UTF-16 access ------------------------------- */ + +/* + * The following functions and macros are used for highly optimized UTF-16 + * text processing. The UTRIE2_U16_NEXTxy() macros do not depend on these. + * + * A UTrie2 stores separate values for lead surrogate code _units_ vs. code _points_. + * UTF-16 text processing can be optimized by detecting surrogate pairs and + * assembling supplementary code points only when there is non-trivial data + * available. + * + * At build-time, use utrie2_enumForLeadSurrogate() to see if there + * is non-trivial (non-initialValue) data for any of the supplementary + * code points associated with a lead surrogate. + * If so, then set a special (application-specific) value for the + * lead surrogate code _unit_, with utrie2_set32ForLeadSurrogateCodeUnit(). + * + * At runtime, use UTRIE2_GET16_FROM_U16_SINGLE_LEAD() or + * UTRIE2_GET32_FROM_U16_SINGLE_LEAD() per code unit. If there is non-trivial + * data and the code unit is a lead surrogate, then check if a trail surrogate + * follows. If so, assemble the supplementary code point with + * U16_GET_SUPPLEMENTARY() and look up its value with UTRIE2_GET16_FROM_SUPP() + * or UTRIE2_GET32_FROM_SUPP(); otherwise reset the lead + * surrogate's value or do a code point lookup for it. + * + * If there is only trivial data for lead and trail surrogates, then processing + * can often skip them. For example, in normalization or case mapping + * all characters that do not have any mappings are simply copied as is. + */ + +/** + * Get a value from a lead surrogate code unit as stored in the trie. + * + * @param trie the trie + * @param c the code unit (U+D800..U+DBFF) + * @return the value + */ +U_CAPI uint32_t U_EXPORT2 +utrie2_get32FromLeadSurrogateCodeUnit(const UTrie2 *trie, UChar32 c); + +/** + * Enumerate the trie values for the 1024=0x400 code points + * corresponding to a given lead surrogate. + * For example, for the lead surrogate U+D87E it will enumerate the values + * for [U+2F800..U+2FC00[. + * Used by data builder code that sets special lead surrogate code unit values + * for optimized UTF-16 string processing. + * + * Do not modify the trie during the enumeration. + * + * Except for the limited code point range, this functions just like utrie2_enum(): + * For each entry in the trie, the value to be delivered is passed through + * the UTrie2EnumValue function. + * The value is unchanged if that function pointer is NULL. + * + * For each contiguous range of code points with a given (transformed) value, + * the UTrie2EnumRange function is called. + * + * @param trie a pointer to the trie + * @param enumValue a pointer to a function that may transform the trie entry value, + * or NULL if the values from the trie are to be used directly + * @param enumRange a pointer to a function that is called for each contiguous range + * of code points with the same (transformed) value + * @param context an opaque pointer that is passed on to the callback functions + */ +U_CAPI void U_EXPORT2 +utrie2_enumForLeadSurrogate(const UTrie2 *trie, UChar32 lead, + UTrie2EnumValue *enumValue, UTrie2EnumRange *enumRange, + const void *context); + +/** + * Set a value for a lead surrogate code unit. + * + * @param trie the unfrozen trie + * @param lead the lead surrogate code unit (U+D800..U+DBFF) + * @param value the value + * @param pErrorCode an in/out ICU UErrorCode; among other possible error codes: + * - U_NO_WRITE_PERMISSION if the trie is frozen + */ +U_CAPI void U_EXPORT2 +utrie2_set32ForLeadSurrogateCodeUnit(UTrie2 *trie, + UChar32 lead, uint32_t value, + UErrorCode *pErrorCode); + +/** + * Return a 16-bit trie value from a UTF-16 single/lead code unit (<=U+ffff). + * Same as UTRIE2_GET16() if c is a BMP code point except for lead surrogates, + * but smaller and faster. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code unit, must be 0<=c<=U+ffff + * @return (uint16_t) The code unit's trie value. + */ +#define UTRIE2_GET16_FROM_U16_SINGLE_LEAD(trie, c) _UTRIE2_GET_FROM_U16_SINGLE_LEAD((trie), index, c) + +/** + * Return a 32-bit trie value from a UTF-16 single/lead code unit (<=U+ffff). + * Same as UTRIE2_GET32() if c is a BMP code point except for lead surrogates, + * but smaller and faster. + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code unit, must be 0<=c<=U+ffff + * @return (uint32_t) The code unit's trie value. + */ +#define UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c) _UTRIE2_GET_FROM_U16_SINGLE_LEAD((trie), data32, c) + +/** + * Return a 16-bit trie value from a supplementary code point (U+10000..U+10ffff). + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code point, must be U+10000<=c<=U+10ffff + * @return (uint16_t) The code point's trie value. + */ +#define UTRIE2_GET16_FROM_SUPP(trie, c) _UTRIE2_GET_FROM_SUPP((trie), index, c) + +/** + * Return a 32-bit trie value from a supplementary code point (U+10000..U+10ffff). + * + * @param trie (const UTrie2 *, in) a frozen trie + * @param c (UChar32, in) the input code point, must be U+10000<=c<=U+10ffff + * @return (uint32_t) The code point's trie value. + */ +#define UTRIE2_GET32_FROM_SUPP(trie, c) _UTRIE2_GET_FROM_SUPP((trie), data32, c) + +/* Internal definitions ----------------------------------------------------- */ + +/** Build-time trie structure. */ +struct UNewTrie2; +typedef struct UNewTrie2 UNewTrie2; + +/* + * Trie structure definition. + * + * Either the data table is 16 bits wide and accessed via the index + * pointer, with each index item increased by indexLength; + * in this case, data32==NULL, and data16 is used for direct ASCII access. + * + * Or the data table is 32 bits wide and accessed via the data32 pointer. + */ +struct UTrie2 { + /* protected: used by macros and functions for reading values */ + const uint16_t *index; + const uint16_t *data16; /* for fast UTF-8 ASCII access, if 16b data */ + const uint32_t *data32; /* NULL if 16b data is used via index */ + + int32_t indexLength, dataLength; + uint16_t index2NullOffset; /* 0xffff if there is no dedicated index-2 null block */ + uint16_t dataNullOffset; + uint32_t initialValue; + /** Value returned for out-of-range code points and illegal UTF-8. */ + uint32_t errorValue; + + /* Start of the last range which ends at U+10ffff, and its value. */ + UChar32 highStart; + int32_t highValueIndex; + + /* private: used by builder and unserialization functions */ + void *memory; /* serialized bytes; NULL if not frozen yet */ + int32_t length; /* number of serialized bytes at memory; 0 if not frozen yet */ + UBool isMemoryOwned; /* TRUE if the trie owns the memory */ + UBool padding1; + int16_t padding2; + UNewTrie2 *newTrie; /* builder object; NULL when frozen */ +}; + +/** + * Trie constants, defining shift widths, index array lengths, etc. + * + * These are needed for the runtime macros but users can treat these as + * implementation details and skip to the actual public API further below. + */ +enum { + /** Shift size for getting the index-1 table offset. */ + UTRIE2_SHIFT_1=6+5, + + /** Shift size for getting the index-2 table offset. */ + UTRIE2_SHIFT_2=5, + + /** + * Difference between the two shift sizes, + * for getting an index-1 offset from an index-2 offset. 6=11-5 + */ + UTRIE2_SHIFT_1_2=UTRIE2_SHIFT_1-UTRIE2_SHIFT_2, + + /** + * Number of index-1 entries for the BMP. 32=0x20 + * This part of the index-1 table is omitted from the serialized form. + */ + UTRIE2_OMITTED_BMP_INDEX_1_LENGTH=0x10000>>UTRIE2_SHIFT_1, + + /** Number of code points per index-1 table entry. 2048=0x800 */ + UTRIE2_CP_PER_INDEX_1_ENTRY=1<>UTRIE2_SHIFT_2. + */ + UTRIE2_INDEX_2_OFFSET=0, + + /** + * The part of the index-2 table for U+D800..U+DBFF stores values for + * lead surrogate code _units_ not code _points_. + * Values for lead surrogate code _points_ are indexed with this portion of the table. + * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.) + */ + UTRIE2_LSCP_INDEX_2_OFFSET=0x10000>>UTRIE2_SHIFT_2, + UTRIE2_LSCP_INDEX_2_LENGTH=0x400>>UTRIE2_SHIFT_2, + + /** Count the lengths of both BMP pieces. 2080=0x820 */ + UTRIE2_INDEX_2_BMP_LENGTH=UTRIE2_LSCP_INDEX_2_OFFSET+UTRIE2_LSCP_INDEX_2_LENGTH, + + /** + * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820. + * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2. + */ + UTRIE2_UTF8_2B_INDEX_2_OFFSET=UTRIE2_INDEX_2_BMP_LENGTH, + UTRIE2_UTF8_2B_INDEX_2_LENGTH=0x800>>6, /* U+0800 is the first code point after 2-byte UTF-8 */ + + /** + * The index-1 table, only used for supplementary code points, at offset 2112=0x840. + * Variable length, for code points up to highStart, where the last single-value range starts. + * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1. + * (For 0x100000 supplementary code points U+10000..U+10ffff.) + * + * The part of the index-2 table for supplementary code points starts + * after this index-1 table. + * + * Both the index-1 table and the following part of the index-2 table + * are omitted completely if there is only BMP data. + */ + UTRIE2_INDEX_1_OFFSET=UTRIE2_UTF8_2B_INDEX_2_OFFSET+UTRIE2_UTF8_2B_INDEX_2_LENGTH, + UTRIE2_MAX_INDEX_1_LENGTH=0x100000>>UTRIE2_SHIFT_1, + + /* + * Fixed layout of the first part of the data array. ----------------------- + * Starts with 4 blocks (128=0x80 entries) for ASCII. + */ + + /** + * The illegal-UTF-8 data block follows the ASCII block, at offset 128=0x80. + * Used with linear access for single bytes 0..0xbf for simple error handling. + * Length 64=0x40, not UTRIE2_DATA_BLOCK_LENGTH. + */ + UTRIE2_BAD_UTF8_DATA_OFFSET=0x80, + + /** The start of non-linear-ASCII data blocks, at offset 192=0xc0. */ + UTRIE2_DATA_START_OFFSET=0xc0 +}; + +/* Internal functions and macros -------------------------------------------- */ + +/** + * Internal function for part of the UTRIE2_U8_NEXTxx() macro implementations. + * Do not call directly. + * @internal + */ +U_INTERNAL int32_t U_EXPORT2 +utrie2_internalU8NextIndex(const UTrie2 *trie, UChar32 c, + const uint8_t *src, const uint8_t *limit); + +/** + * Internal function for part of the UTRIE2_U8_PREVxx() macro implementations. + * Do not call directly. + * @internal + */ +U_INTERNAL int32_t U_EXPORT2 +utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, + const uint8_t *start, const uint8_t *src); + + +/** Internal low-level trie getter. Returns a data index. */ +#define _UTRIE2_INDEX_RAW(offset, trieIndex, c) \ + (((int32_t)((trieIndex)[(offset)+((c)>>UTRIE2_SHIFT_2)]) \ + <>UTRIE2_SHIFT_2), trieIndex, c) + +/** Internal trie getter from a BMP code point. Returns the data index. */ +#define _UTRIE2_INDEX_FROM_BMP(trieIndex, c) \ + _UTRIE2_INDEX_RAW(U_IS_LEAD(c) ? UTRIE2_LSCP_INDEX_2_OFFSET-(0xd800>>UTRIE2_SHIFT_2) : 0, \ + trieIndex, c) + +/** Internal trie getter from a supplementary code point below highStart. Returns the data index. */ +#define _UTRIE2_INDEX_FROM_SUPP(trieIndex, c) \ + (((int32_t)((trieIndex)[ \ + (trieIndex)[(UTRIE2_INDEX_1_OFFSET-UTRIE2_OMITTED_BMP_INDEX_1_LENGTH)+ \ + ((c)>>UTRIE2_SHIFT_1)]+ \ + (((c)>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK)]) \ + <index, c) : \ + (uint32_t)(c)<=0xffff ? \ + _UTRIE2_INDEX_RAW( \ + (c)<=0xdbff ? UTRIE2_LSCP_INDEX_2_OFFSET-(0xd800>>UTRIE2_SHIFT_2) : 0, \ + (trie)->index, c) : \ + (uint32_t)(c)>0x10ffff ? \ + (asciiOffset)+UTRIE2_BAD_UTF8_DATA_OFFSET : \ + (c)>=(trie)->highStart ? \ + (trie)->highValueIndex : \ + _UTRIE2_INDEX_FROM_SUPP((trie)->index, c)) + +/** Internal trie getter from a UTF-16 single/lead code unit. Returns the data. */ +#define _UTRIE2_GET_FROM_U16_SINGLE_LEAD(trie, data, c) \ + (trie)->data[_UTRIE2_INDEX_FROM_U16_SINGLE_LEAD((trie)->index, c)] + +/** Internal trie getter from a supplementary code point. Returns the data. */ +#define _UTRIE2_GET_FROM_SUPP(trie, data, c) \ + (trie)->data[(c)>=(trie)->highStart ? (trie)->highValueIndex : \ + _UTRIE2_INDEX_FROM_SUPP((trie)->index, c)] + +/** + * Internal trie getter from a code point, with checking that c is in 0..10FFFF. + * Returns the data. + */ +#define _UTRIE2_GET(trie, data, asciiOffset, c) \ + (trie)->data[_UTRIE2_INDEX_FROM_CP(trie, asciiOffset, c)] + +/** Internal next-post-increment: get the next code point (c) and its data. */ +#define _UTRIE2_U16_NEXT(trie, data, src, limit, c, result) { \ + { \ + uint16_t __c2; \ + (c)=*(src)++; \ + if(!U16_IS_LEAD(c)) { \ + (result)=_UTRIE2_GET_FROM_U16_SINGLE_LEAD(trie, data, c); \ + } else if((src)==(limit) || !U16_IS_TRAIL(__c2=*(src))) { \ + (result)=(trie)->data[_UTRIE2_INDEX_FROM_LSCP((trie)->index, c)]; \ + } else { \ + ++(src); \ + (c)=U16_GET_SUPPLEMENTARY((c), __c2); \ + (result)=_UTRIE2_GET_FROM_SUPP((trie), data, (c)); \ + } \ + } \ +} + +/** Internal pre-decrement-previous: get the previous code point (c) and its data */ +#define _UTRIE2_U16_PREV(trie, data, start, src, c, result) { \ + { \ + uint16_t __c2; \ + (c)=*--(src); \ + if(!U16_IS_TRAIL(c) || (src)==(start) || !U16_IS_LEAD(__c2=*((src)-1))) { \ + (result)=(trie)->data[_UTRIE2_INDEX_FROM_BMP((trie)->index, c)]; \ + } else { \ + --(src); \ + (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \ + (result)=_UTRIE2_GET_FROM_SUPP((trie), data, (c)); \ + } \ + } \ +} + +/** Internal UTF-8 next-post-increment: get the next code point's data. */ +#define _UTRIE2_U8_NEXT(trie, ascii, data, src, limit, result) { \ + uint8_t __lead=(uint8_t)*(src)++; \ + if(__lead<0xc0) { \ + (result)=(trie)->ascii[__lead]; \ + } else { \ + uint8_t __t1, __t2; \ + if( /* handle U+0000..U+07FF inline */ \ + __lead<0xe0 && (src)<(limit) && \ + (__t1=(uint8_t)(*(src)-0x80))<=0x3f \ + ) { \ + ++(src); \ + (result)=(trie)->data[ \ + (trie)->index[(UTRIE2_UTF8_2B_INDEX_2_OFFSET-0xc0)+__lead]+ \ + __t1]; \ + } else if( /* handle U+0000..U+CFFF inline */ \ + __lead<0xed && ((src)+1)<(limit) && \ + (__t1=(uint8_t)(*(src)-0x80))<=0x3f && (__lead>0xe0 || __t1>=0x20) && \ + (__t2=(uint8_t)(*((src)+1)-0x80))<= 0x3f \ + ) { \ + (src)+=2; \ + (result)=(trie)->data[ \ + ((int32_t)((trie)->index[((__lead-0xe0)<<(12-UTRIE2_SHIFT_2))+ \ + (__t1<<(6-UTRIE2_SHIFT_2))+(__t2>>UTRIE2_SHIFT_2)]) \ + <data[__index>>3]; \ + } \ + } \ +} + +/** Internal UTF-8 pre-decrement-previous: get the previous code point's data. */ +#define _UTRIE2_U8_PREV(trie, ascii, data, start, src, result) { \ + uint8_t __b=(uint8_t)*--(src); \ + if(__b<0x80) { \ + (result)=(trie)->ascii[__b]; \ + } else { \ + int32_t __index=utrie2_internalU8PrevIndex((trie), __b, (const uint8_t *)(start), \ + (const uint8_t *)(src)); \ + (src)-=__index&7; \ + (result)=(trie)->data[__index>>3]; \ + } \ +} + +U_CDECL_END + +#endif diff --git a/icu4c/source/common/utrie2_builder.c b/icu4c/source/common/utrie2_builder.c new file mode 100644 index 0000000000..3dba79b2ad --- /dev/null +++ b/icu4c/source/common/utrie2_builder.c @@ -0,0 +1,1447 @@ +/* +****************************************************************************** +* +* Copyright (C) 2001-2008, International Business Machines +* Corporation and others. All Rights Reserved. +* +****************************************************************************** +* file name: utrie2_builder.c +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +* +* created on: 2008sep26 (split off from utrie2.c) +* created by: Markus W. Scherer +* +* This is a common implementation of a Unicode trie. +* It is a kind of compressed, serializable table of 16- or 32-bit values associated with +* Unicode code points (0..0x10ffff). +* This is the second common version of a Unicode trie (hence the name UTrie2). +* See utrie2.h for a comparison. +* +* This file contains only the builder code. +* See utrie2.c for the runtime and enumeration code. +*/ +#ifdef UTRIE2_DEBUG +# include +#endif + +#include "unicode/utypes.h" +#include "cmemory.h" +#include "utrie2.h" +#include "utrie2_impl.h" + +#include "utrie.h" /* for utrie2_fromUTrie() */ + +#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) + +/* Implementation notes ----------------------------------------------------- */ + +/* + * The UTRIE2_SHIFT_1, UTRIE2_SHIFT_2, UTRIE2_INDEX_SHIFT and other values + * have been chosen to minimize trie sizes overall. + * Most of the code is flexible enough to work with a range of values, + * within certain limits. + * + * Exception: Support for separate values for lead surrogate code _units_ + * vs. code _points_ was added after the constants were fixed, + * and has not been tested nor particularly designed for different constant values. + * (Especially the utrie2_enum() code that jumps to the special LSCP index-2 + * part and back.) + * + * Requires UTRIE2_SHIFT_2<=6. Otherwise 0xc0 which is the top of the ASCII-linear data + * including the bad-UTF-8-data block is not a multiple of UTRIE2_DATA_BLOCK_LENGTH + * and map[block>>UTRIE2_SHIFT_2] (used in reference counting and compaction + * remapping) stops working. + * + * Requires UTRIE2_SHIFT_1>=10 because utrie2_enumForLeadSurrogate() + * assumes that a single index-2 block is used for 0x400 code points + * corresponding to one lead surrogate. + * + * Requires UTRIE2_SHIFT_1<=16. Otherwise one single index-2 block contains + * more than one Unicode plane, and the split of the index-2 table into a BMP + * part and a supplementary part, with a gap in between, would not work. + * + * Requires UTRIE2_INDEX_SHIFT>=1 not because of the code but because + * there is data with more than 64k distinct values, + * for example for Unihan collation with a separate collation weight per + * Han character. + */ + +/* Building a trie ----------------------------------------------------------*/ + +enum { + /** The null index-2 block, following the gap in the index-2 table. */ + UNEWTRIE2_INDEX_2_NULL_OFFSET=UNEWTRIE2_INDEX_GAP_OFFSET+UNEWTRIE2_INDEX_GAP_LENGTH, + + /** The start of allocated index-2 blocks. */ + UNEWTRIE2_INDEX_2_START_OFFSET=UNEWTRIE2_INDEX_2_NULL_OFFSET+UTRIE2_INDEX_2_BLOCK_LENGTH, + + /** + * The null data block. + * Length 64=0x40 even if UTRIE2_DATA_BLOCK_LENGTH is smaller, + * to work with 6-bit trail bytes from 2-byte UTF-8. + */ + UNEWTRIE2_DATA_NULL_OFFSET=UTRIE2_DATA_START_OFFSET, + + /** The start of allocated data blocks. */ + UNEWTRIE2_DATA_START_OFFSET=UNEWTRIE2_DATA_NULL_OFFSET+0x40, + + /** + * The start of data blocks for U+0800 and above. + * Below, compaction uses a block length of 64 for 2-byte UTF-8. + * From here on, compaction uses UTRIE2_DATA_BLOCK_LENGTH. + * Data values for 0x780 code points beyond ASCII. + */ + UNEWTRIE2_DATA_0800_OFFSET=UNEWTRIE2_DATA_START_OFFSET+0x780 +}; + +/* Start with allocation of 16k data entries. */ +#define UNEWTRIE2_INITIAL_DATA_LENGTH ((int32_t)1<<14) + +/* Grow about 8x each time. */ +#define UNEWTRIE2_MEDIUM_DATA_LENGTH ((int32_t)1<<17) + +static int32_t +allocIndex2Block(UNewTrie2 *trie); + +U_CAPI UTrie2 * U_EXPORT2 +utrie2_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErrorCode) { + UTrie2 *trie; + UNewTrie2 *newTrie; + uint32_t *data; + int32_t i, j; + + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + + trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2)); + newTrie=(UNewTrie2 *)uprv_malloc(sizeof(UNewTrie2)); + data=(uint32_t *)uprv_malloc(UNEWTRIE2_INITIAL_DATA_LENGTH*4); + if(trie==NULL || newTrie==NULL || data==NULL) { + uprv_free(trie); + uprv_free(newTrie); + uprv_free(data); + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return 0; + } + + uprv_memset(trie, 0, sizeof(UTrie2)); + trie->initialValue=initialValue; + trie->errorValue=errorValue; + trie->highStart=0x110000; + trie->newTrie=newTrie; + + newTrie->data=data; + newTrie->dataCapacity=UNEWTRIE2_INITIAL_DATA_LENGTH; + newTrie->initialValue=initialValue; + newTrie->errorValue=errorValue; + newTrie->highStart=0x110000; + newTrie->firstFreeBlock=0; /* no free block in the list */ + newTrie->isCompacted=FALSE; + + /* + * preallocate and reset + * - ASCII + * - the bad-UTF-8-data block + * - the null data block + */ + for(i=0; i<0x80; ++i) { + newTrie->data[i]=initialValue; + } + for(; i<0xc0; ++i) { + newTrie->data[i]=errorValue; + } + for(i=UNEWTRIE2_DATA_NULL_OFFSET; idata[i]=initialValue; + } + newTrie->dataNullOffset=UNEWTRIE2_DATA_NULL_OFFSET; + newTrie->dataLength=UNEWTRIE2_DATA_START_OFFSET; + + /* set the index-2 indexes for the 2=0x80>>UTRIE2_SHIFT_2 ASCII data blocks */ + for(i=0, j=0; j<0x80; ++i, j+=UTRIE2_DATA_BLOCK_LENGTH) { + newTrie->index2[i]=j; + newTrie->map[i]=1; + } + /* reference counts for the bad-UTF-8-data block */ + for(; j<0xc0; ++i, j+=UTRIE2_DATA_BLOCK_LENGTH) { + newTrie->map[i]=0; + } + /* + * Reference counts for the null data block: all blocks except for the ASCII blocks. + * Plus 1 so that we don't drop this block during compaction. + * Plus as many as needed for lead surrogate code points. + */ + /* i==newTrie->dataNullOffset */ + newTrie->map[i++]= + (0x110000>>UTRIE2_SHIFT_2)- + (0x80>>UTRIE2_SHIFT_2)+ + 1+ + UTRIE2_LSCP_INDEX_2_LENGTH; + j+=UTRIE2_DATA_BLOCK_LENGTH; + for(; jmap[i]=0; + } + + /* + * set the remaining indexes in the BMP index-2 block + * to the null data block + */ + for(i=0x80>>UTRIE2_SHIFT_2; iindex2[i]=UNEWTRIE2_DATA_NULL_OFFSET; + } + + /* + * Fill the index gap with impossible values so that compaction + * does not overlap other index-2 blocks with the gap. + */ + for(i=0; iindex2[UNEWTRIE2_INDEX_GAP_OFFSET+i]=-1; + } + + /* set the indexes in the null index-2 block */ + for(i=0; iindex2[UNEWTRIE2_INDEX_2_NULL_OFFSET+i]=UNEWTRIE2_DATA_NULL_OFFSET; + } + newTrie->index2NullOffset=UNEWTRIE2_INDEX_2_NULL_OFFSET; + newTrie->index2Length=UNEWTRIE2_INDEX_2_START_OFFSET; + + /* set the index-1 indexes for the linear index-2 block */ + for(i=0, j=0; + iindex1[i]=j; + } + + /* set the remaining index-1 indexes to the null index-2 block */ + for(; iindex1[i]=UNEWTRIE2_INDEX_2_NULL_OFFSET; + } + + /* + * Preallocate and reset data for U+0080..U+07ff, + * for 2-byte UTF-8 which will be compacted in 64-blocks + * even if UTRIE2_DATA_BLOCK_LENGTH is smaller. + */ + for(i=0x80; i<0x800; i+=UTRIE2_DATA_BLOCK_LENGTH) { + utrie2_set32(trie, i, initialValue, pErrorCode); + } + + return trie; +} + +static UNewTrie2 * +cloneBuilder(const UNewTrie2 *other) { + UNewTrie2 *trie; + + trie=(UNewTrie2 *)uprv_malloc(sizeof(UNewTrie2)); + if(trie==NULL) { + return NULL; + } + + trie->data=(uint32_t *)uprv_malloc(other->dataCapacity*4); + if(trie->data==NULL) { + uprv_free(trie); + return NULL; + } + trie->dataCapacity=other->dataCapacity; + + /* clone data */ + uprv_memcpy(trie->index1, other->index1, sizeof(trie->index1)); + uprv_memcpy(trie->index2, other->index2, other->index2Length*4); + trie->index2NullOffset=other->index2NullOffset; + trie->index2Length=other->index2Length; + + uprv_memcpy(trie->data, other->data, other->dataLength*4); + trie->dataNullOffset=other->dataNullOffset; + trie->dataLength=other->dataLength; + + /* reference counters */ + if(other->isCompacted) { + trie->firstFreeBlock=0; + } else { + uprv_memcpy(trie->map, other->map, (other->dataLength>>UTRIE2_SHIFT_2)*4); + trie->firstFreeBlock=other->firstFreeBlock; + } + + trie->initialValue=other->initialValue; + trie->errorValue=other->errorValue; + trie->highStart=other->highStart; + trie->isCompacted=other->isCompacted; + + return trie; +} + +U_CAPI UTrie2 * U_EXPORT2 +utrie2_clone(const UTrie2 *other, UErrorCode *pErrorCode) { + UTrie2 *trie; + + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + if(other==NULL || (other->memory==NULL && other->newTrie==NULL)) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return NULL; + } + + trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2)); + if(trie==NULL) { + return NULL; + } + uprv_memcpy(trie, other, sizeof(UTrie2)); + + if(other->memory!=NULL) { + trie->memory=uprv_malloc(other->length); + if(trie->memory!=NULL) { + trie->isMemoryOwned=TRUE; + uprv_memcpy(trie->memory, other->memory, other->length); + + /* make the clone's pointers point to its own memory */ + trie->index=(uint16_t *)trie->memory+(other->index-(uint16_t *)other->memory); + if(other->data16!=NULL) { + trie->data16=(uint16_t *)trie->memory+(other->data16-(uint16_t *)other->memory); + } + if(other->data32!=NULL) { + trie->data32=(uint32_t *)trie->memory+(other->data32-(uint32_t *)other->memory); + } + } + } else /* other->newTrie!=NULL */ { + trie->newTrie=cloneBuilder(other->newTrie); + } + + if(trie->memory==NULL && trie->newTrie==NULL) { + uprv_free(trie); + trie=NULL; + } + return trie; +} + +typedef struct NewTrieAndStatus { + UTrie2 *trie; + UErrorCode errorCode; + UBool exclusiveLimit; /* rather than inclusive range end */ +} NewTrieAndStatus; + +static UBool U_CALLCONV +copyEnumRange(const void *context, UChar32 start, UChar32 end, uint32_t value) { + NewTrieAndStatus *nt=(NewTrieAndStatus *)context; + if(value!=nt->trie->initialValue) { + if(nt->exclusiveLimit) { + --end; + } + if(start==end) { + utrie2_set32(nt->trie, start, value, &nt->errorCode); + } else { + utrie2_setRange32(nt->trie, start, end, value, TRUE, &nt->errorCode); + } + return U_SUCCESS(nt->errorCode); + } else { + return TRUE; + } +} + +#ifdef UTRIE2_DEBUG +static void +utrie_printLengths(const UTrie *trie) { + long indexLength=trie->indexLength; + long dataLength=(long)trie->dataLength; + long totalLength=(long)sizeof(UTrieHeader)+indexLength*2+dataLength*(trie->data32!=NULL ? 4 : 2); + printf("**UTrieLengths** index:%6ld data:%6ld serialized:%6ld\n", + indexLength, dataLength, totalLength); +} + +static void +utrie2_printLengths(const UTrie2 *trie, const char *which) { + long indexLength=trie->indexLength; + long dataLength=(long)trie->dataLength; + long totalLength=(long)sizeof(UTrie2Header)+indexLength*2+dataLength*(trie->data32!=NULL ? 4 : 2); + printf("**UTrie2Lengths(%s)** index:%6ld data:%6ld serialized:%6ld\n", + which, indexLength, dataLength, totalLength); +} +#endif + +U_CAPI UTrie2 * U_EXPORT2 +utrie2_cloneAsThawed(const UTrie2 *other, UErrorCode *pErrorCode) { + NewTrieAndStatus context; + UChar lead; + + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + if(other==NULL || (other->memory==NULL && other->newTrie==NULL)) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return NULL; + } + if(other->newTrie!=NULL && !other->newTrie->isCompacted) { + return utrie2_clone(other, pErrorCode); /* clone an unfrozen trie */ + } + + /* Clone the frozen trie by enumerating it and building a new one. */ + context.trie=utrie2_open(other->initialValue, other->errorValue, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + context.exclusiveLimit=FALSE; + context.errorCode=*pErrorCode; + utrie2_enum(other, NULL, copyEnumRange, &context); + *pErrorCode=context.errorCode; + for(lead=0xd800; lead<0xdc00; ++lead) { + uint32_t value; + if(other->data32==NULL) { + value=UTRIE2_GET16_FROM_U16_SINGLE_LEAD(other, lead); + } else { + value=UTRIE2_GET32_FROM_U16_SINGLE_LEAD(other, lead); + } + if(value!=other->initialValue) { + utrie2_set32ForLeadSurrogateCodeUnit(context.trie, lead, value, pErrorCode); + } + } + if(U_FAILURE(*pErrorCode)) { + utrie2_close(context.trie); + context.trie=NULL; + } + return context.trie; +} + +/* Almost the same as utrie2_cloneAsThawed() but copies a UTrie and freezes the clone. */ +U_CAPI UTrie2 * U_EXPORT2 +utrie2_fromUTrie(const UTrie *trie1, uint32_t errorValue, UErrorCode *pErrorCode) { + NewTrieAndStatus context; + UChar lead; + + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + if(trie1==NULL) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return NULL; + } + context.trie=utrie2_open(trie1->initialValue, errorValue, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return NULL; + } + context.exclusiveLimit=TRUE; + context.errorCode=*pErrorCode; + utrie_enum(trie1, NULL, copyEnumRange, &context); + *pErrorCode=context.errorCode; + for(lead=0xd800; lead<0xdc00; ++lead) { + uint32_t value; + if(trie1->data32==NULL) { + value=UTRIE_GET16_FROM_LEAD(trie1, lead); + } else { + value=UTRIE_GET32_FROM_LEAD(trie1, lead); + } + if(value!=trie1->initialValue) { + utrie2_set32ForLeadSurrogateCodeUnit(context.trie, lead, value, pErrorCode); + } + } + if(U_SUCCESS(*pErrorCode)) { + utrie2_freeze(context.trie, + trie1->data32!=NULL ? UTRIE2_32_VALUE_BITS : UTRIE2_16_VALUE_BITS, + pErrorCode); + } +#ifdef UTRIE2_DEBUG + if(U_SUCCESS(*pErrorCode)) { + utrie_printLengths(trie1); + utrie2_printLengths(context.trie, "fromUTrie"); + } +#endif + if(U_FAILURE(*pErrorCode)) { + utrie2_close(context.trie); + context.trie=NULL; + } + return context.trie; +} + +static U_INLINE UBool +isInNullBlock(UNewTrie2 *trie, UChar32 c, UBool forLSCP) { + int32_t i2, block; + + if(U_IS_LEAD(c) && forLSCP) { + i2=(UTRIE2_LSCP_INDEX_2_OFFSET-(0xd800>>UTRIE2_SHIFT_2))+ + (c>>UTRIE2_SHIFT_2); + } else { + i2=trie->index1[c>>UTRIE2_SHIFT_1]+ + ((c>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK); + } + block=trie->index2[i2]; + return (UBool)(block==trie->dataNullOffset); +} + +static int32_t +allocIndex2Block(UNewTrie2 *trie) { + int32_t newBlock, newTop; + + newBlock=trie->index2Length; + newTop=newBlock+UTRIE2_INDEX_2_BLOCK_LENGTH; + if(newTop>LENGTHOF(trie->index2)) { + /* + * Should never occur. + * Either UTRIE2_MAX_BUILD_TIME_INDEX_LENGTH is incorrect, + * or the code writes more values than should be possible. + */ + return -1; + } + trie->index2Length=newTop; + uprv_memcpy(trie->index2+newBlock, trie->index2+trie->index2NullOffset, UTRIE2_INDEX_2_BLOCK_LENGTH*4); + return newBlock; +} + +static int32_t +getIndex2Block(UNewTrie2 *trie, UChar32 c, UBool forLSCP) { + int32_t i1, i2; + + if(U_IS_LEAD(c) && forLSCP) { + return UTRIE2_LSCP_INDEX_2_OFFSET; + } + + i1=c>>UTRIE2_SHIFT_1; + i2=trie->index1[i1]; + if(i2==trie->index2NullOffset) { + i2=allocIndex2Block(trie); + if(i2<0) { + return -1; /* program error */ + } + trie->index1[i1]=i2; + } + return i2; +} + +static int32_t +allocDataBlock(UNewTrie2 *trie, int32_t copyBlock) { + int32_t newBlock, newTop; + + if(trie->firstFreeBlock!=0) { + /* get the first free block */ + newBlock=trie->firstFreeBlock; + trie->firstFreeBlock=-trie->map[newBlock>>UTRIE2_SHIFT_2]; + } else { + /* get a new block from the high end */ + newBlock=trie->dataLength; + newTop=newBlock+UTRIE2_DATA_BLOCK_LENGTH; + if(newTop>trie->dataCapacity) { + /* out of memory in the data array */ + int32_t capacity; + uint32_t *data; + + if(trie->dataCapacitydataCapacitydata, trie->dataLength*4); + uprv_free(trie->data); + trie->data=data; + trie->dataCapacity=capacity; + } + trie->dataLength=newTop; + } + uprv_memcpy(trie->data+newBlock, trie->data+copyBlock, UTRIE2_DATA_BLOCK_LENGTH*4); + trie->map[newBlock>>UTRIE2_SHIFT_2]=0; + return newBlock; +} + +/* call when the block's reference counter reaches 0 */ +static void +releaseDataBlock(UNewTrie2 *trie, int32_t block) { + /* put this block at the front of the free-block chain */ + trie->map[block>>UTRIE2_SHIFT_2]=-trie->firstFreeBlock; + trie->firstFreeBlock=block; +} + +static U_INLINE UBool +isWritableBlock(UNewTrie2 *trie, int32_t block) { + return (UBool)(block!=trie->dataNullOffset && 1==trie->map[block>>UTRIE2_SHIFT_2]); +} + +static U_INLINE void +setIndex2Entry(UNewTrie2 *trie, int32_t i2, int32_t block) { + int32_t oldBlock; + ++trie->map[block>>UTRIE2_SHIFT_2]; /* increment first, in case block==oldBlock! */ + oldBlock=trie->index2[i2]; + if(0 == --trie->map[oldBlock>>UTRIE2_SHIFT_2]) { + releaseDataBlock(trie, oldBlock); + } + trie->index2[i2]=block; +} + +/** + * No error checking for illegal arguments. + * + * @return -1 if no new data block available (out of memory in data array) + * @internal + */ +static int32_t +getDataBlock(UNewTrie2 *trie, UChar32 c, UBool forLSCP) { + int32_t i2, oldBlock, newBlock; + + i2=getIndex2Block(trie, c, forLSCP); + if(i2<0) { + return -1; /* program error */ + } + + i2+=(c>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK; + oldBlock=trie->index2[i2]; + if(isWritableBlock(trie, oldBlock)) { + return oldBlock; + } + + /* allocate a new data block */ + newBlock=allocDataBlock(trie, oldBlock); + if(newBlock<0) { + /* out of memory in the data array */ + return -1; + } + setIndex2Entry(trie, i2, newBlock); + return newBlock; +} + +/** + * @return TRUE if the value was successfully set + */ +static void +set32(UNewTrie2 *trie, + UChar32 c, UBool forLSCP, uint32_t value, + UErrorCode *pErrorCode) { + int32_t block; + + if(trie==NULL || trie->isCompacted) { + *pErrorCode=U_NO_WRITE_PERMISSION; + return; + } + + block=getDataBlock(trie, c, forLSCP); + if(block<0) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; + } + + trie->data[block+(c&UTRIE2_DATA_MASK)]=value; +} + +U_CAPI void U_EXPORT2 +utrie2_set32(UTrie2 *trie, UChar32 c, uint32_t value, UErrorCode *pErrorCode) { + if(U_FAILURE(*pErrorCode)) { + return; + } + if((uint32_t)c>0x10ffff) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return; + } + set32(trie->newTrie, c, TRUE, value, pErrorCode); +} + +U_CAPI void U_EXPORT2 +utrie2_set32ForLeadSurrogateCodeUnit(UTrie2 *trie, + UChar32 c, uint32_t value, + UErrorCode *pErrorCode) { + if(U_FAILURE(*pErrorCode)) { + return; + } + if(!U_IS_LEAD(c)) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return; + } + set32(trie->newTrie, c, FALSE, value, pErrorCode); +} + +static void +writeBlock(uint32_t *block, uint32_t value) { + uint32_t *limit=block+UTRIE2_DATA_BLOCK_LENGTH; + while(block0x10ffff || (uint32_t)end>0x10ffff || start>end) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return; + } + newTrie=trie->newTrie; + if(newTrie==NULL || newTrie->isCompacted) { + *pErrorCode=U_NO_WRITE_PERMISSION; + return; + } + if(!overwrite && value==newTrie->initialValue) { + return; /* nothing to do */ + } + + limit=end+1; + if(start&UTRIE2_DATA_MASK) { + UChar32 nextStart; + + /* set partial block at [start..following block boundary[ */ + block=getDataBlock(newTrie, start, TRUE); + if(block<0) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; + } + + nextStart=(start+UTRIE2_DATA_BLOCK_LENGTH)&~UTRIE2_DATA_MASK; + if(nextStart<=limit) { + fillBlock(newTrie->data+block, start&UTRIE2_DATA_MASK, UTRIE2_DATA_BLOCK_LENGTH, + value, newTrie->initialValue, overwrite); + start=nextStart; + } else { + fillBlock(newTrie->data+block, start&UTRIE2_DATA_MASK, limit&UTRIE2_DATA_MASK, + value, newTrie->initialValue, overwrite); + return; + } + } + + /* number of positions in the last, partial block */ + rest=limit&UTRIE2_DATA_MASK; + + /* round down limit to a block boundary */ + limit&=~UTRIE2_DATA_MASK; + + /* iterate over all-value blocks */ + if(value==newTrie->initialValue) { + repeatBlock=newTrie->dataNullOffset; + } else { + repeatBlock=-1; + } + + while(startinitialValue && isInNullBlock(newTrie, start, TRUE)) { + start+=UTRIE2_DATA_BLOCK_LENGTH; /* nothing to do */ + continue; + } + + /* get index value */ + i2=getIndex2Block(newTrie, start, TRUE); + if(i2<0) { + *pErrorCode=U_INTERNAL_PROGRAM_ERROR; + return; + } + i2+=(start>>UTRIE2_SHIFT_2)&UTRIE2_INDEX_2_MASK; + block=newTrie->index2[i2]; + if(isWritableBlock(newTrie, block)) { + /* already allocated */ + if(overwrite && block>=UNEWTRIE2_DATA_0800_OFFSET) { + /* + * We overwrite all values, and it's not a + * protected (ASCII-linear or 2-byte UTF-8) block: + * replace with the repeatBlock. + */ + setRepeatBlock=TRUE; + } else { + /* !overwrite, or protected block: just write the values into this block */ + fillBlock(newTrie->data+block, + 0, UTRIE2_DATA_BLOCK_LENGTH, + value, newTrie->initialValue, overwrite); + } + } else if(newTrie->data[block]!=value && (overwrite || block==newTrie->dataNullOffset)) { + /* + * Set the repeatBlock instead of the null block or previous repeat block: + * + * If !isWritableBlock() then all entries in the block have the same value + * because it's the null block or a range block (the repeatBlock from a previous + * call to utrie2_setRange32()). + * No other blocks are used multiple times before compacting. + * + * The null block is the only non-writable block with the initialValue because + * of the repeatBlock initialization above. (If value==initialValue, then + * the repeatBlock will be the null data block.) + * + * We set our repeatBlock if the desired value differs from the block's value, + * and if we overwrite any data or if the data is all initial values + * (which is the same as the block being the null block, see above). + */ + setRepeatBlock=TRUE; + } + if(setRepeatBlock) { + if(repeatBlock>=0) { + setIndex2Entry(newTrie, i2, repeatBlock); + } else { + /* create and set and fill the repeatBlock */ + repeatBlock=getDataBlock(newTrie, start, TRUE); + if(repeatBlock<0) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; + } + writeBlock(newTrie->data+repeatBlock, value); + } + } + + start+=UTRIE2_DATA_BLOCK_LENGTH; + } + + if(rest>0) { + /* set partial block at [last block boundary..limit[ */ + block=getDataBlock(newTrie, start, TRUE); + if(block<0) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; + } + + fillBlock(newTrie->data+block, 0, rest, value, newTrie->initialValue, overwrite); + } + + return; +} + +/* compaction --------------------------------------------------------------- */ + +static U_INLINE UBool +equal_int32(const int32_t *s, const int32_t *t, int32_t length) { + while(length>0 && *s==*t) { + ++s; + ++t; + --length; + } + return (UBool)(length==0); +} + +static U_INLINE UBool +equal_uint32(const uint32_t *s, const uint32_t *t, int32_t length) { + while(length>0 && *s==*t) { + ++s; + ++t; + --length; + } + return (UBool)(length==0); +} + +static int32_t +findSameIndex2Block(const int32_t *index, int32_t index2Length, int32_t otherBlock) { + int32_t block; + + /* ensure that we do not even partially get past index2Length */ + index2Length-=UTRIE2_INDEX_2_BLOCK_LENGTH; + + for(block=0; block<=index2Length; ++block) { + if(equal_int32(index+block, index+otherBlock, UTRIE2_INDEX_2_BLOCK_LENGTH)) { + return block; + } + } + return -1; +} + +static int32_t +findSameDataBlock(const uint32_t *data, int32_t dataLength, int32_t otherBlock, int32_t blockLength) { + int32_t block; + + /* ensure that we do not even partially get past dataLength */ + dataLength-=blockLength; + + for(block=0; block<=dataLength; block+=UTRIE2_DATA_GRANULARITY) { + if(equal_uint32(data+block, data+otherBlock, blockLength)) { + return block; + } + } + return -1; +} + +/* + * Find the start of the last range in the trie by enumerating backward. + * Indexes for supplementary code points higher than this will be omitted. + */ +static UChar32 +findHighStart(UNewTrie2 *trie, uint32_t highValue) { + const uint32_t *data32; + + uint32_t value, initialValue; + UChar32 c, prev; + int32_t i1, i2, j, i2Block, prevI2Block, index2NullOffset, block, prevBlock, nullBlock; + + data32=trie->data; + initialValue=trie->initialValue; + + index2NullOffset=trie->index2NullOffset; + nullBlock=trie->dataNullOffset; + + /* set variables for previous range */ + if(highValue==initialValue) { + prevI2Block=index2NullOffset; + prevBlock=nullBlock; + } else { + prevI2Block=-1; + prevBlock=-1; + } + prev=0x110000; + + /* enumerate index-2 blocks */ + i1=UNEWTRIE2_INDEX_1_LENGTH; + c=prev; + while(c>0) { + i2Block=trie->index1[--i1]; + if(i2Block==prevI2Block) { + /* the index-2 block is the same as the previous one, and filled with highValue */ + c-=UTRIE2_CP_PER_INDEX_1_ENTRY; + continue; + } + prevI2Block=i2Block; + if(i2Block==index2NullOffset) { + /* this is the null index-2 block */ + if(highValue!=initialValue) { + return c; + } + c-=UTRIE2_CP_PER_INDEX_1_ENTRY; + } else { + /* enumerate data blocks for one index-2 block */ + for(i2=UTRIE2_INDEX_2_BLOCK_LENGTH; i2>0;) { + block=trie->index2[i2Block+ --i2]; + if(block==prevBlock) { + /* the block is the same as the previous one, and filled with highValue */ + c-=UTRIE2_DATA_BLOCK_LENGTH; + continue; + } + prevBlock=block; + if(block==nullBlock) { + /* this is the null data block */ + if(highValue!=initialValue) { + return c; + } + c-=UTRIE2_DATA_BLOCK_LENGTH; + } else { + for(j=UTRIE2_DATA_BLOCK_LENGTH; j>0;) { + value=data32[block+ --j]; + if(value!=highValue) { + return c; + } + --c; + } + } + } + } + } + + /* deliver last range */ + return 0; +} + +/* + * Compact a build-time trie. + * + * The compaction + * - removes blocks that are identical with earlier ones + * - overlaps adjacent blocks as much as possible (if overlap==TRUE) + * - moves blocks in steps of the data granularity + * - moves and overlaps blocks that overlap with multiple values in the overlap region + * + * It does not + * - try to move and overlap blocks that are not already adjacent + */ +static void +compactData(UNewTrie2 *trie) { + int32_t start, newStart, movedStart; + int32_t blockLength, overlap; + int32_t i, mapIndex, blockCount; + + /* do not compact linear-ASCII data */ + newStart=UTRIE2_DATA_START_OFFSET; + for(start=0, i=0; startmap[i]=start; + } + + /* + * Start with a block length of 64 for 2-byte UTF-8, + * then switch to UTRIE2_DATA_BLOCK_LENGTH. + */ + blockLength=64; + blockCount=blockLength>>UTRIE2_SHIFT_2; + for(start=newStart; startdataLength;) { + /* + * start: index of first entry of current block + * newStart: index where the current block is to be moved + * (right after current end of already-compacted data) + */ + if(start==UNEWTRIE2_DATA_0800_OFFSET) { + blockLength=UTRIE2_DATA_BLOCK_LENGTH; + blockCount=1; + } + + /* skip blocks that are not used */ + if(trie->map[start>>UTRIE2_SHIFT_2]<=0) { + /* advance start to the next block */ + start+=blockLength; + + /* leave newStart with the previous block! */ + continue; + } + + /* search for an identical block */ + if( (movedStart=findSameDataBlock(trie->data, newStart, start, blockLength)) + >=0 + ) { + /* found an identical block, set the other block's index value for the current block */ + for(i=blockCount, mapIndex=start>>UTRIE2_SHIFT_2; i>0; --i) { + trie->map[mapIndex++]=movedStart; + movedStart+=UTRIE2_DATA_BLOCK_LENGTH; + } + + /* advance start to the next block */ + start+=blockLength; + + /* leave newStart with the previous block! */ + continue; + } + + /* see if the beginning of this block can be overlapped with the end of the previous block */ + /* look for maximum overlap (modulo granularity) with the previous, adjacent block */ + for(overlap=blockLength-UTRIE2_DATA_GRANULARITY; + overlap>0 && !equal_uint32(trie->data+(newStart-overlap), trie->data+start, overlap); + overlap-=UTRIE2_DATA_GRANULARITY) {} + + if(overlap>0 || newStart>UTRIE2_SHIFT_2; i>0; --i) { + trie->map[mapIndex++]=movedStart; + movedStart+=UTRIE2_DATA_BLOCK_LENGTH; + } + + /* move the non-overlapping indexes to their new positions */ + start+=overlap; + for(i=blockLength-overlap; i>0; --i) { + trie->data[newStart++]=trie->data[start++]; + } + } else /* no overlap && newStart==start */ { + for(i=blockCount, mapIndex=start>>UTRIE2_SHIFT_2; i>0; --i) { + trie->map[mapIndex++]=start; + start+=UTRIE2_DATA_BLOCK_LENGTH; + } + newStart=start; + } + } + + /* now adjust the index-2 table */ + for(i=0; iindex2Length; ++i) { + if(i==UNEWTRIE2_INDEX_GAP_OFFSET) { + /* Gap indexes are invalid (-1). Skip over the gap. */ + i+=UNEWTRIE2_INDEX_GAP_LENGTH; + } + trie->index2[i]=trie->map[trie->index2[i]>>UTRIE2_SHIFT_2]; + } + trie->dataNullOffset=trie->map[trie->dataNullOffset>>UTRIE2_SHIFT_2]; + + /* ensure dataLength alignment */ + while((newStart&(UTRIE2_DATA_GRANULARITY-1))!=0) { + trie->data[newStart++]=trie->initialValue; + } + +#ifdef UTRIE2_DEBUG + /* we saved some space */ + printf("compacting UTrie2: count of 32-bit data words %lu->%lu\n", + (long)trie->dataLength, (long)newStart); +#endif + + trie->dataLength=newStart; +} + +static void +compactIndex2(UNewTrie2 *trie) { + int32_t i, start, newStart, movedStart, overlap; + + /* do not compact linear-BMP index-2 blocks */ + newStart=UTRIE2_INDEX_2_BMP_LENGTH; + for(start=0, i=0; startmap[i]=start; + } + + /* Reduce the index table gap to what will be needed at runtime. */ + newStart+=UTRIE2_UTF8_2B_INDEX_2_LENGTH+((trie->highStart-0x10000)>>UTRIE2_SHIFT_1); + + for(start=UNEWTRIE2_INDEX_2_NULL_OFFSET; startindex2Length;) { + /* + * start: index of first entry of current block + * newStart: index where the current block is to be moved + * (right after current end of already-compacted data) + */ + + /* search for an identical block */ + if( (movedStart=findSameIndex2Block(trie->index2, newStart, start)) + >=0 + ) { + /* found an identical block, set the other block's index value for the current block */ + trie->map[start>>UTRIE2_SHIFT_1_2]=movedStart; + + /* advance start to the next block */ + start+=UTRIE2_INDEX_2_BLOCK_LENGTH; + + /* leave newStart with the previous block! */ + continue; + } + + /* see if the beginning of this block can be overlapped with the end of the previous block */ + /* look for maximum overlap with the previous, adjacent block */ + for(overlap=UTRIE2_INDEX_2_BLOCK_LENGTH-1; + overlap>0 && !equal_int32(trie->index2+(newStart-overlap), trie->index2+start, overlap); + --overlap) {} + + if(overlap>0 || newStartmap[start>>UTRIE2_SHIFT_1_2]=newStart-overlap; + + /* move the non-overlapping indexes to their new positions */ + start+=overlap; + for(i=UTRIE2_INDEX_2_BLOCK_LENGTH-overlap; i>0; --i) { + trie->index2[newStart++]=trie->index2[start++]; + } + } else /* no overlap && newStart==start */ { + trie->map[start>>UTRIE2_SHIFT_1_2]=start; + start+=UTRIE2_INDEX_2_BLOCK_LENGTH; + newStart=start; + } + } + + /* now adjust the index-1 table */ + for(i=0; iindex1[i]=trie->map[trie->index1[i]>>UTRIE2_SHIFT_1_2]; + } + trie->index2NullOffset=trie->map[trie->index2NullOffset>>UTRIE2_SHIFT_1_2]; + + /* + * Ensure data table alignment: + * Needs to be granularity-aligned for 16-bit trie + * (so that dataMove will be down-shiftable), + * and 2-aligned for uint32_t data. + */ + while((newStart&((UTRIE2_DATA_GRANULARITY-1)|1))!=0) { + /* Arbitrary value: 0x3fffc not possible for real data. */ + trie->index2[newStart++]=(int32_t)0xffff<%lu\n", + (long)trie->index2Length, (long)newStart); +#endif + + trie->index2Length=newStart; +} + +static void +compactTrie(UTrie2 *trie, UErrorCode *pErrorCode) { + UNewTrie2 *newTrie; + UChar32 highStart, suppHighStart; + uint32_t highValue; + + newTrie=trie->newTrie; + + /* find highStart and round it up */ + highValue=utrie2_get32(trie, 0x10ffff); + highStart=findHighStart(newTrie, highValue); + highStart=(highStart+(UTRIE2_CP_PER_INDEX_1_ENTRY-1))&~(UTRIE2_CP_PER_INDEX_1_ENTRY-1); + if(highStart==0x110000) { + highValue=trie->errorValue; + } + + /* + * Set trie->highStart only after utrie2_get32(trie, highStart). + * Otherwise utrie2_get32(trie, highStart) would try to read the highValue. + */ + trie->highStart=newTrie->highStart=highStart; + +#ifdef UTRIE2_DEBUG + printf("UTrie2: highStart U+%04lx highValue 0x%lx initialValue 0x%lx\n", + (long)highStart, (long)highValue, (long)trie->initialValue); +#endif + + if(highStart<0x110000) { + /* Blank out [highStart..10ffff] to release associated data blocks. */ + suppHighStart= highStart<=0x10000 ? 0x10000 : highStart; + utrie2_setRange32(trie, suppHighStart, 0x10ffff, trie->initialValue, TRUE, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return; + } + } + + compactData(newTrie); + if(highStart>0x10000) { + compactIndex2(newTrie); +#ifdef UTRIE2_DEBUG + } else { + printf("UTrie2: highStart U+%04lx count of 16-bit index-2 words %lu->%lu\n", + (long)highStart, (long)trie->newTrie->index2Length, (long)UTRIE2_INDEX_1_OFFSET); +#endif + } + + /* + * Store the highValue in the data array and round up the dataLength. + * Must be done after compactData() because that assumes that dataLength + * is a multiple of UTRIE2_DATA_BLOCK_LENGTH. + */ + newTrie->data[newTrie->dataLength++]=highValue; + while((newTrie->dataLength&(UTRIE2_DATA_GRANULARITY-1))!=0) { + newTrie->data[newTrie->dataLength++]=trie->initialValue; + } + + newTrie->isCompacted=TRUE; +} + +/* serialization ------------------------------------------------------------ */ + +/** + * Maximum length of the runtime index array. + * Limited by its own 16-bit index values, and by uint16_t UTrie2Header.indexLength. + * (The actual maximum length is lower, + * (0x110000>>UTRIE2_SHIFT_2)+UTRIE2_UTF8_2B_INDEX_2_LENGTH+UTRIE2_MAX_INDEX_1_LENGTH.) + */ +#define UTRIE2_MAX_INDEX_LENGTH 0xffff + +/** + * Maximum length of the runtime data array. + * Limited by 16-bit index values that are left-shifted by UTRIE2_INDEX_SHIFT, + * and by uint16_t UTrie2Header.shiftedDataLength. + */ +#define UTRIE2_MAX_DATA_LENGTH (0xffff<0 if the data is moved to the end of the index array */ + UChar32 highStart; + + /* argument check */ + if(U_FAILURE(*pErrorCode)) { + return; + } + if( trie==NULL || + valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits + ) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return; + } + newTrie=trie->newTrie; + if(newTrie==NULL) { + /* already frozen */ + UTrie2ValueBits frozenValueBits= + trie->data16!=NULL ? UTRIE2_16_VALUE_BITS : UTRIE2_32_VALUE_BITS; + if(valueBits!=frozenValueBits) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + } + return; + } + + /* compact if necessary */ + if(!newTrie->isCompacted) { + compactTrie(trie, pErrorCode); + if(U_FAILURE(*pErrorCode)) { + return; + } + } + highStart=trie->highStart; + + if(highStart<=0x10000) { + allIndexesLength=UTRIE2_INDEX_1_OFFSET; + } else { + allIndexesLength=newTrie->index2Length; + } + if(valueBits==UTRIE2_16_VALUE_BITS) { + dataMove=allIndexesLength; + } else { + dataMove=0; + } + + /* are indexLength and dataLength within limits? */ + if( /* for unshifted indexLength */ + allIndexesLength>UTRIE2_MAX_INDEX_LENGTH || + /* for unshifted dataNullOffset */ + (dataMove+newTrie->dataNullOffset)>0xffff || + /* for unshifted 2-byte UTF-8 index-2 values */ + (dataMove+UNEWTRIE2_DATA_0800_OFFSET)>0xffff || + /* for shiftedDataLength */ + (dataMove+newTrie->dataLength)>UTRIE2_MAX_DATA_LENGTH + ) { + *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR; + return; + } + + /* calculate the total serialized length */ + length=sizeof(UTrie2Header)+allIndexesLength*2; + if(valueBits==UTRIE2_16_VALUE_BITS) { + length+=newTrie->dataLength*2; + } else { + length+=newTrie->dataLength*4; + } + + trie->memory=uprv_malloc(length); + if(trie->memory==NULL) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; + } + trie->length=length; + trie->isMemoryOwned=TRUE; + + trie->indexLength=allIndexesLength; + trie->dataLength=newTrie->dataLength; + if(highStart<=0x10000) { + trie->index2NullOffset=0xffff; + } else { + trie->index2NullOffset=UTRIE2_INDEX_2_OFFSET+newTrie->index2NullOffset; + } + trie->dataNullOffset=(uint16_t)(dataMove+newTrie->dataNullOffset); + trie->highValueIndex=dataMove+trie->dataLength-UTRIE2_DATA_GRANULARITY; + + /* set the header fields */ + header=(UTrie2Header *)trie->memory; + + header->signature=UTRIE2_SIG; /* "Tri2" */ + header->options=(uint16_t)valueBits; + + header->indexLength=(uint16_t)trie->indexLength; + header->shiftedDataLength=(uint16_t)(trie->dataLength>>UTRIE2_INDEX_SHIFT); + header->index2NullOffset=trie->index2NullOffset; + header->dataNullOffset=trie->dataNullOffset; + header->shiftedHighStart=(uint16_t)(highStart>>UTRIE2_SHIFT_1); + + /* fill the index and data arrays */ + dest16=(uint16_t *)(header+1); + trie->index=dest16; + + /* write the index-2 array values shifted right by UTRIE2_INDEX_SHIFT, after adding dataMove */ + p=(uint32_t *)newTrie->index2; + for(i=UTRIE2_INDEX_2_BMP_LENGTH; i>0; --i) { + *dest16++=(uint16_t)((dataMove + *p++)>>UTRIE2_INDEX_SHIFT); + } + + /* write UTF-8 2-byte index-2 values, not right-shifted */ + for(i=0; i<(0xc2-0xc0); ++i) { /* C0..C1 */ + *dest16++=(uint16_t)(dataMove+UTRIE2_BAD_UTF8_DATA_OFFSET); + } + for(; i<(0xe0-0xc0); ++i) { /* C2..DF */ + *dest16++=(uint16_t)(dataMove+newTrie->index2[i<<(6-UTRIE2_SHIFT_2)]); + } + + if(highStart>0x10000) { + int32_t index1Length=(highStart-0x10000)>>UTRIE2_SHIFT_1; + int32_t index2Offset=UTRIE2_INDEX_2_BMP_LENGTH+UTRIE2_UTF8_2B_INDEX_2_LENGTH+index1Length; + + /* write 16-bit index-1 values for supplementary code points */ + p=(uint32_t *)newTrie->index1+UTRIE2_OMITTED_BMP_INDEX_1_LENGTH; + for(i=index1Length; i>0; --i) { + *dest16++=(uint16_t)(UTRIE2_INDEX_2_OFFSET + *p++); + } + + /* + * write the index-2 array values for supplementary code points, + * shifted right by UTRIE2_INDEX_SHIFT, after adding dataMove + */ + p=(uint32_t *)newTrie->index2+index2Offset; + for(i=newTrie->index2Length-index2Offset; i>0; --i) { + *dest16++=(uint16_t)((dataMove + *p++)>>UTRIE2_INDEX_SHIFT); + } + } + + /* write the 16/32-bit data array */ + switch(valueBits) { + case UTRIE2_16_VALUE_BITS: + /* write 16-bit data values */ + trie->data16=dest16; + trie->data32=NULL; + p=newTrie->data; + for(i=newTrie->dataLength; i>0; --i) { + *dest16++=(uint16_t)*p++; + } + break; + case UTRIE2_32_VALUE_BITS: + /* write 32-bit data values */ + trie->data16=NULL; + trie->data32=(uint32_t *)dest16; + uprv_memcpy(dest16, newTrie->data, newTrie->dataLength*4); + break; + default: + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return; + } + + /* Delete the UNewTrie2. */ + uprv_free(newTrie->data); + uprv_free(newTrie); + trie->newTrie=NULL; +} + +U_CAPI UBool U_EXPORT2 +utrie2_isFrozen(const UTrie2 *trie) { + return (UBool)(trie->newTrie==NULL); +} + +U_CAPI int32_t U_EXPORT2 +utrie2_serialize(UTrie2 *trie, + void *data, int32_t capacity, + UErrorCode *pErrorCode) { + /* argument check */ + if(U_FAILURE(*pErrorCode)) { + return 0; + } + + if( trie==NULL || trie->memory==NULL || trie->newTrie!=NULL || + capacity<0 || (capacity>0 && (data==NULL || (((int32_t)data&3)!=0))) + ) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + + if(capacity>=trie->length) { + uprv_memcpy(data, trie->memory, trie->length); + } else { + *pErrorCode=U_BUFFER_OVERFLOW_ERROR; + } + return trie->length; +} diff --git a/icu4c/source/common/utrie2_impl.h b/icu4c/source/common/utrie2_impl.h new file mode 100644 index 0000000000..1a01d69005 --- /dev/null +++ b/icu4c/source/common/utrie2_impl.h @@ -0,0 +1,172 @@ +/* +****************************************************************************** +* +* Copyright (C) 2001-2008, International Business Machines +* Corporation and others. All Rights Reserved. +* +****************************************************************************** +* file name: utrie2_impl.h +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +* +* created on: 2008sep26 (split off from utrie2.c) +* created by: Markus W. Scherer +* +* Definitions needed for both runtime and builder code for UTrie2, +* used by utrie2.c and utrie2_builder.c. +*/ + +#ifndef __UTRIE2_IMPL_H__ +#define __UTRIE2_IMPL_H__ + +#include "utrie2.h" + +/* Public UTrie2 API implementation ----------------------------------------- */ + +/* + * These definitions are mostly needed by utrie2.c, + * but also by utrie2_serialize() and utrie2_swap(). + */ + +/* + * UTrie and UTrie2 signature values, + * in platform endianness and opposite endianness. + */ +#define UTRIE_SIG 0x54726965 +#define UTRIE_OE_SIG 0x65697254 + +#define UTRIE2_SIG 0x54726932 +#define UTRIE2_OE_SIG 0x32697254 + +/** + * Trie data structure in serialized form: + * + * UTrie2Header header; + * uint16_t index[header.index2Length]; + * uint16_t data[header.shiftedDataLength<<2]; -- or uint32_t data[...] + * @internal + */ +typedef struct UTrie2Header { + /** "Tri2" in big-endian US-ASCII (0x54726932) */ + uint32_t signature; + + /** + * options bit field: + * 15.. 4 reserved (0) + * 3.. 0 UTrie2ValueBits valueBits + */ + uint16_t options; + + /** UTRIE2_INDEX_1_OFFSET..UTRIE2_MAX_INDEX_LENGTH */ + uint16_t indexLength; + + /** (UTRIE2_DATA_START_OFFSET..UTRIE2_MAX_DATA_LENGTH)>>UTRIE2_INDEX_SHIFT */ + uint16_t shiftedDataLength; + + /** Null index and data blocks, not shifted. */ + uint16_t index2NullOffset, dataNullOffset; + + /** + * First code point of the single-value range ending with U+10ffff, + * rounded up and then shifted right by UTRIE2_SHIFT_1. + */ + uint16_t shiftedHighStart; +} UTrie2Header; + +/** + * Constants for use with UTrie2Header.options. + * @internal + */ +enum { + /** Mask to get the UTrie2ValueBits valueBits from options. */ + UTRIE2_OPTIONS_VALUE_BITS_MASK=0xf +}; + +/* Building a trie ---------------------------------------------------------- */ + +/* + * These definitions are mostly needed by utrie2_builder.c, but also by + * utrie2_get32() and utrie2_enum(). + */ + +enum { + /** + * At build time, leave a gap in the index-2 table, + * at least as long as the maximum lengths of the 2-byte UTF-8 index-2 table + * and the supplementary index-1 table. + * Round up to UTRIE2_INDEX_2_BLOCK_LENGTH for proper compacting. + */ + UNEWTRIE2_INDEX_GAP_OFFSET=UTRIE2_INDEX_2_BMP_LENGTH, + UNEWTRIE2_INDEX_GAP_LENGTH= + ((UTRIE2_UTF8_2B_INDEX_2_LENGTH+UTRIE2_MAX_INDEX_1_LENGTH)+UTRIE2_INDEX_2_MASK)& + ~UTRIE2_INDEX_2_MASK, + + /** + * Maximum length of the build-time index-2 array. + * Maximum number of Unicode code points (0x110000) shifted right by UTRIE2_SHIFT_2, + * plus the part of the index-2 table for lead surrogate code points, + * plus the build-time index gap, + * plus the null index-2 block. + */ + UNEWTRIE2_MAX_INDEX_2_LENGTH= + (0x110000>>UTRIE2_SHIFT_2)+ + UTRIE2_LSCP_INDEX_2_LENGTH+ + UNEWTRIE2_INDEX_GAP_LENGTH+ + UTRIE2_INDEX_2_BLOCK_LENGTH, + + UNEWTRIE2_INDEX_1_LENGTH=0x110000>>UTRIE2_SHIFT_1, +}; + +/** + * Maximum length of the build-time data array. + * One entry per 0x110000 code points, plus the illegal-UTF-8 block and the null block, + * plus values for the 0x400 surrogate code units. + */ +#define UNEWTRIE2_MAX_DATA_LENGTH (0x110000+0x40+0x40+0x400) + +/* + * Build-time trie structure. + * + * Just using a boolean flag for "repeat use" could lead to data array overflow + * because we would not be able to detect when a data block becomes unused. + * It also leads to orphan data blocks that are kept through serialization. + * + * Need to use reference counting for data blocks, + * and allocDataBlock() needs to look for a free block before increasing dataLength. + * + * This scheme seems like overkill for index-2 blocks since the whole index array is + * preallocated anyway (unlike the growable data array). + * Just allocating multiple index-2 blocks as needed. + */ +struct UNewTrie2 { + int32_t index1[UNEWTRIE2_INDEX_1_LENGTH]; + int32_t index2[UNEWTRIE2_MAX_INDEX_2_LENGTH]; + uint32_t *data; + + uint32_t initialValue, errorValue; + int32_t index2Length, dataCapacity, dataLength; + int32_t firstFreeBlock; + int32_t index2NullOffset, dataNullOffset; + UChar32 highStart; + UBool isCompacted; + + /** + * Multi-purpose per-data-block table. + * + * Before compacting: + * + * Per-data-block reference counters/free-block list. + * 0: unused + * >0: reference counter (number of index-2 entries pointing here) + * <0: next free data block in free-block list + * + * While compacting: + * + * Map of adjusted indexes, used in compactData() and compactIndex2(). + * Maps from original indexes to new ones. + */ + int32_t map[UNEWTRIE2_MAX_DATA_LENGTH>>UTRIE2_SHIFT_2]; +}; + +#endif diff --git a/icu4c/source/configure b/icu4c/source/configure index f79740755a..4a9751a260 100755 --- a/icu4c/source/configure +++ b/icu4c/source/configure @@ -10078,7 +10078,7 @@ then fi # output the Makefiles -ac_config_files="$ac_config_files icudefs.mk Makefile data/icupkg.inc config/Makefile.inc data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layout/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genuca/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/genctd/Makefile tools/gennames/Makefile tools/gentest/Makefile tools/gennorm/Makefile tools/genprops/Makefile tools/gencase/Makefile tools/genbidi/Makefile tools/genpname/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdata.inc test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile common/unicode/platform.h" +ac_config_files="$ac_config_files icudefs.mk Makefile data/icupkg.inc config/Makefile.inc data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layout/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genuca/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/genctd/Makefile tools/gennames/Makefile tools/gentest/Makefile tools/gennorm/Makefile tools/genprops/Makefile tools/gencase/Makefile tools/genbidi/Makefile tools/genpname/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdata.inc test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile common/unicode/platform.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -10733,6 +10733,7 @@ do "test/perf/usetperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/usetperf/Makefile" ;; "test/perf/ustrperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/ustrperf/Makefile" ;; "test/perf/utfperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/utfperf/Makefile" ;; + "test/perf/utrie2perf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/utrie2perf/Makefile" ;; "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; "samples/date/Makefile") CONFIG_FILES="$CONFIG_FILES samples/date/Makefile" ;; "samples/cal/Makefile") CONFIG_FILES="$CONFIG_FILES samples/cal/Makefile" ;; @@ -10790,7 +10791,8 @@ $debug || if test -n "$CONFIG_FILES"; then -ac_cr=' ' +ac_cr=' +' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' diff --git a/icu4c/source/configure.in b/icu4c/source/configure.in index 9c6dfafa6b..e862fa8a47 100644 --- a/icu4c/source/configure.in +++ b/icu4c/source/configure.in @@ -1096,6 +1096,7 @@ AC_CONFIG_FILES([icudefs.mk \ test/perf/usetperf/Makefile \ test/perf/ustrperf/Makefile \ test/perf/utfperf/Makefile \ + test/perf/utrie2perf/Makefile \ samples/Makefile samples/date/Makefile \ samples/cal/Makefile samples/layout/Makefile \ common/unicode/platform.h]) diff --git a/icu4c/source/i18n/ucol.cpp b/icu4c/source/i18n/ucol.cpp index 65eb259e05..d22684dd1f 100644 --- a/icu4c/source/i18n/ucol.cpp +++ b/icu4c/source/i18n/ucol.cpp @@ -44,11 +44,6 @@ U_NAMESPACE_USE -/* added by synwee for trie manipulation*/ -#define STAGE_1_SHIFT_ 10 -#define STAGE_2_SHIFT_ 4 -#define STAGE_2_MASK_AFTER_SHIFT_ 0x3F -#define STAGE_3_MASK_ 0xF #define LAST_BYTE_MASK_ 0xFF #define SECOND_LAST_BYTE_SHIFT_ 8 @@ -59,6 +54,8 @@ U_NAMESPACE_USE // and therefore writing to it is not synchronized. // It is cleaned in ucol_cleanup static const uint16_t *fcdTrieIndex=NULL; +// Code points at fcdHighStart and above have a zero FCD value. +static UChar32 fcdHighStart = 0; // These are values from UCA required for // implicit generation and supressing sort key compression @@ -753,7 +750,7 @@ UCollator* ucol_initCollator(const UCATableHeader *image, UCollator *fillIn, con // init FCD data if (fcdTrieIndex == NULL) { // The result is constant, until the library is reloaded. - fcdTrieIndex = unorm_getFCDTrie(status); + fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); ucln_i18n_registerCleanup(UCLN_I18N_UCOL, ucol_cleanup); } @@ -1291,7 +1288,6 @@ inline void normalizeIterator(collIterate *collationSource) { /* that way, and we get called for every char where cc might be non-zero. */ static inline UBool collIterFCD(collIterate *collationSource) { - UChar c, c2; const UChar *srcP, *endP; uint8_t leadingCC; uint8_t prevTrailingCC = 0; @@ -1308,19 +1304,9 @@ inline UBool collIterFCD(collIterate *collationSource) { // Get the trailing combining class of the current character. If it's zero, // we are OK. - c = *srcP++; /* trie access */ - fcd = unorm_getFCD16(fcdTrieIndex, c); + fcd = unorm_nextFCD16(fcdTrieIndex, fcdHighStart, srcP, endP); if (fcd != 0) { - if (U16_IS_LEAD(c)) { - if ((endP == NULL || srcP != endP) && U16_IS_TRAIL(c2=*srcP)) { - ++srcP; - fcd = unorm_getFCD16FromSurrogatePair(fcdTrieIndex, fcd, c2); - } else { - fcd = 0; - } - } - prevTrailingCC = (uint8_t)(fcd & LAST_BYTE_MASK_); if (prevTrailingCC != 0) { @@ -1330,17 +1316,8 @@ inline UBool collIterFCD(collIterate *collationSource) { { const UChar *savedSrcP = srcP; - c = *srcP++; /* trie access */ - fcd = unorm_getFCD16(fcdTrieIndex, c); - if (fcd != 0 && U16_IS_LEAD(c)) { - if ((endP == NULL || srcP != endP) && U16_IS_TRAIL(c2=*srcP)) { - ++srcP; - fcd = unorm_getFCD16FromSurrogatePair(fcdTrieIndex, fcd, c2); - } else { - fcd = 0; - } - } + fcd = unorm_nextFCD16(fcdTrieIndex, fcdHighStart, srcP, endP); leadingCC = (uint8_t)(fcd >> SECOND_LAST_BYTE_SHIFT_); if (leadingCC == 0) { srcP = savedSrcP; // Hit char that is not part of combining sequence. @@ -1699,7 +1676,6 @@ static inline UBool collPrevIterFCD(collIterate *data) { const UChar *src, *start; - UChar c, c2; uint8_t leadingCC; uint8_t trailingCC = 0; uint16_t fcd; @@ -1709,18 +1685,7 @@ inline UBool collPrevIterFCD(collIterate *data) src = data->pos + 1; /* Get the trailing combining class of the current character. */ - c = *--src; - if (!U16_IS_SURROGATE(c)) { - fcd = unorm_getFCD16(fcdTrieIndex, c); - } else if (U16_IS_TRAIL(c) && start < src && U16_IS_LEAD(c2 = *(src - 1))) { - --src; - fcd = unorm_getFCD16(fcdTrieIndex, c2); - if (fcd != 0) { - fcd = unorm_getFCD16FromSurrogatePair(fcdTrieIndex, fcd, c); - } - } else /* unpaired surrogate */ { - fcd = 0; - } + fcd = unorm_prevFCD16(fcdTrieIndex, fcdHighStart, start, src); leadingCC = (uint8_t)(fcd >> SECOND_LAST_BYTE_SHIFT_); @@ -1736,18 +1701,7 @@ inline UBool collPrevIterFCD(collIterate *data) return result; } - c = *--src; - if (!U16_IS_SURROGATE(c)) { - fcd = unorm_getFCD16(fcdTrieIndex, c); - } else if (U16_IS_TRAIL(c) && start < src && U16_IS_LEAD(c2 = *(src - 1))) { - --src; - fcd = unorm_getFCD16(fcdTrieIndex, c2); - if (fcd != 0) { - fcd = unorm_getFCD16FromSurrogatePair(fcdTrieIndex, fcd, c); - } - } else /* unpaired surrogate */ { - fcd = 0; - } + fcd = unorm_prevFCD16(fcdTrieIndex, fcdHighStart, start, src); trailingCC = (uint8_t)(fcd & LAST_BYTE_MASK_); diff --git a/icu4c/source/i18n/ucol_bld.cpp b/icu4c/source/i18n/ucol_bld.cpp index 4151adfd20..67c4dd1adc 100644 --- a/icu4c/source/i18n/ucol_bld.cpp +++ b/icu4c/source/i18n/ucol_bld.cpp @@ -837,7 +837,8 @@ U_CFUNC void ucol_createElements(UColTokenParser *src, tempUCATable *t, UColTokL UColToken *tok = lh->first; UColToken *expt = NULL; uint32_t i = 0, j = 0; - const uint16_t *fcdTrieData = unorm_getFCDTrie(status); + UChar32 fcdHighStart; + const uint16_t *fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); while(tok != NULL && U_SUCCESS(*status)) { /* first, check if there are any expansions */ @@ -925,25 +926,18 @@ U_CFUNC void ucol_createElements(UColTokenParser *src, tempUCATable *t, UColTokL uprv_memcpy(el.uchars, (tok->source & 0x00FFFFFF) + src->source, el.cSize*sizeof(UChar)); } if(src->UCA != NULL) { - UBool containCombinMarks = FALSE; for(i = 0; iimage->jamoSpecial = TRUE; } - if ( !src->buildCCTabFlag ) { - // check combining class - int16_t fcd = unorm_getFCD16(fcdTrieData, el.cPoints[i]); - if ( (fcd && 0xff) == 0 ) { - // reset flag when current char is not combining mark. - containCombinMarks = FALSE; - } - else { - containCombinMarks = TRUE; - } - } } - if ( !src->buildCCTabFlag && containCombinMarks ) { - src->buildCCTabFlag = TRUE; + if (!src->buildCCTabFlag && el.cSize > 0) { + // Check the trailing canonical combining class (tccc) of the last character. + const UChar *s = el.cPoints + el.cSize; + uint16_t fcd = unorm_prevFCD16(fcdTrieIndex, fcdHighStart, el.cPoints, s); + if ((fcd & 0xff) != 0) { + src->buildCCTabFlag = TRUE; + } } } diff --git a/icu4c/source/i18n/ucol_elm.cpp b/icu4c/source/i18n/ucol_elm.cpp index e4acdc86e5..026c9d16b6 100644 --- a/icu4c/source/i18n/ucol_elm.cpp +++ b/icu4c/source/i18n/ucol_elm.cpp @@ -742,12 +742,13 @@ static void uprv_uca_unsafeCPAddCCNZ(tempUCATable *t, UErrorCode *status) { UChar c; uint16_t fcd; // Hi byte is lead combining class. // lo byte is trailing combing class. - const uint16_t *fcdTrieData; + const uint16_t *fcdTrieIndex; + UChar32 fcdHighStart; UBool buildCMTable = (t->cmLookup==NULL); // flag for building combining class table UChar *cm=NULL; uint16_t index[256]; int32_t count=0; - fcdTrieData = unorm_getFCDTrie(status); + fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); if (U_FAILURE(*status)) { return; } @@ -763,7 +764,7 @@ static void uprv_uca_unsafeCPAddCCNZ(tempUCATable *t, UErrorCode *status) { uprv_memset(index, 0, sizeof(index)); } for (c=0; c<0xffff; c++) { - fcd = unorm_getFCD16(fcdTrieData, c); + fcd = unorm_getFCD16(fcdTrieIndex, c); if (fcd >= 0x100 || // if the leading combining class(c) > 0 || (UTF_IS_LEAD(c) && fcd != 0)) {// c is a leading surrogate with some FCD data if (buildCMTable) { @@ -1756,8 +1757,12 @@ uprv_uca_addMultiCMContractions(tempUCATable *t, CombinClassTable *cmLookup = t->cmLookup; UChar newDecomp[256]; int32_t maxComp, newDecLen; - const uint16_t *fcdTrieData = unorm_getFCDTrie(status); - int16_t curClass = (unorm_getFCD16(fcdTrieData, c->tailoringCM) & 0xff); + UChar32 fcdHighStart; + const uint16_t *fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); + if (U_FAILURE(*status)) { + return; + } + int16_t curClass = (unorm_getFCD16(fcdTrieIndex, c->tailoringCM) & 0xff); CompData *precomp = c->precomp; int32_t compLen = c->compLen; UChar *comp = c->comp; @@ -1822,8 +1827,12 @@ uprv_uca_addTailCanonicalClosures(tempUCATable *t, UCAElements *el, UErrorCode *status) { CombinClassTable *cmLookup = t->cmLookup; - const uint16_t *fcdTrieData = unorm_getFCDTrie(status); - int16_t maxIndex = (unorm_getFCD16(fcdTrieData, cMark) & 0xff ); + UChar32 fcdHighStart; + const uint16_t *fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); + if (U_FAILURE(*status)) { + return; + } + int16_t maxIndex = (unorm_getFCD16(fcdTrieIndex, cMark) & 0xff ); UCAElements element; uint16_t *index; UChar decomp[256]; @@ -1837,8 +1846,8 @@ uprv_uca_addTailCanonicalClosures(tempUCATable *t, return; } index = cmLookup->index; - int32_t cClass=(unorm_getFCD16(fcdTrieData, cMark) & 0xff); - maxIndex = (int32_t)index[(unorm_getFCD16(fcdTrieData, cMark) & 0xff)-1]; + int32_t cClass=(unorm_getFCD16(fcdTrieIndex, cMark) & 0xff); + maxIndex = (int32_t)index[(unorm_getFCD16(fcdTrieIndex, cMark) & 0xff)-1]; c.comp = comp; c.decomp = decomp; c.precomp = precomp; @@ -1861,7 +1870,7 @@ uprv_uca_addTailCanonicalClosures(tempUCATable *t, // other combining mark combinations. precomp[precompLen].cp=comp[0]; curClass = precomp[precompLen].cClass = - index[unorm_getFCD16(fcdTrieData, decomp[1]) & 0xff]; + index[unorm_getFCD16(fcdTrieIndex, decomp[1]) & 0xff]; precompLen++; replacedPos=0; for (decompLen=0; decompLen< (int32_t)el->cSize; decompLen++) { @@ -1901,7 +1910,7 @@ uprv_uca_addTailCanonicalClosures(tempUCATable *t, // This is a fix for tailoring contractions with accented // character at the end of contraction string. if ((len>2) && - (unorm_getFCD16(fcdTrieData, comp[len-2]) & 0xff00)==0) { + (unorm_getFCD16(fcdTrieIndex, comp[len-2]) & 0xff00)==0) { uprv_uca_addFCD4AccentedContractions(t, colEl, comp, len, &element, status); } @@ -1928,9 +1937,10 @@ uprv_uca_canonicalClosure(tempUCATable *t, UColToken *tok; uint32_t i = 0, j = 0; UChar baseChar, firstCM; - const uint16_t *fcdTrieData = unorm_getFCDTrie(status); + UChar32 fcdHighStart; + const uint16_t *fcdTrieIndex = unorm_getFCDTrieIndex(fcdHighStart, status); - if(!U_SUCCESS(*status)) { + if(U_FAILURE(*status)) { return 0; } @@ -1999,7 +2009,7 @@ uprv_uca_canonicalClosure(tempUCATable *t, } if(src->UCA != NULL) { for(j = 0; j + + diff --git a/icu4c/source/test/cintltst/cutiltst.c b/icu4c/source/test/cintltst/cutiltst.c index 2bb339c6d9..0d5b7467fb 100644 --- a/icu4c/source/test/cintltst/cutiltst.c +++ b/icu4c/source/test/cintltst/cutiltst.c @@ -1,6 +1,6 @@ /******************************************************************** * COPYRIGHT: - * Copyright (c) 1997-2006, International Business Machines Corporation and + * Copyright (c) 1997-2008, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /******************************************************************************** @@ -24,6 +24,7 @@ void addNEWResourceBundleTest(TestNode**); void addHashtableTest(TestNode** root); void addCStringTest(TestNode** root); void addTrieTest(TestNode** root); +void addTrie2Test(TestNode** root); void addEnumerationTest(TestNode** root); void addPosixTest(TestNode** root); void addSortTest(TestNode** root); @@ -34,6 +35,7 @@ void addUtility(TestNode** root) { addCStringTest(root); addTrieTest(root); + addTrie2Test(root); addLocaleTest(root); addCLDRTest(root); addUnicodeTest(root); diff --git a/icu4c/source/test/cintltst/trie2test.c b/icu4c/source/test/cintltst/trie2test.c new file mode 100644 index 0000000000..7bafd889cc --- /dev/null +++ b/icu4c/source/test/cintltst/trie2test.c @@ -0,0 +1,1426 @@ +/* +****************************************************************************** +* +* Copyright (C) 2001-2008, International Business Machines +* Corporation and others. All Rights Reserved. +* +****************************************************************************** +* file name: trietest.c +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +* +* created on: 2008sep01 (starting from a copy of trietest.c) +* created by: Markus W. Scherer +*/ + +#include +#include "unicode/utypes.h" +#include "utrie2.h" +#include "utrie.h" +#include "cstring.h" +#include "cmemory.h" +#include "udataswp.h" +#include "cintltst.h" + +#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) + +/* Values for setting possibly overlapping, out-of-order ranges of values */ +typedef struct SetRange { + UChar32 start, limit; + uint32_t value; + UBool overwrite; +} SetRange; + +/* + * Values for testing: + * value is set from the previous boundary's limit to before + * this boundary's limit + * + * There must be an entry with limit 0 and the intialValue. + * It may be preceded by an entry with negative limit and the errorValue. + */ +typedef struct CheckRange { + UChar32 limit; + uint32_t value; +} CheckRange; + +static int32_t +skipSpecialValues(const CheckRange checkRanges[], int32_t countCheckRanges) { + int32_t i; + for(i=0; ilimit || limit!=b->limit || value!=b->value) { + log_err("error: utrie2_enum() delivers wrong range [U+%04lx..U+%04lx].0x%lx instead of [U+%04lx..U+%04lx].0x%lx\n", + (long)start, (long)end, (long)value, + (long)(b-1)->limit, (long)b->limit-1, (long)b->value); + } + return TRUE; +} + +static void +testTrieEnum(const char *testName, + const UTrie2 *trie, + const CheckRange checkRanges[], int32_t countCheckRanges) { + /* skip over special values */ + while(countCheckRanges>0 && checkRanges[0].limit<=0) { + ++checkRanges; + --countCheckRanges; + } + utrie2_enum(trie, testEnumValue, testEnumRange, &checkRanges); +} + +/* verify all expected values via UTRIE2_GETxx() */ +static void +testTrieGetters(const char *testName, + const UTrie2 *trie, UTrie2ValueBits valueBits, + const CheckRange checkRanges[], int32_t countCheckRanges) { + uint32_t initialValue, errorValue; + uint32_t value, value2; + UChar32 start, limit; + int32_t i, countSpecials; + + UBool isFrozen=utrie2_isFrozen(trie); + const char *const typeName= isFrozen ? "frozen trie" : "newTrie"; + + countSpecials=getSpecialValues(checkRanges, countCheckRanges, &initialValue, &errorValue); + + start=0; + for(i=countSpecials; idata16[start]; + } else { + value2=trie->data32[start]; + } + if(value!=value2) { + log_err("error: %s(%s).asciiData[U+%04lx]==0x%lx instead of 0x%lx\n", + typeName, testName, (long)start, (long)value2, (long)value); + } + ++start; + } + } + while(start<=0xbf) { + if(valueBits==UTRIE2_16_VALUE_BITS) { + value2=trie->data16[start]; + } else { + value2=trie->data32[start]; + } + if(errorValue!=value2) { + log_err("error: %s(%s).badData[U+%04lx]==0x%lx instead of 0x%lx\n", + typeName, testName, (long)start, (long)value2, (long)errorValue); + } + ++start; + } + } + + if(0!=strncmp(testName, "dummy", 5) && 0!=strncmp(testName, "trie1", 5)) { + /* test values for lead surrogate code units */ + for(start=0xd7ff; start<0xdc01; ++start) { + switch(start) { + case 0xd7ff: + case 0xdc00: + value=errorValue; + break; + case 0xd800: + value=90; + break; + case 0xd999: + value=94; + break; + case 0xdbff: + value=99; + break; + default: + value=initialValue; + break; + } + if(isFrozen && U_IS_LEAD(start)) { + if(valueBits==UTRIE2_16_VALUE_BITS) { + value2=UTRIE2_GET16_FROM_U16_SINGLE_LEAD(trie, start); + } else { + value2=UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, start); + } + if(value2!=value) { + log_err("error: %s(%s).LSCU(U+%04lx)==0x%lx instead of 0x%lx\n", + typeName, testName, (long)start, (long)value2, (long)value); + } + } + value2=utrie2_get32FromLeadSurrogateCodeUnit(trie, start); + if(value2!=value) { + log_err("error: %s(%s).lscu(U+%04lx)==0x%lx instead of 0x%lx\n", + typeName, testName, (long)start, (long)value2, (long)value); + } + } + } + + /* test errorValue */ + if(isFrozen) { + if(valueBits==UTRIE2_16_VALUE_BITS) { + value=UTRIE2_GET16(trie, -1); + value2=UTRIE2_GET16(trie, 0x110000); + } else { + value=UTRIE2_GET32(trie, -1); + value2=UTRIE2_GET32(trie, 0x110000); + } + if(value!=errorValue || value2!=errorValue) { + log_err("error: %s(%s).get(out of range) != errorValue\n", + typeName, testName); + } + } + value=utrie2_get32(trie, -1); + value2=utrie2_get32(trie, 0x110000); + if(value!=errorValue || value2!=errorValue) { + log_err("error: %s(%s).get32(out of range) != errorValue\n", + typeName, testName); + } +} + +static void +testTrieUTF16(const char *testName, + const UTrie2 *trie, UTrie2ValueBits valueBits, + const CheckRange checkRanges[], int32_t countCheckRanges) { + UChar s[200]; + uint32_t values[100]; + + const UChar *p, *limit; + + uint32_t value; + UChar32 prevCP, c, c2; + int32_t i, length, sIndex, countValues; + + /* write a string */ + prevCP=0; + length=countValues=0; + for(i=skipSpecialValues(checkRanges, countCheckRanges); iU+%04lx): 0x%lx instead of 0x%lx\n", + testName, (unsigned long)bytes, (long)c, (long)value, (long)values[i]); + } + if(i8!=(p-s)) { + log_err("error: wrong end index from UTRIE2_U8_NEXT(%s)(%lx->U+%04lx): %ld != %ld\n", + testName, (unsigned long)bytes, (long)c, (long)(p-s), (long)i8); + continue; + } + ++i; + } + + /* try backward */ + p=limit; + i=countValues; + while(sU+%04lx): 0x%lx instead of 0x%lx\n", + testName, (unsigned long)bytes, (long)c, (long)value, (long)values[i]); + } + bytes=0; + if(value!=values[i] || i8!=(p-s)) { + int32_t k=i8; + while(kU+%04lx): %ld != %ld\n", + testName, (unsigned long)bytes, (long)c, (long)(p-s), (long)i8); + continue; + } + } +} + +static void +testFrozenTrie(const char *testName, + UTrie2 *trie, UTrie2ValueBits valueBits, + const CheckRange checkRanges[], int32_t countCheckRanges) { + UErrorCode errorCode; + uint32_t value, value2; + + if(!utrie2_isFrozen(trie)) { + log_err("error: utrie2_isFrozen(frozen %s) returned FALSE (not frozen)\n", + testName); + return; + } + + testTrieGetters(testName, trie, valueBits, checkRanges, countCheckRanges); + testTrieEnum(testName, trie, checkRanges, countCheckRanges); + testTrieUTF16(testName, trie, valueBits, checkRanges, countCheckRanges); + testTrieUTF8(testName, trie, valueBits, checkRanges, countCheckRanges); + + errorCode=U_ZERO_ERROR; + value=utrie2_get32(trie, 1); + utrie2_set32(trie, 1, 234, &errorCode); + value2=utrie2_get32(trie, 1); + if(errorCode!=U_NO_WRITE_PERMISSION || value2!=value) { + log_err("error: utrie2_set32(frozen %s) failed: it set %s != U_NO_WRITE_PERMISSION\n", + testName, u_errorName(errorCode)); + return; + } + + errorCode=U_ZERO_ERROR; + utrie2_setRange32(trie, 1, 5, 234, TRUE, &errorCode); + value2=utrie2_get32(trie, 1); + if(errorCode!=U_NO_WRITE_PERMISSION || value2!=value) { + log_err("error: utrie2_setRange32(frozen %s) failed: it set %s != U_NO_WRITE_PERMISSION\n", + testName, u_errorName(errorCode)); + return; + } + + errorCode=U_ZERO_ERROR; + value=utrie2_get32FromLeadSurrogateCodeUnit(trie, 0xd801); + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xd801, 234, &errorCode); + value2=utrie2_get32FromLeadSurrogateCodeUnit(trie, 0xd801); + if(errorCode!=U_NO_WRITE_PERMISSION || value2!=value) { + log_err("error: utrie2_set32ForLeadSurrogateCodeUnit(frozen %s) failed: " + "it set %s != U_NO_WRITE_PERMISSION\n", + testName, u_errorName(errorCode)); + return; + } +} + +static void +testNewTrie(const char *testName, const UTrie2 *trie, + const CheckRange checkRanges[], int32_t countCheckRanges) { + /* The valueBits are ignored for an unfrozen trie. */ + testTrieGetters(testName, trie, UTRIE2_COUNT_VALUE_BITS, checkRanges, countCheckRanges); + testTrieEnum(testName, trie, checkRanges, countCheckRanges); +} + +static void +testTrieSerialize(const char *testName, + UTrie2 *trie, UTrie2ValueBits valueBits, + UBool withSwap, + const CheckRange checkRanges[], int32_t countCheckRanges) { + uint32_t storage[10000]; + int32_t length1, length2, length3; + UTrie2ValueBits otherValueBits; + UErrorCode errorCode; + + /* clone the trie so that the caller can reuse the original */ + errorCode=U_ZERO_ERROR; + trie=utrie2_clone(trie, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_clone(unfrozen %s) failed - %s\n", + testName, u_errorName(errorCode)); + return; + } + + /* + * This is not a loop, but simply a block that we can exit with "break" + * when something goes wrong. + */ + do { + errorCode=U_ZERO_ERROR; + utrie2_serialize(trie, storage, sizeof(storage), &errorCode); + if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { + log_err("error: utrie2_serialize(unfrozen %s) set %s != U_ILLEGAL_ARGUMENT_ERROR\n", + testName, u_errorName(errorCode)); + break; + } + errorCode=U_ZERO_ERROR; + utrie2_freeze(trie, valueBits, &errorCode); + if(U_FAILURE(errorCode) || !utrie2_isFrozen(trie)) { + log_err("error: utrie2_freeze(%s) failed: %s isFrozen: %d\n", + testName, u_errorName(errorCode), utrie2_isFrozen(trie)); + break; + } + otherValueBits= valueBits==UTRIE2_16_VALUE_BITS ? UTRIE2_32_VALUE_BITS : UTRIE2_16_VALUE_BITS; + utrie2_freeze(trie, otherValueBits, &errorCode); + if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { + log_err("error: utrie2_freeze(already-frozen with other valueBits %s) " + "set %s != U_ILLEGAL_ARGUMENT_ERROR\n", + testName, u_errorName(errorCode)); + break; + } + errorCode=U_ZERO_ERROR; + if(withSwap) { + /* clone a frozen trie */ + UTrie2 *clone=utrie2_clone(trie, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: cloning a frozen UTrie2 failed (%s) - %s\n", + testName, u_errorName(errorCode)); + errorCode=U_ZERO_ERROR; /* continue with the original */ + } else { + utrie2_close(trie); + trie=clone; + } + } + length1=utrie2_serialize(trie, NULL, 0, &errorCode); + if(errorCode!=U_BUFFER_OVERFLOW_ERROR) { + log_err("error: utrie2_serialize(%s) preflighting set %s != U_BUFFER_OVERFLOW_ERROR\n", + testName, u_errorName(errorCode)); + break; + } + errorCode=U_ZERO_ERROR; + length2=utrie2_serialize(trie, storage, sizeof(storage), &errorCode); + if(errorCode==U_BUFFER_OVERFLOW_ERROR) { + log_err("error: utrie2_serialize(%s) needs more memory\n", testName); + break; + } + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_serialize(%s) failed: %s\n", testName, u_errorName(errorCode)); + break; + } + if(length1!=length2) { + log_err("error: trie serialization (%s) lengths different: " + "preflight vs. serialize\n", testName); + break; + } + + testFrozenTrie(testName, trie, valueBits, checkRanges, countCheckRanges); + utrie2_close(trie); + trie=NULL; + + if(withSwap) { + uint32_t swapped[10000]; + int32_t swappedLength; + + UDataSwapper *ds; + + /* swap to opposite-endian */ + uprv_memset(swapped, 0x55, length2); + ds=udata_openSwapper(U_IS_BIG_ENDIAN, U_CHARSET_FAMILY, + !U_IS_BIG_ENDIAN, U_CHARSET_FAMILY, &errorCode); + swappedLength=utrie2_swap(ds, storage, -1, NULL, &errorCode); + if(U_FAILURE(errorCode) || swappedLength!=length2) { + log_err("error: utrie2_swap(%s to OE preflighting) failed (%s) " + "or before/after lengths different\n", + testName, u_errorName(errorCode)); + udata_closeSwapper(ds); + break; + } + swappedLength=utrie2_swap(ds, storage, length2, swapped, &errorCode); + udata_closeSwapper(ds); + if(U_FAILURE(errorCode) || swappedLength!=length2) { + log_err("error: utrie2_swap(%s to OE) failed (%s) or before/after lengths different\n", + testName, u_errorName(errorCode)); + break; + } + + /* swap back to platform-endian */ + uprv_memset(storage, 0xaa, length2); + ds=udata_openSwapper(!U_IS_BIG_ENDIAN, U_CHARSET_FAMILY, + U_IS_BIG_ENDIAN, U_CHARSET_FAMILY, &errorCode); + swappedLength=utrie2_swap(ds, swapped, -1, NULL, &errorCode); + if(U_FAILURE(errorCode) || swappedLength!=length2) { + log_err("error: utrie2_swap(%s to PE preflighting) failed (%s) " + "or before/after lengths different\n", + testName, u_errorName(errorCode)); + udata_closeSwapper(ds); + break; + } + swappedLength=utrie2_swap(ds, swapped, length2, storage, &errorCode); + udata_closeSwapper(ds); + if(U_FAILURE(errorCode) || swappedLength!=length2) { + log_err("error: utrie2_swap(%s to PE) failed (%s) or before/after lengths different\n", + testName, u_errorName(errorCode)); + break; + } + } + + trie=utrie2_openFromSerialized(valueBits, storage, length2, &length3, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_openFromSerialized(%s) failed, %s\n", testName, u_errorName(errorCode)); + break; + } + if((valueBits==UTRIE2_16_VALUE_BITS)!=(trie->data32==NULL)) { + log_err("error: trie serialization (%s) did not preserve 32-bitness\n", testName); + break; + } + if(length2!=length3) { + log_err("error: trie serialization (%s) lengths different: " + "serialize vs. unserialize\n", testName); + break; + } + /* overwrite the storage that is not supposed to be needed */ + uprv_memset((char *)storage+length3, 0xfa, (int32_t)(sizeof(storage)-length3)); + + utrie2_freeze(trie, valueBits, &errorCode); + if(U_FAILURE(errorCode) || !utrie2_isFrozen(trie)) { + log_err("error: utrie2_freeze(unserialized %s) failed: %s isFrozen: %d\n", + testName, u_errorName(errorCode), utrie2_isFrozen(trie)); + break; + } + utrie2_freeze(trie, otherValueBits, &errorCode); + if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { + log_err("error: utrie2_freeze(unserialized with other valueBits %s) " + "set %s != U_ILLEGAL_ARGUMENT_ERROR\n", + testName, u_errorName(errorCode)); + break; + } + errorCode=U_ZERO_ERROR; + if(withSwap) { + /* clone an unserialized trie */ + UTrie2 *clone=utrie2_clone(trie, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_clone(unserialized %s) failed - %s\n", + testName, u_errorName(errorCode)); + errorCode=U_ZERO_ERROR; + /* no need to break: just test the original trie */ + } else { + utrie2_close(trie); + trie=clone; + uprv_memset(storage, 0, sizeof(storage)); + } + } + testFrozenTrie(testName, trie, valueBits, checkRanges, countCheckRanges); + { + /* clone-as-thawed an unserialized trie */ + UTrie2 *clone=utrie2_cloneAsThawed(trie, &errorCode); + if(U_FAILURE(errorCode) || utrie2_isFrozen(clone)) { + log_err("error: utrie2_cloneAsThawed(unserialized %s) failed - " + "%s (isFrozen: %d)\n", + testName, u_errorName(errorCode), clone!=NULL && utrie2_isFrozen(trie)); + break; + } else { + utrie2_close(trie); + trie=clone; + } + } + { + uint32_t value, value2; + + value=utrie2_get32(trie, 0xa1); + utrie2_set32(trie, 0xa1, 789, &errorCode); + value2=utrie2_get32(trie, 0xa1); + utrie2_set32(trie, 0xa1, value, &errorCode); + if(U_FAILURE(errorCode) || value2!=789) { + log_err("error: modifying a cloneAsThawed UTrie2 (%s) failed - %s\n", + testName, u_errorName(errorCode)); + } + } + testNewTrie(testName, trie, checkRanges, countCheckRanges); + } while(0); + + utrie2_close(trie); +} + +static UTrie2 * +testTrieSerializeAllValueBits(const char *testName, + UTrie2 *trie, UBool withClone, + const CheckRange checkRanges[], int32_t countCheckRanges) { + char name[40]; + + /* verify that all the expected values are in the unfrozen trie */ + testNewTrie(testName, trie, checkRanges, countCheckRanges); + + /* + * Test with both valueBits serializations, + * and that utrie2_serialize() can be called multiple times. + */ + uprv_strcpy(name, testName); + uprv_strcat(name, ".16"); + testTrieSerialize(name, trie, + UTRIE2_16_VALUE_BITS, withClone, + checkRanges, countCheckRanges); + + if(withClone) { + /* + * try cloning after the first serialization; + * clone-as-thawed just to sometimes try it on an unfrozen trie + */ + UErrorCode errorCode=U_ZERO_ERROR; + UTrie2 *clone=utrie2_cloneAsThawed(trie, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_cloneAsThawed(%s) after serialization failed - %s\n", + testName, u_errorName(errorCode)); + } else { + utrie2_close(trie); + trie=clone; + + testNewTrie(testName, trie, checkRanges, countCheckRanges); + } + } + + uprv_strcpy(name, testName); + uprv_strcat(name, ".32"); + testTrieSerialize(name, trie, + UTRIE2_32_VALUE_BITS, withClone, + checkRanges, countCheckRanges); + + return trie; /* could be the clone */ +} + +static UTrie2 * +makeTrieWithRanges(const char *testName, UBool withClone, + const SetRange setRanges[], int32_t countSetRanges, + const CheckRange checkRanges[], int32_t countCheckRanges) { + UTrie2 *trie; + uint32_t initialValue, errorValue; + uint32_t value; + UChar32 start, limit; + int32_t i; + UErrorCode errorCode; + UBool overwrite; + + log_verbose("\ntesting Trie '%s'\n", testName); + errorCode=U_ZERO_ERROR; + getSpecialValues(checkRanges, countCheckRanges, &initialValue, &errorValue); + trie=utrie2_open(initialValue, errorValue, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_open(%s) failed: %s\n", testName, u_errorName(errorCode)); + return NULL; + } + + /* set values from setRanges[] */ + for(i=0; i>UTRIE2_SHIFT_2)/2; ++i) { + utrie2_setRange32(trie, 0x740, 0x840-1, 1, TRUE, &errorCode); + utrie2_setRange32(trie, 0x780, 0x880-1, 1, TRUE, &errorCode); + utrie2_setRange32(trie, 0x740, 0x840-1, 2, TRUE, &errorCode); + utrie2_setRange32(trie, 0x780, 0x880-1, 3, TRUE, &errorCode); + } + /* make blocks that will be free during compaction */ + utrie2_setRange32(trie, 0x1000, 0x3000-1, 2, TRUE, &errorCode); + utrie2_setRange32(trie, 0x2000, 0x4000-1, 3, TRUE, &errorCode); + utrie2_setRange32(trie, 0x1000, 0x4000-1, 1, TRUE, &errorCode); + /* set some values for lead surrogate code units */ + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xd800, 90, &errorCode); + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xd999, 94, &errorCode); + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xdbff, 99, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: setting lots of ranges into a trie (%s) failed - %s\n", + testName, u_errorName(errorCode)); + utrie2_close(trie); + return; + } + + trie=testTrieSerializeAllValueBits(testName, trie, FALSE, + checkRanges, LENGTHOF(checkRanges)); + utrie2_close(trie); +} + +static void +GrowDataArrayTest(void) { + static const CheckRange + checkRanges[]={ + { 0, 1 }, + { 0x720, 2 }, + { 0x7a0, 3 }, + { 0x8a0, 4 }, + { 0x110000, 5 } + }; + static const char *const testName="grow-data"; + + UTrie2 *trie; + int32_t i; + UErrorCode errorCode; + + errorCode=U_ZERO_ERROR; + trie=utrie2_open(1, 0xbad, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: utrie2_open(%s) failed: %s\n", testName, u_errorName(errorCode)); + return; + } + + /* + * Use utrie2_set32() not utrie2_setRange32() to write non-initialValue-data. + * Should grow/reallocate the data array to a sufficient length. + */ + for(i=0; i<0x1000; ++i) { + utrie2_set32(trie, i, 2, &errorCode); + } + for(i=0x720; i<0x1100; ++i) { /* some overlap */ + utrie2_set32(trie, i, 3, &errorCode); + } + for(i=0x7a0; i<0x900; ++i) { + utrie2_set32(trie, i, 4, &errorCode); + } + for(i=0x8a0; i<0x110000; ++i) { + utrie2_set32(trie, i, 5, &errorCode); + } + for(i=0xd800; i<0xdc00; ++i) { + utrie2_set32ForLeadSurrogateCodeUnit(trie, i, 1, &errorCode); + } + /* set some values for lead surrogate code units */ + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xd800, 90, &errorCode); + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xd999, 94, &errorCode); + utrie2_set32ForLeadSurrogateCodeUnit(trie, 0xdbff, 99, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("error: setting lots of values into a trie (%s) failed - %s\n", + testName, u_errorName(errorCode)); + utrie2_close(trie); + return; + } + + trie=testTrieSerializeAllValueBits(testName, trie, FALSE, + checkRanges, LENGTHOF(checkRanges)); + utrie2_close(trie); +} + +/* versions 1 and 2 --------------------------------------------------------- */ + +static void +GetVersionTest(void) { + uint32_t data[4]; + if( /* version 1 */ + (data[0]=0x54726965, 1!=utrie2_getVersion(data, sizeof(data), FALSE)) || + (data[0]=0x54726965, 1!=utrie2_getVersion(data, sizeof(data), TRUE)) || + (data[0]=0x65697254, 0!=utrie2_getVersion(data, sizeof(data), FALSE)) || + (data[0]=0x65697254, 1!=utrie2_getVersion(data, sizeof(data), TRUE)) || + /* version 2 */ + (data[0]=0x54726932, 2!=utrie2_getVersion(data, sizeof(data), FALSE)) || + (data[0]=0x54726932, 2!=utrie2_getVersion(data, sizeof(data), TRUE)) || + (data[0]=0x32697254, 0!=utrie2_getVersion(data, sizeof(data), FALSE)) || + (data[0]=0x32697254, 2!=utrie2_getVersion(data, sizeof(data), TRUE)) || + /* illegal arguments */ + (data[0]=0x54726932, 0!=utrie2_getVersion(NULL, sizeof(data), FALSE)) || + (data[0]=0x54726932, 0!=utrie2_getVersion(data, 3, FALSE)) || + (data[0]=0x54726932, 0!=utrie2_getVersion((char *)data+1, sizeof(data), FALSE)) || + /* unknown signature values */ + (data[0]=0x11223344, 0!=utrie2_getVersion(data, sizeof(data), FALSE)) || + (data[0]=0x54726933, 0!=utrie2_getVersion(data, sizeof(data), FALSE)) + ) { + log_err("error: utrie2_getVersion() is not working as expected\n"); + } +} + +static UNewTrie * +makeNewTrie1WithRanges(const char *testName, + const SetRange setRanges[], int32_t countSetRanges, + const CheckRange checkRanges[], int32_t countCheckRanges) { + UNewTrie *newTrie; + uint32_t initialValue, errorValue; + uint32_t value; + UChar32 start, limit; + int32_t i; + UErrorCode errorCode; + UBool overwrite, ok; + + log_verbose("\ntesting Trie '%s'\n", testName); + errorCode=U_ZERO_ERROR; + getSpecialValues(checkRanges, countCheckRanges, &initialValue, &errorValue); + newTrie=utrie_open(NULL, NULL, 2000, + initialValue, initialValue, + FALSE); + if(U_FAILURE(errorCode)) { + log_err("error: utrie_open(%s) failed: %s\n", testName, u_errorName(errorCode)); + return NULL; + } + + /* set values from setRanges[] */ + ok=TRUE; + for(i=0; itrie2", + setRanges2, LENGTHOF(setRanges2), + checkRanges2, LENGTHOF(checkRanges2)); +} + +void +addTrie2Test(TestNode** root) { + addTest(root, &TrieTest, "tsutil/trie2test/TrieTest"); + addTest(root, &EnumNewTrieForLeadSurrogateTest, + "tsutil/trie2test/EnumNewTrieForLeadSurrogateTest"); + addTest(root, &DummyTrieTest, "tsutil/trie2test/DummyTrieTest"); + addTest(root, &FreeBlocksTest, "tsutil/trie2test/FreeBlocksTest"); + addTest(root, &GrowDataArrayTest, "tsutil/trie2test/GrowDataArrayTest"); + addTest(root, &GetVersionTest, "tsutil/trie2test/GetVersionTest"); + addTest(root, &Trie12ConversionTest, "tsutil/trie2test/Trie12ConversionTest"); +} diff --git a/icu4c/source/test/cintltst/ucnvseltst.c b/icu4c/source/test/cintltst/ucnvseltst.c index 97d161f76f..2fa5ac30b2 100644 --- a/icu4c/source/test/cintltst/ucnvseltst.c +++ b/icu4c/source/test/cintltst/ucnvseltst.c @@ -765,15 +765,41 @@ static void TestSerializationAndUnserialization() /* first time */ status = U_ZERO_ERROR; sel = ucnvsel_open((const char**)encodings, testCaseIdx-prev, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET, &status); + if (U_FAILURE(status)) { + log_err("ucnvsel_open(test case %d) failed: %s\n", curCase, u_errorName(status)); + uprv_free(encodings); + uprv_free(names); + return; + } buffer = NULL; ser_len = ucnvsel_serialize(sel, NULL, 0, &status); - status = U_ZERO_ERROR; + if (status != U_BUFFER_OVERFLOW_ERROR) { + log_err("ucnvsel_serialize(test case %d preflighting) failed: %s\n", curCase, u_errorName(status)); + ucnvsel_close(sel); + uprv_free(encodings); + uprv_free(names); + return; + } buffer = uprv_malloc(ser_len); + status = U_ZERO_ERROR; ucnvsel_serialize(sel, buffer, ser_len, &status); - ucnvsel_close(sel); + if (U_FAILURE(status)) { + log_err("ucnvsel_serialize(test case %d) failed: %s\n", curCase, u_errorName(status)); + uprv_free(encodings); + uprv_free(names); + uprv_free(buffer); + return; + } sel = ucnvsel_unserialize( buffer, ser_len,&status); + if (U_FAILURE(status)) { + log_err("ucnvsel_unserialize(test case %d) failed: %s\n", curCase, u_errorName(status)); + uprv_free(encodings); + uprv_free(names); + uprv_free(buffer); + return; + } /* count how many bytes (Is there a portable function that is more efficient than this?) */ f1 = fopenOrError("ConverterSelectorTestUTF16.txt"); @@ -805,11 +831,21 @@ static void TestSerializationAndUnserialization() break; /* test, both with length, and NULL terminated */ res1 = ucnvsel_selectForString(sel, text+i, -1, &status); + if (U_FAILURE(status)) { + log_err("ucnvsel_selectForString(test case %d, string %d with NUL) failed: %s\n", + curCase, curTestCase, u_errorName(status)); + continue; + } /* make sure result is correct! */ verifyResultUTF16(text+i, (const char**) encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET); uenum_close(res1); res1 = ucnvsel_selectForString(sel, text+i, u_strlen(text+i), &status); + if (U_FAILURE(status)) { + log_err("ucnvsel_selectForString(test case %d, string %d with length) failed: %s\n", + curCase, curTestCase, u_errorName(status)); + continue; + } /* make sure result is correct! */ verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET); uenum_close(res1); diff --git a/icu4c/source/test/perf/Makefile.in b/icu4c/source/test/perf/Makefile.in index 1d255a766e..c422c5007f 100644 --- a/icu4c/source/test/perf/Makefile.in +++ b/icu4c/source/test/perf/Makefile.in @@ -18,7 +18,7 @@ subdir = test ## Files to remove for 'make clean' CLEANFILES = *~ -SUBDIRS = collationperf charperf normperf ubrkperf unisetperf usetperf ustrperf utfperf +SUBDIRS = collationperf charperf normperf ubrkperf unisetperf usetperf ustrperf utfperf utrie2perf ## List of phony targets .PHONY : everything all all-local all-recursive install install-local \ diff --git a/icu4c/source/test/perf/perf.sln b/icu4c/source/test/perf/perf.sln index 99043babc5..868fcf6fcd 100644 --- a/icu4c/source/test/perf/perf.sln +++ b/icu4c/source/test/perf/perf.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +# Visual C++ Express 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "charperf", "charperf\charperf.vcproj", "{D850A4B6-7D94-476E-9392-E9272DA4EAAF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "normperf", "normperf\normperf.vcproj", "{56CCC661-8D33-4F0A-B62F-C619CE843C68}" @@ -20,6 +20,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unisetperf", "unisetperf\un EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strsrchperf", "strsrchperf\strsrchperf.vcproj", "{241DED26-1635-45E6-9564-7742AC8043B5}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utrie2perf", "utrie2perf\utrie2perf.vcproj", "{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -108,6 +110,12 @@ Global {241DED26-1635-45E6-9564-7742AC8043B5}.Release|Win32.Build.0 = Release|Win32 {241DED26-1635-45E6-9564-7742AC8043B5}.Release|x64.ActiveCfg = Release|x64 {241DED26-1635-45E6-9564-7742AC8043B5}.Release|x64.Build.0 = Release|x64 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|Win32.ActiveCfg = Debug|Win32 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|Win32.Build.0 = Debug|Win32 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|x64.ActiveCfg = Debug|Win32 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|Win32.ActiveCfg = Release|Win32 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|Win32.Build.0 = Release|Win32 + {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/icu4c/source/test/perf/utrie2perf/Makefile.in b/icu4c/source/test/perf/utrie2perf/Makefile.in new file mode 100644 index 0000000000..e9098ebe56 --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/Makefile.in @@ -0,0 +1,79 @@ +## Makefile.in for ICU - test/perf/utrie2perf +## Copyright (c) 2001-2008, International Business Machines Corporation and +## others. All Rights Reserved. + +## Source directory information +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ + +top_builddir = ../../.. + +include $(top_builddir)/icudefs.mk + +## Build directory information +subdir = test/perf/utrie2perf + +## Extra files to remove for 'make clean' +CLEANFILES = *~ $(DEPS) + +## Target information +TARGET = utrie2perf + +CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw +LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) + +OBJECTS = utrie2perf.o + +DEPS = $(OBJECTS:.o=.d) + +## List of phony targets +.PHONY : all all-local install install-local clean clean-local \ +distclean distclean-local dist dist-local check check-local + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-local +install: install-local +clean: clean-local +distclean : distclean-local +dist: dist-local +check: all check-local + +all-local: $(TARGET) + +install-local: + +dist-local: + +clean-local: + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) + $(RMV) $(OBJECTS) $(TARGET) + +distclean-local: clean-local + $(RMV) Makefile + +check-local: all-local + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(TARGET) : $(OBJECTS) + $(LINK.cc) -o $@ $^ $(LIBS) + $(POST_BUILD_STEP) + +invoke: + ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION) + +ifeq (,$(MAKECMDGOALS)) +-include $(DEPS) +else +ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),) +ifneq ($(patsubst %install,,$(MAKECMDGOALS)),) +-include $(DEPS) +endif +endif +endif + diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.bat b/icu4c/source/test/perf/utrie2perf/utrie2perf.bat new file mode 100755 index 0000000000..fa3883c769 --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.bat @@ -0,0 +1,19 @@ +rem Copyright (C) 2008, International Business Machines Corporation and others. +rem All Rights Reserved. + +set PERF=c:\svn\icuproj\icu\utf8\source\test\perf\utrie2perf\x86\Release\utrie2perf + +for %%f in (udhr_eng.txt + udhr_deu.txt + udhr_fra.txt + udhr_rus.txt + udhr_tha.txt + udhr_jpn.txt + udhr_cmn.txt + udhr_jpn.html) do ( + %PERF% CheckFCD -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000 +rem %PERF% CheckFCDAlwaysGet -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000 +rem %PERF% CheckFCDUTF8 -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000 + %PERF% ToNFC -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000 + %PERF% GetBiDiClass -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000 +) diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp b/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp new file mode 100644 index 0000000000..18c386c756 --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp @@ -0,0 +1,261 @@ +/* + ********************************************************************** + * Copyright (C) 2002-2008, International Business Machines + * Corporation and others. All Rights Reserved. + ********************************************************************** + * file name: utrie2perf.cpp + * encoding: US-ASCII + * tab size: 8 (not used) + * indentation:4 + * + * created on: 2008sep07 + * created by: Markus W. Scherer + * + * Performance test program for UTrie2. + */ + +#include +#include +#include "unicode/uchar.h" +#include "unicode/unorm.h" +#include "unicode/uperf.h" +#include "uoptions.h" + +#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) + +#if 0 +// Left over from when icu/branches/markus/utf8 could use both old UTrie +// and new UTrie2, switched with #if in unorm.cpp and ubidi_props.c. +// Comparative benchmarks were done in that branch on revision r24630 +// and earlier. +U_CAPI void U_EXPORT2 +unorm_initUTrie2(UErrorCode *pErrorCode); + +U_CAPI void U_EXPORT2 +ubidi_initUTrie2(UErrorCode *pErrorCode); +#endif + +U_NAMESPACE_BEGIN + +class UnicodeSet; + +U_NAMESPACE_END + +// Test object. +class UTrie2PerfTest : public UPerfTest { +public: + UTrie2PerfTest(int32_t argc, const char *argv[], UErrorCode &status) + : UPerfTest(argc, argv, NULL, 0, "", status), + utf8(NULL), utf8Length(0), countInputCodePoints(0) { + if (U_SUCCESS(status)) { +#if 0 // See comment at unorm_initUTrie2() forward declaration. + unorm_initUTrie2(&status); + ubidi_initUTrie2(&status); +#endif + int32_t inputLength; + UPerfTest::getBuffer(inputLength, status); + if(U_SUCCESS(status) && inputLength>0) { + countInputCodePoints = u_countChar32(buffer, bufferLen); + + // Preflight the UTF-8 length and allocate utf8. + u_strToUTF8(NULL, 0, &utf8Length, buffer, bufferLen, &status); + if(status==U_BUFFER_OVERFLOW_ERROR) { + utf8=(char *)malloc(utf8Length); + if(utf8!=NULL) { + status=U_ZERO_ERROR; + u_strToUTF8(utf8, utf8Length, NULL, buffer, bufferLen, &status); + } else { + status=U_MEMORY_ALLOCATION_ERROR; + } + } + + if(verbose) { + printf("code points:%ld len16:%ld len8:%ld " + "B/cp:%.3g\n", + (long)countInputCodePoints, (long)bufferLen, (long)utf8Length, + (double)utf8Length/countInputCodePoints); + } + } + } + } + + virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL); + + const UChar *getBuffer() const { return buffer; } + int32_t getBufferLen() const { return bufferLen; } + + char *utf8; + int32_t utf8Length; + + // Number of code points in the input text. + int32_t countInputCodePoints; +}; + +// Performance test function object. +class Command : public UPerfFunction { +protected: + Command(const UTrie2PerfTest &testcase) : testcase(testcase) {} + +public: + virtual ~Command() {} + + // virtual void call(UErrorCode* pErrorCode) { ... } + + virtual long getOperationsPerIteration() { + // Number of code points tested. + return testcase.countInputCodePoints; + } + + // virtual long getEventsPerIteration(); + + const UTrie2PerfTest &testcase; + UNormalizationCheckResult qcResult; +}; + +class CheckFCD : public Command { +protected: + CheckFCD(const UTrie2PerfTest &testcase) : Command(testcase) {} +public: + static UPerfFunction* get(const UTrie2PerfTest &testcase) { + return new CheckFCD(testcase); + } + virtual void call(UErrorCode* pErrorCode) { + UErrorCode errorCode=U_ZERO_ERROR; + qcResult=unorm_quickCheck(testcase.getBuffer(), testcase.getBufferLen(), + UNORM_FCD, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf(stderr, "error: unorm_quickCheck(UNORM_FCD) failed: %s\n", + u_errorName(errorCode)); + } + } +}; + +#if 0 // See comment at unorm_initUTrie2() forward declaration. + +class CheckFCDAlwaysGet : public Command { +protected: + CheckFCDAlwaysGet(const UTrie2PerfTest &testcase) : Command(testcase) {} +public: + static UPerfFunction* get(const UTrie2PerfTest &testcase) { + return new CheckFCDAlwaysGet(testcase); + } + virtual void call(UErrorCode* pErrorCode) { + UErrorCode errorCode=U_ZERO_ERROR; + qcResult=unorm_quickCheck(testcase.getBuffer(), testcase.getBufferLen(), + UNORM_FCD_ALWAYS_GET, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf(stderr, "error: unorm_quickCheck(UNORM_FCD) failed: %s\n", + u_errorName(errorCode)); + } + } +}; + +U_CAPI UBool U_EXPORT2 +unorm_checkFCDUTF8(const uint8_t *src, int32_t srcLength, const UnicodeSet *nx); + +class CheckFCDUTF8 : public Command { +protected: + CheckFCDUTF8(const UTrie2PerfTest &testcase) : Command(testcase) {} +public: + static UPerfFunction* get(const UTrie2PerfTest &testcase) { + return new CheckFCDUTF8(testcase); + } + virtual void call(UErrorCode* pErrorCode) { + UBool isFCD=unorm_checkFCDUTF8((const uint8_t *)testcase.utf8, testcase.utf8Length, NULL); + if(isFCD>1) { + fprintf(stderr, "error: bogus result from unorm_checkFCDUTF8()\n"); + } + } +}; + +#endif + +class ToNFC : public Command { +protected: + ToNFC(const UTrie2PerfTest &testcase) : Command(testcase) { + UErrorCode errorCode=U_ZERO_ERROR; + destCapacity=unorm_normalize(testcase.getBuffer(), testcase.getBufferLen(), + UNORM_NFC, 0, + NULL, 0, + &errorCode); + dest=new UChar[destCapacity]; + } + ~ToNFC() { + delete [] dest; + } +public: + static UPerfFunction* get(const UTrie2PerfTest &testcase) { + return new ToNFC(testcase); + } + virtual void call(UErrorCode* pErrorCode) { + UErrorCode errorCode=U_ZERO_ERROR; + int32_t destLength=unorm_normalize(testcase.getBuffer(), testcase.getBufferLen(), + UNORM_NFC, 0, + dest, destCapacity, + &errorCode); + if(U_FAILURE(errorCode) || destLength!=destCapacity) { + fprintf(stderr, "error: unorm_normalize(UNORM_NFC) failed: %s\n", + u_errorName(errorCode)); + } + } + +private: + UChar *dest; + int32_t destCapacity; +}; + +class GetBiDiClass : public Command { +protected: + GetBiDiClass(const UTrie2PerfTest &testcase) : Command(testcase) {} +public: + static UPerfFunction* get(const UTrie2PerfTest &testcase) { + return new GetBiDiClass(testcase); + } + virtual void call(UErrorCode* pErrorCode) { + const UChar *buffer=testcase.getBuffer(); + int32_t length=testcase.getBufferLen(); + UChar32 c; + int32_t i; + uint32_t bitSet=0; + for(i=0; i0 && bitSet==0) { + fprintf(stderr, "error: GetBiDiClass() did not collect bits\n"); + } + } +}; + +UPerfFunction* UTrie2PerfTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* par) { + switch (index) { + case 0: name = "CheckFCD"; if (exec) return CheckFCD::get(*this); break; + case 1: name = "ToNFC"; if (exec) return ToNFC::get(*this); break; + case 2: name = "GetBiDiClass"; if (exec) return GetBiDiClass::get(*this); break; +#if 0 // See comment at unorm_initUTrie2() forward declaration. + case 3: name = "CheckFCDAlwaysGet"; if (exec) return CheckFCDAlwaysGet::get(*this); break; + case 4: name = "CheckFCDUTF8"; if (exec) return CheckFCDUTF8::get(*this); break; +#endif + default: name = ""; break; + } + return NULL; +} + +int main(int argc, const char *argv[]) { + UErrorCode status = U_ZERO_ERROR; + UTrie2PerfTest test(argc, argv, status); + + if (U_FAILURE(status)){ + printf("The error is %s\n", u_errorName(status)); + test.usage(); + return status; + } + + if (test.run() == FALSE){ + fprintf(stderr, "FAILED: Tests could not be run please check the " + "arguments.\n"); + return -1; + } + + return 0; +} diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.pl b/icu4c/source/test/perf/utrie2perf/utrie2perf.pl new file mode 100755 index 0000000000..5c70742384 --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.pl @@ -0,0 +1,59 @@ +#!/usr/bin/perl +# ******************************************************************** +# * COPYRIGHT: +# * Copyright (c) 2005-2008, International Business Machines Corporation and +# * others. All Rights Reserved. +# ******************************************************************** + +#use strict; + +require "../perldriver/Common.pl"; + +use lib '../perldriver'; + +use PerfFramework; + +my $options = { + "title"=>"UTF performance: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")", + "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion, + "operationIs"=>"gb18030 encoding string", + "passes"=>"1", + "time"=>"2", + #"outputType"=>"HTML", + "dataDir"=>$ConversionDataPath, + "outputDir"=>"../results" + }; + +# programs +# tests will be done for all the programs. Results will be stored and connected +my $p1; +my $p2; + +if ($OnWindows) { + $p1 = $ICUPathPrevious."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Previous + $p2 = $ICUPathLatest."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Latest +} else { + $p1 = $ICUPathPrevious."/utfperf/utfperf -e gb18030"; # Previous + $p2 = $ICUPathLatest."/utfperf/utfperf -e gb18030"; # Latest +} + +my $tests = { + "Roundtrip", ["$p1 Roundtrip", "$p2 Roundtrip"], + "FromUnicode", ["$p1 FromUnicode", "$p2 FromUnicode"], + "FromUTF8", ["$p1 FromUTF8", "$p2 FromUTF8"], + #"UTF-8", ["$p UTF_8"], + #"UTF-8 small buffer", ["$p UTF_8_SB"], + #"SCSU", ["$p SCSU"], + #"SCSU small buffer", ["$p SCSU_SB"], + #"BOCU_1", ["$p BOCU_1"], + #"BOCU_1 small buffer", ["$p BOCU_1_SB"], + }; + +my $dataFiles = { + "", + [ + "xuzhimo.txt" + ] + }; + +runTests($options, $tests, $dataFiles); diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.sh b/icu4c/source/test/perf/utrie2perf/utrie2perf.sh new file mode 100755 index 0000000000..92691a036a --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Copyright (C) 2008, International Business Machines Corporation and others. +# All Rights Reserved. + +# export LD_LIBRARY_PATH=/home/mscherer/svn.icu/utf8-dev/lib:/home/mscherer/svn.icu/utf8-dev/tools/ctestfw + +# Echo shell script commands. +set -ex + +PERF=~/svn.icu/utf8-dev/test/perf/utrie2perf/utrie2perf + +for file in udhr_eng.txt \ + udhr_deu.txt \ + udhr_fra.txt \ + udhr_rus.txt \ + udhr_tha.txt \ + udhr_jpn.txt \ + udhr_cmn.txt \ + udhr_jpn.html; do + $PERF CheckFCD -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000 +# $PERF CheckFCDAlwaysGet -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000 +# $PERF CheckFCDUTF8 -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000 + $PERF ToNFC -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000 + $PERF GetBiDiClass -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000 +done diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.vcproj b/icu4c/source/test/perf/utrie2perf/utrie2perf.vcproj new file mode 100644 index 0000000000..7d71f14842 --- /dev/null +++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.vcproj @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icu4c/source/tools/genbidi/genbidi.c b/icu4c/source/tools/genbidi/genbidi.c index 4e21925fb5..c05d617631 100644 --- a/icu4c/source/tools/genbidi/genbidi.c +++ b/icu4c/source/tools/genbidi/genbidi.c @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 2004-2006, International Business Machines +* Copyright (C) 2004-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -131,17 +131,16 @@ singleEnumLineFn(void *context, UErrorCode *pErrorCode) { const SingleEnum *sen; char *s; - uint32_t start, limit, uv; + uint32_t start, end, uv; int32_t value; sen=(const SingleEnum *)context; - u_parseCodePointRange(fields[0][0], &start, &limit, pErrorCode); + u_parseCodePointRange(fields[0][0], &start, &end, pErrorCode); if(U_FAILURE(*pErrorCode)) { fprintf(stderr, "genbidi: syntax error in %s.txt field 0 at %s\n", sen->ucdFile, fields[0][0]); exit(*pErrorCode); } - ++limit; /* parse property alias */ s=trimTerminateField(fields[1][0], fields[1][1]); @@ -170,7 +169,7 @@ singleEnumLineFn(void *context, exit(U_INTERNAL_PROGRAM_ERROR); } - if(!upvec_setValue(pv, start, limit, sen->vecWord, uv, sen->vecMask, pErrorCode)) { + if(!upvec_setValue(pv, start, end, sen->vecWord, uv, sen->vecMask, pErrorCode)) { fprintf(stderr, "genbidi error: unable to set %s code: %s\n", sen->propName, u_errorName(*pErrorCode)); exit(*pErrorCode); @@ -232,17 +231,16 @@ binariesLineFn(void *context, UErrorCode *pErrorCode) { const Binaries *bin; char *s; - uint32_t start, limit; + uint32_t start, end; int32_t i; bin=(const Binaries *)context; - u_parseCodePointRange(fields[0][0], &start, &limit, pErrorCode); + u_parseCodePointRange(fields[0][0], &start, &end, pErrorCode); if(U_FAILURE(*pErrorCode)) { fprintf(stderr, "genbidi: syntax error in %s.txt field 0 at %s\n", bin->ucdFile, fields[0][0]); exit(*pErrorCode); } - ++limit; /* parse binary property name */ s=(char *)u_skipWhitespace(fields[1][0]); @@ -262,7 +260,7 @@ binariesLineFn(void *context, exit(U_INTERNAL_PROGRAM_ERROR); } - if(!upvec_setValue(pv, start, limit, bin->binaries[i].vecWord, bin->binaries[i].vecValue, bin->binaries[i].vecMask, pErrorCode)) { + if(!upvec_setValue(pv, start, end, bin->binaries[i].vecWord, bin->binaries[i].vecValue, bin->binaries[i].vecMask, pErrorCode)) { fprintf(stderr, "genbidi error: unable to set %s, code: %s\n", bin->binaries[i].propName, u_errorName(*pErrorCode)); exit(*pErrorCode); @@ -524,7 +522,7 @@ unicodeDataLineFn(void *context, /* get Mirrored flag, field 9 */ if(*fields[9][0]=='Y') { - if(!upvec_setValue(pv, c, c+1, 0, U_MASK(UBIDI_IS_MIRRORED_SHIFT), U_MASK(UBIDI_IS_MIRRORED_SHIFT), &errorCode)) { + if(!upvec_setValue(pv, c, c, 0, U_MASK(UBIDI_IS_MIRRORED_SHIFT), U_MASK(UBIDI_IS_MIRRORED_SHIFT), &errorCode)) { fprintf(stderr, "genbidi error: unable to set 'is mirrored' for U+%04lx, code: %s\n", (long)c, u_errorName(errorCode)); exit(errorCode); @@ -578,7 +576,7 @@ parseDB(const char *filename, UErrorCode *pErrorCode) { for(i=0; iinitialValue, &errorCode); + } + utrie2_freeze(trie2, UTRIE2_16_VALUE_BITS, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "genbidi error: deleting lead surrogate code unit values failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } } f=usrc_create(dataDir, "ubidi_props_data.c"); @@ -400,9 +431,9 @@ generateData(const char *dataDir, UBool csource) { "static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={", indexes, 32, UBIDI_IX_TOP, "};\n\n"); - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t ubidi_props_trieIndex[%ld]={\n", NULL, - &trie, + trie2, "\n};\n\n"); usrc_writeArray(f, "static const uint32_t ubidi_props_mirrors[%ld]={\n", @@ -419,14 +450,15 @@ generateData(const char *dataDir, UBool csource) { " ubidi_props_mirrors,\n" " ubidi_props_jgArray,\n", f); - usrc_writeUTrieStruct(f, + usrc_writeUTrie2Struct(f, " {\n", - &trie, "ubidi_props_trieIndex", NULL, NULL, + trie2, "ubidi_props_trieIndex", NULL, " },\n"); usrc_writeArray(f, " { ", dataInfo.formatVersion, 8, 4, " }\n"); fputs("};\n", f); fclose(f); } + utrie2_close(trie2); } else { /* write the data */ pData=udata_create(dataDir, UBIDI_DATA_TYPE, UBIDI_DATA_NAME, &dataInfo, diff --git a/icu4c/source/tools/gencase/gencase.c b/icu4c/source/tools/gencase/gencase.c index d7f9820e49..0a6a25ece8 100644 --- a/icu4c/source/tools/gencase/gencase.c +++ b/icu4c/source/tools/gencase/gencase.c @@ -126,17 +126,16 @@ binariesLineFn(void *context, UErrorCode *pErrorCode) { const Binaries *bin; char *s; - uint32_t start, limit; + uint32_t start, end; int32_t i; bin=(const Binaries *)context; - u_parseCodePointRange(fields[0][0], &start, &limit, pErrorCode); + u_parseCodePointRange(fields[0][0], &start, &end, pErrorCode); if(U_FAILURE(*pErrorCode)) { fprintf(stderr, "gencase: syntax error in %s.txt field 0 at %s\n", bin->ucdFile, fields[0][0]); exit(*pErrorCode); } - ++limit; /* parse binary property name */ s=(char *)u_skipWhitespace(fields[1][0]); @@ -156,7 +155,7 @@ binariesLineFn(void *context, exit(U_INTERNAL_PROGRAM_ERROR); } - if(!upvec_setValue(pv, start, limit, bin->binaries[i].vecWord, bin->binaries[i].vecValue, bin->binaries[i].vecMask, pErrorCode)) { + if(!upvec_setValue(pv, start, end, bin->binaries[i].vecWord, bin->binaries[i].vecValue, bin->binaries[i].vecMask, pErrorCode)) { fprintf(stderr, "gencase error: unable to set %s, code: %s\n", bin->binaries[i].propName, u_errorName(*pErrorCode)); exit(*pErrorCode); diff --git a/icu4c/source/tools/gencase/store.c b/icu4c/source/tools/gencase/store.c index f5555698fb..57c2abf028 100644 --- a/icu4c/source/tools/gencase/store.c +++ b/icu4c/source/tools/gencase/store.c @@ -26,6 +26,7 @@ #include "cstring.h" #include "filestrm.h" #include "utrie.h" +#include "utrie2.h" #include "uarrsort.h" #include "unicode/udata.h" #include "unewdata.h" @@ -408,7 +409,7 @@ setProps(Props *p) { errorCode=U_ZERO_ERROR; if( value!=oldValue && - !upvec_setValue(pv, p->code, p->code+1, 0, value, 0xffffffff, &errorCode) + !upvec_setValue(pv, p->code, p->code, 0, value, 0xffffffff, &errorCode) ) { fprintf(stderr, "gencase error: unable to set case mapping values, code: %s\n", u_errorName(errorCode)); @@ -427,7 +428,7 @@ setProps(Props *p) { extern void addCaseSensitive(UChar32 first, UChar32 last) { UErrorCode errorCode=U_ZERO_ERROR; - if(!upvec_setValue(pv, first, last+1, 0, UCASE_SENSITIVE, UCASE_SENSITIVE, &errorCode)) { + if(!upvec_setValue(pv, first, last, 0, UCASE_SENSITIVE, UCASE_SENSITIVE, &errorCode)) { fprintf(stderr, "gencase error: unable to set UCASE_SENSITIVE, code: %s\n", u_errorName(errorCode)); exit(errorCode); @@ -572,7 +573,7 @@ addClosureMapping(UChar32 src, UChar32 dest) { } errorCode=U_ZERO_ERROR; - if(!upvec_setValue(pv, src, src+1, 0, value, 0xffffffff, &errorCode)) { + if(!upvec_setValue(pv, src, src, 0, value, 0xffffffff, &errorCode)) { fprintf(stderr, "gencase error: unable to set case mapping values, code: %s\n", u_errorName(errorCode)); exit(errorCode); @@ -717,7 +718,7 @@ makeCaseClosure() { UChar *p; uint32_t *row; uint32_t value; - UChar32 start, limit, c, c2; + UChar32 start, end, c, c2; int32_t i, j; UBool someMappingsAdded; @@ -751,10 +752,10 @@ makeCaseClosure() { someMappingsAdded=FALSE; i=0; - while((row=upvec_getRow(pv, i, &start, &limit))!=NULL) { + while((row=upvec_getRow(pv, i, &start, &end))!=NULL && start=limit) { + while((row=upvec_getRow(pv, i, NULL, &end))!=NULL && start>end) { ++i; } row=NULL; /* signal to continue with outer loop, without further ++i */ @@ -1038,7 +1039,7 @@ generateData(const char *dataDir, UBool csource) { static uint8_t trieBlock[40000]; const uint32_t *row; - UChar32 start, limit; + UChar32 start, end; int32_t i; UNewDataMemory *pData; @@ -1053,8 +1054,8 @@ generateData(const char *dataDir, UBool csource) { exit(U_MEMORY_ALLOCATION_ERROR); } - for(i=0; (row=upvec_getRow(pv, i, &start, &limit))!=NULL; ++i) { - if(!utrie_setRange32(pTrie, start, limit, *row, TRUE)) { + for(i=0; (row=upvec_getRow(pv, i, &start, &end))!=NULL; ++i) { + if(startinitialValue, &errorCode); + } + utrie2_freeze(trie2, UTRIE2_16_VALUE_BITS, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "gencase error: deleting lead surrogate code unit values failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } } f=usrc_create(dataDir, "ucase_props_data.c"); @@ -1105,9 +1136,9 @@ generateData(const char *dataDir, UBool csource) { "static const int32_t ucase_props_indexes[UCASE_IX_TOP]={", indexes, 32, UCASE_IX_TOP, "};\n\n"); - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t ucase_props_trieIndex[%ld]={\n", NULL, - &trie, + trie2, "\n};\n\n"); usrc_writeArray(f, "static const uint16_t ucase_props_exceptions[%ld]={\n", @@ -1124,14 +1155,15 @@ generateData(const char *dataDir, UBool csource) { " ucase_props_exceptions,\n" " ucase_props_unfold,\n", f); - usrc_writeUTrieStruct(f, + usrc_writeUTrie2Struct(f, " {\n", - &trie, "ucase_props_trieIndex", NULL, NULL, + trie2, "ucase_props_trieIndex", NULL, " },\n"); usrc_writeArray(f, " { ", dataInfo.formatVersion, 8, 4, " }\n"); fputs("};\n", f); fclose(f); } + utrie2_close(trie2); } else { /* write the data */ pData=udata_create(dataDir, UCASE_DATA_TYPE, UCASE_DATA_NAME, &dataInfo, diff --git a/icu4c/source/tools/gennorm/store.c b/icu4c/source/tools/gennorm/store.c index 91a50346ab..581a447334 100644 --- a/icu4c/source/tools/gennorm/store.c +++ b/icu4c/source/tools/gennorm/store.c @@ -26,6 +26,7 @@ #include "filestrm.h" #include "unicode/udata.h" #include "utrie.h" +#include "utrie2.h" #include "unicode/uset.h" #include "toolutil.h" #include "unewdata.h" @@ -1787,6 +1788,31 @@ processData() { } } +/* is this a norm32 with a special index for a lead surrogate? */ +static U_INLINE UBool +isNorm32LeadSurrogate(uint32_t norm32) { + return _NORM_MIN_SPECIAL<=norm32 && norm32<_NORM_SURROGATES_TOP; +} + +/* normTrie: 32-bit trie result may contain a special extraData index with the folding offset */ +static int32_t U_CALLCONV +getFoldingNormOffset(uint32_t norm32) { + if(isNorm32LeadSurrogate(norm32)) { + return + UTRIE_BMP_INDEX_LENGTH+ + (((int32_t)norm32>>(_NORM_EXTRA_SHIFT-UTRIE_SURROGATE_BLOCK_BITS))& + (0x3ff<0) { - utrie_unserialize(&fcdTrie2, fcdTrieBlock, fcdTrieSize, &errorCode); + utrie_unserialize(&fcdRuntimeTrie, fcdTrieBlock, fcdTrieSize, &errorCode); } if(auxTrieSize>0) { - utrie_unserialize(&auxTrie2, auxTrieBlock, auxTrieSize, &errorCode); + utrie_unserialize(&auxRuntimeTrie, auxTrieBlock, auxTrieSize, &errorCode); + auxRuntimeTrie.getFoldingOffset=getFoldingAuxOffset; } if(U_FAILURE(errorCode)) { fprintf( @@ -1976,6 +2005,41 @@ generateData(const char *dataDir, UBool csource) { exit(errorCode); } + /* use UTrie2 */ + dataInfo.formatVersion[0]=3; + dataInfo.formatVersion[2]=0; + dataInfo.formatVersion[3]=0; + normRuntimeTrie2=utrie2_fromUTrie(&normRuntimeTrie, 0, &errorCode); + if(fcdTrieSize>0) { + fcdRuntimeTrie2=utrie2_fromUTrie(&fcdRuntimeTrie, 0, &errorCode); + } + if(auxTrieSize>0) { + auxRuntimeTrie2=utrie2_fromUTrie(&auxRuntimeTrie, 0, &errorCode); + } + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "gennorm error: utrie2_fromUTrie() failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } + if(auxTrieSize>0) { + /* delete lead surrogate code unit values */ + UChar lead; + auxRuntimeTrie2=utrie2_cloneAsThawed(auxRuntimeTrie2, &errorCode); + for(lead=0xd800; lead<0xdc00; ++lead) { + utrie2_set32ForLeadSurrogateCodeUnit(auxRuntimeTrie2, lead, auxRuntimeTrie2->initialValue, &errorCode); + } + utrie2_freeze(auxRuntimeTrie2, UTRIE2_16_VALUE_BITS, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "gennorm error: deleting lead surrogate code unit values failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } + } + f=usrc_create(dataDir, "unorm_props_data.c"); if(f!=NULL) { usrc_writeArray(f, @@ -1990,14 +2054,14 @@ generateData(const char *dataDir, UBool csource) { "static const int32_t indexes[_NORM_INDEX_TOP]={\n", indexes, 32, _NORM_INDEX_TOP, "\n};\n\n"); - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t normTrie_index[%ld]={\n", "static const uint32_t normTrie_data32[%ld]={\n", - &normTrie2, + normRuntimeTrie2, "\n};\n\n"); - usrc_writeUTrieStruct(f, - "static const UTrie normTrie={\n", - &normTrie2, "normTrie_index", "normTrie_data32", "getFoldingNormOffset", + usrc_writeUTrie2Struct(f, + "static const UTrie2 normTrie={\n", + normRuntimeTrie2, "normTrie_index", "normTrie_data32", "};\n\n"); usrc_writeArray(f, "static const uint16_t extraData[%ld]={\n", @@ -2008,28 +2072,28 @@ generateData(const char *dataDir, UBool csource) { combiningTable, 16, combiningTableTop, "\n};\n\n"); if(fcdTrieSize>0) { - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t fcdTrie_index[%ld]={\n", NULL, - &fcdTrie2, + fcdRuntimeTrie2, "\n};\n\n"); - usrc_writeUTrieStruct(f, - "static const UTrie fcdTrie={\n", - &fcdTrie2, "fcdTrie_index", NULL, NULL, + usrc_writeUTrie2Struct(f, + "static const UTrie2 fcdTrie={\n", + fcdRuntimeTrie2, "fcdTrie_index", NULL, "};\n\n"); } else { - fputs( "static const UTrie fcdTrie={ NULL };\n\n", f); + fputs( "static const UTrie2 fcdTrie={ NULL };\n\n", f); } if(auxTrieSize>0) { - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t auxTrie_index[%ld]={\n", NULL, - &auxTrie2, + auxRuntimeTrie2, "\n};\n\n"); - usrc_writeUTrieStruct(f, - "static const UTrie auxTrie={\n", - &auxTrie2, "auxTrie_index", NULL, "getFoldingAuxOffset", + usrc_writeUTrie2Struct(f, + "static const UTrie2 auxTrie={\n", + auxRuntimeTrie2, "auxTrie_index", NULL, "};\n\n"); } else { - fputs( "static const UTrie auxTrie={ NULL };\n\n", f); + fputs( "static const UTrie2 auxTrie={ NULL };\n\n", f); } usrc_writeArray(f, "static const uint16_t canonStartSets[%ld]={\n", @@ -2037,6 +2101,9 @@ generateData(const char *dataDir, UBool csource) { "\n};\n\n"); fclose(f); } + utrie2_close(normRuntimeTrie2); + utrie2_close(fcdRuntimeTrie2); + utrie2_close(auxRuntimeTrie2); #endif } else { /* write the data */ diff --git a/icu4c/source/tools/genprops/genprops.c b/icu4c/source/tools/genprops/genprops.c index bb38812687..616f0687f4 100644 --- a/icu4c/source/tools/genprops/genprops.c +++ b/icu4c/source/tools/genprops/genprops.c @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 1999-2005, International Business Machines +* Copyright (C) 1999-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -339,7 +339,7 @@ unicodeDataLineFn(void *context, exit(U_PARSE_ERROR); } } - if(!upvec_setValue(pv, p.code, p.code+1, 2, (uint32_t)i, UPROPS_DT_MASK, pErrorCode)) { + if(!upvec_setValue(pv, p.code, p.code, 2, (uint32_t)i, UPROPS_DT_MASK, pErrorCode)) { fprintf(stderr, "genprops error: unable to set decomposition type: %s\n", u_errorName(*pErrorCode)); exit(*pErrorCode); } @@ -544,7 +544,7 @@ repeatAreaProps() { /* Hangul have canonical decompositions */ errorCode=U_ZERO_ERROR; - if(!upvec_setValue(pv, 0xac00, 0xd7a4, 2, (uint32_t)U_DT_CANONICAL, UPROPS_DT_MASK, &errorCode)) { + if(!upvec_setValue(pv, 0xac00, 0xd7a3, 2, (uint32_t)U_DT_CANONICAL, UPROPS_DT_MASK, &errorCode)) { fprintf(stderr, "genprops error: unable to set decomposition type: %s\n", u_errorName(errorCode)); exit(errorCode); } diff --git a/icu4c/source/tools/genprops/props2.c b/icu4c/source/tools/genprops/props2.c index ac34aa071f..75273eafb6 100644 --- a/icu4c/source/tools/genprops/props2.c +++ b/icu4c/source/tools/genprops/props2.c @@ -34,7 +34,7 @@ /* data --------------------------------------------------------------------- */ -static UNewTrie *trie; +static UNewTrie *newTrie; uint32_t *pv; static int32_t pvCount; @@ -166,17 +166,16 @@ singleEnumLineFn(void *context, UErrorCode *pErrorCode) { const SingleEnum *sen; char *s; - uint32_t start, limit, uv; + uint32_t start, end, uv; int32_t value; sen=(const SingleEnum *)context; - u_parseCodePointRange(fields[0][0], &start, &limit, pErrorCode); + u_parseCodePointRange(fields[0][0], &start, &end, pErrorCode); if(U_FAILURE(*pErrorCode)) { fprintf(stderr, "genprops: syntax error in %s.txt field 0 at %s\n", sen->ucdFile, fields[0][0]); exit(*pErrorCode); } - ++limit; /* parse property alias */ s=trimTerminateField(fields[1][0], fields[1][1]); @@ -205,7 +204,11 @@ singleEnumLineFn(void *context, exit(U_INTERNAL_PROGRAM_ERROR); } - if(!upvec_setValue(pv, start, limit, sen->vecWord, uv, sen->vecMask, pErrorCode)) { + if(start==0 && end==0x10ffff) { + /* Also set bits for initialValue and errorValue. */ + end=UPVEC_MAX_CP; + } + if(!upvec_setValue(pv, start, end, sen->vecWord, uv, sen->vecMask, pErrorCode)) { fprintf(stderr, "genprops error: unable to set %s code: %s\n", sen->propName, u_errorName(*pErrorCode)); exit(*pErrorCode); @@ -330,17 +333,16 @@ binariesLineFn(void *context, UErrorCode *pErrorCode) { const Binaries *bin; char *s; - uint32_t start, limit, uv; + uint32_t start, end, uv; int32_t i; bin=(const Binaries *)context; - u_parseCodePointRange(fields[0][0], &start, &limit, pErrorCode); + u_parseCodePointRange(fields[0][0], &start, &end, pErrorCode); if(U_FAILURE(*pErrorCode)) { fprintf(stderr, "genprops: syntax error in %s.txt field 0 at %s\n", bin->ucdFile, fields[0][0]); exit(*pErrorCode); } - ++limit; /* parse binary property name */ s=(char *)u_skipWhitespace(fields[1][0]); @@ -364,7 +366,11 @@ binariesLineFn(void *context, } uv=U_MASK(bin->binaries[i].vecShift); - if(!upvec_setValue(pv, start, limit, bin->binaries[i].vecWord, uv, uv, pErrorCode)) { + if(start==0 && end==0x10ffff) { + /* Also set bits for initialValue and errorValue. */ + end=UPVEC_MAX_CP; + } + if(!upvec_setValue(pv, start, end, bin->binaries[i].vecWord, uv, uv, pErrorCode)) { fprintf(stderr, "genprops error: unable to set %s code: %s\n", bin->binaries[i].propName, u_errorName(*pErrorCode)); exit(*pErrorCode); @@ -407,7 +413,7 @@ initAdditionalProperties() { U_CFUNC void exitAdditionalProperties() { - utrie_close(trie); + utrie_close(newTrie); upvec_close(pv); } @@ -478,10 +484,10 @@ generateAdditionalProperties(char *filename, const char *suffix, UErrorCode *pEr * W for plane 2 */ *pErrorCode=U_ZERO_ERROR; - if( !upvec_setValue(pv, 0xe000, 0xf900, 0, (uint32_t)(U_EA_AMBIGUOUS<15 || (*end!='.' && *end!=' ' && *end!='\t' && *end!=0)) { + value=(uint32_t)uprv_strtoul(s, &numberLimit, 10); + if(s==numberLimit || value==0 || value>15 || (*numberLimit!='.' && *numberLimit!=' ' && *numberLimit!='\t' && *numberLimit!=0)) { fprintf(stderr, "genprops: syntax error in DerivedAge.txt field 1 at %s\n", fields[1][0]); *pErrorCode=U_PARSE_ERROR; exit(U_PARSE_ERROR); @@ -536,10 +539,10 @@ ageLineFn(void *context, version=value<<4; /* parse minor version number */ - if(*end=='.') { - s=(char *)u_skipWhitespace(end+1); - value=(uint32_t)uprv_strtoul(s, &end, 10); - if(s==end || value>15 || (*end!=' ' && *end!='\t' && *end!=0)) { + if(*numberLimit=='.') { + s=(char *)u_skipWhitespace(numberLimit+1); + value=(uint32_t)uprv_strtoul(s, &numberLimit, 10); + if(s==numberLimit || value>15 || (*numberLimit!=' ' && *numberLimit!='\t' && *numberLimit!=0)) { fprintf(stderr, "genprops: syntax error in DerivedAge.txt field 1 at %s\n", fields[1][0]); *pErrorCode=U_PARSE_ERROR; exit(U_PARSE_ERROR); @@ -547,7 +550,11 @@ ageLineFn(void *context, version|=value; } - if(!upvec_setValue(pv, start, limit, 0, version<=0x80000000) { + if(numberLimit<=s || (*numberLimit!='.' && u_skipWhitespace(numberLimit)!=fields[1][1]) || value>=0x80000000) { fprintf(stderr, "genprops: syntax error in DerivedNumericValues.txt field 1 at %s\n", fields[0][0]); exit(U_PARSE_ERROR); } @@ -641,7 +647,7 @@ numericLineFn(void *context, /* the exponent may have been set above */ value=makeProps(&newProps); - for(; startinitialValue, &errorCode); + } + utrie2_freeze(trie2, UTRIE2_16_VALUE_BITS, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "genbidi error: deleting lead surrogate code unit values failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } + } + + usrc_writeUTrie2Arrays(f, "static const uint16_t propsVectorsTrie_index[%ld]={\n", NULL, - &trie2, + trie2, "\n};\n\n"); - usrc_writeUTrieStruct(f, - "static const UTrie propsVectorsTrie={\n", - &trie2, "propsVectorsTrie_index", NULL, NULL, + usrc_writeUTrie2Struct(f, + "static const UTrie2 propsVectorsTrie={\n", + trie2, "propsVectorsTrie_index", NULL, "};\n\n"); + + utrie2_close(trie2); } p+=length; diff --git a/icu4c/source/tools/genprops/store.c b/icu4c/source/tools/genprops/store.c index 4e642d4d3b..804649526c 100644 --- a/icu4c/source/tools/genprops/store.c +++ b/icu4c/source/tools/genprops/store.c @@ -430,6 +430,7 @@ generateData(const char *dataDir, UBool csource) { if(csource) { /* write .c file for hardcoded data */ UTrie trie={ NULL }; + UTrie2 *trie2; FILE *f; utrie_unserialize(&trie, trieBlock, trieSize, &errorCode); @@ -438,7 +439,36 @@ generateData(const char *dataDir, UBool csource) { stderr, "genprops error: failed to utrie_unserialize(uprops.icu main trie) - %s\n", u_errorName(errorCode)); - return; + exit(errorCode); + } + + /* use UTrie2 */ + dataInfo.formatVersion[0]=6; + dataInfo.formatVersion[2]=0; + dataInfo.formatVersion[3]=0; + trie2=utrie2_fromUTrie(&trie, 0, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "genprops error: utrie2_fromUTrie() failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } + { + /* delete lead surrogate code unit values */ + UChar lead; + trie2=utrie2_cloneAsThawed(trie2, &errorCode); + for(lead=0xd800; lead<0xdc00; ++lead) { + utrie2_set32ForLeadSurrogateCodeUnit(trie2, lead, trie2->initialValue, &errorCode); + } + utrie2_freeze(trie2, UTRIE2_16_VALUE_BITS, &errorCode); + if(U_FAILURE(errorCode)) { + fprintf( + stderr, + "genprops error: deleting lead surrogate code unit values failed - %s\n", + u_errorName(errorCode)); + exit(errorCode); + } } f=usrc_create(dataDir, "uchar_props_data.c"); @@ -451,13 +481,13 @@ generateData(const char *dataDir, UBool csource) { "static const UVersionInfo dataVersion={", dataInfo.dataVersion, 8, 4, "};\n\n"); - usrc_writeUTrieArrays(f, + usrc_writeUTrie2Arrays(f, "static const uint16_t propsTrie_index[%ld]={\n", NULL, - &trie, + trie2, "\n};\n\n"); - usrc_writeUTrieStruct(f, - "static const UTrie propsTrie={\n", - &trie, "propsTrie_index", NULL, NULL, + usrc_writeUTrie2Struct(f, + "static const UTrie2 propsTrie={\n", + trie2, "propsTrie_index", NULL, "};\n\n"); additionalPropsSize=writeAdditionalData(f, additionalProps, sizeof(additionalProps), indexes); @@ -469,6 +499,7 @@ generateData(const char *dataDir, UBool csource) { "};\n\n"); fclose(f); } + utrie2_close(trie2); } else { /* write the data */ pData=udata_create(dataDir, DATA_TYPE, DATA_NAME, &dataInfo, diff --git a/icu4c/source/tools/toolutil/writesrc.c b/icu4c/source/tools/toolutil/writesrc.c index 28303c733e..bf103f940d 100644 --- a/icu4c/source/tools/toolutil/writesrc.c +++ b/icu4c/source/tools/toolutil/writesrc.c @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 2005-2007, International Business Machines +* Copyright (C) 2005-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -20,7 +20,7 @@ #include #include "unicode/utypes.h" #include "unicode/putil.h" -#include "utrie.h" +#include "utrie2.h" #include "cstring.h" #include "writesrc.h" @@ -139,51 +139,63 @@ usrc_writeArray(FILE *f, } U_CAPI void U_EXPORT2 -usrc_writeUTrieArrays(FILE *f, - const char *indexPrefix, const char *dataPrefix, - const UTrie *pTrie, - const char *postfix) { +usrc_writeUTrie2Arrays(FILE *f, + const char *indexPrefix, const char *data32Prefix, + const UTrie2 *pTrie, + const char *postfix) { if(pTrie->data32==NULL) { /* 16-bit trie */ usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, postfix); } else { /* 32-bit trie */ usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, postfix); - usrc_writeArray(f, dataPrefix, pTrie->data32, 32, pTrie->dataLength, postfix); + usrc_writeArray(f, data32Prefix, pTrie->data32, 32, pTrie->dataLength, postfix); } } U_CAPI void U_EXPORT2 -usrc_writeUTrieStruct(FILE *f, - const char *prefix, - const UTrie *pTrie, - const char *indexName, const char *dataName, - const char *getFoldingOffsetName, - const char *postfix) { +usrc_writeUTrie2Struct(FILE *f, + const char *prefix, + const UTrie2 *pTrie, + const char *indexName, const char *data32Name, + const char *postfix) { if(prefix!=NULL) { fputs(prefix, f); } - if(dataName==NULL) { - dataName="NULL"; - } - if(getFoldingOffsetName==NULL) { - getFoldingOffsetName="utrie_defaultGetFoldingOffset"; + if(pTrie->data32==NULL) { + /* 16-bit trie */ + fprintf( + f, + " %s,\n" /* index */ + " %s+%ld,\n" /* data16 */ + " NULL,\n", /* data32 */ + indexName, + indexName, + (long)pTrie->indexLength); + } else { + /* 32-bit trie */ + fprintf( + f, + " %s,\n" /* index */ + " NULL,\n" /* data16 */ + " %s,\n", /* data32 */ + indexName, + data32Name); } fprintf( f, - " %s,\n" - " %s,\n" - " %s,\n" - " %ld,\n" - " %ld,\n" - " %lu,\n" - " %s\n", - indexName, - dataName, - getFoldingOffsetName, + " %ld,\n" /* indexLength */ + " %ld,\n" /* dataLength */ + " 0x%hx,\n" /* index2NullOffset */ + " 0x%hx,\n" /* dataNullOffset */ + " 0x%lx,\n" /* initialValue */ + " 0x%lx,\n" /* errorValue */ + " 0x%lx,\n" /* highStart */ + " 0x%lx,\n", /* highValueIndex */ (long)pTrie->indexLength, (long)pTrie->dataLength, - (unsigned long)pTrie->initialValue, - pTrie->isLatin1Linear ? "TRUE" : "FALSE"); + (short)pTrie->index2NullOffset, (short)pTrie->dataNullOffset, + (long)pTrie->initialValue, (long)pTrie->errorValue, + (long)pTrie->highStart, (long)pTrie->highValueIndex); if(postfix!=NULL) { fputs(postfix, f); } diff --git a/icu4c/source/tools/toolutil/writesrc.h b/icu4c/source/tools/toolutil/writesrc.h index 613ee9d707..3636dcae49 100644 --- a/icu4c/source/tools/toolutil/writesrc.h +++ b/icu4c/source/tools/toolutil/writesrc.h @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 2005, International Business Machines +* Copyright (C) 2005-2008, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -21,7 +21,7 @@ #include #include "unicode/utypes.h" -#include "utrie.h" +#include "utrie2.h" /** * Create a source text file and write a header comment with the ICU copyright. @@ -43,28 +43,26 @@ usrc_writeArray(FILE *f, const char *postfix); /** - * Calls usrc_writeArray() for the index and data arrays of a runtime UTrie. - * Only the index array is written for a 16-bit UTrie. In this case, dataPrefix + * Calls usrc_writeArray() for the index and data arrays of a frozen UTrie2. + * Only the index array is written for a 16-bit UTrie2. In this case, dataPrefix * is ignored and can be NULL. */ U_CAPI void U_EXPORT2 -usrc_writeUTrieArrays(FILE *f, - const char *indexPrefix, const char *dataPrefix, - const UTrie *pTrie, - const char *postfix); +usrc_writeUTrie2Arrays(FILE *f, + const char *indexPrefix, const char *dataPrefix, + const UTrie2 *pTrie, + const char *postfix); /** - * Writes the UTrie struct values. + * Writes the UTrie2 struct values. * The {} and declaration etc. need to be included in prefix/postfix or * printed before and after the array contents. - * If getFoldingOffsetName==NULL then "utrie_defaultGetFoldingOffset" is printed. */ U_CAPI void U_EXPORT2 -usrc_writeUTrieStruct(FILE *f, - const char *prefix, - const UTrie *pTrie, - const char *indexName, const char *dataName, - const char *getFoldingOffsetName, - const char *postfix); +usrc_writeUTrie2Struct(FILE *f, + const char *prefix, + const UTrie2 *pTrie, + const char *indexName, const char *dataName, + const char *postfix); #endif