/ Hex Artifact Content
Login

Artifact b450b209b157d598f7b9df9f837afb75a14c24bf:


0000: 2f 2a 0a 2a 2a 20 32 30 31 32 20 4d 61 79 20 32  /*.** 2012 May 2
0010: 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  5.**.** The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
0060: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
0070: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
0080: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
0090: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
00a0: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
00b0: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
00c0: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
00d0: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
00e0: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
00f0: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
0100: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
0110: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
0120: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  *****.*/../*.** 
0180: 44 4f 20 4e 4f 54 20 45 44 49 54 20 54 48 49 53  DO NOT EDIT THIS
0190: 20 4d 41 43 48 49 4e 45 20 47 45 4e 45 52 41 54   MACHINE GENERAT
01a0: 45 44 20 46 49 4c 45 2e 0a 2a 2f 0a 0a 0a 23 69  ED FILE..*/...#i
01b0: 6e 63 6c 75 64 65 20 3c 61 73 73 65 72 74 2e 68  nclude <assert.h
01c0: 3e 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  >../*.** Return 
01d0: 74 72 75 65 20 69 66 20 74 68 65 20 61 72 67 75  true if the argu
01e0: 6d 65 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64 73  ment corresponds
01f0: 20 74 6f 20 61 20 75 6e 69 63 6f 64 65 20 63 6f   to a unicode co
0200: 64 65 70 6f 69 6e 74 0a 2a 2a 20 63 6c 61 73 73  depoint.** class
0210: 69 66 69 65 64 20 61 73 20 65 69 74 68 65 72 20  ified as either 
0220: 61 20 6c 65 74 74 65 72 20 6f 72 20 61 20 6e 75  a letter or a nu
0230: 6d 62 65 72 2e 20 4f 74 68 65 72 77 69 73 65 20  mber. Otherwise 
0240: 66 61 6c 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  false..**.** The
0250: 20 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64   results are und
0260: 65 66 69 6e 65 64 20 69 66 20 74 68 65 20 76 61  efined if the va
0270: 6c 75 65 20 70 61 73 73 65 64 20 74 6f 20 74 68  lue passed to th
0280: 69 73 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69  is function.** i
0290: 73 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f  s less than zero
02a0: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
02b0: 46 74 73 35 55 6e 69 63 6f 64 65 49 73 61 6c 6e  Fts5UnicodeIsaln
02c0: 75 6d 28 69 6e 74 20 63 29 7b 0a 20 20 2f 2a 20  um(int c){.  /* 
02d0: 45 61 63 68 20 75 6e 73 69 67 6e 65 64 20 69 6e  Each unsigned in
02e0: 74 65 67 65 72 20 69 6e 20 74 68 65 20 66 6f 6c  teger in the fol
02f0: 6c 6f 77 69 6e 67 20 61 72 72 61 79 20 63 6f 72  lowing array cor
0300: 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 20 63 6f  responds to a co
0310: 6e 74 69 67 75 6f 75 73 0a 20 20 2a 2a 20 72 61  ntiguous.  ** ra
0320: 6e 67 65 20 6f 66 20 75 6e 69 63 6f 64 65 20 63  nge of unicode c
0330: 6f 64 65 70 6f 69 6e 74 73 20 74 68 61 74 20 61  odepoints that a
0340: 72 65 20 6e 6f 74 20 65 69 74 68 65 72 20 6c 65  re not either le
0350: 74 74 65 72 73 20 6f 72 20 6e 75 6d 62 65 72 73  tters or numbers
0360: 20 28 69 2e 65 2e 0a 20 20 2a 2a 20 63 6f 64 65   (i.e..  ** code
0370: 70 6f 69 6e 74 73 20 66 6f 72 20 77 68 69 63 68  points for which
0380: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73   this function s
0390: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 30 29 2e  hould return 0).
03a0: 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 6d  .  **.  ** The m
03b0: 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20  ost significant 
03c0: 32 32 20 62 69 74 73 20 69 6e 20 65 61 63 68 20  22 bits in each 
03d0: 33 32 2d 62 69 74 20 76 61 6c 75 65 20 63 6f 6e  32-bit value con
03e0: 74 61 69 6e 20 74 68 65 20 66 69 72 73 74 20 0a  tain the first .
03f0: 20 20 2a 2a 20 63 6f 64 65 70 6f 69 6e 74 20 69    ** codepoint i
0400: 6e 20 74 68 65 20 72 61 6e 67 65 2e 20 54 68 65  n the range. The
0410: 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63 61   least significa
0420: 6e 74 20 31 30 20 62 69 74 73 20 61 72 65 20 75  nt 10 bits are u
0430: 73 65 64 20 74 6f 20 73 74 6f 72 65 0a 20 20 2a  sed to store.  *
0440: 2a 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  * the size of th
0450: 65 20 72 61 6e 67 65 20 28 61 6c 77 61 79 73 20  e range (always 
0460: 61 74 20 6c 65 61 73 74 20 31 29 2e 20 49 6e 20  at least 1). In 
0470: 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65  other words, the
0480: 20 76 61 6c 75 65 20 0a 20 20 2a 2a 20 28 28 43   value .  ** ((C
0490: 3c 3c 32 32 29 20 2b 20 4e 29 20 72 65 70 72 65  <<22) + N) repre
04a0: 73 65 6e 74 73 20 61 20 72 61 6e 67 65 20 6f 66  sents a range of
04b0: 20 4e 20 63 6f 64 65 70 6f 69 6e 74 73 20 73 74   N codepoints st
04c0: 61 72 74 69 6e 67 20 77 69 74 68 20 63 6f 64 65  arting with code
04d0: 70 6f 69 6e 74 20 0a 20 20 2a 2a 20 43 2e 20 49  point .  ** C. I
04e0: 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
04f0: 65 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20 61  e to represent a
0500: 20 72 61 6e 67 65 20 6c 61 72 67 65 72 20 74 68   range larger th
0510: 61 6e 20 31 30 32 33 20 63 6f 64 65 70 6f 69 6e  an 1023 codepoin
0520: 74 73 20 0a 20 20 2a 2a 20 75 73 69 6e 67 20 74  ts .  ** using t
0530: 68 69 73 20 66 6f 72 6d 61 74 2e 0a 20 20 2a 2f  his format..  */
0540: 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20  .  static const 
0550: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 61 45 6e  unsigned int aEn
0560: 74 72 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 30 78  try[] = {.    0x
0570: 30 30 30 30 30 30 33 30 2c 20 30 78 30 30 30 30  00000030, 0x0000
0580: 45 38 30 37 2c 20 30 78 30 30 30 31 36 43 30 36  E807, 0x00016C06
0590: 2c 20 30 78 30 30 30 31 45 43 32 46 2c 20 30 78  , 0x0001EC2F, 0x
05a0: 30 30 30 32 41 43 30 37 2c 0a 20 20 20 20 30 78  0002AC07,.    0x
05b0: 30 30 30 32 44 30 30 31 2c 20 30 78 30 30 30 32  0002D001, 0x0002
05c0: 44 38 30 33 2c 20 30 78 30 30 30 32 45 43 30 31  D803, 0x0002EC01
05d0: 2c 20 30 78 30 30 30 32 46 43 30 31 2c 20 30 78  , 0x0002FC01, 0x
05e0: 30 30 30 33 35 43 30 31 2c 0a 20 20 20 20 30 78  00035C01,.    0x
05f0: 30 30 30 33 44 43 30 31 2c 20 30 78 30 30 30 42  0003DC01, 0x000B
0600: 30 38 30 34 2c 20 30 78 30 30 30 42 34 38 30 45  0804, 0x000B480E
0610: 2c 20 30 78 30 30 30 42 39 34 30 37 2c 20 30 78  , 0x000B9407, 0x
0620: 30 30 30 42 42 34 30 31 2c 0a 20 20 20 20 30 78  000BB401,.    0x
0630: 30 30 30 42 42 43 38 31 2c 20 30 78 30 30 30 44  000BBC81, 0x000D
0640: 44 34 30 31 2c 20 30 78 30 30 30 44 46 38 30 31  D401, 0x000DF801
0650: 2c 20 30 78 30 30 30 45 31 30 30 32 2c 20 30 78  , 0x000E1002, 0x
0660: 30 30 30 45 31 43 30 31 2c 0a 20 20 20 20 30 78  000E1C01,.    0x
0670: 30 30 30 46 44 38 30 31 2c 20 30 78 30 30 31 32  000FD801, 0x0012
0680: 30 38 30 38 2c 20 30 78 30 30 31 35 36 38 30 36  0808, 0x00156806
0690: 2c 20 30 78 30 30 31 36 32 34 30 32 2c 20 30 78  , 0x00162402, 0x
06a0: 30 30 31 36 33 43 30 31 2c 0a 20 20 20 20 30 78  00163C01,.    0x
06b0: 30 30 31 36 34 34 33 37 2c 20 30 78 30 30 31 37  00164437, 0x0017
06c0: 43 43 30 32 2c 20 30 78 30 30 31 38 30 30 30 35  CC02, 0x00180005
06d0: 2c 20 30 78 30 30 31 38 31 38 31 36 2c 20 30 78  , 0x00181816, 0x
06e0: 30 30 31 38 37 38 30 32 2c 0a 20 20 20 20 30 78  00187802,.    0x
06f0: 30 30 31 39 32 43 31 35 2c 20 30 78 30 30 31 39  00192C15, 0x0019
0700: 41 38 30 34 2c 20 30 78 30 30 31 39 43 30 30 31  A804, 0x0019C001
0710: 2c 20 30 78 30 30 31 42 35 30 30 31 2c 20 30 78  , 0x001B5001, 0x
0720: 30 30 31 42 35 38 30 46 2c 0a 20 20 20 20 30 78  001B580F,.    0x
0730: 30 30 31 42 39 43 30 37 2c 20 30 78 30 30 31 42  001B9C07, 0x001B
0740: 46 34 30 32 2c 20 30 78 30 30 31 43 30 30 30 45  F402, 0x001C000E
0750: 2c 20 30 78 30 30 31 43 33 43 30 31 2c 20 30 78  , 0x001C3C01, 0x
0760: 30 30 31 43 34 34 30 31 2c 0a 20 20 20 20 30 78  001C4401,.    0x
0770: 30 30 31 43 43 30 31 42 2c 20 30 78 30 30 31 45  001CC01B, 0x001E
0780: 39 38 30 42 2c 20 30 78 30 30 31 46 41 43 30 39  980B, 0x001FAC09
0790: 2c 20 30 78 30 30 31 46 44 38 30 34 2c 20 30 78  , 0x001FD804, 0x
07a0: 30 30 32 30 35 38 30 34 2c 0a 20 20 20 20 30 78  00205804,.    0x
07b0: 30 30 32 30 36 43 30 39 2c 20 30 78 30 30 32 30  00206C09, 0x0020
07c0: 39 34 30 33 2c 20 30 78 30 30 32 30 41 34 30 35  9403, 0x0020A405
07d0: 2c 20 30 78 30 30 32 30 43 30 30 46 2c 20 30 78  , 0x0020C00F, 0x
07e0: 30 30 32 31 36 34 30 33 2c 0a 20 20 20 20 30 78  00216403,.    0x
07f0: 30 30 32 31 37 38 30 31 2c 20 30 78 30 30 32 33  00217801, 0x0023
0800: 39 30 31 42 2c 20 30 78 30 30 32 34 30 30 30 34  901B, 0x00240004
0810: 2c 20 30 78 30 30 32 34 45 38 30 33 2c 20 30 78  , 0x0024E803, 0x
0820: 30 30 32 34 46 38 31 32 2c 0a 20 20 20 20 30 78  0024F812,.    0x
0830: 30 30 32 35 34 34 30 37 2c 20 30 78 30 30 32 35  00254407, 0x0025
0840: 38 38 30 34 2c 20 30 78 30 30 32 35 43 30 30 31  8804, 0x0025C001
0850: 2c 20 30 78 30 30 32 36 30 34 30 33 2c 20 30 78  , 0x00260403, 0x
0860: 30 30 32 36 46 30 30 31 2c 0a 20 20 20 20 30 78  0026F001,.    0x
0870: 30 30 32 36 46 38 30 37 2c 20 30 78 30 30 32 37  0026F807, 0x0027
0880: 31 43 30 32 2c 20 30 78 30 30 32 37 32 43 30 33  1C02, 0x00272C03
0890: 2c 20 30 78 30 30 32 37 35 43 30 31 2c 20 30 78  , 0x00275C01, 0x
08a0: 30 30 32 37 38 38 30 32 2c 0a 20 20 20 20 30 78  00278802,.    0x
08b0: 30 30 32 37 43 38 30 32 2c 20 30 78 30 30 32 37  0027C802, 0x0027
08c0: 45 38 30 32 2c 20 30 78 30 30 32 38 30 34 30 33  E802, 0x00280403
08d0: 2c 20 30 78 30 30 32 38 46 30 30 31 2c 20 30 78  , 0x0028F001, 0x
08e0: 30 30 32 38 46 38 30 35 2c 0a 20 20 20 20 30 78  0028F805,.    0x
08f0: 30 30 32 39 31 43 30 32 2c 20 30 78 30 30 32 39  00291C02, 0x0029
0900: 32 43 30 33 2c 20 30 78 30 30 32 39 34 34 30 31  2C03, 0x00294401
0910: 2c 20 30 78 30 30 32 39 43 30 30 32 2c 20 30 78  , 0x0029C002, 0x
0920: 30 30 32 39 44 34 30 31 2c 0a 20 20 20 20 30 78  0029D401,.    0x
0930: 30 30 32 41 30 34 30 33 2c 20 30 78 30 30 32 41  002A0403, 0x002A
0940: 46 30 30 31 2c 20 30 78 30 30 32 41 46 38 30 38  F001, 0x002AF808
0950: 2c 20 30 78 30 30 32 42 31 43 30 33 2c 20 30 78  , 0x002B1C03, 0x
0960: 30 30 32 42 32 43 30 33 2c 0a 20 20 20 20 30 78  002B2C03,.    0x
0970: 30 30 32 42 38 38 30 32 2c 20 30 78 30 30 32 42  002B8802, 0x002B
0980: 43 30 30 32 2c 20 30 78 30 30 32 43 30 34 30 33  C002, 0x002C0403
0990: 2c 20 30 78 30 30 32 43 46 30 30 31 2c 20 30 78  , 0x002CF001, 0x
09a0: 30 30 32 43 46 38 30 37 2c 0a 20 20 20 20 30 78  002CF807,.    0x
09b0: 30 30 32 44 31 43 30 32 2c 20 30 78 30 30 32 44  002D1C02, 0x002D
09c0: 32 43 30 33 2c 20 30 78 30 30 32 44 35 38 30 32  2C03, 0x002D5802
09d0: 2c 20 30 78 30 30 32 44 38 38 30 32 2c 20 30 78  , 0x002D8802, 0x
09e0: 30 30 32 44 43 30 30 31 2c 0a 20 20 20 20 30 78  002DC001,.    0x
09f0: 30 30 32 45 30 38 30 31 2c 20 30 78 30 30 32 45  002E0801, 0x002E
0a00: 46 38 30 35 2c 20 30 78 30 30 32 46 31 38 30 33  F805, 0x002F1803
0a10: 2c 20 30 78 30 30 32 46 32 38 30 34 2c 20 30 78  , 0x002F2804, 0x
0a20: 30 30 32 46 35 43 30 31 2c 0a 20 20 20 20 30 78  002F5C01,.    0x
0a30: 30 30 32 46 43 43 30 38 2c 20 30 78 30 30 33 30  002FCC08, 0x0030
0a40: 30 34 30 33 2c 20 30 78 30 30 33 30 46 38 30 37  0403, 0x0030F807
0a50: 2c 20 30 78 30 30 33 31 31 38 30 33 2c 20 30 78  , 0x00311803, 0x
0a60: 30 30 33 31 32 38 30 34 2c 0a 20 20 20 20 30 78  00312804,.    0x
0a70: 30 30 33 31 35 34 30 32 2c 20 30 78 30 30 33 31  00315402, 0x0031
0a80: 38 38 30 32 2c 20 30 78 30 30 33 31 46 43 30 31  8802, 0x0031FC01
0a90: 2c 20 30 78 30 30 33 32 30 38 30 32 2c 20 30 78  , 0x00320802, 0x
0aa0: 30 30 33 32 46 30 30 31 2c 0a 20 20 20 20 30 78  0032F001,.    0x
0ab0: 30 30 33 32 46 38 30 37 2c 20 30 78 30 30 33 33  0032F807, 0x0033
0ac0: 31 38 30 33 2c 20 30 78 30 30 33 33 32 38 30 34  1803, 0x00332804
0ad0: 2c 20 30 78 30 30 33 33 35 34 30 32 2c 20 30 78  , 0x00335402, 0x
0ae0: 30 30 33 33 38 38 30 32 2c 0a 20 20 20 20 30 78  00338802,.    0x
0af0: 30 30 33 34 30 38 30 32 2c 20 30 78 30 30 33 34  00340802, 0x0034
0b00: 46 38 30 37 2c 20 30 78 30 30 33 35 31 38 30 33  F807, 0x00351803
0b10: 2c 20 30 78 30 30 33 35 32 38 30 34 2c 20 30 78  , 0x00352804, 0x
0b20: 30 30 33 35 35 43 30 31 2c 0a 20 20 20 20 30 78  00355C01,.    0x
0b30: 30 30 33 35 38 38 30 32 2c 20 30 78 30 30 33 35  00358802, 0x0035
0b40: 45 34 30 31 2c 20 30 78 30 30 33 36 30 38 30 32  E401, 0x00360802
0b50: 2c 20 30 78 30 30 33 37 32 38 30 31 2c 20 30 78  , 0x00372801, 0x
0b60: 30 30 33 37 33 43 30 36 2c 0a 20 20 20 20 30 78  00373C06,.    0x
0b70: 30 30 33 37 35 38 30 31 2c 20 30 78 30 30 33 37  00375801, 0x0037
0b80: 36 30 30 38 2c 20 30 78 30 30 33 37 43 38 30 33  6008, 0x0037C803
0b90: 2c 20 30 78 30 30 33 38 43 34 30 31 2c 20 30 78  , 0x0038C401, 0x
0ba0: 30 30 33 38 44 30 30 37 2c 0a 20 20 20 20 30 78  0038D007,.    0x
0bb0: 30 30 33 38 46 43 30 31 2c 20 30 78 30 30 33 39  0038FC01, 0x0039
0bc0: 31 43 30 39 2c 20 30 78 30 30 33 39 36 38 30 32  1C09, 0x00396802
0bd0: 2c 20 30 78 30 30 33 41 43 34 30 31 2c 20 30 78  , 0x003AC401, 0x
0be0: 30 30 33 41 44 30 30 36 2c 0a 20 20 20 20 30 78  003AD006,.    0x
0bf0: 30 30 33 41 45 43 30 32 2c 20 30 78 30 30 33 42  003AEC02, 0x003B
0c00: 32 30 30 36 2c 20 30 78 30 30 33 43 30 34 31 46  2006, 0x003C041F
0c10: 2c 20 30 78 30 30 33 43 44 30 30 43 2c 20 30 78  , 0x003CD00C, 0x
0c20: 30 30 33 44 43 34 31 37 2c 0a 20 20 20 20 30 78  003DC417,.    0x
0c30: 30 30 33 45 33 34 30 42 2c 20 30 78 30 30 33 45  003E340B, 0x003E
0c40: 36 34 32 34 2c 20 30 78 30 30 33 45 46 38 30 46  6424, 0x003EF80F
0c50: 2c 20 30 78 30 30 33 46 33 38 30 44 2c 20 30 78  , 0x003F380D, 0x
0c60: 30 30 34 30 41 43 31 34 2c 0a 20 20 20 20 30 78  0040AC14,.    0x
0c70: 30 30 34 31 32 38 30 36 2c 20 30 78 30 30 34 31  00412806, 0x0041
0c80: 35 38 30 34 2c 20 30 78 30 30 34 31 37 38 30 33  5804, 0x00417803
0c90: 2c 20 30 78 30 30 34 31 38 38 30 33 2c 20 30 78  , 0x00418803, 0x
0ca0: 30 30 34 31 39 43 30 37 2c 0a 20 20 20 20 30 78  00419C07,.    0x
0cb0: 30 30 34 31 43 34 30 34 2c 20 30 78 30 30 34 32  0041C404, 0x0042
0cc0: 30 38 30 43 2c 20 30 78 30 30 34 32 33 43 30 31  080C, 0x00423C01
0cd0: 2c 20 30 78 30 30 34 32 36 38 30 36 2c 20 30 78  , 0x00426806, 0x
0ce0: 30 30 34 33 45 43 30 31 2c 0a 20 20 20 20 30 78  0043EC01,.    0x
0cf0: 30 30 34 44 37 34 30 43 2c 20 30 78 30 30 34 45  004D740C, 0x004E
0d00: 34 30 30 41 2c 20 30 78 30 30 35 30 30 30 30 31  400A, 0x00500001
0d10: 2c 20 30 78 30 30 35 39 42 34 30 32 2c 20 30 78  , 0x0059B402, 0x
0d20: 30 30 35 41 30 30 30 31 2c 0a 20 20 20 20 30 78  005A0001,.    0x
0d30: 30 30 35 41 36 43 30 32 2c 20 30 78 30 30 35 42  005A6C02, 0x005B
0d40: 41 43 30 33 2c 20 30 78 30 30 35 43 34 38 30 33  AC03, 0x005C4803
0d50: 2c 20 30 78 30 30 35 43 43 38 30 35 2c 20 30 78  , 0x005CC805, 0x
0d60: 30 30 35 44 34 38 30 32 2c 0a 20 20 20 20 30 78  005D4802,.    0x
0d70: 30 30 35 44 43 38 30 32 2c 20 30 78 30 30 35 45  005DC802, 0x005E
0d80: 44 30 32 33 2c 20 30 78 30 30 35 46 36 30 30 34  D023, 0x005F6004
0d90: 2c 20 30 78 30 30 35 46 37 34 30 31 2c 20 30 78  , 0x005F7401, 0x
0da0: 30 30 36 30 30 30 30 46 2c 0a 20 20 20 20 30 78  0060000F,.    0x
0db0: 30 30 36 32 41 34 30 31 2c 20 30 78 30 30 36 34  0062A401, 0x0064
0dc0: 38 30 30 43 2c 20 30 78 30 30 36 34 43 30 30 43  800C, 0x0064C00C
0dd0: 2c 20 30 78 30 30 36 35 30 30 30 31 2c 20 30 78  , 0x00650001, 0x
0de0: 30 30 36 35 31 30 30 32 2c 0a 20 20 20 20 30 78  00651002,.    0x
0df0: 30 30 36 36 43 30 31 31 2c 20 30 78 30 30 36 37  0066C011, 0x0067
0e00: 32 30 30 32 2c 20 30 78 30 30 36 37 37 38 32 32  2002, 0x00677822
0e10: 2c 20 30 78 30 30 36 38 35 43 30 35 2c 20 30 78  , 0x00685C05, 0x
0e20: 30 30 36 38 37 38 30 32 2c 0a 20 20 20 20 30 78  00687802,.    0x
0e30: 30 30 36 39 35 34 30 41 2c 20 30 78 30 30 36 39  0069540A, 0x0069
0e40: 38 30 31 44 2c 20 30 78 30 30 36 39 46 43 30 31  801D, 0x0069FC01
0e50: 2c 20 30 78 30 30 36 41 38 30 30 37 2c 20 30 78  , 0x006A8007, 0x
0e60: 30 30 36 41 41 30 30 36 2c 0a 20 20 20 20 30 78  006AA006,.    0x
0e70: 30 30 36 43 30 30 30 35 2c 20 30 78 30 30 36 43  006C0005, 0x006C
0e80: 44 30 31 31 2c 20 30 78 30 30 36 44 36 38 32 33  D011, 0x006D6823
0e90: 2c 20 30 78 30 30 36 45 30 30 30 33 2c 20 30 78  , 0x006E0003, 0x
0ea0: 30 30 36 45 38 34 30 44 2c 0a 20 20 20 20 30 78  006E840D,.    0x
0eb0: 30 30 36 46 39 38 30 45 2c 20 30 78 30 30 36 46  006F980E, 0x006F
0ec0: 46 30 30 34 2c 20 30 78 30 30 37 30 39 30 31 34  F004, 0x00709014
0ed0: 2c 20 30 78 30 30 37 30 45 43 30 35 2c 20 30 78  , 0x0070EC05, 0x
0ee0: 30 30 37 31 46 38 30 32 2c 0a 20 20 20 20 30 78  0071F802,.    0x
0ef0: 30 30 37 33 30 30 30 38 2c 20 30 78 30 30 37 33  00730008, 0x0073
0f00: 34 30 31 39 2c 20 30 78 30 30 37 33 42 34 30 31  4019, 0x0073B401
0f10: 2c 20 30 78 30 30 37 33 43 38 30 33 2c 20 30 78  , 0x0073C803, 0x
0f20: 30 30 37 37 30 30 32 37 2c 0a 20 20 20 20 30 78  00770027,.    0x
0f30: 30 30 37 37 46 30 30 34 2c 20 30 78 30 30 37 45  0077F004, 0x007E
0f40: 46 34 30 31 2c 20 30 78 30 30 37 45 46 43 30 33  F401, 0x007EFC03
0f50: 2c 20 30 78 30 30 37 46 33 34 30 33 2c 20 30 78  , 0x007F3403, 0x
0f60: 30 30 37 46 37 34 30 33 2c 0a 20 20 20 20 30 78  007F7403,.    0x
0f70: 30 30 37 46 42 34 30 33 2c 20 30 78 30 30 37 46  007FB403, 0x007F
0f80: 46 34 30 32 2c 20 30 78 30 30 38 30 30 30 36 35  F402, 0x00800065
0f90: 2c 20 30 78 30 30 38 31 41 38 30 36 2c 20 30 78  , 0x0081A806, 0x
0fa0: 30 30 38 31 45 38 30 35 2c 0a 20 20 20 20 30 78  0081E805,.    0x
0fb0: 30 30 38 32 32 38 30 35 2c 20 30 78 30 30 38 32  00822805, 0x0082
0fc0: 38 30 31 41 2c 20 30 78 30 30 38 33 34 30 32 31  801A, 0x00834021
0fd0: 2c 20 30 78 30 30 38 34 30 30 30 32 2c 20 30 78  , 0x00840002, 0x
0fe0: 30 30 38 34 30 43 30 34 2c 0a 20 20 20 20 30 78  00840C04,.    0x
0ff0: 30 30 38 34 32 30 30 32 2c 20 30 78 30 30 38 34  00842002, 0x0084
1000: 35 30 30 31 2c 20 30 78 30 30 38 34 35 38 30 33  5001, 0x00845803
1010: 2c 20 30 78 30 30 38 34 37 38 30 36 2c 20 30 78  , 0x00847806, 0x
1020: 30 30 38 34 39 34 30 31 2c 0a 20 20 20 20 30 78  00849401,.    0x
1030: 30 30 38 34 39 43 30 31 2c 20 30 78 30 30 38 34  00849C01, 0x0084
1040: 41 34 30 31 2c 20 30 78 30 30 38 34 42 38 30 31  A401, 0x0084B801
1050: 2c 20 30 78 30 30 38 34 45 38 30 32 2c 20 30 78  , 0x0084E802, 0x
1060: 30 30 38 35 30 30 30 35 2c 0a 20 20 20 20 30 78  00850005,.    0x
1070: 30 30 38 35 32 38 30 34 2c 20 30 78 30 30 38 35  00852804, 0x0085
1080: 33 43 30 31 2c 20 30 78 30 30 38 36 34 32 36 34  3C01, 0x00864264
1090: 2c 20 30 78 30 30 39 30 30 30 32 37 2c 20 30 78  , 0x00900027, 0x
10a0: 30 30 39 31 30 30 30 42 2c 0a 20 20 20 20 30 78  0091000B,.    0x
10b0: 30 30 39 32 37 30 34 45 2c 20 30 78 30 30 39 34  0092704E, 0x0094
10c0: 30 32 30 30 2c 20 30 78 30 30 39 43 30 34 37 35  0200, 0x009C0475
10d0: 2c 20 30 78 30 30 39 45 35 33 42 39 2c 20 30 78  , 0x009E53B9, 0x
10e0: 30 30 41 44 34 30 30 41 2c 0a 20 20 20 20 30 78  00AD400A,.    0x
10f0: 30 30 42 33 39 34 30 36 2c 20 30 78 30 30 42 33  00B39406, 0x00B3
1100: 42 43 30 33 2c 20 30 78 30 30 42 33 45 34 30 34  BC03, 0x00B3E404
1110: 2c 20 30 78 30 30 42 33 46 38 30 32 2c 20 30 78  , 0x00B3F802, 0x
1120: 30 30 42 35 43 30 30 31 2c 0a 20 20 20 20 30 78  00B5C001,.    0x
1130: 30 30 42 35 46 43 30 31 2c 20 30 78 30 30 42 37  00B5FC01, 0x00B7
1140: 38 30 34 46 2c 20 30 78 30 30 42 38 43 30 30 43  804F, 0x00B8C00C
1150: 2c 20 30 78 30 30 42 41 30 30 31 41 2c 20 30 78  , 0x00BA001A, 0x
1160: 30 30 42 41 36 43 35 39 2c 0a 20 20 20 20 30 78  00BA6C59,.    0x
1170: 30 30 42 43 30 30 44 36 2c 20 30 78 30 30 42 46  00BC00D6, 0x00BF
1180: 43 30 30 43 2c 20 30 78 30 30 43 30 30 30 30 35  C00C, 0x00C00005
1190: 2c 20 30 78 30 30 43 30 32 30 31 39 2c 20 30 78  , 0x00C02019, 0x
11a0: 30 30 43 30 41 38 30 37 2c 0a 20 20 20 20 30 78  00C0A807,.    0x
11b0: 30 30 43 30 44 38 30 32 2c 20 30 78 30 30 43 30  00C0D802, 0x00C0
11c0: 46 34 30 33 2c 20 30 78 30 30 43 32 36 34 30 34  F403, 0x00C26404
11d0: 2c 20 30 78 30 30 43 32 38 30 30 31 2c 20 30 78  , 0x00C28001, 0x
11e0: 30 30 43 33 45 43 30 31 2c 0a 20 20 20 20 30 78  00C3EC01,.    0x
11f0: 30 30 43 36 34 30 30 32 2c 20 30 78 30 30 43 36  00C64002, 0x00C6
1200: 35 38 30 41 2c 20 30 78 30 30 43 37 30 30 32 34  580A, 0x00C70024
1210: 2c 20 30 78 30 30 43 38 30 30 31 46 2c 20 30 78  , 0x00C8001F, 0x
1220: 30 30 43 38 41 38 31 45 2c 0a 20 20 20 20 30 78  00C8A81E,.    0x
1230: 30 30 43 39 34 30 30 31 2c 20 30 78 30 30 43 39  00C94001, 0x00C9
1240: 38 30 32 30 2c 20 30 78 30 30 43 41 32 38 32 37  8020, 0x00CA2827
1250: 2c 20 30 78 30 30 43 42 30 30 33 46 2c 20 30 78  , 0x00CB003F, 0x
1260: 30 30 43 43 30 31 30 30 2c 0a 20 20 20 20 30 78  00CC0100,.    0x
1270: 30 31 33 37 30 30 34 30 2c 20 30 78 30 32 39 32  01370040, 0x0292
1280: 34 30 33 37 2c 20 30 78 30 32 39 33 46 38 30 32  4037, 0x0293F802
1290: 2c 20 30 78 30 32 39 38 33 34 30 33 2c 20 30 78  , 0x02983403, 0x
12a0: 30 32 39 39 42 43 31 30 2c 0a 20 20 20 20 30 78  0299BC10,.    0x
12b0: 30 32 39 41 37 43 30 31 2c 20 30 78 30 32 39 42  029A7C01, 0x029B
12c0: 43 30 30 38 2c 20 30 78 30 32 39 43 30 30 31 37  C008, 0x029C0017
12d0: 2c 20 30 78 30 32 39 43 38 30 30 32 2c 20 30 78  , 0x029C8002, 0x
12e0: 30 32 39 45 32 34 30 32 2c 0a 20 20 20 20 30 78  029E2402,.    0x
12f0: 30 32 41 30 30 38 30 31 2c 20 30 78 30 32 41 30  02A00801, 0x02A0
1300: 31 38 30 31 2c 20 30 78 30 32 41 30 32 43 30 31  1801, 0x02A02C01
1310: 2c 20 30 78 30 32 41 30 38 43 30 39 2c 20 30 78  , 0x02A08C09, 0x
1320: 30 32 41 30 44 38 30 34 2c 0a 20 20 20 20 30 78  02A0D804,.    0x
1330: 30 32 41 31 44 30 30 34 2c 20 30 78 30 32 41 32  02A1D004, 0x02A2
1340: 30 30 30 32 2c 20 30 78 30 32 41 32 44 30 31 31  0002, 0x02A2D011
1350: 2c 20 30 78 30 32 41 33 33 38 30 32 2c 20 30 78  , 0x02A33802, 0x
1360: 30 32 41 33 38 30 31 32 2c 0a 20 20 20 20 30 78  02A38012,.    0x
1370: 30 32 41 33 45 30 30 33 2c 20 30 78 30 32 41 34  02A3E003, 0x02A4
1380: 39 38 30 41 2c 20 30 78 30 32 41 35 31 43 30 44  980A, 0x02A51C0D
1390: 2c 20 30 78 30 32 41 35 37 43 30 31 2c 20 30 78  , 0x02A57C01, 0x
13a0: 30 32 41 36 30 30 30 34 2c 0a 20 20 20 20 30 78  02A60004,.    0x
13b0: 30 32 41 36 43 43 31 42 2c 20 30 78 30 32 41 37  02A6CC1B, 0x02A7
13c0: 37 38 30 32 2c 20 30 78 30 32 41 38 41 34 30 45  7802, 0x02A8A40E
13d0: 2c 20 30 78 30 32 41 39 30 43 30 31 2c 20 30 78  , 0x02A90C01, 0x
13e0: 30 32 41 39 33 30 30 32 2c 0a 20 20 20 20 30 78  02A93002,.    0x
13f0: 30 32 41 39 37 30 30 34 2c 20 30 78 30 32 41 39  02A97004, 0x02A9
1400: 44 43 30 33 2c 20 30 78 30 32 41 39 45 43 30 31  DC03, 0x02A9EC01
1410: 2c 20 30 78 30 32 41 41 43 30 30 31 2c 20 30 78  , 0x02AAC001, 0x
1420: 30 32 41 41 43 38 30 33 2c 0a 20 20 20 20 30 78  02AAC803,.    0x
1430: 30 32 41 41 44 43 30 32 2c 20 30 78 30 32 41 41  02AADC02, 0x02AA
1440: 46 38 30 32 2c 20 30 78 30 32 41 42 30 34 30 31  F802, 0x02AB0401
1450: 2c 20 30 78 30 32 41 42 37 38 30 32 2c 20 30 78  , 0x02AB7802, 0x
1460: 30 32 41 42 41 43 30 37 2c 0a 20 20 20 20 30 78  02ABAC07,.    0x
1470: 30 32 41 42 44 34 30 32 2c 20 30 78 30 32 41 46  02ABD402, 0x02AF
1480: 38 43 30 42 2c 20 30 78 30 33 36 30 30 30 30 31  8C0B, 0x03600001
1490: 2c 20 30 78 30 33 36 44 46 43 30 32 2c 20 30 78  , 0x036DFC02, 0x
14a0: 30 33 36 46 46 43 30 32 2c 0a 20 20 20 20 30 78  036FFC02,.    0x
14b0: 30 33 37 46 46 43 30 31 2c 20 30 78 30 33 45 43  037FFC01, 0x03EC
14c0: 37 38 30 31 2c 20 30 78 30 33 45 43 41 34 30 31  7801, 0x03ECA401
14d0: 2c 20 30 78 30 33 45 45 43 38 31 30 2c 20 30 78  , 0x03EEC810, 0x
14e0: 30 33 46 34 46 38 30 32 2c 0a 20 20 20 20 30 78  03F4F802,.    0x
14f0: 30 33 46 37 46 30 30 32 2c 20 30 78 30 33 46 38  03F7F002, 0x03F8
1500: 30 30 31 41 2c 20 30 78 30 33 46 38 38 30 30 37  001A, 0x03F88007
1510: 2c 20 30 78 30 33 46 38 43 30 32 33 2c 20 30 78  , 0x03F8C023, 0x
1520: 30 33 46 39 35 30 31 33 2c 0a 20 20 20 20 30 78  03F95013,.    0x
1530: 30 33 46 39 41 30 30 34 2c 20 30 78 30 33 46 42  03F9A004, 0x03FB
1540: 46 43 30 31 2c 20 30 78 30 33 46 43 30 34 30 46  FC01, 0x03FC040F
1550: 2c 20 30 78 30 33 46 43 36 38 30 37 2c 20 30 78  , 0x03FC6807, 0x
1560: 30 33 46 43 45 43 30 36 2c 0a 20 20 20 20 30 78  03FCEC06,.    0x
1570: 30 33 46 44 36 43 30 42 2c 20 30 78 30 33 46 46  03FD6C0B, 0x03FF
1580: 38 30 30 37 2c 20 30 78 30 33 46 46 41 30 30 37  8007, 0x03FFA007
1590: 2c 20 30 78 30 33 46 46 45 34 30 35 2c 20 30 78  , 0x03FFE405, 0x
15a0: 30 34 30 34 30 30 30 33 2c 0a 20 20 20 20 30 78  04040003,.    0x
15b0: 30 34 30 34 44 43 30 39 2c 20 30 78 30 34 30 35  0404DC09, 0x0405
15c0: 45 34 31 31 2c 20 30 78 30 34 30 36 34 30 30 43  E411, 0x0406400C
15d0: 2c 20 30 78 30 34 30 37 34 30 32 45 2c 20 30 78  , 0x0407402E, 0x
15e0: 30 34 30 45 37 43 30 31 2c 0a 20 20 20 20 30 78  040E7C01,.    0x
15f0: 30 34 30 46 34 30 30 31 2c 20 30 78 30 34 32 31  040F4001, 0x0421
1600: 35 43 30 31 2c 20 30 78 30 34 32 34 37 43 30 31  5C01, 0x04247C01
1610: 2c 20 30 78 30 34 32 34 46 43 30 31 2c 20 30 78  , 0x0424FC01, 0x
1620: 30 34 32 38 30 34 30 33 2c 0a 20 20 20 20 30 78  04280403,.    0x
1630: 30 34 32 38 31 34 30 32 2c 20 30 78 30 34 32 38  04281402, 0x0428
1640: 33 30 30 34 2c 20 30 78 30 34 32 38 45 30 30 33  3004, 0x0428E003
1650: 2c 20 30 78 30 34 32 38 46 43 30 31 2c 20 30 78  , 0x0428FC01, 0x
1660: 30 34 32 39 34 30 30 39 2c 0a 20 20 20 20 30 78  04294009,.    0x
1670: 30 34 32 39 46 43 30 31 2c 20 30 78 30 34 32 43  0429FC01, 0x042C
1680: 45 34 30 37 2c 20 30 78 30 34 34 30 30 30 30 33  E407, 0x04400003
1690: 2c 20 30 78 30 34 34 30 45 30 31 36 2c 20 30 78  , 0x0440E016, 0x
16a0: 30 34 34 32 30 30 30 33 2c 0a 20 20 20 20 30 78  04420003,.    0x
16b0: 30 34 34 32 43 30 31 32 2c 20 30 78 30 34 34 34  0442C012, 0x0444
16c0: 30 30 30 33 2c 20 30 78 30 34 34 34 39 43 30 45  0003, 0x04449C0E
16d0: 2c 20 30 78 30 34 34 35 30 30 30 34 2c 20 30 78  , 0x04450004, 0x
16e0: 30 34 34 36 30 30 30 33 2c 0a 20 20 20 20 30 78  04460003,.    0x
16f0: 30 34 34 36 43 43 30 45 2c 20 30 78 30 34 34 37  0446CC0E, 0x0447
1700: 31 34 30 34 2c 20 30 78 30 34 35 41 41 43 30 44  1404, 0x045AAC0D
1710: 2c 20 30 78 30 34 39 31 43 30 30 34 2c 20 30 78  , 0x0491C004, 0x
1720: 30 35 42 44 34 34 32 45 2c 0a 20 20 20 20 30 78  05BD442E,.    0x
1730: 30 35 42 45 33 43 30 34 2c 20 30 78 30 37 34 30  05BE3C04, 0x0740
1740: 30 30 46 36 2c 20 30 78 30 37 34 34 30 30 32 37  00F6, 0x07440027
1750: 2c 20 30 78 30 37 34 34 41 34 42 35 2c 20 30 78  , 0x0744A4B5, 0x
1760: 30 37 34 38 30 30 34 36 2c 0a 20 20 20 20 30 78  07480046,.    0x
1770: 30 37 34 43 30 30 35 37 2c 20 30 78 30 37 35 42  074C0057, 0x075B
1780: 30 34 30 31 2c 20 30 78 30 37 35 42 36 43 30 31  0401, 0x075B6C01
1790: 2c 20 30 78 30 37 35 42 45 43 30 31 2c 20 30 78  , 0x075BEC01, 0x
17a0: 30 37 35 43 35 34 30 31 2c 0a 20 20 20 20 30 78  075C5401,.    0x
17b0: 30 37 35 43 44 34 30 31 2c 20 30 78 30 37 35 44  075CD401, 0x075D
17c0: 33 43 30 31 2c 20 30 78 30 37 35 44 42 43 30 31  3C01, 0x075DBC01
17d0: 2c 20 30 78 30 37 35 45 32 34 30 31 2c 20 30 78  , 0x075E2401, 0x
17e0: 30 37 35 45 41 34 30 31 2c 0a 20 20 20 20 30 78  075EA401,.    0x
17f0: 30 37 35 46 30 43 30 31 2c 20 30 78 30 37 42 42  075F0C01, 0x07BB
1800: 43 30 30 32 2c 20 30 78 30 37 43 30 30 30 32 43  C002, 0x07C0002C
1810: 2c 20 30 78 30 37 43 30 43 30 36 34 2c 20 30 78  , 0x07C0C064, 0x
1820: 30 37 43 32 38 30 30 46 2c 0a 20 20 20 20 30 78  07C2800F,.    0x
1830: 30 37 43 32 43 34 30 45 2c 20 30 78 30 37 43 33  07C2C40E, 0x07C3
1840: 30 34 30 46 2c 20 30 78 30 37 43 33 34 34 30 46  040F, 0x07C3440F
1850: 2c 20 30 78 30 37 43 34 34 30 31 46 2c 20 30 78  , 0x07C4401F, 0x
1860: 30 37 43 34 43 30 33 43 2c 0a 20 20 20 20 30 78  07C4C03C,.    0x
1870: 30 37 43 35 43 30 32 42 2c 20 30 78 30 37 43 37  07C5C02B, 0x07C7
1880: 39 38 31 44 2c 20 30 78 30 37 43 38 34 30 32 42  981D, 0x07C8402B
1890: 2c 20 30 78 30 37 43 39 30 30 30 39 2c 20 30 78  , 0x07C90009, 0x
18a0: 30 37 43 39 34 30 30 32 2c 0a 20 20 20 20 30 78  07C94002,.    0x
18b0: 30 37 43 43 30 30 32 31 2c 20 30 78 30 37 43 43  07CC0021, 0x07CC
18c0: 43 30 30 36 2c 20 30 78 30 37 43 43 44 43 34 36  C006, 0x07CCDC46
18d0: 2c 20 30 78 30 37 43 45 30 30 31 34 2c 20 30 78  , 0x07CE0014, 0x
18e0: 30 37 43 45 38 30 32 35 2c 0a 20 20 20 20 30 78  07CE8025,.    0x
18f0: 30 37 43 46 31 38 30 35 2c 20 30 78 30 37 43 46  07CF1805, 0x07CF
1900: 38 30 31 31 2c 20 30 78 30 37 44 30 30 30 33 46  8011, 0x07D0003F
1910: 2c 20 30 78 30 37 44 31 30 30 30 31 2c 20 30 78  , 0x07D10001, 0x
1920: 30 37 44 31 30 38 42 36 2c 0a 20 20 20 20 30 78  07D108B6,.    0x
1930: 30 37 44 33 45 34 30 34 2c 20 30 78 30 37 44 34  07D3E404, 0x07D4
1940: 30 30 33 45 2c 20 30 78 30 37 44 35 30 30 30 34  003E, 0x07D50004
1950: 2c 20 30 78 30 37 44 35 34 30 31 38 2c 20 30 78  , 0x07D54018, 0x
1960: 30 37 44 37 45 43 34 36 2c 0a 20 20 20 20 30 78  07D7EC46,.    0x
1970: 30 37 44 39 31 34 30 42 2c 20 30 78 30 37 44 41  07D9140B, 0x07DA
1980: 30 30 34 36 2c 20 30 78 30 37 44 43 30 30 37 34  0046, 0x07DC0074
1990: 2c 20 30 78 33 38 30 30 30 34 30 31 2c 20 30 78  , 0x38000401, 0x
19a0: 33 38 30 30 38 30 36 30 2c 0a 20 20 20 20 30 78  38008060,.    0x
19b0: 33 38 30 34 30 30 46 30 2c 0a 20 20 7d 3b 0a 20  380400F0,.  };. 
19c0: 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 75 6e   static const un
19d0: 73 69 67 6e 65 64 20 69 6e 74 20 61 41 73 63 69  signed int aAsci
19e0: 69 5b 34 5d 20 3d 20 7b 0a 20 20 20 20 30 78 46  i[4] = {.    0xF
19f0: 46 46 46 46 46 46 46 2c 20 30 78 46 43 30 30 46  FFFFFFF, 0xFC00F
1a00: 46 46 46 2c 20 30 78 46 38 30 30 30 30 30 31 2c  FFF, 0xF8000001,
1a10: 20 30 78 46 38 30 30 30 30 30 31 2c 0a 20 20 7d   0xF8000001,.  }
1a20: 3b 0a 0a 20 20 69 66 28 20 28 75 6e 73 69 67 6e  ;..  if( (unsign
1a30: 65 64 20 69 6e 74 29 63 3c 31 32 38 20 29 7b 0a  ed int)c<128 ){.
1a40: 20 20 20 20 72 65 74 75 72 6e 20 28 20 28 61 41      return ( (aA
1a50: 73 63 69 69 5b 63 20 3e 3e 20 35 5d 20 26 20 28  scii[c >> 5] & (
1a60: 31 20 3c 3c 20 28 63 20 26 20 30 78 30 30 31 46  1 << (c & 0x001F
1a70: 29 29 29 3d 3d 30 20 29 3b 0a 20 20 7d 65 6c 73  )))==0 );.  }els
1a80: 65 20 69 66 28 20 28 75 6e 73 69 67 6e 65 64 20  e if( (unsigned 
1a90: 69 6e 74 29 63 3c 28 31 3c 3c 32 32 29 20 29 7b  int)c<(1<<22) ){
1aa0: 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  .    unsigned in
1ab0: 74 20 6b 65 79 20 3d 20 28 28 28 75 6e 73 69 67  t key = (((unsig
1ac0: 6e 65 64 20 69 6e 74 29 63 29 3c 3c 31 30 29 20  ned int)c)<<10) 
1ad0: 7c 20 30 78 30 30 30 30 30 33 46 46 3b 0a 20 20  | 0x000003FF;.  
1ae0: 20 20 69 6e 74 20 69 52 65 73 20 3d 20 30 3b 0a    int iRes = 0;.
1af0: 20 20 20 20 69 6e 74 20 69 48 69 20 3d 20 73 69      int iHi = si
1b00: 7a 65 6f 66 28 61 45 6e 74 72 79 29 2f 73 69 7a  zeof(aEntry)/siz
1b10: 65 6f 66 28 61 45 6e 74 72 79 5b 30 5d 29 20 2d  eof(aEntry[0]) -
1b20: 20 31 3b 0a 20 20 20 20 69 6e 74 20 69 4c 6f 20   1;.    int iLo 
1b30: 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 28 20  = 0;.    while( 
1b40: 69 48 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20  iHi>=iLo ){.    
1b50: 20 20 69 6e 74 20 69 54 65 73 74 20 3d 20 28 69    int iTest = (i
1b60: 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32 3b 0a 20  Hi + iLo) / 2;. 
1b70: 20 20 20 20 20 69 66 28 20 6b 65 79 20 3e 3d 20       if( key >= 
1b80: 61 45 6e 74 72 79 5b 69 54 65 73 74 5d 20 29 7b  aEntry[iTest] ){
1b90: 0a 20 20 20 20 20 20 20 20 69 52 65 73 20 3d 20  .        iRes = 
1ba0: 69 54 65 73 74 3b 0a 20 20 20 20 20 20 20 20 69  iTest;.        i
1bb0: 4c 6f 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20  Lo = iTest+1;.  
1bc0: 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20      }else{.     
1bd0: 20 20 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31     iHi = iTest-1
1be0: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a  ;.      }.    }.
1bf0: 20 20 20 20 61 73 73 65 72 74 28 20 61 45 6e 74      assert( aEnt
1c00: 72 79 5b 30 5d 3c 6b 65 79 20 29 3b 0a 20 20 20  ry[0]<key );.   
1c10: 20 61 73 73 65 72 74 28 20 6b 65 79 3e 3d 61 45   assert( key>=aE
1c20: 6e 74 72 79 5b 69 52 65 73 5d 20 29 3b 0a 20 20  ntry[iRes] );.  
1c30: 20 20 72 65 74 75 72 6e 20 28 28 28 75 6e 73 69    return (((unsi
1c40: 67 6e 65 64 20 69 6e 74 29 63 29 20 3e 3d 20 28  gned int)c) >= (
1c50: 28 61 45 6e 74 72 79 5b 69 52 65 73 5d 3e 3e 31  (aEntry[iRes]>>1
1c60: 30 29 20 2b 20 28 61 45 6e 74 72 79 5b 69 52 65  0) + (aEntry[iRe
1c70: 73 5d 26 30 78 33 46 46 29 29 29 3b 0a 20 20 7d  s]&0x3FF)));.  }
1c80: 0a 20 20 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a  .  return 1;.}..
1c90: 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68 65 20 61 72  ./*.** If the ar
1ca0: 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 64 65  gument is a code
1cb0: 70 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64  point correspond
1cc0: 69 6e 67 20 74 6f 20 61 20 6c 6f 77 65 72 63 61  ing to a lowerca
1cd0: 73 65 20 6c 65 74 74 65 72 0a 2a 2a 20 69 6e 20  se letter.** in 
1ce0: 74 68 65 20 41 53 43 49 49 20 72 61 6e 67 65 20  the ASCII range 
1cf0: 77 69 74 68 20 61 20 64 69 61 63 72 69 74 69 63  with a diacritic
1d00: 20 61 64 64 65 64 2c 20 72 65 74 75 72 6e 20 74   added, return t
1d10: 68 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20  he codepoint.** 
1d20: 6f 66 20 74 68 65 20 41 53 43 49 49 20 6c 65 74  of the ASCII let
1d30: 74 65 72 20 6f 6e 6c 79 2e 20 46 6f 72 20 65 78  ter only. For ex
1d40: 61 6d 70 6c 65 2c 20 69 66 20 70 61 73 73 65 64  ample, if passed
1d50: 20 32 33 35 20 2d 20 22 4c 41 54 49 4e 0a 2a 2a   235 - "LATIN.**
1d60: 20 53 4d 41 4c 4c 20 4c 45 54 54 45 52 20 45 20   SMALL LETTER E 
1d70: 57 49 54 48 20 44 49 41 45 52 45 53 49 53 22 20  WITH DIAERESIS" 
1d80: 2d 20 72 65 74 75 72 6e 20 36 35 20 28 22 4c 41  - return 65 ("LA
1d90: 54 49 4e 20 53 4d 41 4c 4c 20 4c 45 54 54 45 52  TIN SMALL LETTER
1da0: 0a 2a 2a 20 45 22 29 2e 20 54 68 65 20 72 65 73  .** E"). The res
1db0: 75 6c 73 20 6f 66 20 70 61 73 73 69 6e 67 20 61  uls of passing a
1dc0: 20 63 6f 64 65 70 6f 69 6e 74 20 74 68 61 74 20   codepoint that 
1dd0: 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61  corresponds to a
1de0: 6e 0a 2a 2a 20 75 70 70 65 72 63 61 73 65 20 6c  n.** uppercase l
1df0: 65 74 74 65 72 20 61 72 65 20 75 6e 64 65 66 69  etter are undefi
1e00: 6e 65 64 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 69  ned..*/.static i
1e10: 6e 74 20 66 74 73 35 5f 72 65 6d 6f 76 65 5f 64  nt fts5_remove_d
1e20: 69 61 63 72 69 74 69 63 28 69 6e 74 20 63 29 7b  iacritic(int c){
1e30: 0a 20 20 75 6e 73 69 67 6e 65 64 20 73 68 6f 72  .  unsigned shor
1e40: 74 20 61 44 69 61 5b 5d 20 3d 20 7b 0a 20 20 20  t aDia[] = {.   
1e50: 20 20 20 20 20 30 2c 20 20 31 37 39 37 2c 20 20       0,  1797,  
1e60: 31 38 34 38 2c 20 20 31 38 35 39 2c 20 20 31 38  1848,  1859,  18
1e70: 39 31 2c 20 20 31 39 32 38 2c 20 20 31 39 34 30  91,  1928,  1940
1e80: 2c 20 20 31 39 39 35 2c 20 0a 20 20 20 20 20 32  ,  1995, .     2
1e90: 30 32 34 2c 20 20 32 30 34 30 2c 20 20 32 30 36  024,  2040,  206
1ea0: 30 2c 20 20 32 31 31 30 2c 20 20 32 31 36 38 2c  0,  2110,  2168,
1eb0: 20 20 32 32 30 36 2c 20 20 32 32 36 34 2c 20 20    2206,  2264,  
1ec0: 32 32 38 36 2c 20 0a 20 20 20 20 20 32 33 34 34  2286, .     2344
1ed0: 2c 20 20 32 33 38 33 2c 20 20 32 34 37 32 2c 20  ,  2383,  2472, 
1ee0: 20 32 34 38 38 2c 20 20 32 35 31 36 2c 20 20 32   2488,  2516,  2
1ef0: 35 39 36 2c 20 20 32 36 36 38 2c 20 20 32 37 33  596,  2668,  273
1f00: 32 2c 20 0a 20 20 20 20 20 32 37 38 32 2c 20 20  2, .     2782,  
1f10: 32 38 34 32 2c 20 20 32 38 39 34 2c 20 20 32 39  2842,  2894,  29
1f20: 35 34 2c 20 20 32 39 38 34 2c 20 20 33 30 30 30  54,  2984,  3000
1f30: 2c 20 20 33 30 32 38 2c 20 20 33 33 33 36 2c 20  ,  3028,  3336, 
1f40: 0a 20 20 20 20 20 33 34 35 36 2c 20 20 33 36 39  .     3456,  369
1f50: 36 2c 20 20 33 37 31 32 2c 20 20 33 37 32 38 2c  6,  3712,  3728,
1f60: 20 20 33 37 34 34 2c 20 20 33 38 39 36 2c 20 20    3744,  3896,  
1f70: 33 39 31 32 2c 20 20 33 39 32 38 2c 20 0a 20 20  3912,  3928, .  
1f80: 20 20 20 33 39 36 38 2c 20 20 34 30 30 38 2c 20     3968,  4008, 
1f90: 20 34 30 34 30 2c 20 20 34 31 30 36 2c 20 20 34   4040,  4106,  4
1fa0: 31 33 38 2c 20 20 34 31 37 30 2c 20 20 34 32 30  138,  4170,  420
1fb0: 32 2c 20 20 34 32 33 34 2c 20 0a 20 20 20 20 20  2,  4234, .     
1fc0: 34 32 36 36 2c 20 20 34 32 39 36 2c 20 20 34 33  4266,  4296,  43
1fd0: 31 32 2c 20 20 34 33 34 34 2c 20 20 34 34 30 38  12,  4344,  4408
1fe0: 2c 20 20 34 34 32 34 2c 20 20 34 34 37 32 2c 20  ,  4424,  4472, 
1ff0: 20 34 35 30 34 2c 20 0a 20 20 20 20 20 36 31 34   4504, .     614
2000: 38 2c 20 20 36 31 39 38 2c 20 20 36 32 36 34 2c  8,  6198,  6264,
2010: 20 20 36 32 38 30 2c 20 20 36 33 36 30 2c 20 20    6280,  6360,  
2020: 36 34 32 39 2c 20 20 36 35 30 35 2c 20 20 36 35  6429,  6505,  65
2030: 32 39 2c 20 0a 20 20 20 20 36 31 34 34 38 2c 20  29, .    61448, 
2040: 36 31 34 36 38 2c 20 36 31 35 33 34 2c 20 36 31  61468, 61534, 61
2050: 35 39 32 2c 20 36 31 36 34 32 2c 20 36 31 36 38  592, 61642, 6168
2060: 38 2c 20 36 31 37 30 34 2c 20 36 31 37 32 36 2c  8, 61704, 61726,
2070: 20 0a 20 20 20 20 36 31 37 38 34 2c 20 36 31 38   .    61784, 618
2080: 30 30 2c 20 36 31 38 33 36 2c 20 36 31 38 38 30  00, 61836, 61880
2090: 2c 20 36 31 39 31 34 2c 20 36 31 39 34 38 2c 20  , 61914, 61948, 
20a0: 36 31 39 39 38 2c 20 36 32 31 32 32 2c 20 0a 20  61998, 62122, . 
20b0: 20 20 20 36 32 31 35 34 2c 20 36 32 32 30 30 2c     62154, 62200,
20c0: 20 36 32 32 31 38 2c 20 36 32 33 30 32 2c 20 36   62218, 62302, 6
20d0: 32 33 36 34 2c 20 36 32 34 34 32 2c 20 36 32 34  2364, 62442, 624
20e0: 37 38 2c 20 36 32 35 33 36 2c 20 0a 20 20 20 20  78, 62536, .    
20f0: 36 32 35 35 34 2c 20 36 32 35 38 34 2c 20 36 32  62554, 62584, 62
2100: 36 30 34 2c 20 36 32 36 34 30 2c 20 36 32 36 34  604, 62640, 6264
2110: 38 2c 20 36 32 36 35 36 2c 20 36 32 36 36 34 2c  8, 62656, 62664,
2120: 20 36 32 37 33 30 2c 20 0a 20 20 20 20 36 32 39   62730, .    629
2130: 32 34 2c 20 36 33 30 35 30 2c 20 36 33 30 38 32  24, 63050, 63082
2140: 2c 20 36 33 32 37 34 2c 20 36 33 33 39 30 2c 20  , 63274, 63390, 
2150: 0a 20 20 7d 3b 0a 20 20 63 68 61 72 20 61 43 68  .  };.  char aCh
2160: 61 72 5b 5d 20 3d 20 7b 0a 20 20 20 20 27 5c 30  ar[] = {.    '\0
2170: 27 2c 20 27 61 27 2c 20 20 27 63 27 2c 20 20 27  ', 'a',  'c',  '
2180: 65 27 2c 20 20 27 69 27 2c 20 20 27 6e 27 2c 20  e',  'i',  'n', 
2190: 20 27 6f 27 2c 20 20 27 75 27 2c 20 20 27 79 27   'o',  'u',  'y'
21a0: 2c 20 20 27 79 27 2c 20 20 27 61 27 2c 20 20 27  ,  'y',  'a',  '
21b0: 63 27 2c 20 20 0a 20 20 20 20 27 64 27 2c 20 20  c',  .    'd',  
21c0: 27 65 27 2c 20 20 27 65 27 2c 20 20 27 67 27 2c  'e',  'e',  'g',
21d0: 20 20 27 68 27 2c 20 20 27 69 27 2c 20 20 27 6a    'h',  'i',  'j
21e0: 27 2c 20 20 27 6b 27 2c 20 20 27 6c 27 2c 20 20  ',  'k',  'l',  
21f0: 27 6e 27 2c 20 20 27 6f 27 2c 20 20 27 72 27 2c  'n',  'o',  'r',
2200: 20 20 0a 20 20 20 20 27 73 27 2c 20 20 27 74 27    .    's',  't'
2210: 2c 20 20 27 75 27 2c 20 20 27 75 27 2c 20 20 27  ,  'u',  'u',  '
2220: 77 27 2c 20 20 27 79 27 2c 20 20 27 7a 27 2c 20  w',  'y',  'z', 
2230: 20 27 6f 27 2c 20 20 27 75 27 2c 20 20 27 61 27   'o',  'u',  'a'
2240: 2c 20 20 27 69 27 2c 20 20 27 6f 27 2c 20 20 0a  ,  'i',  'o',  .
2250: 20 20 20 20 27 75 27 2c 20 20 27 67 27 2c 20 20      'u',  'g',  
2260: 27 6b 27 2c 20 20 27 6f 27 2c 20 20 27 6a 27 2c  'k',  'o',  'j',
2270: 20 20 27 67 27 2c 20 20 27 6e 27 2c 20 20 27 61    'g',  'n',  'a
2280: 27 2c 20 20 27 65 27 2c 20 20 27 69 27 2c 20 20  ',  'e',  'i',  
2290: 27 6f 27 2c 20 20 27 72 27 2c 20 20 0a 20 20 20  'o',  'r',  .   
22a0: 20 27 75 27 2c 20 20 27 73 27 2c 20 20 27 74 27   'u',  's',  't'
22b0: 2c 20 20 27 68 27 2c 20 20 27 61 27 2c 20 20 27  ,  'h',  'a',  '
22c0: 65 27 2c 20 20 27 6f 27 2c 20 20 27 79 27 2c 20  e',  'o',  'y', 
22d0: 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20 27 5c 30   '\0', '\0', '\0
22e0: 27 2c 20 27 5c 30 27 2c 20 0a 20 20 20 20 27 5c  ', '\0', .    '\
22f0: 30 27 2c 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20  0', '\0', '\0', 
2300: 27 5c 30 27 2c 20 27 61 27 2c 20 20 27 62 27 2c  '\0', 'a',  'b',
2310: 20 20 27 64 27 2c 20 20 27 64 27 2c 20 20 27 65    'd',  'd',  'e
2320: 27 2c 20 20 27 66 27 2c 20 20 27 67 27 2c 20 20  ',  'f',  'g',  
2330: 27 68 27 2c 20 20 0a 20 20 20 20 27 68 27 2c 20  'h',  .    'h', 
2340: 20 27 69 27 2c 20 20 27 6b 27 2c 20 20 27 6c 27   'i',  'k',  'l'
2350: 2c 20 20 27 6c 27 2c 20 20 27 6d 27 2c 20 20 27  ,  'l',  'm',  '
2360: 6e 27 2c 20 20 27 70 27 2c 20 20 27 72 27 2c 20  n',  'p',  'r', 
2370: 20 27 72 27 2c 20 20 27 73 27 2c 20 20 27 74 27   'r',  's',  't'
2380: 2c 20 20 0a 20 20 20 20 27 75 27 2c 20 20 27 76  ,  .    'u',  'v
2390: 27 2c 20 20 27 77 27 2c 20 20 27 77 27 2c 20 20  ',  'w',  'w',  
23a0: 27 78 27 2c 20 20 27 79 27 2c 20 20 27 7a 27 2c  'x',  'y',  'z',
23b0: 20 20 27 68 27 2c 20 20 27 74 27 2c 20 20 27 77    'h',  't',  'w
23c0: 27 2c 20 20 27 79 27 2c 20 20 27 61 27 2c 20 20  ',  'y',  'a',  
23d0: 0a 20 20 20 20 27 65 27 2c 20 20 27 69 27 2c 20  .    'e',  'i', 
23e0: 20 27 6f 27 2c 20 20 27 75 27 2c 20 20 27 79 27   'o',  'u',  'y'
23f0: 2c 20 20 0a 20 20 7d 3b 0a 0a 20 20 75 6e 73 69  ,  .  };..  unsi
2400: 67 6e 65 64 20 69 6e 74 20 6b 65 79 20 3d 20 28  gned int key = (
2410: 28 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 63  ((unsigned int)c
2420: 29 3c 3c 33 29 20 7c 20 30 78 30 30 30 30 30 30  )<<3) | 0x000000
2430: 30 37 3b 0a 20 20 69 6e 74 20 69 52 65 73 20 3d  07;.  int iRes =
2440: 20 30 3b 0a 20 20 69 6e 74 20 69 48 69 20 3d 20   0;.  int iHi = 
2450: 73 69 7a 65 6f 66 28 61 44 69 61 29 2f 73 69 7a  sizeof(aDia)/siz
2460: 65 6f 66 28 61 44 69 61 5b 30 5d 29 20 2d 20 31  eof(aDia[0]) - 1
2470: 3b 0a 20 20 69 6e 74 20 69 4c 6f 20 3d 20 30 3b  ;.  int iLo = 0;
2480: 0a 20 20 77 68 69 6c 65 28 20 69 48 69 3e 3d 69  .  while( iHi>=i
2490: 4c 6f 20 29 7b 0a 20 20 20 20 69 6e 74 20 69 54  Lo ){.    int iT
24a0: 65 73 74 20 3d 20 28 69 48 69 20 2b 20 69 4c 6f  est = (iHi + iLo
24b0: 29 20 2f 20 32 3b 0a 20 20 20 20 69 66 28 20 6b  ) / 2;.    if( k
24c0: 65 79 20 3e 3d 20 61 44 69 61 5b 69 54 65 73 74  ey >= aDia[iTest
24d0: 5d 20 29 7b 0a 20 20 20 20 20 20 69 52 65 73 20  ] ){.      iRes 
24e0: 3d 20 69 54 65 73 74 3b 0a 20 20 20 20 20 20 69  = iTest;.      i
24f0: 4c 6f 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20  Lo = iTest+1;.  
2500: 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 69    }else{.      i
2510: 48 69 20 3d 20 69 54 65 73 74 2d 31 3b 0a 20 20  Hi = iTest-1;.  
2520: 20 20 7d 0a 20 20 7d 0a 20 20 61 73 73 65 72 74    }.  }.  assert
2530: 28 20 6b 65 79 3e 3d 61 44 69 61 5b 69 52 65 73  ( key>=aDia[iRes
2540: 5d 20 29 3b 0a 20 20 72 65 74 75 72 6e 20 28 28  ] );.  return ((
2550: 63 20 3e 20 28 61 44 69 61 5b 69 52 65 73 5d 3e  c > (aDia[iRes]>
2560: 3e 33 29 20 2b 20 28 61 44 69 61 5b 69 52 65 73  >3) + (aDia[iRes
2570: 5d 26 30 78 30 37 29 29 20 3f 20 63 20 3a 20 28  ]&0x07)) ? c : (
2580: 69 6e 74 29 61 43 68 61 72 5b 69 52 65 73 5d 29  int)aChar[iRes])
2590: 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  ;.}.../*.** Retu
25a0: 72 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 61  rn true if the a
25b0: 72 67 75 6d 65 6e 74 20 69 6e 74 65 72 70 72 65  rgument interpre
25c0: 74 65 64 20 61 73 20 61 20 75 6e 69 63 6f 64 65  ted as a unicode
25d0: 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20 69 73   codepoint.** is
25e0: 20 61 20 64 69 61 63 72 69 74 69 63 61 6c 20 6d   a diacritical m
25f0: 6f 64 69 66 69 65 72 20 63 68 61 72 61 63 74 65  odifier characte
2600: 72 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  r..*/.int sqlite
2610: 33 46 74 73 35 55 6e 69 63 6f 64 65 49 73 64 69  3Fts5UnicodeIsdi
2620: 61 63 72 69 74 69 63 28 69 6e 74 20 63 29 7b 0a  acritic(int c){.
2630: 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6d    unsigned int m
2640: 61 73 6b 30 20 3d 20 30 78 30 38 30 32 39 46 44  ask0 = 0x08029FD
2650: 46 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  F;.  unsigned in
2660: 74 20 6d 61 73 6b 31 20 3d 20 30 78 30 30 30 33  t mask1 = 0x0003
2670: 36 31 46 38 3b 0a 20 20 69 66 28 20 63 3c 37 36  61F8;.  if( c<76
2680: 38 20 7c 7c 20 63 3e 38 31 37 20 29 20 72 65 74  8 || c>817 ) ret
2690: 75 72 6e 20 30 3b 0a 20 20 72 65 74 75 72 6e 20  urn 0;.  return 
26a0: 28 63 20 3c 20 37 36 38 2b 33 32 29 20 3f 0a 20  (c < 768+32) ?. 
26b0: 20 20 20 20 20 28 6d 61 73 6b 30 20 26 20 28 31       (mask0 & (1
26c0: 20 3c 3c 20 28 63 2d 37 36 38 29 29 29 20 3a 0a   << (c-768))) :.
26d0: 20 20 20 20 20 20 28 6d 61 73 6b 31 20 26 20 28        (mask1 & (
26e0: 31 20 3c 3c 20 28 63 2d 37 36 38 2d 33 32 29 29  1 << (c-768-32))
26f0: 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20 49 6e 74  );.}.../*.** Int
2700: 65 72 70 72 65 74 20 74 68 65 20 61 72 67 75 6d  erpret the argum
2710: 65 6e 74 20 61 73 20 61 20 75 6e 69 63 6f 64 65  ent as a unicode
2720: 20 63 6f 64 65 70 6f 69 6e 74 2e 20 49 66 20 74   codepoint. If t
2730: 68 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20  he codepoint.** 
2740: 69 73 20 61 6e 20 75 70 70 65 72 20 63 61 73 65  is an upper case
2750: 20 63 68 61 72 61 63 74 65 72 20 74 68 61 74 20   character that 
2760: 68 61 73 20 61 20 6c 6f 77 65 72 20 63 61 73 65  has a lower case
2770: 20 65 71 75 69 76 61 6c 65 6e 74 2c 0a 2a 2a 20   equivalent,.** 
2780: 72 65 74 75 72 6e 20 74 68 65 20 63 6f 64 65 70  return the codep
2790: 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64 69  oint correspondi
27a0: 6e 67 20 74 6f 20 74 68 65 20 6c 6f 77 65 72 20  ng to the lower 
27b0: 63 61 73 65 20 76 65 72 73 69 6f 6e 2e 0a 2a 2a  case version..**
27c0: 20 4f 74 68 65 72 77 69 73 65 2c 20 72 65 74 75   Otherwise, retu
27d0: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  rn a copy of the
27e0: 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a   argument..**.**
27f0: 20 54 68 65 20 72 65 73 75 6c 74 73 20 61 72 65   The results are
2800: 20 75 6e 64 65 66 69 6e 65 64 20 69 66 20 74 68   undefined if th
2810: 65 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 74  e value passed t
2820: 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a  o this function.
2830: 2a 2a 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20  ** is less than 
2840: 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  zero..*/.int sql
2850: 69 74 65 33 46 74 73 35 55 6e 69 63 6f 64 65 46  ite3Fts5UnicodeF
2860: 6f 6c 64 28 69 6e 74 20 63 2c 20 69 6e 74 20 62  old(int c, int b
2870: 52 65 6d 6f 76 65 44 69 61 63 72 69 74 69 63 29  RemoveDiacritic)
2880: 7b 0a 20 20 2f 2a 20 45 61 63 68 20 65 6e 74 72  {.  /* Each entr
2890: 79 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69  y in the followi
28a0: 6e 67 20 61 72 72 61 79 20 64 65 66 69 6e 65 73  ng array defines
28b0: 20 61 20 72 75 6c 65 20 66 6f 72 20 66 6f 6c 64   a rule for fold
28c0: 69 6e 67 20 61 20 72 61 6e 67 65 0a 20 20 2a 2a  ing a range.  **
28d0: 20 6f 66 20 63 6f 64 65 70 6f 69 6e 74 73 20 74   of codepoints t
28e0: 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 54 68  o lower case. Th
28f0: 65 20 72 75 6c 65 20 61 70 70 6c 69 65 73 20 74  e rule applies t
2900: 6f 20 61 20 72 61 6e 67 65 20 6f 66 20 6e 52 61  o a range of nRa
2910: 6e 67 65 0a 20 20 2a 2a 20 63 6f 64 65 70 6f 69  nge.  ** codepoi
2920: 6e 74 73 20 73 74 61 72 74 69 6e 67 20 61 74 20  nts starting at 
2930: 63 6f 64 65 70 6f 69 6e 74 20 69 43 6f 64 65 2e  codepoint iCode.
2940: 0a 20 20 2a 2a 0a 20 20 2a 2a 20 49 66 20 74 68  .  **.  ** If th
2950: 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63  e least signific
2960: 61 6e 74 20 62 69 74 20 69 6e 20 66 6c 61 67 73  ant bit in flags
2970: 20 69 73 20 63 6c 65 61 72 2c 20 74 68 65 6e 20   is clear, then 
2980: 74 68 65 20 72 75 6c 65 20 61 70 70 6c 69 65 73  the rule applies
2990: 0a 20 20 2a 2a 20 74 6f 20 61 6c 6c 20 6e 52 61  .  ** to all nRa
29a0: 6e 67 65 20 63 6f 64 65 70 6f 69 6e 74 73 20 28  nge codepoints (
29b0: 69 2e 65 2e 20 61 6c 6c 20 6e 52 61 6e 67 65 20  i.e. all nRange 
29c0: 63 6f 64 65 70 6f 69 6e 74 73 20 61 72 65 20 75  codepoints are u
29d0: 70 70 65 72 20 63 61 73 65 20 61 6e 64 0a 20 20  pper case and.  
29e0: 2a 2a 20 6e 65 65 64 20 74 6f 20 62 65 20 66 6f  ** need to be fo
29f0: 6c 64 65 64 29 2e 20 4f 72 2c 20 69 66 20 69 74  lded). Or, if it
2a00: 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68   is set, then th
2a10: 65 20 72 75 6c 65 20 6f 6e 6c 79 20 61 70 70 6c  e rule only appl
2a20: 69 65 73 20 74 6f 0a 20 20 2a 2a 20 65 76 65 72  ies to.  ** ever
2a30: 79 20 73 65 63 6f 6e 64 20 63 6f 64 65 70 6f 69  y second codepoi
2a40: 6e 74 20 69 6e 20 74 68 65 20 72 61 6e 67 65 2c  nt in the range,
2a50: 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 63   starting with c
2a60: 6f 64 65 70 6f 69 6e 74 20 43 2e 0a 20 20 2a 2a  odepoint C..  **
2a70: 0a 20 20 2a 2a 20 54 68 65 20 37 20 6d 6f 73 74  .  ** The 7 most
2a80: 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74   significant bit
2a90: 73 20 69 6e 20 66 6c 61 67 73 20 61 72 65 20 61  s in flags are a
2aa0: 6e 20 69 6e 64 65 78 20 69 6e 74 6f 20 74 68 65  n index into the
2ab0: 20 61 69 4f 66 66 5b 5d 0a 20 20 2a 2a 20 61 72   aiOff[].  ** ar
2ac0: 72 61 79 2e 20 49 66 20 61 20 73 70 65 63 69 66  ray. If a specif
2ad0: 69 63 20 63 6f 64 65 70 6f 69 6e 74 20 43 20 64  ic codepoint C d
2ae0: 6f 65 73 20 72 65 71 75 69 72 65 20 66 6f 6c 64  oes require fold
2af0: 69 6e 67 2c 20 74 68 65 6e 20 69 74 73 20 6c 6f  ing, then its lo
2b00: 77 65 72 0a 20 20 2a 2a 20 63 61 73 65 20 65 71  wer.  ** case eq
2b10: 75 69 76 61 6c 65 6e 74 20 69 73 20 28 28 43 20  uivalent is ((C 
2b20: 2b 20 61 69 4f 66 66 5b 66 6c 61 67 73 3e 3e 31  + aiOff[flags>>1
2b30: 5d 29 20 26 20 30 78 46 46 46 46 29 2e 0a 20 20  ]) & 0xFFFF)..  
2b40: 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 63 6f 6e 74  **.  ** The cont
2b50: 65 6e 74 73 20 6f 66 20 74 68 69 73 20 61 72 72  ents of this arr
2b60: 61 79 20 61 72 65 20 67 65 6e 65 72 61 74 65 64  ay are generated
2b70: 20 62 79 20 70 61 72 73 69 6e 67 20 74 68 65 20   by parsing the 
2b80: 43 61 73 65 46 6f 6c 64 69 6e 67 2e 74 78 74 0a  CaseFolding.txt.
2b90: 20 20 2a 2a 20 66 69 6c 65 20 64 69 73 74 72 69    ** file distri
2ba0: 62 75 74 65 64 20 61 73 20 70 61 72 74 20 6f 66  buted as part of
2bb0: 20 74 68 65 20 22 55 6e 69 63 6f 64 65 20 43 68   the "Unicode Ch
2bc0: 61 72 61 63 74 65 72 20 44 61 74 61 62 61 73 65  aracter Database
2bd0: 22 2e 20 53 65 65 0a 20 20 2a 2a 20 68 74 74 70  ". See.  ** http
2be0: 3a 2f 2f 77 77 77 2e 75 6e 69 63 6f 64 65 2e 6f  ://www.unicode.o
2bf0: 72 67 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a  rg for details..
2c00: 20 20 2a 2f 0a 20 20 73 74 61 74 69 63 20 63 6f    */.  static co
2c10: 6e 73 74 20 73 74 72 75 63 74 20 54 61 62 6c 65  nst struct Table
2c20: 45 6e 74 72 79 20 7b 0a 20 20 20 20 75 6e 73 69  Entry {.    unsi
2c30: 67 6e 65 64 20 73 68 6f 72 74 20 69 43 6f 64 65  gned short iCode
2c40: 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63  ;.    unsigned c
2c50: 68 61 72 20 66 6c 61 67 73 3b 0a 20 20 20 20 75  har flags;.    u
2c60: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6e 52 61  nsigned char nRa
2c70: 6e 67 65 3b 0a 20 20 7d 20 61 45 6e 74 72 79 5b  nge;.  } aEntry[
2c80: 5d 20 3d 20 7b 0a 20 20 20 20 7b 36 35 2c 20 31  ] = {.    {65, 1
2c90: 34 2c 20 32 36 7d 2c 20 20 20 20 20 20 20 20 20  4, 26},         
2ca0: 20 7b 31 38 31 2c 20 36 34 2c 20 31 7d 2c 20 20   {181, 64, 1},  
2cb0: 20 20 20 20 20 20 20 20 7b 31 39 32 2c 20 31 34          {192, 14
2cc0: 2c 20 32 33 7d 2c 0a 20 20 20 20 7b 32 31 36 2c  , 23},.    {216,
2cd0: 20 31 34 2c 20 37 7d 2c 20 20 20 20 20 20 20 20   14, 7},        
2ce0: 20 20 7b 32 35 36 2c 20 31 2c 20 34 38 7d 2c 20    {256, 1, 48}, 
2cf0: 20 20 20 20 20 20 20 20 20 7b 33 30 36 2c 20 31           {306, 1
2d00: 2c 20 36 7d 2c 0a 20 20 20 20 7b 33 31 33 2c 20  , 6},.    {313, 
2d10: 31 2c 20 31 36 7d 2c 20 20 20 20 20 20 20 20 20  1, 16},         
2d20: 20 7b 33 33 30 2c 20 31 2c 20 34 36 7d 2c 20 20   {330, 1, 46},  
2d30: 20 20 20 20 20 20 20 20 7b 33 37 36 2c 20 31 31          {376, 11
2d40: 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 37 37 2c  6, 1},.    {377,
2d50: 20 31 2c 20 36 7d 2c 20 20 20 20 20 20 20 20 20   1, 6},         
2d60: 20 20 7b 33 38 33 2c 20 31 30 34 2c 20 31 7d 2c    {383, 104, 1},
2d70: 20 20 20 20 20 20 20 20 20 7b 33 38 35 2c 20 35           {385, 5
2d80: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 38 36 2c  0, 1},.    {386,
2d90: 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20   1, 4},         
2da0: 20 20 7b 33 39 30 2c 20 34 34 2c 20 31 7d 2c 20    {390, 44, 1}, 
2db0: 20 20 20 20 20 20 20 20 20 7b 33 39 31 2c 20 30           {391, 0
2dc0: 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 33 2c 20  , 1},.    {393, 
2dd0: 34 32 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 20  42, 2},         
2de0: 20 7b 33 39 35 2c 20 30 2c 20 31 7d 2c 20 20 20   {395, 0, 1},   
2df0: 20 20 20 20 20 20 20 20 7b 33 39 38 2c 20 33 32          {398, 32
2e00: 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 39 2c 20  , 1},.    {399, 
2e10: 33 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  38, 1},         
2e20: 20 7b 34 30 30 2c 20 34 30 2c 20 31 7d 2c 20 20   {400, 40, 1},  
2e30: 20 20 20 20 20 20 20 20 7b 34 30 31 2c 20 30 2c          {401, 0,
2e40: 20 31 7d 2c 0a 20 20 20 20 7b 34 30 33 2c 20 34   1},.    {403, 4
2e50: 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  2, 1},          
2e60: 7b 34 30 34 2c 20 34 36 2c 20 31 7d 2c 20 20 20  {404, 46, 1},   
2e70: 20 20 20 20 20 20 20 7b 34 30 36 2c 20 35 32 2c         {406, 52,
2e80: 20 31 7d 2c 0a 20 20 20 20 7b 34 30 37 2c 20 34   1},.    {407, 4
2e90: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  8, 1},          
2ea0: 7b 34 30 38 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {408, 0, 1},    
2eb0: 20 20 20 20 20 20 20 7b 34 31 32 2c 20 35 32 2c         {412, 52,
2ec0: 20 31 7d 2c 0a 20 20 20 20 7b 34 31 33 2c 20 35   1},.    {413, 5
2ed0: 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  4, 1},          
2ee0: 7b 34 31 35 2c 20 35 36 2c 20 31 7d 2c 20 20 20  {415, 56, 1},   
2ef0: 20 20 20 20 20 20 20 7b 34 31 36 2c 20 31 2c 20         {416, 1, 
2f00: 36 7d 2c 0a 20 20 20 20 7b 34 32 32 2c 20 36 30  6},.    {422, 60
2f10: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b  , 1},          {
2f20: 34 32 33 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  423, 0, 1},     
2f30: 20 20 20 20 20 20 7b 34 32 35 2c 20 36 30 2c 20        {425, 60, 
2f40: 31 7d 2c 0a 20 20 20 20 7b 34 32 38 2c 20 30 2c  1},.    {428, 0,
2f50: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
2f60: 34 33 30 2c 20 36 30 2c 20 31 7d 2c 20 20 20 20  430, 60, 1},    
2f70: 20 20 20 20 20 20 7b 34 33 31 2c 20 30 2c 20 31        {431, 0, 1
2f80: 7d 2c 0a 20 20 20 20 7b 34 33 33 2c 20 35 38 2c  },.    {433, 58,
2f90: 20 32 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 34   2},          {4
2fa0: 33 35 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20  35, 1, 4},      
2fb0: 20 20 20 20 20 7b 34 33 39 2c 20 36 32 2c 20 31       {439, 62, 1
2fc0: 7d 2c 0a 20 20 20 20 7b 34 34 30 2c 20 30 2c 20  },.    {440, 0, 
2fd0: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
2fe0: 34 34 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  44, 0, 1},      
2ff0: 20 20 20 20 20 7b 34 35 32 2c 20 32 2c 20 31 7d       {452, 2, 1}
3000: 2c 0a 20 20 20 20 7b 34 35 33 2c 20 30 2c 20 31  ,.    {453, 0, 1
3010: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34 35  },           {45
3020: 35 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20 20 20  5, 2, 1},       
3030: 20 20 20 20 7b 34 35 36 2c 20 30 2c 20 31 7d 2c      {456, 0, 1},
3040: 0a 20 20 20 20 7b 34 35 38 2c 20 32 2c 20 31 7d  .    {458, 2, 1}
3050: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34 35 39  ,           {459
3060: 2c 20 31 2c 20 31 38 7d 2c 20 20 20 20 20 20 20  , 1, 18},       
3070: 20 20 20 7b 34 37 38 2c 20 31 2c 20 31 38 7d 2c     {478, 1, 18},
3080: 0a 20 20 20 20 7b 34 39 37 2c 20 32 2c 20 31 7d  .    {497, 2, 1}
3090: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34 39 38  ,           {498
30a0: 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20  , 1, 4},        
30b0: 20 20 20 7b 35 30 32 2c 20 31 32 32 2c 20 31 7d     {502, 122, 1}
30c0: 2c 0a 20 20 20 20 7b 35 30 33 2c 20 31 33 34 2c  ,.    {503, 134,
30d0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 35 30   1},         {50
30e0: 34 2c 20 31 2c 20 34 30 7d 2c 20 20 20 20 20 20  4, 1, 40},      
30f0: 20 20 20 20 7b 35 34 34 2c 20 31 31 30 2c 20 31      {544, 110, 1
3100: 7d 2c 0a 20 20 20 20 7b 35 34 36 2c 20 31 2c 20  },.    {546, 1, 
3110: 31 38 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35  18},          {5
3120: 37 30 2c 20 37 30 2c 20 31 7d 2c 20 20 20 20 20  70, 70, 1},     
3130: 20 20 20 20 20 7b 35 37 31 2c 20 30 2c 20 31 7d       {571, 0, 1}
3140: 2c 0a 20 20 20 20 7b 35 37 33 2c 20 31 30 38 2c  ,.    {573, 108,
3150: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 35 37   1},         {57
3160: 34 2c 20 36 38 2c 20 31 7d 2c 20 20 20 20 20 20  4, 68, 1},      
3170: 20 20 20 20 7b 35 37 37 2c 20 30 2c 20 31 7d 2c      {577, 0, 1},
3180: 0a 20 20 20 20 7b 35 37 39 2c 20 31 30 36 2c 20  .    {579, 106, 
3190: 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 35 38 30  1},         {580
31a0: 2c 20 32 38 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 28, 1},       
31b0: 20 20 20 7b 35 38 31 2c 20 33 30 2c 20 31 7d 2c     {581, 30, 1},
31c0: 0a 20 20 20 20 7b 35 38 32 2c 20 31 2c 20 31 30  .    {582, 1, 10
31d0: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 38 33 37  },          {837
31e0: 2c 20 33 36 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 36, 1},       
31f0: 20 20 20 7b 38 38 30 2c 20 31 2c 20 34 7d 2c 0a     {880, 1, 4},.
3200: 20 20 20 20 7b 38 38 36 2c 20 30 2c 20 31 7d 2c      {886, 0, 1},
3210: 20 20 20 20 20 20 20 20 20 20 20 7b 39 30 32 2c             {902,
3220: 20 31 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   18, 1},        
3230: 20 20 7b 39 30 34 2c 20 31 36 2c 20 33 7d 2c 0a    {904, 16, 3},.
3240: 20 20 20 20 7b 39 30 38 2c 20 32 36 2c 20 31 7d      {908, 26, 1}
3250: 2c 20 20 20 20 20 20 20 20 20 20 7b 39 31 30 2c  ,          {910,
3260: 20 32 34 2c 20 32 7d 2c 20 20 20 20 20 20 20 20   24, 2},        
3270: 20 20 7b 39 31 33 2c 20 31 34 2c 20 31 37 7d 2c    {913, 14, 17},
3280: 0a 20 20 20 20 7b 39 33 31 2c 20 31 34 2c 20 39  .    {931, 14, 9
3290: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 36 32  },          {962
32a0: 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  , 0, 1},        
32b0: 20 20 20 7b 39 37 35 2c 20 34 2c 20 31 7d 2c 0a     {975, 4, 1},.
32c0: 20 20 20 20 7b 39 37 36 2c 20 31 34 30 2c 20 31      {976, 140, 1
32d0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 37 37 2c  },         {977,
32e0: 20 31 34 32 2c 20 31 7d 2c 20 20 20 20 20 20 20   142, 1},       
32f0: 20 20 7b 39 38 31 2c 20 31 34 36 2c 20 31 7d 2c    {981, 146, 1},
3300: 0a 20 20 20 20 7b 39 38 32 2c 20 31 34 34 2c 20  .    {982, 144, 
3310: 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 38 34  1},         {984
3320: 2c 20 31 2c 20 32 34 7d 2c 20 20 20 20 20 20 20  , 1, 24},       
3330: 20 20 20 7b 31 30 30 38 2c 20 31 33 36 2c 20 31     {1008, 136, 1
3340: 7d 2c 0a 20 20 20 20 7b 31 30 30 39 2c 20 31 33  },.    {1009, 13
3350: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 31  8, 1},        {1
3360: 30 31 32 2c 20 31 33 30 2c 20 31 7d 2c 20 20 20  012, 130, 1},   
3370: 20 20 20 20 20 7b 31 30 31 33 2c 20 31 32 38 2c       {1013, 128,
3380: 20 31 7d 2c 0a 20 20 20 20 7b 31 30 31 35 2c 20   1},.    {1015, 
3390: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
33a0: 7b 31 30 31 37 2c 20 31 35 32 2c 20 31 7d 2c 20  {1017, 152, 1}, 
33b0: 20 20 20 20 20 20 20 7b 31 30 31 38 2c 20 30 2c         {1018, 0,
33c0: 20 31 7d 2c 0a 20 20 20 20 7b 31 30 32 31 2c 20   1},.    {1021, 
33d0: 31 31 30 2c 20 33 7d 2c 20 20 20 20 20 20 20 20  110, 3},        
33e0: 7b 31 30 32 34 2c 20 33 34 2c 20 31 36 7d 2c 20  {1024, 34, 16}, 
33f0: 20 20 20 20 20 20 20 7b 31 30 34 30 2c 20 31 34         {1040, 14
3400: 2c 20 33 32 7d 2c 0a 20 20 20 20 7b 31 31 32 30  , 32},.    {1120
3410: 2c 20 31 2c 20 33 34 7d 2c 20 20 20 20 20 20 20  , 1, 34},       
3420: 20 20 7b 31 31 36 32 2c 20 31 2c 20 35 34 7d 2c    {1162, 1, 54},
3430: 20 20 20 20 20 20 20 20 20 7b 31 32 31 36 2c 20           {1216, 
3440: 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 32 31 37  6, 1},.    {1217
3450: 2c 20 31 2c 20 31 34 7d 2c 20 20 20 20 20 20 20  , 1, 14},       
3460: 20 20 7b 31 32 33 32 2c 20 31 2c 20 38 38 7d 2c    {1232, 1, 88},
3470: 20 20 20 20 20 20 20 20 20 7b 31 33 32 39 2c 20           {1329, 
3480: 32 32 2c 20 33 38 7d 2c 0a 20 20 20 20 7b 34 32  22, 38},.    {42
3490: 35 36 2c 20 36 36 2c 20 33 38 7d 2c 20 20 20 20  56, 66, 38},    
34a0: 20 20 20 20 7b 34 32 39 35 2c 20 36 36 2c 20 31      {4295, 66, 1
34b0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 33 30 31  },         {4301
34c0: 2c 20 36 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 37  , 66, 1},.    {7
34d0: 36 38 30 2c 20 31 2c 20 31 35 30 7d 2c 20 20 20  680, 1, 150},   
34e0: 20 20 20 20 20 7b 37 38 33 35 2c 20 31 33 32 2c       {7835, 132,
34f0: 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 37 38 33   1},        {783
3500: 38 2c 20 39 36 2c 20 31 7d 2c 0a 20 20 20 20 7b  8, 96, 1},.    {
3510: 37 38 34 30 2c 20 31 2c 20 39 36 7d 2c 20 20 20  7840, 1, 96},   
3520: 20 20 20 20 20 20 7b 37 39 34 34 2c 20 31 35 30        {7944, 150
3530: 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 37 39  , 8},        {79
3540: 36 30 2c 20 31 35 30 2c 20 36 7d 2c 0a 20 20 20  60, 150, 6},.   
3550: 20 7b 37 39 37 36 2c 20 31 35 30 2c 20 38 7d 2c   {7976, 150, 8},
3560: 20 20 20 20 20 20 20 20 7b 37 39 39 32 2c 20 31          {7992, 1
3570: 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b  50, 8},        {
3580: 38 30 30 38 2c 20 31 35 30 2c 20 36 7d 2c 0a 20  8008, 150, 6},. 
3590: 20 20 20 7b 38 30 32 35 2c 20 31 35 31 2c 20 38     {8025, 151, 8
35a0: 7d 2c 20 20 20 20 20 20 20 20 7b 38 30 34 30 2c  },        {8040,
35b0: 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20   150, 8},       
35c0: 20 7b 38 30 37 32 2c 20 31 35 30 2c 20 38 7d 2c   {8072, 150, 8},
35d0: 0a 20 20 20 20 7b 38 30 38 38 2c 20 31 35 30 2c  .    {8088, 150,
35e0: 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 30   8},        {810
35f0: 34 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20  4, 150, 8},     
3600: 20 20 20 7b 38 31 32 30 2c 20 31 35 30 2c 20 32     {8120, 150, 2
3610: 7d 2c 0a 20 20 20 20 7b 38 31 32 32 2c 20 31 32  },.    {8122, 12
3620: 36 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 7b 38  6, 2},        {8
3630: 31 32 34 2c 20 31 34 38 2c 20 31 7d 2c 20 20 20  124, 148, 1},   
3640: 20 20 20 20 20 7b 38 31 32 36 2c 20 31 30 30 2c       {8126, 100,
3650: 20 31 7d 2c 0a 20 20 20 20 7b 38 31 33 36 2c 20   1},.    {8136, 
3660: 31 32 34 2c 20 34 7d 2c 20 20 20 20 20 20 20 20  124, 4},        
3670: 7b 38 31 34 30 2c 20 31 34 38 2c 20 31 7d 2c 20  {8140, 148, 1}, 
3680: 20 20 20 20 20 20 20 7b 38 31 35 32 2c 20 31 35         {8152, 15
3690: 30 2c 20 32 7d 2c 0a 20 20 20 20 7b 38 31 35 34  0, 2},.    {8154
36a0: 2c 20 31 32 30 2c 20 32 7d 2c 20 20 20 20 20 20  , 120, 2},      
36b0: 20 20 7b 38 31 36 38 2c 20 31 35 30 2c 20 32 7d    {8168, 150, 2}
36c0: 2c 20 20 20 20 20 20 20 20 7b 38 31 37 30 2c 20  ,        {8170, 
36d0: 31 31 38 2c 20 32 7d 2c 0a 20 20 20 20 7b 38 31  118, 2},.    {81
36e0: 37 32 2c 20 31 35 32 2c 20 31 7d 2c 20 20 20 20  72, 152, 1},    
36f0: 20 20 20 20 7b 38 31 38 34 2c 20 31 31 32 2c 20      {8184, 112, 
3700: 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 38 36  2},        {8186
3710: 2c 20 31 31 34 2c 20 32 7d 2c 0a 20 20 20 20 7b  , 114, 2},.    {
3720: 38 31 38 38 2c 20 31 34 38 2c 20 31 7d 2c 20 20  8188, 148, 1},  
3730: 20 20 20 20 20 20 7b 38 34 38 36 2c 20 39 38 2c        {8486, 98,
3740: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 38 34   1},         {84
3750: 39 30 2c 20 39 32 2c 20 31 7d 2c 0a 20 20 20 20  90, 92, 1},.    
3760: 7b 38 34 39 31 2c 20 39 34 2c 20 31 7d 2c 20 20  {8491, 94, 1},  
3770: 20 20 20 20 20 20 20 7b 38 34 39 38 2c 20 31 32         {8498, 12
3780: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 38  , 1},         {8
3790: 35 34 34 2c 20 38 2c 20 31 36 7d 2c 0a 20 20 20  544, 8, 16},.   
37a0: 20 7b 38 35 37 39 2c 20 30 2c 20 31 7d 2c 20 20   {8579, 0, 1},  
37b0: 20 20 20 20 20 20 20 20 7b 39 33 39 38 2c 20 31          {9398, 1
37c0: 30 2c 20 32 36 7d 2c 20 20 20 20 20 20 20 20 7b  0, 26},        {
37d0: 31 31 32 36 34 2c 20 32 32 2c 20 34 37 7d 2c 0a  11264, 22, 47},.
37e0: 20 20 20 20 7b 31 31 33 36 30 2c 20 30 2c 20 31      {11360, 0, 1
37f0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 33 36  },         {1136
3800: 32 2c 20 38 38 2c 20 31 7d 2c 20 20 20 20 20 20  2, 88, 1},      
3810: 20 20 7b 31 31 33 36 33 2c 20 31 30 32 2c 20 31    {11363, 102, 1
3820: 7d 2c 0a 20 20 20 20 7b 31 31 33 36 34 2c 20 39  },.    {11364, 9
3830: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 31  0, 1},        {1
3840: 31 33 36 37 2c 20 31 2c 20 36 7d 2c 20 20 20 20  1367, 1, 6},    
3850: 20 20 20 20 20 7b 31 31 33 37 33 2c 20 38 34 2c       {11373, 84,
3860: 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 37 34 2c   1},.    {11374,
3870: 20 38 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   86, 1},        
3880: 7b 31 31 33 37 35 2c 20 38 30 2c 20 31 7d 2c 20  {11375, 80, 1}, 
3890: 20 20 20 20 20 20 20 7b 31 31 33 37 36 2c 20 38         {11376, 8
38a0: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 37  2, 1},.    {1137
38b0: 38 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  8, 0, 1},       
38c0: 20 20 7b 31 31 33 38 31 2c 20 30 2c 20 31 7d 2c    {11381, 0, 1},
38d0: 20 20 20 20 20 20 20 20 20 7b 31 31 33 39 30 2c           {11390,
38e0: 20 37 38 2c 20 32 7d 2c 0a 20 20 20 20 7b 31 31   78, 2},.    {11
38f0: 33 39 32 2c 20 31 2c 20 31 30 30 7d 2c 20 20 20  392, 1, 100},   
3900: 20 20 20 20 7b 31 31 34 39 39 2c 20 31 2c 20 34      {11499, 1, 4
3910: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 35 30  },         {1150
3920: 36 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34  6, 0, 1},.    {4
3930: 32 35 36 30 2c 20 31 2c 20 34 36 7d 2c 20 20 20  2560, 1, 46},   
3940: 20 20 20 20 20 7b 34 32 36 32 34 2c 20 31 2c 20       {42624, 1, 
3950: 32 34 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 37  24},        {427
3960: 38 36 2c 20 31 2c 20 31 34 7d 2c 0a 20 20 20 20  86, 1, 14},.    
3970: 7b 34 32 38 30 32 2c 20 31 2c 20 36 32 7d 2c 20  {42802, 1, 62}, 
3980: 20 20 20 20 20 20 20 7b 34 32 38 37 33 2c 20 31         {42873, 1
3990: 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 34  , 4},         {4
39a0: 32 38 37 37 2c 20 37 36 2c 20 31 7d 2c 0a 20 20  2877, 76, 1},.  
39b0: 20 20 7b 34 32 38 37 38 2c 20 31 2c 20 31 30 7d    {42878, 1, 10}
39c0: 2c 20 20 20 20 20 20 20 20 7b 34 32 38 39 31 2c  ,        {42891,
39d0: 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20   0, 1},         
39e0: 7b 34 32 38 39 33 2c 20 37 34 2c 20 31 7d 2c 0a  {42893, 74, 1},.
39f0: 20 20 20 20 7b 34 32 38 39 36 2c 20 31 2c 20 34      {42896, 1, 4
3a00: 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 32 39 31  },         {4291
3a10: 32 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20 20 20  2, 1, 10},      
3a20: 20 20 7b 34 32 39 32 32 2c 20 37 32 2c 20 31 7d    {42922, 72, 1}
3a30: 2c 0a 20 20 20 20 7b 36 35 33 31 33 2c 20 31 34  ,.    {65313, 14
3a40: 2c 20 32 36 7d 2c 20 20 20 20 20 20 20 0a 20 20  , 26},       .  
3a50: 7d 3b 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73  };.  static cons
3a60: 74 20 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74  t unsigned short
3a70: 20 61 69 4f 66 66 5b 5d 20 3d 20 7b 0a 20 20 20   aiOff[] = {.   
3a80: 31 2c 20 20 20 20 20 32 2c 20 20 20 20 20 38 2c  1,     2,     8,
3a90: 20 20 20 20 20 31 35 2c 20 20 20 20 31 36 2c 20       15,    16, 
3aa0: 20 20 20 32 36 2c 20 20 20 20 32 38 2c 20 20 20     26,    28,   
3ab0: 20 33 32 2c 20 20 20 20 0a 20 20 20 33 37 2c 20   32,    .   37, 
3ac0: 20 20 20 33 38 2c 20 20 20 20 34 30 2c 20 20 20     38,    40,   
3ad0: 20 34 38 2c 20 20 20 20 36 33 2c 20 20 20 20 36   48,    63,    6
3ae0: 34 2c 20 20 20 20 36 39 2c 20 20 20 20 37 31 2c  4,    69,    71,
3af0: 20 20 20 20 0a 20 20 20 37 39 2c 20 20 20 20 38      .   79,    8
3b00: 30 2c 20 20 20 20 31 31 36 2c 20 20 20 32 30 32  0,    116,   202
3b10: 2c 20 20 20 32 30 33 2c 20 20 20 32 30 35 2c 20  ,   203,   205, 
3b20: 20 20 32 30 36 2c 20 20 20 32 30 37 2c 20 20 20    206,   207,   
3b30: 0a 20 20 20 32 30 39 2c 20 20 20 32 31 30 2c 20  .   209,   210, 
3b40: 20 20 32 31 31 2c 20 20 20 32 31 33 2c 20 20 20    211,   213,   
3b50: 32 31 34 2c 20 20 20 32 31 37 2c 20 20 20 32 31  214,   217,   21
3b60: 38 2c 20 20 20 32 31 39 2c 20 20 20 0a 20 20 20  8,   219,   .   
3b70: 37 37 35 2c 20 20 20 37 32 36 34 2c 20 20 31 30  775,   7264,  10
3b80: 37 39 32 2c 20 31 30 37 39 35 2c 20 32 33 32 32  792, 10795, 2322
3b90: 38 2c 20 32 33 32 35 36 2c 20 33 30 32 30 34 2c  8, 23256, 30204,
3ba0: 20 35 34 37 32 31 2c 20 0a 20 20 20 35 34 37 35   54721, .   5475
3bb0: 33 2c 20 35 34 37 35 34 2c 20 35 34 37 35 36 2c  3, 54754, 54756,
3bc0: 20 35 34 37 38 37 2c 20 35 34 37 39 33 2c 20 35   54787, 54793, 5
3bd0: 34 38 30 39 2c 20 35 37 31 35 33 2c 20 35 37 32  4809, 57153, 572
3be0: 37 34 2c 20 0a 20 20 20 35 37 39 32 31 2c 20 35  74, .   57921, 5
3bf0: 38 30 31 39 2c 20 35 38 33 36 33 2c 20 36 31 37  8019, 58363, 617
3c00: 32 32 2c 20 36 35 32 36 38 2c 20 36 35 33 34 31  22, 65268, 65341
3c10: 2c 20 36 35 33 37 33 2c 20 36 35 34 30 36 2c 20  , 65373, 65406, 
3c20: 0a 20 20 20 36 35 34 30 38 2c 20 36 35 34 31 30  .   65408, 65410
3c30: 2c 20 36 35 34 31 35 2c 20 36 35 34 32 34 2c 20  , 65415, 65424, 
3c40: 36 35 34 33 36 2c 20 36 35 34 33 39 2c 20 36 35  65436, 65439, 65
3c50: 34 35 30 2c 20 36 35 34 36 32 2c 20 0a 20 20 20  450, 65462, .   
3c60: 36 35 34 37 32 2c 20 36 35 34 37 36 2c 20 36 35  65472, 65476, 65
3c70: 34 37 38 2c 20 36 35 34 38 30 2c 20 36 35 34 38  478, 65480, 6548
3c80: 32 2c 20 36 35 34 38 38 2c 20 36 35 35 30 36 2c  2, 65488, 65506,
3c90: 20 36 35 35 31 31 2c 20 0a 20 20 20 36 35 35 31   65511, .   6551
3ca0: 34 2c 20 36 35 35 32 31 2c 20 36 35 35 32 37 2c  4, 65521, 65527,
3cb0: 20 36 35 35 32 38 2c 20 36 35 35 32 39 2c 20 0a   65528, 65529, .
3cc0: 20 20 7d 3b 0a 0a 20 20 69 6e 74 20 72 65 74 20    };..  int ret 
3cd0: 3d 20 63 3b 0a 0a 20 20 61 73 73 65 72 74 28 20  = c;..  assert( 
3ce0: 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e 65 64 20  sizeof(unsigned 
3cf0: 73 68 6f 72 74 29 3d 3d 32 20 26 26 20 73 69 7a  short)==2 && siz
3d00: 65 6f 66 28 75 6e 73 69 67 6e 65 64 20 63 68 61  eof(unsigned cha
3d10: 72 29 3d 3d 31 20 29 3b 0a 0a 20 20 69 66 28 20  r)==1 );..  if( 
3d20: 63 3c 31 32 38 20 29 7b 0a 20 20 20 20 69 66 28  c<128 ){.    if(
3d30: 20 63 3e 3d 27 41 27 20 26 26 20 63 3c 3d 27 5a   c>='A' && c<='Z
3d40: 27 20 29 20 72 65 74 20 3d 20 63 20 2b 20 28 27  ' ) ret = c + ('
3d50: 61 27 20 2d 20 27 41 27 29 3b 0a 20 20 7d 65 6c  a' - 'A');.  }el
3d60: 73 65 20 69 66 28 20 63 3c 36 35 35 33 36 20 29  se if( c<65536 )
3d70: 7b 0a 20 20 20 20 63 6f 6e 73 74 20 73 74 72 75  {.    const stru
3d80: 63 74 20 54 61 62 6c 65 45 6e 74 72 79 20 2a 70  ct TableEntry *p
3d90: 3b 0a 20 20 20 20 69 6e 74 20 69 48 69 20 3d 20  ;.    int iHi = 
3da0: 73 69 7a 65 6f 66 28 61 45 6e 74 72 79 29 2f 73  sizeof(aEntry)/s
3db0: 69 7a 65 6f 66 28 61 45 6e 74 72 79 5b 30 5d 29  izeof(aEntry[0])
3dc0: 20 2d 20 31 3b 0a 20 20 20 20 69 6e 74 20 69 4c   - 1;.    int iL
3dd0: 6f 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74 20 69  o = 0;.    int i
3de0: 52 65 73 20 3d 20 2d 31 3b 0a 0a 20 20 20 20 61  Res = -1;..    a
3df0: 73 73 65 72 74 28 20 63 3e 61 45 6e 74 72 79 5b  ssert( c>aEntry[
3e00: 30 5d 2e 69 43 6f 64 65 20 29 3b 0a 20 20 20 20  0].iCode );.    
3e10: 77 68 69 6c 65 28 20 69 48 69 3e 3d 69 4c 6f 20  while( iHi>=iLo 
3e20: 29 7b 0a 20 20 20 20 20 20 69 6e 74 20 69 54 65  ){.      int iTe
3e30: 73 74 20 3d 20 28 69 48 69 20 2b 20 69 4c 6f 29  st = (iHi + iLo)
3e40: 20 2f 20 32 3b 0a 20 20 20 20 20 20 69 6e 74 20   / 2;.      int 
3e50: 63 6d 70 20 3d 20 28 63 20 2d 20 61 45 6e 74 72  cmp = (c - aEntr
3e60: 79 5b 69 54 65 73 74 5d 2e 69 43 6f 64 65 29 3b  y[iTest].iCode);
3e70: 0a 20 20 20 20 20 20 69 66 28 20 63 6d 70 3e 3d  .      if( cmp>=
3e80: 30 20 29 7b 0a 20 20 20 20 20 20 20 20 69 52 65  0 ){.        iRe
3e90: 73 20 3d 20 69 54 65 73 74 3b 0a 20 20 20 20 20  s = iTest;.     
3ea0: 20 20 20 69 4c 6f 20 3d 20 69 54 65 73 74 2b 31     iLo = iTest+1
3eb0: 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20  ;.      }else{. 
3ec0: 20 20 20 20 20 20 20 69 48 69 20 3d 20 69 54 65         iHi = iTe
3ed0: 73 74 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20  st-1;.      }.  
3ee0: 20 20 7d 0a 0a 20 20 20 20 61 73 73 65 72 74 28    }..    assert(
3ef0: 20 69 52 65 73 3e 3d 30 20 26 26 20 63 3e 3d 61   iRes>=0 && c>=a
3f00: 45 6e 74 72 79 5b 69 52 65 73 5d 2e 69 43 6f 64  Entry[iRes].iCod
3f10: 65 20 29 3b 0a 20 20 20 20 70 20 3d 20 26 61 45  e );.    p = &aE
3f20: 6e 74 72 79 5b 69 52 65 73 5d 3b 0a 20 20 20 20  ntry[iRes];.    
3f30: 69 66 28 20 63 3c 28 70 2d 3e 69 43 6f 64 65 20  if( c<(p->iCode 
3f40: 2b 20 70 2d 3e 6e 52 61 6e 67 65 29 20 26 26 20  + p->nRange) && 
3f50: 30 3d 3d 28 30 78 30 31 20 26 20 70 2d 3e 66 6c  0==(0x01 & p->fl
3f60: 61 67 73 20 26 20 28 70 2d 3e 69 43 6f 64 65 20  ags & (p->iCode 
3f70: 5e 20 63 29 29 20 29 7b 0a 20 20 20 20 20 20 72  ^ c)) ){.      r
3f80: 65 74 20 3d 20 28 63 20 2b 20 28 61 69 4f 66 66  et = (c + (aiOff
3f90: 5b 70 2d 3e 66 6c 61 67 73 3e 3e 31 5d 29 29 20  [p->flags>>1])) 
3fa0: 26 20 30 78 30 30 30 30 46 46 46 46 3b 0a 20 20  & 0x0000FFFF;.  
3fb0: 20 20 20 20 61 73 73 65 72 74 28 20 72 65 74 3e      assert( ret>
3fc0: 30 20 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  0 );.    }..    
3fd0: 69 66 28 20 62 52 65 6d 6f 76 65 44 69 61 63 72  if( bRemoveDiacr
3fe0: 69 74 69 63 20 29 20 72 65 74 20 3d 20 66 74 73  itic ) ret = fts
3ff0: 35 5f 72 65 6d 6f 76 65 5f 64 69 61 63 72 69 74  5_remove_diacrit
4000: 69 63 28 72 65 74 29 3b 0a 20 20 7d 0a 20 20 0a  ic(ret);.  }.  .
4010: 20 20 65 6c 73 65 20 69 66 28 20 63 3e 3d 36 36    else if( c>=66
4020: 35 36 30 20 26 26 20 63 3c 36 36 36 30 30 20 29  560 && c<66600 )
4030: 7b 0a 20 20 20 20 72 65 74 20 3d 20 63 20 2b 20  {.    ret = c + 
4040: 34 30 3b 0a 20 20 7d 0a 0a 20 20 72 65 74 75 72  40;.  }..  retur
4050: 6e 20 72 65 74 3b 0a 7d 0a                       n ret;.}.