You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1134 lines
61KB

  1. /*
  2. * This file is part of FFmpeg.
  3. *
  4. * FFmpeg is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * FFmpeg is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with FFmpeg; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  17. */
  18. #include "libavutil/mem_internal.h"
  19. #include "dirac_vlc.h"
  20. enum {
  21. /* Next byte contains an exactly aligned start to a new symbol (even bit) */
  22. STATE_START = 0,
  23. /* Next byte should end the current value on an odd bit */
  24. STATE_FOLLOW = 256,
  25. /* Byte is completely data and doesn't end nor start a value */
  26. STATE_DATA = 512,
  27. /* Byte has the current value's sign bit and starts a new value */
  28. STATE_SIGN = 768,
  29. };
  30. /* Exactly 128 bits */
  31. typedef struct LUTState {
  32. int16_t val0; /* Bits to which to add after applying preshift */
  33. int16_t val1;
  34. int16_t val2;
  35. int16_t val3;
  36. int16_t val4;
  37. uint8_t val0_bits; /* The size of val0 in bits */
  38. int8_t sign; /* Sign of the current value (0 == zero the value) */
  39. int8_t num; /* Number of values in this byte */
  40. uint8_t val; /* Init value in case current value was terminated */
  41. uint16_t state; /* Expected state for the next byte */
  42. } LUTState;
  43. static const DECLARE_ALIGNED(32, LUTState, dirac_golomb_lut)[1024] = {
  44. { +16, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  45. { +17, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  46. { +8, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  47. { +8, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  48. { +18, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  49. { +19, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  50. { +9, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  51. { +9, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  52. { +4, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
  53. { +4, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
  54. { +4, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
  55. { +4, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
  56. { +4, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
  57. { +4, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
  58. { +4, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
  59. { +4, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
  60. { +20, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  61. { +21, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  62. { +10, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  63. { +10, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  64. { +22, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  65. { +23, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  66. { +11, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  67. { +11, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  68. { +5, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
  69. { +5, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
  70. { +5, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
  71. { +5, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
  72. { +5, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
  73. { +5, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
  74. { +5, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
  75. { +5, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
  76. { +2, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
  77. { +2, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
  78. { +2, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  79. { +2, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  80. { +2, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
  81. { +2, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
  82. { +2, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  83. { +2, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  84. { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
  85. { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
  86. { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
  87. { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
  88. { +2, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
  89. { +2, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
  90. { +2, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
  91. { +2, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
  92. { +2, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
  93. { +2, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
  94. { +2, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  95. { +2, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  96. { +2, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
  97. { +2, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
  98. { +2, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  99. { +2, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  100. { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
  101. { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
  102. { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
  103. { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
  104. { +2, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
  105. { +2, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
  106. { +2, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
  107. { +2, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
  108. { +24, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  109. { +25, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  110. { +12, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  111. { +12, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  112. { +26, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  113. { +27, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  114. { +13, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  115. { +13, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  116. { +6, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
  117. { +6, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
  118. { +6, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
  119. { +6, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
  120. { +6, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
  121. { +6, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
  122. { +6, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
  123. { +6, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
  124. { +28, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  125. { +29, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  126. { +14, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  127. { +14, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  128. { +30, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  129. { +31, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
  130. { +15, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
  131. { +15, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
  132. { +7, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
  133. { +7, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
  134. { +7, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
  135. { +7, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
  136. { +7, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
  137. { +7, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
  138. { +7, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
  139. { +7, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
  140. { +3, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
  141. { +3, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
  142. { +3, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  143. { +3, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  144. { +3, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
  145. { +3, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
  146. { +3, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  147. { +3, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
  148. { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
  149. { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
  150. { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
  151. { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
  152. { +3, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
  153. { +3, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
  154. { +3, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
  155. { +3, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
  156. { +3, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
  157. { +3, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
  158. { +3, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  159. { +3, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  160. { +3, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
  161. { +3, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
  162. { +3, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  163. { +3, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
  164. { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
  165. { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
  166. { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
  167. { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
  168. { +3, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
  169. { +3, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
  170. { +3, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
  171. { +3, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
  172. { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_DATA },
  173. { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_SIGN },
  174. { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_DATA },
  175. { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_SIGN },
  176. { 0, +3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  177. { 0, +3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  178. { 0, -3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  179. { 0, -3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  180. { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_DATA },
  181. { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_SIGN },
  182. { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_DATA },
  183. { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_SIGN },
  184. { 0, +4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  185. { 0, +4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  186. { 0, -4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  187. { 0, -4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  188. { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
  189. { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
  190. { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
  191. { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
  192. { 0, +1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  193. { 0, +1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  194. { 0, +1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
  195. { 0, +1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
  196. { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
  197. { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
  198. { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
  199. { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
  200. { 0, -1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  201. { 0, -1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  202. { 0, -1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
  203. { 0, -1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
  204. { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_DATA },
  205. { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_SIGN },
  206. { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_DATA },
  207. { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_SIGN },
  208. { 0, +5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  209. { 0, +5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  210. { 0, -5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  211. { 0, -5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  212. { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_DATA },
  213. { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_SIGN },
  214. { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_DATA },
  215. { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_SIGN },
  216. { 0, +6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  217. { 0, +6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  218. { 0, -6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
  219. { 0, -6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
  220. { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
  221. { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
  222. { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
  223. { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
  224. { 0, +2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  225. { 0, +2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  226. { 0, +2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
  227. { 0, +2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
  228. { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
  229. { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
  230. { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
  231. { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
  232. { 0, -2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  233. { 0, -2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  234. { 0, -2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
  235. { 0, -2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
  236. { 0, 0, 0, 0, 0, 0, 0, 2, 8, STATE_FOLLOW },
  237. { 0, 0, 0, 0, 0, 0, 0, 2, 9, STATE_FOLLOW },
  238. { 0, 0, +3, 0, 0, 0, 0, 3, 0, STATE_START },
  239. { 0, 0, -3, 0, 0, 0, 0, 3, 0, STATE_START },
  240. { 0, 0, 0, 0, 0, 0, 0, 2, 10, STATE_FOLLOW },
  241. { 0, 0, 0, 0, 0, 0, 0, 2, 11, STATE_FOLLOW },
  242. { 0, 0, +4, 0, 0, 0, 0, 3, 0, STATE_START },
  243. { 0, 0, -4, 0, 0, 0, 0, 3, 0, STATE_START },
  244. { 0, 0, +1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  245. { 0, 0, +1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  246. { 0, 0, +1, 0, 0, 0, 0, 4, 1, STATE_DATA },
  247. { 0, 0, +1, 0, 0, 0, 0, 5, 0, STATE_START },
  248. { 0, 0, -1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  249. { 0, 0, -1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  250. { 0, 0, -1, 0, 0, 0, 0, 4, 1, STATE_DATA },
  251. { 0, 0, -1, 0, 0, 0, 0, 5, 0, STATE_START },
  252. { 0, 0, 0, 0, 0, 0, 0, 2, 12, STATE_FOLLOW },
  253. { 0, 0, 0, 0, 0, 0, 0, 2, 13, STATE_FOLLOW },
  254. { 0, 0, +5, 0, 0, 0, 0, 3, 0, STATE_START },
  255. { 0, 0, -5, 0, 0, 0, 0, 3, 0, STATE_START },
  256. { 0, 0, 0, 0, 0, 0, 0, 2, 14, STATE_FOLLOW },
  257. { 0, 0, 0, 0, 0, 0, 0, 2, 15, STATE_FOLLOW },
  258. { 0, 0, +6, 0, 0, 0, 0, 3, 0, STATE_START },
  259. { 0, 0, -6, 0, 0, 0, 0, 3, 0, STATE_START },
  260. { 0, 0, +2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  261. { 0, 0, +2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  262. { 0, 0, +2, 0, 0, 0, 0, 4, 1, STATE_DATA },
  263. { 0, 0, +2, 0, 0, 0, 0, 5, 0, STATE_START },
  264. { 0, 0, -2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
  265. { 0, 0, -2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
  266. { 0, 0, -2, 0, 0, 0, 0, 4, 1, STATE_DATA },
  267. { 0, 0, -2, 0, 0, 0, 0, 5, 0, STATE_START },
  268. { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_DATA },
  269. { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_SIGN },
  270. { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_DATA },
  271. { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_SIGN },
  272. { 0, 0, 0, +1, 0, 0, 0, 4, 1, STATE_DATA },
  273. { 0, 0, 0, +1, 0, 0, 0, 5, 0, STATE_START },
  274. { 0, 0, 0, -1, 0, 0, 0, 4, 1, STATE_DATA },
  275. { 0, 0, 0, -1, 0, 0, 0, 5, 0, STATE_START },
  276. { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_DATA },
  277. { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_SIGN },
  278. { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_DATA },
  279. { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_SIGN },
  280. { 0, 0, 0, +2, 0, 0, 0, 4, 1, STATE_DATA },
  281. { 0, 0, 0, +2, 0, 0, 0, 5, 0, STATE_START },
  282. { 0, 0, 0, -2, 0, 0, 0, 4, 1, STATE_DATA },
  283. { 0, 0, 0, -2, 0, 0, 0, 5, 0, STATE_START },
  284. { 0, 0, 0, 0, 0, 0, 0, 4, 4, STATE_FOLLOW },
  285. { 0, 0, 0, 0, 0, 0, 0, 4, 5, STATE_FOLLOW },
  286. { 0, 0, 0, 0, +1, 0, 0, 5, 0, STATE_START },
  287. { 0, 0, 0, 0, -1, 0, 0, 5, 0, STATE_START },
  288. { 0, 0, 0, 0, 0, 0, 0, 4, 6, STATE_FOLLOW },
  289. { 0, 0, 0, 0, 0, 0, 0, 4, 7, STATE_FOLLOW },
  290. { 0, 0, 0, 0, +2, 0, 0, 5, 0, STATE_START },
  291. { 0, 0, 0, 0, -2, 0, 0, 5, 0, STATE_START },
  292. { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_DATA },
  293. { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_SIGN },
  294. { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_DATA },
  295. { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_SIGN },
  296. { 0, 0, 0, 0, 0, 0, 0, 6, 2, STATE_FOLLOW },
  297. { 0, 0, 0, 0, 0, 0, 0, 6, 3, STATE_FOLLOW },
  298. { 0, 0, 0, 0, 0, 0, 0, 7, 1, STATE_DATA },
  299. { 0, 0, 0, 0, 0, 0, 0, 8, 0, STATE_START },
  300. { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  301. { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  302. { 0, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  303. { 0, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  304. { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  305. { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  306. { +1, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  307. { +1, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  308. { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
  309. { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
  310. { 0, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
  311. { 0, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
  312. { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
  313. { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
  314. { 0, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
  315. { 0, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
  316. { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  317. { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  318. { +2, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  319. { +2, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  320. { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  321. { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  322. { +3, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  323. { +3, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  324. { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
  325. { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
  326. { +1, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
  327. { +1, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
  328. { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
  329. { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
  330. { +1, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
  331. { +1, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
  332. { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
  333. { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
  334. { 0, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  335. { 0, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  336. { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
  337. { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
  338. { 0, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  339. { 0, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  340. { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
  341. { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
  342. { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
  343. { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
  344. { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
  345. { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
  346. { 0, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
  347. { 0, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
  348. { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
  349. { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
  350. { 0, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  351. { 0, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  352. { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
  353. { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
  354. { 0, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  355. { 0, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  356. { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
  357. { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
  358. { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
  359. { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
  360. { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
  361. { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
  362. { 0, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
  363. { 0, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
  364. { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  365. { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  366. { +4, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  367. { +4, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  368. { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  369. { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  370. { +5, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  371. { +5, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  372. { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
  373. { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
  374. { +2, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
  375. { +2, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
  376. { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
  377. { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
  378. { +2, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
  379. { +2, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
  380. { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  381. { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  382. { +6, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  383. { +6, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  384. { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  385. { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
  386. { +7, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
  387. { +7, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
  388. { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
  389. { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
  390. { +3, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
  391. { +3, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
  392. { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
  393. { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
  394. { +3, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
  395. { +3, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
  396. { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
  397. { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
  398. { +1, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  399. { +1, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  400. { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
  401. { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
  402. { +1, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  403. { +1, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
  404. { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
  405. { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
  406. { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
  407. { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
  408. { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
  409. { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
  410. { +1, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
  411. { +1, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
  412. { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
  413. { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
  414. { +1, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  415. { +1, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  416. { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
  417. { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
  418. { +1, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  419. { +1, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
  420. { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
  421. { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
  422. { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
  423. { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
  424. { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
  425. { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
  426. { +1, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
  427. { +1, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
  428. { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_FOLLOW },
  429. { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_FOLLOW },
  430. { 0, +3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  431. { 0, -3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  432. { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_FOLLOW },
  433. { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_FOLLOW },
  434. { 0, +4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  435. { 0, -4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  436. { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
  437. { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
  438. { 0, +1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
  439. { 0, +1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
  440. { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
  441. { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
  442. { 0, -1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
  443. { 0, -1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
  444. { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_FOLLOW },
  445. { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_FOLLOW },
  446. { 0, +5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  447. { 0, -5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  448. { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_FOLLOW },
  449. { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_FOLLOW },
  450. { 0, +6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  451. { 0, -6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
  452. { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
  453. { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
  454. { 0, +2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
  455. { 0, +2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
  456. { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
  457. { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
  458. { 0, -2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
  459. { 0, -2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
  460. { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_DATA },
  461. { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_SIGN },
  462. { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_DATA },
  463. { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_SIGN },
  464. { 0, 0, +1, 0, 0, 0, +1, 3, 1, STATE_DATA },
  465. { 0, 0, +1, 0, 0, 0, +1, 4, 0, STATE_START },
  466. { 0, 0, -1, 0, 0, 0, +1, 3, 1, STATE_DATA },
  467. { 0, 0, -1, 0, 0, 0, +1, 4, 0, STATE_START },
  468. { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_DATA },
  469. { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_SIGN },
  470. { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_DATA },
  471. { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_SIGN },
  472. { 0, 0, +2, 0, 0, 0, +1, 3, 1, STATE_DATA },
  473. { 0, 0, +2, 0, 0, 0, +1, 4, 0, STATE_START },
  474. { 0, 0, -2, 0, 0, 0, +1, 3, 1, STATE_DATA },
  475. { 0, 0, -2, 0, 0, 0, +1, 4, 0, STATE_START },
  476. { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_FOLLOW },
  477. { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_FOLLOW },
  478. { 0, 0, 0, +1, 0, 0, +1, 4, 0, STATE_START },
  479. { 0, 0, 0, -1, 0, 0, +1, 4, 0, STATE_START },
  480. { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_FOLLOW },
  481. { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_FOLLOW },
  482. { 0, 0, 0, +2, 0, 0, +1, 4, 0, STATE_START },
  483. { 0, 0, 0, -2, 0, 0, +1, 4, 0, STATE_START },
  484. { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_DATA },
  485. { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_SIGN },
  486. { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_DATA },
  487. { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_SIGN },
  488. { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_FOLLOW },
  489. { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_FOLLOW },
  490. { 0, 0, 0, 0, 0, 0, +1, 6, 1, STATE_DATA },
  491. { 0, 0, 0, 0, 0, 0, +1, 7, 0, STATE_START },
  492. { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_FOLLOW },
  493. { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_FOLLOW },
  494. { 0, +3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  495. { 0, -3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  496. { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_FOLLOW },
  497. { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_FOLLOW },
  498. { 0, +4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  499. { 0, -4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  500. { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
  501. { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
  502. { 0, +1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
  503. { 0, +1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
  504. { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
  505. { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
  506. { 0, -1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
  507. { 0, -1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
  508. { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_FOLLOW },
  509. { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_FOLLOW },
  510. { 0, +5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  511. { 0, -5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  512. { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_FOLLOW },
  513. { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_FOLLOW },
  514. { 0, +6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  515. { 0, -6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
  516. { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
  517. { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
  518. { 0, +2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
  519. { 0, +2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
  520. { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
  521. { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
  522. { 0, -2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
  523. { 0, -2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
  524. { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_DATA },
  525. { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_SIGN },
  526. { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_DATA },
  527. { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_SIGN },
  528. { 0, 0, +1, 0, 0, 0, -1, 3, 1, STATE_DATA },
  529. { 0, 0, +1, 0, 0, 0, -1, 4, 0, STATE_START },
  530. { 0, 0, -1, 0, 0, 0, -1, 3, 1, STATE_DATA },
  531. { 0, 0, -1, 0, 0, 0, -1, 4, 0, STATE_START },
  532. { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_DATA },
  533. { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_SIGN },
  534. { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_DATA },
  535. { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_SIGN },
  536. { 0, 0, +2, 0, 0, 0, -1, 3, 1, STATE_DATA },
  537. { 0, 0, +2, 0, 0, 0, -1, 4, 0, STATE_START },
  538. { 0, 0, -2, 0, 0, 0, -1, 3, 1, STATE_DATA },
  539. { 0, 0, -2, 0, 0, 0, -1, 4, 0, STATE_START },
  540. { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_FOLLOW },
  541. { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_FOLLOW },
  542. { 0, 0, 0, +1, 0, 0, -1, 4, 0, STATE_START },
  543. { 0, 0, 0, -1, 0, 0, -1, 4, 0, STATE_START },
  544. { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_FOLLOW },
  545. { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_FOLLOW },
  546. { 0, 0, 0, +2, 0, 0, -1, 4, 0, STATE_START },
  547. { 0, 0, 0, -2, 0, 0, -1, 4, 0, STATE_START },
  548. { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_DATA },
  549. { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_SIGN },
  550. { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_DATA },
  551. { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_SIGN },
  552. { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_FOLLOW },
  553. { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_FOLLOW },
  554. { 0, 0, 0, 0, 0, 0, -1, 6, 1, STATE_DATA },
  555. { 0, 0, 0, 0, 0, 0, -1, 7, 0, STATE_START },
  556. { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  557. { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  558. { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  559. { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  560. { 0, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  561. { 0, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  562. { 0, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  563. { 0, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  564. { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  565. { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  566. { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  567. { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  568. { +1, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  569. { +1, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  570. { +1, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  571. { +1, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  572. { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
  573. { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
  574. { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
  575. { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
  576. { 0, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
  577. { 0, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
  578. { 0, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
  579. { 0, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
  580. { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
  581. { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
  582. { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
  583. { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
  584. { 0, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
  585. { 0, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
  586. { 0, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
  587. { 0, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
  588. { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  589. { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  590. { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  591. { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  592. { +2, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  593. { +2, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  594. { +2, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  595. { +2, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  596. { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  597. { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  598. { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  599. { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  600. { +3, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  601. { +3, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  602. { +3, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  603. { +3, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  604. { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
  605. { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
  606. { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
  607. { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
  608. { +1, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
  609. { +1, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
  610. { +1, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
  611. { +1, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
  612. { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
  613. { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
  614. { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
  615. { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
  616. { +1, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
  617. { +1, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
  618. { +1, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
  619. { +1, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
  620. { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
  621. { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
  622. { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
  623. { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
  624. { 0, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  625. { 0, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  626. { 0, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  627. { 0, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  628. { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
  629. { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
  630. { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
  631. { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
  632. { 0, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  633. { 0, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  634. { 0, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  635. { 0, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  636. { 0, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
  637. { 0, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
  638. { 0, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
  639. { 0, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
  640. { 0, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
  641. { 0, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
  642. { 0, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
  643. { 0, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
  644. { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
  645. { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
  646. { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
  647. { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
  648. { 0, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
  649. { 0, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
  650. { 0, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
  651. { 0, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
  652. { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
  653. { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
  654. { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
  655. { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
  656. { 0, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  657. { 0, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  658. { 0, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  659. { 0, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  660. { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
  661. { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
  662. { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
  663. { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
  664. { 0, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  665. { 0, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  666. { 0, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  667. { 0, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  668. { 0, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
  669. { 0, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
  670. { 0, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
  671. { 0, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
  672. { 0, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
  673. { 0, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
  674. { 0, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
  675. { 0, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
  676. { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
  677. { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
  678. { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
  679. { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
  680. { 0, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
  681. { 0, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
  682. { 0, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
  683. { 0, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
  684. { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  685. { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  686. { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  687. { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  688. { +4, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  689. { +4, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  690. { +4, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  691. { +4, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  692. { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  693. { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  694. { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  695. { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  696. { +5, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  697. { +5, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  698. { +5, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  699. { +5, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  700. { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
  701. { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
  702. { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
  703. { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
  704. { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
  705. { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
  706. { +2, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
  707. { +2, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
  708. { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
  709. { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
  710. { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
  711. { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
  712. { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
  713. { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
  714. { +2, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
  715. { +2, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
  716. { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  717. { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  718. { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  719. { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  720. { +6, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  721. { +6, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  722. { +6, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  723. { +6, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  724. { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  725. { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  726. { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
  727. { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
  728. { +7, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
  729. { +7, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
  730. { +7, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
  731. { +7, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
  732. { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
  733. { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
  734. { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
  735. { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
  736. { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
  737. { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
  738. { +3, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
  739. { +3, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
  740. { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
  741. { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
  742. { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
  743. { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
  744. { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
  745. { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
  746. { +3, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
  747. { +3, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
  748. { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
  749. { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
  750. { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
  751. { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
  752. { +1, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  753. { +1, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  754. { +1, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  755. { +1, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  756. { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
  757. { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
  758. { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
  759. { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
  760. { +1, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  761. { +1, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  762. { +1, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
  763. { +1, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
  764. { +1, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
  765. { +1, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
  766. { +1, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
  767. { +1, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
  768. { +1, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
  769. { +1, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
  770. { +1, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
  771. { +1, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
  772. { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
  773. { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
  774. { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
  775. { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
  776. { +1, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
  777. { +1, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
  778. { +1, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
  779. { +1, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
  780. { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
  781. { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
  782. { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
  783. { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
  784. { +1, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  785. { +1, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  786. { +1, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  787. { +1, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  788. { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
  789. { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
  790. { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
  791. { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
  792. { +1, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  793. { +1, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  794. { +1, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
  795. { +1, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
  796. { +1, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
  797. { +1, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
  798. { +1, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
  799. { +1, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
  800. { +1, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
  801. { +1, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
  802. { +1, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
  803. { +1, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
  804. { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
  805. { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
  806. { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
  807. { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
  808. { +1, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
  809. { +1, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
  810. { +1, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
  811. { +1, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
  812. { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_DATA },
  813. { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_SIGN },
  814. { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_DATA },
  815. { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_SIGN },
  816. { 0, +3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  817. { 0, +3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  818. { 0, -3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  819. { 0, -3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  820. { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_DATA },
  821. { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_SIGN },
  822. { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_DATA },
  823. { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_SIGN },
  824. { 0, +4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  825. { 0, +4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  826. { 0, -4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  827. { 0, -4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  828. { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
  829. { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
  830. { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
  831. { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
  832. { 0, +1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  833. { 0, +1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  834. { 0, +1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
  835. { 0, +1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
  836. { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
  837. { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
  838. { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
  839. { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
  840. { 0, -1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  841. { 0, -1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  842. { 0, -1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
  843. { 0, -1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
  844. { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_DATA },
  845. { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_SIGN },
  846. { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_DATA },
  847. { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_SIGN },
  848. { 0, +5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  849. { 0, +5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  850. { 0, -5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  851. { 0, -5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  852. { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_DATA },
  853. { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_SIGN },
  854. { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_DATA },
  855. { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_SIGN },
  856. { 0, +6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  857. { 0, +6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  858. { 0, -6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
  859. { 0, -6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
  860. { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
  861. { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
  862. { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
  863. { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
  864. { 0, +2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  865. { 0, +2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  866. { 0, +2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
  867. { 0, +2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
  868. { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
  869. { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
  870. { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
  871. { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
  872. { 0, -2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  873. { 0, -2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  874. { 0, -2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
  875. { 0, -2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
  876. { 0, 0, 0, 0, 0, 0, +1, 2, 8, STATE_FOLLOW },
  877. { 0, 0, 0, 0, 0, 0, +1, 2, 9, STATE_FOLLOW },
  878. { 0, 0, +3, 0, 0, 0, +1, 3, 0, STATE_START },
  879. { 0, 0, -3, 0, 0, 0, +1, 3, 0, STATE_START },
  880. { 0, 0, 0, 0, 0, 0, +1, 2, 10, STATE_FOLLOW },
  881. { 0, 0, 0, 0, 0, 0, +1, 2, 11, STATE_FOLLOW },
  882. { 0, 0, +4, 0, 0, 0, +1, 3, 0, STATE_START },
  883. { 0, 0, -4, 0, 0, 0, +1, 3, 0, STATE_START },
  884. { 0, 0, +1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  885. { 0, 0, +1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  886. { 0, 0, +1, 0, 0, 0, +1, 4, 1, STATE_DATA },
  887. { 0, 0, +1, 0, 0, 0, +1, 5, 0, STATE_START },
  888. { 0, 0, -1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  889. { 0, 0, -1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  890. { 0, 0, -1, 0, 0, 0, +1, 4, 1, STATE_DATA },
  891. { 0, 0, -1, 0, 0, 0, +1, 5, 0, STATE_START },
  892. { 0, 0, 0, 0, 0, 0, +1, 2, 12, STATE_FOLLOW },
  893. { 0, 0, 0, 0, 0, 0, +1, 2, 13, STATE_FOLLOW },
  894. { 0, 0, +5, 0, 0, 0, +1, 3, 0, STATE_START },
  895. { 0, 0, -5, 0, 0, 0, +1, 3, 0, STATE_START },
  896. { 0, 0, 0, 0, 0, 0, +1, 2, 14, STATE_FOLLOW },
  897. { 0, 0, 0, 0, 0, 0, +1, 2, 15, STATE_FOLLOW },
  898. { 0, 0, +6, 0, 0, 0, +1, 3, 0, STATE_START },
  899. { 0, 0, -6, 0, 0, 0, +1, 3, 0, STATE_START },
  900. { 0, 0, +2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  901. { 0, 0, +2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  902. { 0, 0, +2, 0, 0, 0, +1, 4, 1, STATE_DATA },
  903. { 0, 0, +2, 0, 0, 0, +1, 5, 0, STATE_START },
  904. { 0, 0, -2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
  905. { 0, 0, -2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
  906. { 0, 0, -2, 0, 0, 0, +1, 4, 1, STATE_DATA },
  907. { 0, 0, -2, 0, 0, 0, +1, 5, 0, STATE_START },
  908. { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_DATA },
  909. { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_SIGN },
  910. { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_DATA },
  911. { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_SIGN },
  912. { 0, 0, 0, +1, 0, 0, +1, 4, 1, STATE_DATA },
  913. { 0, 0, 0, +1, 0, 0, +1, 5, 0, STATE_START },
  914. { 0, 0, 0, -1, 0, 0, +1, 4, 1, STATE_DATA },
  915. { 0, 0, 0, -1, 0, 0, +1, 5, 0, STATE_START },
  916. { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_DATA },
  917. { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_SIGN },
  918. { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_DATA },
  919. { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_SIGN },
  920. { 0, 0, 0, +2, 0, 0, +1, 4, 1, STATE_DATA },
  921. { 0, 0, 0, +2, 0, 0, +1, 5, 0, STATE_START },
  922. { 0, 0, 0, -2, 0, 0, +1, 4, 1, STATE_DATA },
  923. { 0, 0, 0, -2, 0, 0, +1, 5, 0, STATE_START },
  924. { 0, 0, 0, 0, 0, 0, +1, 4, 4, STATE_FOLLOW },
  925. { 0, 0, 0, 0, 0, 0, +1, 4, 5, STATE_FOLLOW },
  926. { 0, 0, 0, 0, +1, 0, +1, 5, 0, STATE_START },
  927. { 0, 0, 0, 0, -1, 0, +1, 5, 0, STATE_START },
  928. { 0, 0, 0, 0, 0, 0, +1, 4, 6, STATE_FOLLOW },
  929. { 0, 0, 0, 0, 0, 0, +1, 4, 7, STATE_FOLLOW },
  930. { 0, 0, 0, 0, +2, 0, +1, 5, 0, STATE_START },
  931. { 0, 0, 0, 0, -2, 0, +1, 5, 0, STATE_START },
  932. { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_DATA },
  933. { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_SIGN },
  934. { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_DATA },
  935. { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_SIGN },
  936. { 0, 0, 0, 0, 0, 0, +1, 6, 2, STATE_FOLLOW },
  937. { 0, 0, 0, 0, 0, 0, +1, 6, 3, STATE_FOLLOW },
  938. { 0, 0, 0, 0, 0, 0, +1, 7, 1, STATE_DATA },
  939. { 0, 0, 0, 0, 0, 0, +1, 8, 0, STATE_START },
  940. { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_DATA },
  941. { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_SIGN },
  942. { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_DATA },
  943. { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_SIGN },
  944. { 0, +3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  945. { 0, +3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  946. { 0, -3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  947. { 0, -3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  948. { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_DATA },
  949. { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_SIGN },
  950. { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_DATA },
  951. { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_SIGN },
  952. { 0, +4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  953. { 0, +4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  954. { 0, -4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  955. { 0, -4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  956. { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
  957. { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
  958. { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
  959. { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
  960. { 0, +1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  961. { 0, +1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  962. { 0, +1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
  963. { 0, +1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
  964. { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
  965. { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
  966. { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
  967. { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
  968. { 0, -1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  969. { 0, -1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  970. { 0, -1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
  971. { 0, -1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
  972. { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_DATA },
  973. { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_SIGN },
  974. { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_DATA },
  975. { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_SIGN },
  976. { 0, +5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  977. { 0, +5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  978. { 0, -5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  979. { 0, -5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  980. { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_DATA },
  981. { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_SIGN },
  982. { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_DATA },
  983. { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_SIGN },
  984. { 0, +6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  985. { 0, +6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  986. { 0, -6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
  987. { 0, -6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
  988. { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
  989. { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
  990. { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
  991. { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
  992. { 0, +2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  993. { 0, +2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  994. { 0, +2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
  995. { 0, +2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
  996. { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
  997. { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
  998. { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
  999. { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
  1000. { 0, -2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  1001. { 0, -2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  1002. { 0, -2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
  1003. { 0, -2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
  1004. { 0, 0, 0, 0, 0, 0, -1, 2, 8, STATE_FOLLOW },
  1005. { 0, 0, 0, 0, 0, 0, -1, 2, 9, STATE_FOLLOW },
  1006. { 0, 0, +3, 0, 0, 0, -1, 3, 0, STATE_START },
  1007. { 0, 0, -3, 0, 0, 0, -1, 3, 0, STATE_START },
  1008. { 0, 0, 0, 0, 0, 0, -1, 2, 10, STATE_FOLLOW },
  1009. { 0, 0, 0, 0, 0, 0, -1, 2, 11, STATE_FOLLOW },
  1010. { 0, 0, +4, 0, 0, 0, -1, 3, 0, STATE_START },
  1011. { 0, 0, -4, 0, 0, 0, -1, 3, 0, STATE_START },
  1012. { 0, 0, +1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  1013. { 0, 0, +1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  1014. { 0, 0, +1, 0, 0, 0, -1, 4, 1, STATE_DATA },
  1015. { 0, 0, +1, 0, 0, 0, -1, 5, 0, STATE_START },
  1016. { 0, 0, -1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  1017. { 0, 0, -1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  1018. { 0, 0, -1, 0, 0, 0, -1, 4, 1, STATE_DATA },
  1019. { 0, 0, -1, 0, 0, 0, -1, 5, 0, STATE_START },
  1020. { 0, 0, 0, 0, 0, 0, -1, 2, 12, STATE_FOLLOW },
  1021. { 0, 0, 0, 0, 0, 0, -1, 2, 13, STATE_FOLLOW },
  1022. { 0, 0, +5, 0, 0, 0, -1, 3, 0, STATE_START },
  1023. { 0, 0, -5, 0, 0, 0, -1, 3, 0, STATE_START },
  1024. { 0, 0, 0, 0, 0, 0, -1, 2, 14, STATE_FOLLOW },
  1025. { 0, 0, 0, 0, 0, 0, -1, 2, 15, STATE_FOLLOW },
  1026. { 0, 0, +6, 0, 0, 0, -1, 3, 0, STATE_START },
  1027. { 0, 0, -6, 0, 0, 0, -1, 3, 0, STATE_START },
  1028. { 0, 0, +2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  1029. { 0, 0, +2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  1030. { 0, 0, +2, 0, 0, 0, -1, 4, 1, STATE_DATA },
  1031. { 0, 0, +2, 0, 0, 0, -1, 5, 0, STATE_START },
  1032. { 0, 0, -2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
  1033. { 0, 0, -2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
  1034. { 0, 0, -2, 0, 0, 0, -1, 4, 1, STATE_DATA },
  1035. { 0, 0, -2, 0, 0, 0, -1, 5, 0, STATE_START },
  1036. { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_DATA },
  1037. { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_SIGN },
  1038. { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_DATA },
  1039. { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_SIGN },
  1040. { 0, 0, 0, +1, 0, 0, -1, 4, 1, STATE_DATA },
  1041. { 0, 0, 0, +1, 0, 0, -1, 5, 0, STATE_START },
  1042. { 0, 0, 0, -1, 0, 0, -1, 4, 1, STATE_DATA },
  1043. { 0, 0, 0, -1, 0, 0, -1, 5, 0, STATE_START },
  1044. { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_DATA },
  1045. { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_SIGN },
  1046. { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_DATA },
  1047. { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_SIGN },
  1048. { 0, 0, 0, +2, 0, 0, -1, 4, 1, STATE_DATA },
  1049. { 0, 0, 0, +2, 0, 0, -1, 5, 0, STATE_START },
  1050. { 0, 0, 0, -2, 0, 0, -1, 4, 1, STATE_DATA },
  1051. { 0, 0, 0, -2, 0, 0, -1, 5, 0, STATE_START },
  1052. { 0, 0, 0, 0, 0, 0, -1, 4, 4, STATE_FOLLOW },
  1053. { 0, 0, 0, 0, 0, 0, -1, 4, 5, STATE_FOLLOW },
  1054. { 0, 0, 0, 0, +1, 0, -1, 5, 0, STATE_START },
  1055. { 0, 0, 0, 0, -1, 0, -1, 5, 0, STATE_START },
  1056. { 0, 0, 0, 0, 0, 0, -1, 4, 6, STATE_FOLLOW },
  1057. { 0, 0, 0, 0, 0, 0, -1, 4, 7, STATE_FOLLOW },
  1058. { 0, 0, 0, 0, +2, 0, -1, 5, 0, STATE_START },
  1059. { 0, 0, 0, 0, -2, 0, -1, 5, 0, STATE_START },
  1060. { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_DATA },
  1061. { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_SIGN },
  1062. { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_DATA },
  1063. { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_SIGN },
  1064. { 0, 0, 0, 0, 0, 0, -1, 6, 2, STATE_FOLLOW },
  1065. { 0, 0, 0, 0, 0, 0, -1, 6, 3, STATE_FOLLOW },
  1066. { 0, 0, 0, 0, 0, 0, -1, 7, 1, STATE_DATA },
  1067. { 0, 0, 0, 0, 0, 0, -1, 8, 0, STATE_START },
  1068. };
  1069. #define PROCESS_VALS \
  1070. do { \
  1071. val <<= lut.val0_bits; \
  1072. val |= lut.val0; \
  1073. dst[0] = (val - 1) * lut.sign; \
  1074. dst[1] = lut.val1; \
  1075. dst[2] = lut.val2; \
  1076. dst[3] = lut.val3; \
  1077. dst[4] = lut.val4; \
  1078. dst[5] = 0; \
  1079. dst[6] = 0; \
  1080. dst[7] = 0; \
  1081. if (lut.num) \
  1082. val = lut.val; \
  1083. dst += lut.num; \
  1084. if (dst >= last) \
  1085. return coeffs; \
  1086. lut = dirac_golomb_lut[lut.state + *buf++]; \
  1087. } while (0)
  1088. int ff_dirac_golomb_read_16bit(const uint8_t *buf, int bytes,
  1089. uint8_t *_dst, int coeffs)
  1090. {
  1091. LUTState lut = dirac_golomb_lut[*buf++];
  1092. int16_t *dst = (int16_t *)_dst, *last = dst + coeffs;
  1093. uint16_t val = 0;
  1094. for (int i = 1; i < bytes; i++)
  1095. PROCESS_VALS;
  1096. /* Reader needs to be flushed */
  1097. PROCESS_VALS;
  1098. /* Still short of coeffs - try to guess and at least output what we have */
  1099. if (lut.state != STATE_START)
  1100. *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
  1101. return coeffs - (int)(last - dst);
  1102. }
  1103. int ff_dirac_golomb_read_32bit(const uint8_t *buf, int bytes,
  1104. uint8_t *_dst, int coeffs)
  1105. {
  1106. LUTState lut = dirac_golomb_lut[*buf++];
  1107. int32_t *dst = (int32_t *)_dst, *last = dst + coeffs;
  1108. uint32_t val = 0;
  1109. for (int i = 1; i < bytes; i++)
  1110. PROCESS_VALS;
  1111. /* Reader needs to be flushed */
  1112. PROCESS_VALS;
  1113. /* Still short of coeffs - try to guess and at least output what we have */
  1114. if (lut.state != STATE_START)
  1115. *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
  1116. return coeffs - (int)(last - dst);
  1117. }