<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/extconf.rb</filename>
    </added>
    <added>
      <filename>lib/processor.rb</filename>
    </added>
    <added>
      <filename>lib/querybuilder.rb</filename>
    </added>
    <added>
      <filename>lib/querybuilder_ext.c</filename>
    </added>
    <added>
      <filename>lib/querybuilder_ext.rl</filename>
    </added>
    <added>
      <filename>lib/querybuilder_rb.rb</filename>
    </added>
    <added>
      <filename>lib/querybuilder_rb.rl</filename>
    </added>
    <added>
      <filename>lib/querybuilder_syntax.rl</filename>
    </added>
    <added>
      <filename>old_QueryBuilder.rb</filename>
    </added>
    <added>
      <filename>test/querybuilder_test.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,6 @@
 .*
-pkg
\ No newline at end of file
+pkg
+lib/Makefile
+lib/*.o
+lib/*.bundle
+lib/*.so</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,1585 +1,78 @@
-# line 1 &quot;lib/parser.rl&quot;
-=begin
-&quot;letters where foo &gt; 5 from managers in site limit 5 group by section_id&quot;
-==&gt;
-[:group,
-  [:limit,
-    [:from,
-      [:filter,
-        [:relation,
-          &quot;letters&quot;
-        ],
-        [:&gt;,
-          &quot;foo&quot;,
-          &quot;5&quot;
-        ]
-      ]
-      [:relation,
-        [:scope,
-          &quot;managers&quot;,
-          &quot;site&quot;
-        ]
-      ]
-    ],
-    &quot;5&quot;
-  ],
-  &quot;section_id&quot;
-]
-=end
-module NewQueryBuilder
+module QueryBuilder
   class QueryException &lt; Exception
   end
   class Parser
-    # http://dev.mysql.com/doc/refman/5.1/en/operator-precedence.html
-    OP_PRECEDENCE = {
-      &quot;INTERVAL&quot; =&gt; 40,
-      &quot;BINARY&quot;   =&gt; 39, &quot;COLLATE&quot;  =&gt; 39,
-      &quot;!&quot; =&gt; 38,
-      &quot;@-&quot; =&gt; 37, &quot;@~&quot; =&gt; 37,
-      &quot;^&quot; =&gt; 36,
-      &quot;*&quot; =&gt; 35, &quot;/&quot; =&gt; 35, &quot;DIV&quot; =&gt; 35, &quot;%&quot; =&gt; 35, &quot;MOD&quot; =&gt; 35,
-      &quot;-&quot; =&gt; 34, &quot;+&quot; =&gt; 34,
-      &quot;&lt;&lt;&quot; =&gt; 33, &quot;&gt;&gt;&quot; =&gt; 33,
-      &quot;&amp;&quot; =&gt; 32,
-      &quot;|&quot; =&gt; 31,
-      &quot;=&quot; =&gt; 30, &quot;&lt;=&gt;&quot; =&gt; 30, &quot;&gt;=&quot; =&gt; 30, &quot;&gt;&quot; =&gt; 30, &quot;&lt;=&quot; =&gt; 30, &quot;&lt;&quot; =&gt; 30, &quot;&lt;&gt;&quot; =&gt; 30, &quot;!=&quot; =&gt; 30, &quot;IS&quot; =&gt; 30, &quot;LIKE&quot; =&gt; 30, &quot;REGEXP&quot; =&gt; 30, &quot;IN&quot; =&gt; 30,
-      &quot;BETWEEN&quot; =&gt; 29, &quot;CASE&quot; =&gt; 29, &quot;WHEN&quot; =&gt; 29, &quot;THEN&quot; =&gt; 29, &quot;ELSE&quot; =&gt; 29,
-      &quot;NOT&quot; =&gt; 28,
-      &quot;&amp;&amp;&quot; =&gt; 27, &quot;AND&quot; =&gt; 27,
-      &quot;XOR&quot; =&gt; 26,
-      &quot;||&quot; =&gt; 25, &quot;OR&quot; =&gt; 25,
-      &quot;:=&quot; =&gt; 24,
-      &quot;RELATION&quot; =&gt; 13, &quot;FILTER&quot; =&gt; 13,
-      &quot;SCOPE&quot; =&gt; 12,
-      &quot;FROM&quot; =&gt; 11,
-      &quot;ASC&quot;  =&gt; 10, &quot;DESC&quot; =&gt; 10,
-      &quot;CLAUSE&quot; =&gt; 5,
-      &quot;CLAUSE_AND&quot; =&gt; 4,
-      &quot;CLAUSE_OR&quot; =&gt; 3,
-      &quot;OFFSET&quot; =&gt; 2, &quot;PAGINATE&quot; =&gt; 2, &quot;LIMIT&quot; =&gt; 2, &quot;ORDER&quot; =&gt; 2, &quot;GROUP&quot; =&gt; 2,
-      &quot;QUERY&quot; =&gt; 1,
-      &quot;PAR_CLOSE&quot; =&gt; 0, &quot;CLAUSE_PAR_CLOSE&quot; =&gt; 0,
-      &quot;PAR&quot; =&gt; -1, &quot;CLAUSE_PAR&quot; =&gt; -1
-    }
-    # group &lt; from &lt; filter &lt; relation &lt; scope
-
-    # simple_state_machine.rl
-    # line 250 &quot;lib/parser.rl&quot;
-
-
-    
-# line 72 &quot;lib/parser.rb&quot;
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_actions
-	private :_pseudo_sql_actions, :_pseudo_sql_actions=
-end
-self._pseudo_sql_actions = [
-	0, 1, 0, 1, 1, 1, 2, 1, 
-	3, 1, 4, 1, 5, 1, 6, 1, 
-	7, 1, 8, 1, 9, 1, 10, 1, 
-	11, 1, 12, 1, 13, 1, 14, 1, 
-	15, 1, 16, 1, 17, 1, 18, 1, 
-	19, 1, 20, 1, 21, 1, 22, 1, 
-	23, 2, 0, 7, 2, 1, 0, 2, 
-	1, 11, 2, 1, 13, 2, 2, 0, 
-	2, 2, 11, 2, 2, 13, 2, 3, 
-	0, 2, 3, 11, 2, 3, 13, 2, 
-	4, 0, 2, 4, 6, 2, 4, 11, 
-	2, 4, 13, 2, 6, 4, 2, 6, 
-	13, 2, 7, 0, 2, 7, 10, 2, 
-	8, 0, 2, 8, 11, 2, 8, 13, 
-	2, 14, 13, 2, 15, 0, 2, 17, 
-	0, 2, 18, 0, 2, 19, 0, 2, 
-	20, 0, 2, 21, 0, 2, 21, 12, 
-	3, 7, 10, 12, 3, 12, 7, 10
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_key_offsets
-	private :_pseudo_sql_key_offsets, :_pseudo_sql_key_offsets=
-end
-self._pseudo_sql_key_offsets = [
-	0, 0, 9, 13, 16, 25, 26, 27, 
-	30, 39, 43, 46, 55, 56, 57, 58, 
-	67, 76, 84, 95, 96, 97, 98, 99, 
-	102, 106, 107, 115, 123, 132, 136, 137, 
-	140, 148, 156, 157, 158, 159, 160, 166, 
-	172, 174, 180, 187, 193, 195, 200, 206, 
-	208, 209, 210, 211, 212, 218, 224, 226, 
-	231, 237, 238, 239, 240, 241, 244, 248, 
-	249, 257, 265, 274, 283, 284, 285, 289, 
-	294, 295, 296, 297, 298, 299, 300, 301, 
-	302, 303, 304, 305, 313, 321, 329, 334, 
-	336, 340, 341, 342, 343, 344, 347, 361, 
-	363, 371, 393, 407, 409, 409, 413, 421, 
-	437, 452, 454, 465, 466, 467, 470, 484, 
-	497, 519, 520, 521, 530, 531, 533, 534, 
-	537, 551, 564, 565, 566, 569, 573, 574, 
-	575, 577, 581, 589, 590, 591, 592, 594, 
-	595, 596, 597, 598, 599, 600, 601, 602, 
-	603, 604, 605, 606, 608, 609, 610, 611, 
-	612, 613, 616, 630, 632, 640, 662, 676, 
-	678, 678, 682, 690, 706, 721, 723, 734, 
-	735, 736, 739, 753, 766, 788, 789, 790, 
-	799, 800, 802, 803, 806, 820, 833, 834, 
-	835, 838, 842, 843, 844, 846, 850, 858, 
-	859, 860, 861, 863, 864, 865, 866, 867, 
-	868, 869, 870, 871, 872, 873, 874, 875, 
-	877, 878, 879, 880, 881, 882, 884, 894, 
-	894, 895, 896, 897, 899, 909, 909, 917, 
-	928, 929, 930, 931, 932, 941, 949, 960, 
-	961, 964, 972, 980, 981, 982, 983, 984, 
-	987, 1001, 1003, 1011, 1033, 1047, 1049, 1049, 
-	1053, 1061, 1077, 1092, 1094, 1105, 1106, 1107, 
-	1110, 1124, 1137, 1159, 1160, 1161, 1170, 1171, 
-	1173, 1174, 1177, 1191, 1204, 1205, 1206, 1209, 
-	1213, 1214, 1215, 1217, 1221, 1229, 1230, 1231, 
-	1232, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 
-	1241, 1242, 1243, 1244, 1245, 1246, 1248, 1249, 
-	1250, 1251, 1252, 1253, 1255, 1265, 1265, 1279, 
-	1281, 1290, 1309, 1323, 1325, 1325, 1329, 1338, 
-	1351, 1366, 1368, 1380, 1382, 1393, 1407, 1408, 
-	1409, 1412, 1426, 1427, 1428, 1429, 1430, 1431, 
-	1434, 1438, 1439, 1440, 1441, 1451, 1460, 1461, 
-	1462, 1463, 1465, 1466, 1467, 1468, 1469, 1470, 
-	1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 
-	1479, 1480, 1481, 1482, 1482, 1491, 1495, 1499, 
-	1504, 1505, 1506, 1507, 1516, 1525, 1532, 1533, 
-	1536, 1544, 1553, 1554, 1555, 1556, 1557, 1560, 
-	1574, 1576, 1585, 1606, 1620, 1622, 1622, 1626, 
-	1635, 1650, 1665, 1667, 1679, 1681, 1692, 1706, 
-	1707, 1708, 1711, 1725, 1726, 1727, 1728, 1729, 
-	1730, 1733, 1737, 1738, 1739, 1740, 1750, 1759, 
-	1760, 1761, 1762, 1764, 1765, 1766, 1767, 1768, 
-	1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 
-	1777, 1778, 1779, 1780, 1781, 1781, 1785, 1794, 
-	1799, 1808, 1813, 1819, 1825, 1832, 1854, 1870, 
-	1892, 1908, 1930, 1952, 1963, 1974, 1983, 2005, 
-	2021, 2043, 2054, 2054
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_trans_keys
-	private :_pseudo_sql_trans_keys, :_pseudo_sql_trans_keys=
-end
-self._pseudo_sql_trans_keys = [
-	32, 40, 95, 9, 10, 65, 90, 97, 
-	122, 32, 41, 9, 10, 9, 10, 32, 
-	32, 97, 102, 103, 108, 111, 112, 9, 
-	10, 110, 100, 32, 9, 10, 32, 40, 
-	95, 9, 10, 65, 90, 97, 122, 32, 
-	41, 9, 10, 9, 10, 32, 32, 97, 
-	102, 103, 108, 111, 112, 9, 10, 114, 
-	111, 109, 32, 40, 95, 9, 10, 65, 
-	90, 97, 122, 32, 40, 95, 9, 10, 
-	65, 90, 97, 122, 9, 10, 32, 95, 
-	65, 90, 97, 122, 32, 97, 102, 103, 
-	105, 108, 111, 112, 119, 9, 10, 114, 
-	111, 117, 112, 32, 9, 10, 32, 98, 
-	9, 10, 121, 32, 95, 9, 10, 65, 
-	90, 97, 122, 32, 95, 9, 10, 65, 
-	90, 97, 122, 9, 10, 32, 44, 95, 
-	65, 90, 97, 122, 32, 44, 9, 10, 
-	110, 32, 9, 10, 32, 95, 9, 10, 
-	65, 90, 97, 122, 9, 10, 32, 95, 
-	65, 90, 97, 122, 105, 109, 105, 116, 
-	32, 45, 9, 10, 48, 57, 32, 45, 
-	9, 10, 48, 57, 48, 57, 9, 10, 
-	32, 44, 48, 57, 32, 44, 103, 111, 
-	112, 9, 10, 32, 45, 9, 10, 48, 
-	57, 48, 57, 9, 10, 32, 48, 57, 
-	32, 103, 111, 112, 9, 10, 102, 114, 
-	102, 115, 101, 116, 32, 45, 9, 10, 
-	48, 57, 32, 45, 9, 10, 48, 57, 
-	48, 57, 9, 10, 32, 48, 57, 32, 
-	103, 111, 112, 9, 10, 114, 100, 101, 
-	114, 32, 9, 10, 32, 98, 9, 10, 
-	121, 32, 95, 9, 10, 65, 90, 97, 
-	122, 32, 95, 9, 10, 65, 90, 97, 
-	122, 9, 10, 32, 44, 95, 65, 90, 
-	97, 122, 32, 44, 65, 68, 97, 100, 
-	103, 9, 10, 83, 67, 9, 10, 32, 
-	44, 32, 44, 103, 9, 10, 69, 115, 
-	99, 101, 97, 103, 105, 110, 97, 116, 
-	101, 32, 95, 9, 10, 65, 90, 97, 
-	122, 32, 95, 9, 10, 65, 90, 97, 
-	122, 9, 10, 32, 95, 65, 90, 97, 
-	122, 32, 103, 111, 9, 10, 102, 114, 
-	32, 100, 9, 10, 104, 101, 114, 101, 
-	32, 9, 10, 32, 34, 39, 40, 45, 
-	95, 9, 10, 48, 57, 65, 90, 97, 
-	122, 34, 92, 9, 10, 32, 43, 45, 
-	61, 60, 62, 32, 43, 45, 61, 97, 
-	100, 102, 103, 104, 105, 108, 109, 110, 
-	111, 112, 115, 119, 121, 9, 10, 60, 
-	62, 32, 34, 39, 40, 45, 95, 9, 
-	10, 48, 57, 65, 90, 97, 122, 39, 
-	92, 32, 41, 9, 10, 9, 10, 32, 
-	43, 45, 61, 60, 62, 32, 43, 45, 
-	61, 97, 102, 103, 105, 108, 110, 111, 
-	112, 9, 10, 60, 62, 32, 34, 39, 
-	40, 45, 61, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 48, 57, 9, 10, 
-	32, 43, 45, 46, 61, 48, 57, 60, 
-	62, 110, 100, 32, 9, 10, 32, 34, 
-	39, 40, 45, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 9, 10, 32, 43, 
-	45, 61, 95, 60, 62, 65, 90, 97, 
-	122, 32, 43, 45, 61, 97, 100, 102, 
-	103, 104, 105, 108, 109, 110, 111, 112, 
-	115, 119, 121, 9, 10, 60, 62, 97, 
-	121, 9, 10, 32, 43, 45, 61, 115, 
-	60, 62, 105, 107, 109, 101, 32, 9, 
-	10, 32, 34, 39, 40, 45, 95, 9, 
-	10, 48, 57, 65, 90, 97, 122, 9, 
-	10, 32, 43, 45, 61, 95, 60, 62, 
-	65, 90, 97, 122, 111, 116, 32, 9, 
-	10, 32, 108, 9, 10, 105, 107, 102, 
-	114, 32, 100, 9, 10, 9, 10, 32, 
-	43, 45, 61, 60, 62, 111, 117, 114, 
-	105, 111, 110, 117, 116, 101, 110, 116, 
-	104, 101, 99, 111, 110, 100, 101, 104, 
-	101, 107, 101, 114, 101, 32, 9, 10, 
-	32, 34, 39, 40, 45, 95, 9, 10, 
-	48, 57, 65, 90, 97, 122, 34, 92, 
-	9, 10, 32, 43, 45, 61, 60, 62, 
-	32, 43, 45, 61, 97, 100, 102, 103, 
-	104, 105, 108, 109, 110, 111, 112, 115, 
-	119, 121, 9, 10, 60, 62, 32, 34, 
-	39, 40, 45, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 39, 92, 32, 41, 
-	9, 10, 9, 10, 32, 43, 45, 61, 
-	60, 62, 32, 43, 45, 61, 97, 102, 
-	103, 105, 108, 110, 111, 112, 9, 10, 
-	60, 62, 32, 34, 39, 40, 45, 61, 
-	95, 9, 10, 48, 57, 65, 90, 97, 
-	122, 48, 57, 9, 10, 32, 43, 45, 
-	46, 61, 48, 57, 60, 62, 110, 100, 
-	32, 9, 10, 32, 34, 39, 40, 45, 
-	95, 9, 10, 48, 57, 65, 90, 97, 
-	122, 9, 10, 32, 43, 45, 61, 95, 
-	60, 62, 65, 90, 97, 122, 32, 43, 
-	45, 61, 97, 100, 102, 103, 104, 105, 
-	108, 109, 110, 111, 112, 115, 119, 121, 
-	9, 10, 60, 62, 97, 121, 9, 10, 
-	32, 43, 45, 61, 115, 60, 62, 105, 
-	107, 109, 101, 32, 9, 10, 32, 34, 
-	39, 40, 45, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 9, 10, 32, 43, 
-	45, 61, 95, 60, 62, 65, 90, 97, 
-	122, 111, 116, 32, 9, 10, 32, 108, 
-	9, 10, 105, 107, 102, 114, 32, 100, 
-	9, 10, 9, 10, 32, 43, 45, 61, 
-	60, 62, 111, 117, 114, 105, 111, 110, 
-	117, 116, 101, 110, 116, 104, 101, 99, 
-	111, 110, 100, 101, 104, 101, 107, 101, 
-	97, 101, 48, 57, 9, 10, 32, 43, 
-	45, 61, 48, 57, 60, 62, 101, 97, 
-	101, 48, 57, 9, 10, 32, 43, 45, 
-	61, 48, 57, 60, 62, 9, 10, 32, 
-	95, 65, 90, 97, 122, 32, 97, 102, 
-	103, 105, 108, 111, 112, 119, 9, 10, 
-	104, 114, 111, 109, 32, 40, 95, 9, 
-	10, 65, 90, 97, 122, 9, 10, 32, 
-	95, 65, 90, 97, 122, 32, 97, 102, 
-	103, 105, 108, 111, 112, 119, 9, 10, 
-	110, 32, 9, 10, 32, 95, 9, 10, 
-	65, 90, 97, 122, 9, 10, 32, 95, 
-	65, 90, 97, 122, 104, 101, 114, 101, 
-	32, 9, 10, 32, 34, 39, 40, 45, 
-	95, 9, 10, 48, 57, 65, 90, 97, 
-	122, 34, 92, 9, 10, 32, 43, 45, 
-	61, 60, 62, 32, 43, 45, 61, 97, 
-	100, 102, 103, 104, 105, 108, 109, 110, 
-	111, 112, 115, 119, 121, 9, 10, 60, 
-	62, 32, 34, 39, 40, 45, 95, 9, 
-	10, 48, 57, 65, 90, 97, 122, 39, 
-	92, 32, 41, 9, 10, 9, 10, 32, 
-	43, 45, 61, 60, 62, 32, 43, 45, 
-	61, 97, 102, 103, 105, 108, 110, 111, 
-	112, 9, 10, 60, 62, 32, 34, 39, 
-	40, 45, 61, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 48, 57, 9, 10, 
-	32, 43, 45, 46, 61, 48, 57, 60, 
-	62, 110, 100, 32, 9, 10, 32, 34, 
-	39, 40, 45, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 9, 10, 32, 43, 
-	45, 61, 95, 60, 62, 65, 90, 97, 
-	122, 32, 43, 45, 61, 97, 100, 102, 
-	103, 104, 105, 108, 109, 110, 111, 112, 
-	115, 119, 121, 9, 10, 60, 62, 97, 
-	121, 9, 10, 32, 43, 45, 61, 115, 
-	60, 62, 105, 107, 109, 101, 32, 9, 
-	10, 32, 34, 39, 40, 45, 95, 9, 
-	10, 48, 57, 65, 90, 97, 122, 9, 
-	10, 32, 43, 45, 61, 95, 60, 62, 
-	65, 90, 97, 122, 111, 116, 32, 9, 
-	10, 32, 108, 9, 10, 105, 107, 102, 
-	114, 32, 100, 9, 10, 9, 10, 32, 
-	43, 45, 61, 60, 62, 111, 117, 114, 
-	105, 111, 110, 117, 116, 101, 110, 116, 
-	104, 101, 99, 111, 110, 100, 101, 104, 
-	101, 107, 101, 97, 101, 48, 57, 9, 
-	10, 32, 43, 45, 61, 48, 57, 60, 
-	62, 32, 34, 39, 40, 45, 95, 9, 
-	10, 48, 57, 65, 90, 97, 122, 34, 
-	92, 32, 41, 43, 45, 61, 9, 10, 
-	60, 62, 32, 41, 43, 45, 61, 97, 
-	100, 104, 108, 109, 110, 111, 115, 119, 
-	121, 9, 10, 60, 62, 32, 34, 39, 
-	40, 45, 95, 9, 10, 48, 57, 65, 
-	90, 97, 122, 39, 92, 32, 41, 9, 
-	10, 32, 41, 43, 45, 61, 9, 10, 
-	60, 62, 32, 41, 43, 45, 61, 97, 
-	108, 110, 111, 9, 10, 60, 62, 32, 
-	34, 39, 40, 45, 61, 95, 9, 10, 
-	48, 57, 65, 90, 97, 122, 48, 57, 
-	32, 41, 43, 45, 46, 61, 9, 10, 
-	48, 57, 60, 62, 48, 57, 32, 41, 
-	43, 45, 61, 9, 10, 48, 57, 60, 
-	62, 32, 41, 43, 45, 61, 95, 9, 
-	10, 60, 62, 65, 90, 97, 122, 110, 
-	100, 32, 9, 10, 32, 34, 39, 40, 
-	45, 95, 9, 10, 48, 57, 65, 90, 
-	97, 122, 105, 107, 101, 111, 116, 32, 
-	9, 10, 32, 108, 9, 10, 114, 97, 
-	121, 32, 41, 43, 45, 61, 115, 9, 
-	10, 60, 62, 32, 41, 43, 45, 61, 
-	9, 10, 60, 62, 111, 117, 114, 105, 
-	111, 110, 117, 116, 101, 110, 116, 104, 
-	101, 99, 111, 110, 100, 101, 101, 107, 
-	101, 97, 32, 40, 95, 9, 10, 65, 
-	90, 97, 122, 32, 41, 9, 10, 32, 
-	41, 9, 10, 32, 41, 102, 9, 10, 
-	114, 111, 109, 32, 40, 95, 9, 10, 
-	65, 90, 97, 122, 32, 41, 95, 9, 
-	10, 65, 90, 97, 122, 32, 41, 102, 
-	105, 119, 9, 10, 110, 32, 9, 10, 
-	32, 95, 9, 10, 65, 90, 97, 122, 
-	32, 41, 95, 9, 10, 65, 90, 97, 
-	122, 104, 101, 114, 101, 32, 9, 10, 
-	32, 34, 39, 40, 45, 95, 9, 10, 
-	48, 57, 65, 90, 97, 122, 34, 92, 
-	32, 41, 43, 45, 61, 9, 10, 60, 
-	62, 32, 41, 43, 45, 61, 97, 100, 
-	102, 104, 105, 108, 109, 110, 111, 115, 
-	119, 121, 9, 10, 60, 62, 32, 34, 
-	39, 40, 45, 95, 9, 10, 48, 57, 
-	65, 90, 97, 122, 39, 92, 32, 41, 
-	9, 10, 32, 41, 43, 45, 61, 9, 
-	10, 60, 62, 32, 41, 43, 45, 61, 
-	97, 102, 105, 108, 110, 111, 9, 10, 
-	60, 62, 32, 34, 39, 40, 45, 61, 
-	95, 9, 10, 48, 57, 65, 90, 97, 
-	122, 48, 57, 32, 41, 43, 45, 46, 
-	61, 9, 10, 48, 57, 60, 62, 48, 
-	57, 32, 41, 43, 45, 61, 9, 10, 
-	48, 57, 60, 62, 32, 41, 43, 45, 
-	61, 95, 9, 10, 60, 62, 65, 90, 
-	97, 122, 110, 100, 32, 9, 10, 32, 
-	34, 39, 40, 45, 95, 9, 10, 48, 
-	57, 65, 90, 97, 122, 105, 107, 101, 
-	111, 116, 32, 9, 10, 32, 108, 9, 
-	10, 114, 97, 121, 32, 41, 43, 45, 
-	61, 115, 9, 10, 60, 62, 32, 41, 
-	43, 45, 61, 9, 10, 60, 62, 111, 
-	117, 114, 105, 111, 110, 117, 116, 101, 
-	110, 116, 104, 101, 99, 111, 110, 100, 
-	101, 101, 107, 101, 97, 32, 44, 9, 
-	10, 32, 97, 102, 103, 108, 111, 112, 
-	9, 10, 32, 44, 103, 9, 10, 32, 
-	44, 65, 68, 97, 100, 103, 9, 10, 
-	32, 103, 111, 9, 10, 32, 103, 111, 
-	112, 9, 10, 32, 103, 111, 112, 9, 
-	10, 32, 44, 103, 111, 112, 9, 10, 
-	32, 43, 45, 61, 97, 100, 102, 103, 
-	104, 105, 108, 109, 110, 111, 112, 115, 
-	119, 121, 9, 10, 60, 62, 32, 43, 
-	45, 61, 97, 102, 103, 105, 108, 110, 
-	111, 112, 9, 10, 60, 62, 32, 43, 
-	45, 61, 97, 100, 102, 103, 104, 105, 
-	108, 109, 110, 111, 112, 115, 119, 121, 
-	9, 10, 60, 62, 32, 43, 45, 61, 
-	97, 102, 103, 105, 108, 110, 111, 112, 
-	9, 10, 60, 62, 32, 43, 45, 61, 
-	97, 100, 102, 103, 104, 105, 108, 109, 
-	110, 111, 112, 115, 119, 121, 9, 10, 
-	60, 62, 32, 43, 45, 61, 97, 100, 
-	102, 103, 104, 105, 108, 109, 110, 111, 
-	112, 115, 119, 121, 9, 10, 60, 62, 
-	32, 97, 102, 103, 105, 108, 111, 112, 
-	119, 9, 10, 32, 97, 102, 103, 105, 
-	108, 111, 112, 119, 9, 10, 32, 97, 
-	102, 103, 108, 111, 112, 9, 10, 32, 
-	43, 45, 61, 97, 100, 102, 103, 104, 
-	105, 108, 109, 110, 111, 112, 115, 119, 
-	121, 9, 10, 60, 62, 32, 43, 45, 
-	61, 97, 102, 103, 105, 108, 110, 111, 
-	112, 9, 10, 60, 62, 32, 43, 45, 
-	61, 97, 100, 102, 103, 104, 105, 108, 
-	109, 110, 111, 112, 115, 119, 121, 9, 
-	10, 60, 62, 32, 97, 102, 103, 105, 
-	108, 111, 112, 119, 9, 10, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_single_lengths
-	private :_pseudo_sql_single_lengths, :_pseudo_sql_single_lengths=
-end
-self._pseudo_sql_single_lengths = [
-	0, 3, 2, 3, 7, 1, 1, 1, 
-	3, 2, 3, 7, 1, 1, 1, 3, 
-	3, 4, 9, 1, 1, 1, 1, 1, 
-	2, 1, 2, 2, 5, 2, 1, 1, 
-	2, 4, 1, 1, 1, 1, 2, 2, 
-	0, 4, 5, 2, 0, 3, 4, 2, 
-	1, 1, 1, 1, 2, 2, 0, 3, 
-	4, 1, 1, 1, 1, 1, 2, 1, 
-	2, 2, 5, 7, 1, 1, 4, 3, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 2, 2, 4, 3, 2, 
-	2, 1, 1, 1, 1, 1, 6, 2, 
-	6, 18, 6, 2, 0, 2, 6, 12, 
-	7, 0, 7, 1, 1, 1, 6, 7, 
-	18, 1, 1, 7, 1, 2, 1, 1, 
-	6, 7, 1, 1, 1, 2, 1, 1, 
-	2, 2, 6, 1, 1, 1, 2, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 2, 1, 1, 1, 1, 
-	1, 1, 6, 2, 6, 18, 6, 2, 
-	0, 2, 6, 12, 7, 0, 7, 1, 
-	1, 1, 6, 7, 18, 1, 1, 7, 
-	1, 2, 1, 1, 6, 7, 1, 1, 
-	1, 2, 1, 1, 2, 2, 6, 1, 
-	1, 1, 2, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 2, 
-	1, 1, 1, 1, 1, 0, 6, 0, 
-	1, 1, 1, 0, 6, 0, 4, 9, 
-	1, 1, 1, 1, 3, 4, 9, 1, 
-	1, 2, 4, 1, 1, 1, 1, 1, 
-	6, 2, 6, 18, 6, 2, 0, 2, 
-	6, 12, 7, 0, 7, 1, 1, 1, 
-	6, 7, 18, 1, 1, 7, 1, 2, 
-	1, 1, 6, 7, 1, 1, 1, 2, 
-	1, 1, 2, 2, 6, 1, 1, 1, 
-	2, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 2, 1, 1, 
-	1, 1, 1, 0, 6, 0, 6, 2, 
-	5, 15, 6, 2, 0, 2, 5, 9, 
-	7, 0, 6, 0, 5, 6, 1, 1, 
-	1, 6, 1, 1, 1, 1, 1, 1, 
-	2, 1, 1, 1, 6, 5, 1, 1, 
-	1, 2, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 0, 3, 2, 2, 3, 
-	1, 1, 1, 3, 3, 5, 1, 1, 
-	2, 3, 1, 1, 1, 1, 1, 6, 
-	2, 5, 17, 6, 2, 0, 2, 5, 
-	11, 7, 0, 6, 0, 5, 6, 1, 
-	1, 1, 6, 1, 1, 1, 1, 1, 
-	1, 2, 1, 1, 1, 6, 5, 1, 
-	1, 1, 2, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 0, 2, 7, 3, 
-	7, 3, 4, 4, 5, 18, 12, 18, 
-	12, 18, 18, 9, 9, 7, 18, 12, 
-	18, 9, 0, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_range_lengths
-	private :_pseudo_sql_range_lengths, :_pseudo_sql_range_lengths=
-end
-self._pseudo_sql_range_lengths = [
-	0, 3, 1, 0, 1, 0, 0, 1, 
-	3, 1, 0, 1, 0, 0, 0, 3, 
-	3, 2, 1, 0, 0, 0, 0, 1, 
-	1, 0, 3, 3, 2, 1, 0, 1, 
-	3, 2, 0, 0, 0, 0, 2, 2, 
-	1, 1, 1, 2, 1, 1, 1, 0, 
-	0, 0, 0, 0, 2, 2, 1, 1, 
-	1, 0, 0, 0, 0, 1, 1, 0, 
-	3, 3, 2, 1, 0, 0, 0, 1, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 3, 3, 2, 1, 0, 
-	1, 0, 0, 0, 0, 1, 4, 0, 
-	1, 2, 4, 0, 0, 1, 1, 2, 
-	4, 1, 2, 0, 0, 1, 4, 3, 
-	2, 0, 0, 1, 0, 0, 0, 1, 
-	4, 3, 0, 0, 1, 1, 0, 0, 
-	0, 1, 1, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 1, 4, 0, 1, 2, 4, 0, 
-	0, 1, 1, 2, 4, 1, 2, 0, 
-	0, 1, 4, 3, 2, 0, 0, 1, 
-	0, 0, 0, 1, 4, 3, 0, 0, 
-	1, 1, 0, 0, 0, 1, 1, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 1, 2, 0, 
-	0, 0, 0, 1, 2, 0, 2, 1, 
-	0, 0, 0, 0, 3, 2, 1, 0, 
-	1, 3, 2, 0, 0, 0, 0, 1, 
-	4, 0, 1, 2, 4, 0, 0, 1, 
-	1, 2, 4, 1, 2, 0, 0, 1, 
-	4, 3, 2, 0, 0, 1, 0, 0, 
-	0, 1, 4, 3, 0, 0, 1, 1, 
-	0, 0, 0, 1, 1, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 1, 2, 0, 4, 0, 
-	2, 2, 4, 0, 0, 1, 2, 2, 
-	4, 1, 3, 1, 3, 4, 0, 0, 
-	1, 4, 0, 0, 0, 0, 0, 1, 
-	1, 0, 0, 0, 2, 2, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 3, 1, 1, 1, 
-	0, 0, 0, 3, 3, 1, 0, 1, 
-	3, 3, 0, 0, 0, 0, 1, 4, 
-	0, 2, 2, 4, 0, 0, 1, 2, 
-	2, 4, 1, 3, 1, 3, 4, 0, 
-	0, 1, 4, 0, 0, 0, 0, 0, 
-	1, 1, 0, 0, 0, 2, 2, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 1, 1, 1, 
-	1, 1, 1, 1, 1, 2, 2, 2, 
-	2, 2, 2, 1, 1, 1, 2, 2, 
-	2, 1, 0, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_index_offsets
-	private :_pseudo_sql_index_offsets, :_pseudo_sql_index_offsets=
-end
-self._pseudo_sql_index_offsets = [
-	0, 0, 7, 11, 15, 24, 26, 28, 
-	31, 38, 42, 46, 55, 57, 59, 61, 
-	68, 75, 82, 93, 95, 97, 99, 101, 
-	104, 108, 110, 116, 122, 130, 134, 136, 
-	139, 145, 152, 154, 156, 158, 160, 165, 
-	170, 172, 178, 185, 190, 192, 197, 203, 
-	206, 208, 210, 212, 214, 219, 224, 226, 
-	231, 237, 239, 241, 243, 245, 248, 252, 
-	254, 260, 266, 274, 283, 285, 287, 292, 
-	297, 299, 301, 303, 305, 307, 309, 311, 
-	313, 315, 317, 319, 325, 331, 338, 343, 
-	346, 350, 352, 354, 356, 358, 361, 372, 
-	375, 383, 404, 415, 418, 419, 423, 431, 
-	446, 458, 460, 470, 472, 474, 477, 488, 
-	499, 520, 522, 524, 533, 535, 538, 540, 
-	543, 554, 565, 567, 569, 572, 576, 578, 
-	580, 583, 587, 595, 597, 599, 601, 604, 
-	606, 608, 610, 612, 614, 616, 618, 620, 
-	622, 624, 626, 628, 631, 633, 635, 637, 
-	639, 641, 644, 655, 658, 666, 687, 698, 
-	701, 702, 706, 714, 729, 741, 743, 753, 
-	755, 757, 760, 771, 782, 803, 805, 807, 
-	816, 818, 821, 823, 826, 837, 848, 850, 
-	852, 855, 859, 861, 863, 866, 870, 878, 
-	880, 882, 884, 887, 889, 891, 893, 895, 
-	897, 899, 901, 903, 905, 907, 909, 911, 
-	914, 916, 918, 920, 922, 924, 926, 935, 
-	936, 938, 940, 942, 944, 953, 954, 961, 
-	972, 974, 976, 978, 980, 987, 994, 1005, 
-	1007, 1010, 1016, 1023, 1025, 1027, 1029, 1031, 
-	1034, 1045, 1048, 1056, 1077, 1088, 1091, 1092, 
-	1096, 1104, 1119, 1131, 1133, 1143, 1145, 1147, 
-	1150, 1161, 1172, 1193, 1195, 1197, 1206, 1208, 
-	1211, 1213, 1216, 1227, 1238, 1240, 1242, 1245, 
-	1249, 1251, 1253, 1256, 1260, 1268, 1270, 1272, 
-	1274, 1277, 1279, 1281, 1283, 1285, 1287, 1289, 
-	1291, 1293, 1295, 1297, 1299, 1301, 1304, 1306, 
-	1308, 1310, 1312, 1314, 1316, 1325, 1326, 1337, 
-	1340, 1348, 1366, 1377, 1380, 1381, 1385, 1393, 
-	1405, 1417, 1419, 1429, 1431, 1440, 1451, 1453, 
-	1455, 1458, 1469, 1471, 1473, 1475, 1477, 1479, 
-	1482, 1486, 1488, 1490, 1492, 1501, 1509, 1511, 
-	1513, 1515, 1518, 1520, 1522, 1524, 1526, 1528, 
-	1530, 1532, 1534, 1536, 1538, 1540, 1542, 1544, 
-	1546, 1548, 1550, 1552, 1553, 1560, 1564, 1568, 
-	1573, 1575, 1577, 1579, 1586, 1593, 1600, 1602, 
-	1605, 1611, 1618, 1620, 1622, 1624, 1626, 1629, 
-	1640, 1643, 1651, 1671, 1682, 1685, 1686, 1690, 
-	1698, 1712, 1724, 1726, 1736, 1738, 1747, 1758, 
-	1760, 1762, 1765, 1776, 1778, 1780, 1782, 1784, 
-	1786, 1789, 1793, 1795, 1797, 1799, 1808, 1816, 
-	1818, 1820, 1822, 1825, 1827, 1829, 1831, 1833, 
-	1835, 1837, 1839, 1841, 1843, 1845, 1847, 1849, 
-	1851, 1853, 1855, 1857, 1859, 1860, 1864, 1873, 
-	1878, 1887, 1892, 1898, 1904, 1911, 1932, 1947, 
-	1968, 1983, 2004, 2025, 2036, 2047, 2056, 2077, 
-	2092, 2113, 2124, 2125
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_indicies
-	private :_pseudo_sql_indicies, :_pseudo_sql_indicies=
-end
-self._pseudo_sql_indicies = [
-	0, 2, 3, 0, 3, 3, 1, 4, 
-	5, 4, 1, 7, 8, 7, 6, 7, 
-	9, 10, 11, 12, 13, 14, 7, 1, 
-	15, 1, 16, 1, 17, 17, 1, 18, 
-	19, 20, 18, 20, 20, 1, 21, 22, 
-	21, 1, 23, 24, 23, 6, 23, 9, 
-	25, 11, 12, 13, 14, 23, 1, 26, 
-	1, 27, 1, 28, 1, 29, 30, 31, 
-	29, 31, 31, 1, 32, 19, 33, 32, 
-	33, 33, 1, 34, 35, 34, 33, 33, 
-	33, 6, 36, 9, 25, 11, 37, 12, 
-	13, 14, 38, 36, 1, 39, 1, 40, 
-	1, 41, 1, 42, 1, 43, 43, 1, 
-	43, 44, 43, 1, 45, 1, 46, 47, 
-	46, 47, 47, 1, 48, 49, 48, 49, 
-	49, 1, 50, 51, 50, 52, 49, 49, 
-	49, 6, 53, 48, 53, 1, 54, 1, 
-	55, 55, 1, 55, 56, 55, 56, 56, 
-	1, 57, 58, 57, 56, 56, 56, 6, 
-	59, 1, 60, 1, 61, 1, 62, 1, 
-	63, 64, 63, 65, 1, 66, 67, 66, 
-	68, 1, 68, 1, 69, 70, 69, 71, 
-	68, 6, 72, 73, 11, 74, 14, 72, 
-	1, 73, 75, 73, 76, 1, 76, 1, 
-	77, 78, 77, 76, 6, 79, 11, 74, 
-	14, 79, 1, 80, 81, 1, 82, 1, 
-	83, 1, 84, 1, 85, 1, 86, 87, 
-	86, 88, 1, 89, 90, 89, 91, 1, 
-	91, 1, 92, 93, 92, 91, 6, 94, 
-	11, 95, 14, 94, 1, 81, 1, 96, 
-	1, 97, 1, 98, 1, 99, 99, 1, 
-	99, 100, 99, 1, 101, 1, 102, 103, 
-	102, 103, 103, 1, 104, 105, 104, 105, 
-	105, 1, 106, 107, 106, 108, 105, 105, 
-	105, 6, 109, 104, 110, 111, 112, 113, 
-	11, 109, 1, 114, 1, 115, 1, 116, 
-	117, 116, 118, 6, 119, 104, 11, 119, 
-	1, 110, 1, 120, 1, 115, 1, 112, 
-	1, 121, 1, 122, 1, 123, 1, 124, 
-	1, 125, 1, 126, 1, 127, 1, 128, 
-	129, 128, 129, 129, 1, 130, 131, 130, 
-	131, 131, 1, 132, 133, 132, 131, 131, 
-	131, 6, 134, 11, 95, 134, 1, 80, 
-	135, 1, 17, 96, 17, 1, 136, 1, 
-	137, 1, 138, 1, 139, 1, 140, 140, 
-	1, 141, 142, 143, 144, 145, 147, 141, 
-	146, 147, 147, 1, 149, 150, 148, 151, 
-	152, 151, 153, 153, 153, 154, 6, 155, 
-	156, 156, 156, 158, 159, 25, 11, 160, 
-	37, 161, 162, 163, 164, 14, 165, 166, 
-	167, 155, 157, 1, 168, 169, 170, 171, 
-	172, 174, 168, 173, 174, 174, 1, 149, 
-	176, 175, 175, 177, 178, 177, 1, 179, 
-	180, 179, 156, 156, 156, 157, 6, 179, 
-	156, 156, 156, 158, 25, 11, 37, 161, 
-	163, 164, 14, 179, 157, 1, 168, 169, 
-	170, 171, 172, 156, 174, 168, 173, 174, 
-	174, 1, 146, 1, 181, 182, 181, 183, 
-	183, 184, 183, 146, 185, 6, 186, 1, 
-	187, 1, 188, 188, 1, 189, 169, 170, 
-	190, 172, 191, 189, 173, 191, 191, 1, 
-	192, 193, 192, 194, 194, 194, 196, 195, 
-	196, 196, 6, 197, 156, 156, 156, 158, 
-	159, 25, 11, 160, 37, 161, 162, 163, 
-	164, 14, 165, 198, 167, 197, 157, 1, 
-	199, 1, 200, 1, 201, 202, 201, 203, 
-	203, 203, 205, 204, 6, 206, 1, 207, 
-	60, 1, 208, 1, 209, 209, 1, 210, 
-	169, 170, 171, 172, 174, 210, 173, 174, 
-	174, 1, 211, 212, 211, 194, 194, 194, 
-	147, 195, 147, 147, 6, 213, 1, 214, 
-	1, 215, 215, 1, 216, 217, 216, 1, 
-	218, 1, 207, 1, 80, 219, 1, 188, 
-	96, 188, 1, 201, 202, 201, 203, 203, 
-	203, 204, 6, 220, 1, 221, 1, 200, 
-	1, 222, 223, 1, 224, 1, 225, 1, 
-	226, 1, 200, 1, 227, 1, 228, 1, 
-	200, 1, 229, 1, 230, 1, 231, 1, 
-	232, 1, 200, 1, 233, 234, 1, 235, 
-	1, 200, 1, 236, 1, 237, 1, 238, 
-	1, 239, 239, 1, 240, 241, 242, 243, 
-	244, 246, 240, 245, 246, 246, 1, 248, 
-	249, 247, 250, 251, 250, 252, 252, 252, 
-	253, 6, 254, 255, 255, 255, 257, 258, 
-	25, 11, 259, 37, 260, 261, 262, 263, 
-	14, 264, 265, 266, 254, 256, 1, 267, 
-	268, 269, 270, 271, 273, 267, 272, 273, 
-	273, 1, 248, 275, 274, 274, 276, 277, 
-	276, 1, 278, 279, 278, 255, 255, 255, 
-	256, 6, 278, 255, 255, 255, 257, 25, 
-	11, 37, 260, 262, 263, 14, 278, 256, 
-	1, 267, 268, 269, 270, 271, 255, 273, 
-	267, 272, 273, 273, 1, 245, 1, 280, 
-	281, 280, 282, 282, 283, 282, 245, 284, 
-	6, 285, 1, 286, 1, 287, 287, 1, 
-	288, 268, 269, 289, 271, 290, 288, 272, 
-	290, 290, 1, 291, 292, 291, 293, 293, 
-	293, 295, 294, 295, 295, 6, 296, 255, 
-	255, 255, 257, 258, 25, 11, 259, 37, 
-	260, 261, 262, 263, 14, 264, 297, 266, 
-	296, 256, 1, 298, 1, 299, 1, 300, 
-	301, 300, 302, 302, 302, 304, 303, 6, 
-	305, 1, 306, 60, 1, 307, 1, 308, 
-	308, 1, 309, 268, 269, 270, 271, 273, 
-	309, 272, 273, 273, 1, 310, 311, 310, 
-	293, 293, 293, 246, 294, 246, 246, 6, 
-	312, 1, 313, 1, 314, 314, 1, 315, 
-	316, 315, 1, 317, 1, 306, 1, 80, 
-	318, 1, 287, 96, 287, 1, 300, 301, 
-	300, 302, 302, 302, 303, 6, 319, 1, 
-	320, 1, 299, 1, 321, 322, 1, 323, 
-	1, 324, 1, 325, 1, 299, 1, 326, 
-	1, 327, 1, 299, 1, 328, 1, 329, 
-	1, 330, 1, 331, 1, 299, 1, 332, 
-	234, 1, 333, 1, 299, 1, 334, 1, 
-	320, 1, 332, 1, 335, 1, 336, 337, 
-	336, 338, 338, 338, 335, 339, 6, 247, 
-	340, 1, 221, 1, 233, 1, 341, 1, 
-	342, 343, 342, 344, 344, 344, 341, 345, 
-	6, 148, 346, 347, 346, 20, 20, 20, 
-	6, 348, 9, 25, 11, 37, 12, 13, 
-	14, 349, 348, 1, 234, 1, 350, 1, 
-	351, 1, 352, 1, 353, 354, 355, 353, 
-	355, 355, 1, 356, 357, 356, 3, 3, 
-	3, 6, 358, 9, 10, 11, 359, 12, 
-	13, 14, 360, 358, 1, 361, 1, 362, 
-	362, 1, 362, 363, 362, 363, 363, 1, 
-	364, 365, 364, 363, 363, 363, 6, 366, 
-	1, 367, 1, 368, 1, 369, 1, 370, 
-	370, 1, 371, 372, 373, 374, 375, 377, 
-	371, 376, 377, 377, 1, 379, 380, 378, 
-	381, 382, 381, 383, 383, 383, 384, 6, 
-	385, 386, 386, 386, 388, 389, 10, 11, 
-	390, 359, 391, 392, 393, 394, 14, 395, 
-	396, 397, 385, 387, 1, 398, 399, 400, 
-	401, 402, 404, 398, 403, 404, 404, 1, 
-	379, 406, 405, 405, 407, 408, 407, 1, 
-	409, 410, 409, 386, 386, 386, 387, 6, 
-	409, 386, 386, 386, 388, 10, 11, 359, 
-	391, 393, 394, 14, 409, 387, 1, 398, 
-	399, 400, 401, 402, 386, 404, 398, 403, 
-	404, 404, 1, 376, 1, 411, 412, 411, 
-	413, 413, 414, 413, 376, 415, 6, 416, 
-	1, 417, 1, 418, 418, 1, 419, 399, 
-	400, 420, 402, 421, 419, 403, 421, 421, 
-	1, 422, 423, 422, 424, 424, 424, 426, 
-	425, 426, 426, 6, 427, 386, 386, 386, 
-	388, 389, 10, 11, 390, 359, 391, 392, 
-	393, 394, 14, 395, 428, 397, 427, 387, 
-	1, 429, 1, 430, 1, 431, 432, 431, 
-	433, 433, 433, 435, 434, 6, 436, 1, 
-	437, 60, 1, 438, 1, 439, 439, 1, 
-	440, 399, 400, 401, 402, 404, 440, 403, 
-	404, 404, 1, 441, 442, 441, 424, 424, 
-	424, 377, 425, 377, 377, 6, 443, 1, 
-	444, 1, 445, 445, 1, 446, 447, 446, 
-	1, 448, 1, 437, 1, 80, 449, 1, 
-	418, 96, 418, 1, 431, 432, 431, 433, 
-	433, 433, 434, 6, 450, 1, 451, 1, 
-	430, 1, 452, 453, 1, 454, 1, 455, 
-	1, 456, 1, 430, 1, 457, 1, 458, 
-	1, 430, 1, 459, 1, 460, 1, 461, 
-	1, 462, 1, 430, 1, 463, 234, 1, 
-	464, 1, 430, 1, 465, 1, 451, 1, 
-	463, 1, 466, 1, 467, 468, 467, 469, 
-	469, 469, 466, 470, 6, 378, 471, 472, 
-	473, 474, 475, 477, 471, 476, 477, 477, 
-	1, 479, 480, 478, 481, 482, 483, 483, 
-	483, 481, 484, 1, 485, 486, 487, 487, 
-	487, 489, 490, 491, 492, 493, 494, 495, 
-	496, 497, 498, 485, 488, 1, 499, 500, 
-	501, 502, 503, 505, 499, 504, 505, 505, 
-	1, 479, 507, 506, 506, 508, 509, 508, 
-	1, 510, 486, 487, 487, 487, 510, 488, 
-	1, 510, 486, 487, 487, 487, 489, 492, 
-	494, 495, 510, 488, 1, 499, 500, 501, 
-	502, 503, 487, 505, 499, 504, 505, 505, 
-	1, 476, 1, 511, 512, 513, 513, 514, 
-	513, 511, 476, 515, 1, 516, 1, 517, 
-	518, 519, 519, 519, 517, 516, 520, 1, 
-	521, 522, 523, 523, 523, 477, 521, 524, 
-	477, 477, 1, 525, 1, 526, 1, 527, 
-	527, 1, 528, 500, 501, 502, 503, 505, 
-	528, 504, 505, 505, 1, 529, 1, 530, 
-	1, 526, 1, 531, 1, 532, 1, 533, 
-	533, 1, 534, 492, 534, 1, 526, 1, 
-	535, 1, 536, 1, 537, 538, 539, 539, 
-	539, 541, 537, 540, 1, 537, 538, 539, 
-	539, 539, 537, 540, 1, 542, 1, 543, 
-	1, 536, 1, 544, 545, 1, 546, 1, 
-	547, 1, 548, 1, 536, 1, 549, 1, 
-	550, 1, 536, 1, 551, 1, 552, 1, 
-	553, 1, 554, 1, 536, 1, 555, 1, 
-	556, 1, 536, 1, 557, 1, 543, 1, 
-	478, 558, 559, 560, 558, 560, 560, 1, 
-	561, 562, 561, 1, 563, 564, 563, 1, 
-	563, 564, 565, 563, 1, 566, 1, 567, 
-	1, 568, 1, 569, 570, 571, 569, 571, 
-	571, 1, 572, 573, 560, 572, 560, 560, 
-	1, 574, 564, 565, 575, 576, 574, 1, 
-	577, 1, 578, 578, 1, 578, 579, 578, 
-	579, 579, 1, 580, 581, 579, 580, 579, 
-	579, 1, 582, 1, 583, 1, 584, 1, 
-	585, 1, 586, 586, 1, 587, 588, 589, 
-	590, 591, 593, 587, 592, 593, 593, 1, 
-	595, 596, 594, 597, 598, 599, 599, 599, 
-	597, 600, 1, 601, 564, 602, 602, 602, 
-	604, 605, 565, 606, 575, 607, 608, 609, 
-	610, 611, 612, 613, 601, 603, 1, 614, 
-	615, 616, 617, 618, 620, 614, 619, 620, 
-	620, 1, 595, 622, 621, 621, 623, 624, 
-	623, 1, 625, 564, 602, 602, 602, 625, 
-	603, 1, 625, 564, 602, 602, 602, 604, 
-	565, 575, 607, 609, 610, 625, 603, 1, 
-	614, 615, 616, 617, 618, 602, 620, 614, 
-	619, 620, 620, 1, 592, 1, 626, 627, 
-	628, 628, 629, 628, 626, 592, 630, 1, 
-	631, 1, 632, 633, 634, 634, 634, 632, 
-	631, 635, 1, 636, 637, 638, 638, 638, 
-	593, 636, 639, 593, 593, 1, 640, 1, 
-	641, 1, 642, 642, 1, 643, 615, 616, 
-	617, 618, 620, 643, 619, 620, 620, 1, 
-	644, 1, 645, 1, 641, 1, 646, 1, 
-	647, 1, 648, 648, 1, 649, 607, 649, 
-	1, 641, 1, 650, 1, 651, 1, 652, 
-	653, 654, 654, 654, 656, 652, 655, 1, 
-	652, 653, 654, 654, 654, 652, 655, 1, 
-	657, 1, 658, 1, 651, 1, 659, 660, 
-	1, 661, 1, 662, 1, 663, 1, 651, 
-	1, 664, 1, 665, 1, 651, 1, 666, 
-	1, 667, 1, 668, 1, 669, 1, 651, 
-	1, 670, 1, 671, 1, 651, 1, 672, 
-	1, 658, 1, 594, 53, 48, 53, 6, 
-	23, 9, 25, 11, 12, 13, 14, 23, 
-	6, 119, 104, 11, 119, 6, 109, 104, 
-	110, 111, 112, 113, 11, 109, 6, 134, 
-	11, 95, 134, 6, 94, 11, 95, 14, 
-	94, 6, 79, 11, 74, 14, 79, 6, 
-	72, 73, 11, 74, 14, 72, 6, 155, 
-	156, 156, 156, 158, 159, 25, 11, 160, 
-	37, 161, 162, 163, 164, 14, 165, 166, 
-	167, 155, 157, 6, 179, 156, 156, 156, 
-	158, 25, 11, 37, 161, 163, 164, 14, 
-	179, 157, 6, 254, 255, 255, 255, 257, 
-	258, 25, 11, 259, 37, 260, 261, 262, 
-	263, 14, 264, 265, 266, 254, 256, 6, 
-	278, 255, 255, 255, 257, 25, 11, 37, 
-	260, 262, 263, 14, 278, 256, 6, 296, 
-	255, 255, 255, 257, 258, 25, 11, 259, 
-	37, 260, 261, 262, 263, 14, 264, 297, 
-	266, 296, 256, 6, 197, 156, 156, 156, 
-	158, 159, 25, 11, 160, 37, 161, 162, 
-	163, 164, 14, 165, 198, 167, 197, 157, 
-	6, 36, 9, 25, 11, 37, 12, 13, 
-	14, 38, 36, 6, 348, 9, 25, 11, 
-	37, 12, 13, 14, 349, 348, 6, 7, 
-	9, 10, 11, 12, 13, 14, 7, 6, 
-	385, 386, 386, 386, 388, 389, 10, 11, 
-	390, 359, 391, 392, 393, 394, 14, 395, 
-	396, 397, 385, 387, 6, 409, 386, 386, 
-	386, 388, 10, 11, 359, 391, 393, 394, 
-	14, 409, 387, 6, 427, 386, 386, 386, 
-	388, 389, 10, 11, 390, 359, 391, 392, 
-	393, 394, 14, 395, 428, 397, 427, 387, 
-	6, 358, 9, 10, 11, 359, 12, 13, 
-	14, 360, 358, 6, 1, 1, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_trans_targs
-	private :_pseudo_sql_trans_targs, :_pseudo_sql_trans_targs=
-end
-self._pseudo_sql_trans_targs = [
-	1, 0, 2, 229, 2, 3, 0, 4, 
-	445, 5, 225, 19, 34, 87, 76, 6, 
-	7, 8, 8, 9, 222, 9, 10, 11, 
-	430, 12, 13, 14, 15, 16, 9, 17, 
-	16, 17, 18, 443, 18, 30, 89, 20, 
-	21, 22, 23, 24, 25, 26, 27, 28, 
-	27, 28, 29, 429, 27, 29, 31, 32, 
-	33, 11, 430, 35, 36, 37, 38, 39, 
-	40, 41, 39, 40, 41, 42, 436, 43, 
-	42, 43, 47, 44, 45, 46, 435, 46, 
-	48, 58, 49, 50, 51, 52, 53, 54, 
-	55, 53, 54, 55, 56, 434, 56, 57, 
-	59, 60, 61, 62, 63, 64, 65, 66, 
-	65, 66, 67, 432, 65, 67, 68, 72, 
-	73, 75, 69, 70, 71, 431, 65, 71, 
-	74, 77, 78, 79, 80, 81, 82, 83, 
-	84, 85, 84, 85, 86, 433, 86, 88, 
-	90, 91, 92, 93, 94, 94, 95, 99, 
-	101, 105, 106, 121, 95, 96, 221, 97, 
-	437, 98, 104, 97, 98, 104, 107, 113, 
-	131, 116, 134, 122, 128, 142, 218, 216, 
-	94, 95, 99, 101, 105, 106, 121, 99, 
-	100, 101, 102, 103, 438, 97, 437, 98, 
-	219, 104, 108, 109, 110, 110, 101, 111, 
-	112, 442, 98, 104, 111, 112, 147, 114, 
-	115, 103, 438, 98, 104, 130, 117, 118, 
-	119, 120, 120, 97, 437, 123, 124, 125, 
-	125, 126, 127, 129, 132, 133, 135, 139, 
-	136, 137, 138, 140, 141, 143, 144, 145, 
-	146, 148, 150, 149, 151, 152, 153, 154, 
-	154, 155, 159, 161, 165, 166, 181, 155, 
-	156, 215, 157, 439, 158, 164, 157, 158, 
-	164, 167, 173, 191, 176, 194, 182, 188, 
-	202, 212, 210, 154, 155, 159, 161, 165, 
-	166, 181, 159, 160, 161, 162, 163, 440, 
-	157, 439, 158, 213, 164, 168, 169, 170, 
-	170, 161, 171, 172, 441, 158, 164, 171, 
-	172, 207, 174, 175, 163, 440, 158, 164, 
-	190, 177, 178, 179, 180, 180, 157, 439, 
-	183, 184, 185, 185, 186, 187, 189, 192, 
-	193, 195, 199, 196, 197, 198, 200, 201, 
-	203, 204, 205, 206, 208, 209, 211, 214, 
-	157, 439, 158, 164, 217, 220, 97, 437, 
-	98, 104, 223, 444, 223, 224, 226, 227, 
-	228, 1, 2, 229, 230, 449, 230, 231, 
-	235, 232, 233, 234, 4, 445, 236, 237, 
-	238, 239, 240, 240, 241, 245, 247, 251, 
-	252, 267, 241, 242, 301, 243, 446, 244, 
-	250, 243, 244, 250, 253, 259, 277, 262, 
-	280, 268, 274, 288, 298, 296, 240, 241, 
-	245, 247, 251, 252, 267, 245, 246, 247, 
-	248, 249, 447, 243, 446, 244, 299, 250, 
-	254, 255, 256, 256, 247, 257, 258, 448, 
-	244, 250, 257, 258, 293, 260, 261, 249, 
-	447, 244, 250, 276, 263, 264, 265, 266, 
-	266, 243, 446, 269, 270, 271, 271, 272, 
-	273, 275, 278, 279, 281, 285, 282, 283, 
-	284, 286, 287, 289, 290, 291, 292, 294, 
-	295, 297, 300, 243, 446, 244, 250, 302, 
-	303, 307, 309, 313, 314, 317, 303, 304, 
-	355, 305, 450, 306, 312, 305, 450, 306, 
-	312, 318, 330, 334, 322, 337, 325, 329, 
-	345, 350, 353, 302, 303, 307, 309, 313, 
-	314, 317, 307, 308, 309, 310, 311, 305, 
-	450, 306, 315, 312, 316, 305, 450, 306, 
-	312, 305, 450, 306, 312, 319, 320, 321, 
-	321, 323, 324, 326, 327, 328, 328, 331, 
-	332, 311, 450, 306, 312, 333, 335, 336, 
-	338, 342, 339, 340, 341, 343, 344, 346, 
-	347, 348, 349, 351, 352, 354, 356, 357, 
-	364, 357, 358, 359, 451, 360, 361, 362, 
-	363, 356, 357, 364, 365, 451, 365, 366, 
-	370, 367, 368, 369, 359, 451, 371, 372, 
-	373, 374, 375, 375, 376, 380, 382, 386, 
-	387, 390, 376, 377, 428, 378, 451, 379, 
-	385, 378, 379, 385, 391, 403, 407, 395, 
-	410, 398, 402, 418, 423, 426, 375, 376, 
-	380, 382, 386, 387, 390, 380, 381, 382, 
-	383, 384, 378, 451, 379, 388, 385, 389, 
-	378, 451, 379, 385, 378, 451, 379, 385, 
-	392, 393, 394, 394, 396, 397, 399, 400, 
-	401, 401, 404, 405, 384, 451, 379, 385, 
-	406, 408, 409, 411, 415, 412, 413, 414, 
-	416, 417, 419, 420, 421, 422, 424, 425, 
-	427
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_trans_actions
-	private :_pseudo_sql_trans_actions, :_pseudo_sql_trans_actions=
-end
-self._pseudo_sql_trans_actions = [
-	0, 0, 25, 1, 0, 0, 47, 0, 
-	0, 1, 0, 0, 0, 1, 0, 1, 
-	1, 45, 0, 25, 1, 0, 0, 0, 
-	0, 0, 0, 0, 0, 43, 133, 130, 
-	0, 1, 13, 13, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 41, 127, 
-	0, 1, 9, 9, 9, 0, 0, 0, 
-	1, 29, 29, 0, 0, 0, 0, 37, 
-	121, 121, 0, 1, 1, 5, 5, 5, 
-	0, 0, 0, 1, 1, 5, 5, 0, 
-	0, 0, 0, 0, 0, 0, 31, 115, 
-	115, 0, 1, 1, 5, 5, 0, 0, 
-	0, 0, 0, 0, 0, 0, 39, 124, 
-	0, 1, 9, 9, 9, 0, 1, 1, 
-	1, 1, 1, 1, 11, 11, 11, 0, 
-	1, 0, 0, 0, 0, 0, 0, 0, 
-	35, 118, 0, 1, 33, 33, 0, 1, 
-	0, 0, 0, 0, 19, 0, 0, 0, 
-	21, 1, 1, 1, 1, 0, 0, 3, 
-	3, 52, 52, 0, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	15, 15, 15, 100, 97, 97, 97, 1, 
-	0, 0, 0, 0, 0, 5, 5, 61, 
-	1, 61, 1, 1, 45, 15, 140, 49, 
-	91, 91, 79, 79, 1, 0, 1, 1, 
-	1, 17, 17, 103, 103, 0, 1, 1, 
-	1, 0, 15, 9, 9, 1, 1, 15, 
-	0, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 0, 1, 0, 0, 0, 19, 
-	0, 0, 0, 21, 1, 1, 1, 1, 
-	0, 0, 3, 3, 52, 52, 0, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 15, 15, 15, 100, 97, 
-	97, 97, 1, 0, 0, 0, 0, 0, 
-	5, 5, 61, 1, 61, 1, 1, 45, 
-	15, 136, 49, 91, 91, 79, 79, 1, 
-	0, 1, 1, 1, 17, 17, 103, 103, 
-	0, 1, 1, 1, 0, 15, 9, 9, 
-	1, 1, 15, 0, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	7, 7, 70, 70, 1, 1, 7, 7, 
-	70, 70, 13, 13, 0, 0, 0, 0, 
-	0, 43, 133, 130, 13, 13, 0, 0, 
-	0, 0, 0, 1, 29, 29, 0, 0, 
-	0, 0, 19, 0, 0, 0, 21, 1, 
-	1, 1, 1, 0, 0, 3, 3, 52, 
-	52, 0, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 15, 15, 
-	15, 100, 97, 97, 97, 1, 0, 0, 
-	0, 0, 0, 5, 5, 61, 1, 61, 
-	1, 1, 45, 15, 136, 97, 82, 82, 
-	79, 79, 1, 0, 1, 1, 1, 17, 
-	17, 103, 103, 0, 1, 1, 1, 0, 
-	15, 9, 9, 1, 1, 15, 0, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 7, 7, 70, 70, 0, 
-	0, 0, 21, 1, 1, 1, 1, 0, 
-	0, 3, 55, 52, 52, 0, 23, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 15, 15, 15, 100, 97, 
-	97, 97, 1, 0, 0, 0, 0, 5, 
-	64, 61, 1, 61, 1, 7, 73, 70, 
-	70, 9, 85, 79, 79, 1, 1, 0, 
-	15, 1, 1, 1, 1, 15, 0, 1, 
-	1, 17, 106, 103, 103, 0, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 0, 25, 
-	1, 0, 0, 0, 27, 0, 0, 0, 
-	0, 43, 133, 130, 13, 94, 0, 0, 
-	0, 0, 0, 1, 29, 112, 0, 0, 
-	0, 0, 19, 0, 0, 0, 21, 1, 
-	1, 1, 1, 0, 0, 3, 58, 52, 
-	52, 0, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 15, 15, 
-	15, 100, 97, 97, 97, 1, 0, 0, 
-	0, 0, 5, 67, 61, 1, 61, 1, 
-	7, 76, 70, 70, 9, 88, 79, 79, 
-	1, 1, 0, 15, 1, 1, 1, 1, 
-	15, 0, 1, 1, 17, 109, 103, 103, 
-	0, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 
-	1
-]
-
-class &lt;&lt; self
-	attr_accessor :_pseudo_sql_eof_actions
-	private :_pseudo_sql_eof_actions, :_pseudo_sql_eof_actions=
-end
-self._pseudo_sql_eof_actions = [
-	0, 0, 0, 47, 0, 0, 0, 0, 
-	0, 0, 47, 0, 0, 0, 0, 0, 
-	0, 47, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 47, 0, 0, 0, 
-	0, 47, 0, 0, 0, 0, 0, 0, 
-	0, 47, 0, 0, 0, 47, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 47, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 47, 0, 0, 0, 47, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 47, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	47, 0, 0, 0, 0, 0, 47, 0, 
-	0, 0, 47, 0, 0, 0, 0, 47, 
-	0, 0, 0, 47, 0, 0, 0, 0, 
-	0, 47, 0, 0, 0, 0, 0, 0, 
-	0, 0, 47, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 47, 0, 0, 0, 
-	0, 0, 47, 0, 0, 0, 47, 0, 
-	0, 0, 0, 47, 0, 0, 0, 47, 
-	0, 0, 0, 0, 0, 47, 0, 0, 
-	0, 0, 0, 0, 0, 0, 47, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 47, 0, 
-	0, 0, 0, 0, 47, 0, 47, 0, 
-	0, 0, 0, 0, 0, 47, 0, 0, 
-	0, 0, 47, 0, 0, 0, 0, 0, 
-	0, 0, 47, 0, 0, 0, 0, 0, 
-	47, 0, 0, 0, 47, 0, 0, 0, 
-	0, 47, 0, 0, 0, 47, 0, 0, 
-	0, 0, 0, 47, 0, 0, 0, 0, 
-	0, 0, 0, 0, 47, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 47, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_start
-end
-self.pseudo_sql_start = 1;
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_first_final
-end
-self.pseudo_sql_first_final = 429;
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_error
-end
-self.pseudo_sql_error = 0;
-
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_en_expr_p
-end
-self.pseudo_sql_en_expr_p = 302;
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_en_clause_p
-end
-self.pseudo_sql_en_clause_p = 356;
-class &lt;&lt; self
-	attr_accessor :pseudo_sql_en_main
-end
-self.pseudo_sql_en_main = 1;
-
-# line 253 &quot;lib/parser.rl&quot;
-
-    def self.parse(string)
-      if string.kind_of?(Array)
-        data = &quot;(#{string.join(') or (')})&quot;
-      else
-        data = &quot;#{string}\n&quot;
-      end
-      stack = [[:query]]
-      last  = stack.last
-      str_buf         = &quot;&quot;
-      clause_state = :relation
-      eof = 0;
-      
-# line 1179 &quot;lib/parser.rb&quot;
-begin
-	p ||= 0
-	pe ||= data.length
-	cs = pseudo_sql_start
-end
-# line 266 &quot;lib/parser.rl&quot;
-      
-# line 1187 &quot;lib/parser.rb&quot;
-begin
-	_klen, _trans, _keys, _acts, _nacts = nil
-	_goto_level = 0
-	_resume = 10
-	_eof_trans = 15
-	_again = 20
-	_test_eof = 30
-	_out = 40
-	while true
-	_trigger_goto = false
-	if _goto_level &lt;= 0
-	if p == pe
-		_goto_level = _test_eof
-		next
-	end
-	if cs == 0
-		_goto_level = _out
-		next
-	end
-	end
-	if _goto_level &lt;= _resume
-	_keys = _pseudo_sql_key_offsets[cs]
-	_trans = _pseudo_sql_index_offsets[cs]
-	_klen = _pseudo_sql_single_lengths[cs]
-	_break_match = false
-	
-	begin
-	  if _klen &gt; 0
-	     _lower = _keys
-	     _upper = _keys + _klen - 1
-
-	     loop do
-	        break if _upper &lt; _lower
-	        _mid = _lower + ( (_upper - _lower) &gt;&gt; 1 )
-
-	        if data[p] &lt; _pseudo_sql_trans_keys[_mid]
-	           _upper = _mid - 1
-	        elsif data[p] &gt; _pseudo_sql_trans_keys[_mid]
-	           _lower = _mid + 1
-	        else
-	           _trans += (_mid - _keys)
-	           _break_match = true
-	           break
-	        end
-	     end # loop
-	     break if _break_match
-	     _keys += _klen
-	     _trans += _klen
-	  end
-	  _klen = _pseudo_sql_range_lengths[cs]
-	  if _klen &gt; 0
-	     _lower = _keys
-	     _upper = _keys + (_klen &lt;&lt; 1) - 2
-	     loop do
-	        break if _upper &lt; _lower
-	        _mid = _lower + (((_upper-_lower) &gt;&gt; 1) &amp; ~1)
-	        if data[p] &lt; _pseudo_sql_trans_keys[_mid]
-	          _upper = _mid - 2
-	        elsif data[p] &gt; _pseudo_sql_trans_keys[_mid+1]
-	          _lower = _mid + 2
-	        else
-	          _trans += ((_mid - _keys) &gt;&gt; 1)
-	          _break_match = true
-	          break
-	        end
-	     end # loop
-	     break if _break_match
-	     _trans += _klen
-	  end
-	end while false
-	_trans = _pseudo_sql_indicies[_trans]
-	cs = _pseudo_sql_trans_targs[_trans]
-	if _pseudo_sql_trans_actions[_trans] != 0
-		_acts = _pseudo_sql_trans_actions[_trans]
-		_nacts = _pseudo_sql_actions[_acts]
-		_acts += 1
-		while _nacts &gt; 0
-			_nacts -= 1
-			_acts += 1
-			case _pseudo_sql_actions[_acts - 1]
-when 0 then
-# line 69 &quot;lib/parser.rl&quot;
-		begin
-
-        str_buf += data[p].chr
-      		end
-# line 69 &quot;lib/parser.rl&quot;
-when 1 then
-# line 73 &quot;lib/parser.rl&quot;
-		begin
-
-        last &lt;&lt; [:string, str_buf]
-        str_buf = &quot;&quot;
-      		end
-# line 73 &quot;lib/parser.rl&quot;
-when 2 then
-# line 78 &quot;lib/parser.rl&quot;
-		begin
-
-        last &lt;&lt; [:integer, str_buf]
-        str_buf = &quot;&quot;
-      		end
-# line 78 &quot;lib/parser.rl&quot;
-when 3 then
-# line 83 &quot;lib/parser.rl&quot;
-		begin
-
-        last &lt;&lt; [:real, str_buf]
-        str_buf = &quot;&quot;
-      		end
-# line 83 &quot;lib/parser.rl&quot;
-when 4 then
-# line 88 &quot;lib/parser.rl&quot;
-		begin
-
-        last &lt;&lt; [:field, str_buf]
-        str_buf = &quot;&quot;
-      		end
-# line 88 &quot;lib/parser.rl&quot;
-when 5 then
-# line 93 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, str_buf.downcase.to_sym, false)
-        str_buf = &quot;&quot;
-      		end
-# line 93 &quot;lib/parser.rl&quot;
-when 6 then
-# line 98 &quot;lib/parser.rl&quot;
-		begin
-
-        if clause_state == :relation || clause_state == :parenthesis
-          last = insert(stack, [:relation, str_buf])
-          str_buf = &quot;&quot;
-        end
-      		end
-# line 98 &quot;lib/parser.rl&quot;
-when 7 then
-# line 105 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, str_buf.downcase.to_sym)
-        str_buf = &quot;&quot;
-      		end
-# line 105 &quot;lib/parser.rl&quot;
-when 8 then
-# line 110 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :interval)
-        last &lt;&lt; str_buf
-        str_buf = &quot;&quot;
-      		end
-# line 110 &quot;lib/parser.rl&quot;
-when 9 then
-# line 116 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :filter)
-        clause_state = :filter
-      		end
-# line 116 &quot;lib/parser.rl&quot;
-when 10 then
-# line 121 &quot;lib/parser.rl&quot;
-		begin
-
-        # remember current machine state 'cs'
-        last &lt;&lt; [:par, cs]
-        stack.push last.last
-        last = last.last
-        	begin
-		cs = 302
-		_trigger_goto = true
-		_goto_level = _again
-		break
-	end
-
-      		end
-# line 121 &quot;lib/parser.rl&quot;
-when 11 then
-# line 129 &quot;lib/parser.rl&quot;
-		begin
-
-        pop_stack(stack, :par_close)
-        # reset machine state 'cs'
-        cs = stack.last.delete_at(1)
-        # one more time to remove [:par...] line
-        stack.pop 
-        last = stack.last
-        # closing ')' must be parsed twice
-        p = p - 1;
-      		end
-# line 129 &quot;lib/parser.rl&quot;
-when 12 then
-# line 140 &quot;lib/parser.rl&quot;
-		begin
-
-        # remember current machine state 'cs'
-        clause_state = :parenthesis
-        last &lt;&lt; [:clause_par, cs]
-        stack.push last.last
-        last = last.last
-        	begin
-		cs = 356
-		_trigger_goto = true
-		_goto_level = _again
-		break
-	end
-
-      		end
-# line 140 &quot;lib/parser.rl&quot;
-when 13 then
-# line 149 &quot;lib/parser.rl&quot;
-		begin
-
-        pop_stack(stack, :clause_par_close)
-        clause_state = :relation
-        # reset machine state 'cs'
-        cs = stack.last.delete_at(1)
-        # one more time to remove [:clause_par...] line
-        stack.pop 
+    class &lt;&lt; self
+      # http://dev.mysql.com/doc/refman/5.1/en/operator-precedence.html
+      OP_PRECEDENCE = {
+        :interval =&gt; 40,
+        :binary   =&gt; 39, :collate  =&gt; 39,
+        :&quot;!&quot; =&gt; 38,
+        :&quot;@-&quot; =&gt; 37, :&quot;@~&quot; =&gt; 37,
+        :&quot;^&quot; =&gt; 36,
+        :&quot;*&quot; =&gt; 35, :&quot;/&quot; =&gt; 35, :div =&gt; 35, :&quot;%&quot; =&gt; 35, :mod =&gt; 35,
+        :&quot;-&quot; =&gt; 34, :&quot;+&quot; =&gt; 34,
+        :&quot;&lt;&lt;&quot; =&gt; 33, :&quot;&gt;&gt;&quot; =&gt; 33,
+        :&quot;&amp;&quot; =&gt; 32,
+        :&quot;|&quot; =&gt; 31,
+        :&quot;=&quot; =&gt; 30, :&quot;&lt;=&gt;&quot; =&gt; 30, :&quot;&gt;=&quot; =&gt; 30, :&quot;&gt;&quot; =&gt; 30, :&quot;&lt;=&quot; =&gt; 30, :&quot;&lt;&quot; =&gt; 30, :&quot;&lt;&gt;&quot; =&gt; 30, :&quot;!=&quot; =&gt; 30, :is =&gt; 30, :like =&gt; 30, :regexp =&gt; 30, :in =&gt; 30,
+        :between =&gt; 29, :case =&gt; 29, :when =&gt; 29, :then =&gt; 29, :else =&gt; 29,
+        :not =&gt; 28,
+        :&quot;&amp;&amp;&quot; =&gt; 27, :and =&gt; 27,
+        :xor =&gt; 26,
+        :&quot;||&quot; =&gt; 25, :or =&gt; 25,
+        :&quot;:=&quot; =&gt; 24,
+        :relation =&gt; 13, :filter =&gt; 13,
+        :scope =&gt; 12,
+        :from =&gt; 11,  # this is not the same as SQL 'FROM', it's &quot;icons from friends&quot;
+        :asc  =&gt; 10, :desc =&gt; 10,
+        :clause =&gt; 5,
+        :clause_and =&gt; 4,
+        :clause_or =&gt; 3,
+        :offset =&gt; 2, :paginate =&gt; 2, :limit =&gt; 2, :order =&gt; 2, :group =&gt; 2,
+        :query =&gt; 1,
+        :par_close =&gt; 0, :clause_par_close =&gt; 0,
+        :par =&gt; -1, :clause_par =&gt; -1
+      }
+      # group &lt; from &lt; filter &lt; relation &lt; scope
+  
+      def apply_op(stack, op, change_last = true)
+        pop_stack(stack, op)
         last = stack.last
-        # closing ')' must be parsed twice
-        p = p - 1;
-      		end
-# line 149 &quot;lib/parser.rl&quot;
-when 14 then
-# line 161 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :scope)
-        last &lt;&lt; str_buf
-        str_buf = &quot;&quot;
-      		end
-# line 161 &quot;lib/parser.rl&quot;
-when 15 then
-# line 167 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :offset)
-      		end
-# line 167 &quot;lib/parser.rl&quot;
-when 16 then
-# line 171 &quot;lib/parser.rl&quot;
-		begin
-
-        last &lt;&lt; [:param, str_buf]
-        str_buf = &quot;&quot;
-      		end
-# line 171 &quot;lib/parser.rl&quot;
-when 17 then
-# line 176 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :paginate)
-      		end
-# line 176 &quot;lib/parser.rl&quot;
-when 18 then
-# line 180 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :limit)
-        str_buf = &quot;&quot;
-      		end
-# line 180 &quot;lib/parser.rl&quot;
-when 19 then
-# line 185 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :order)
-        str_buf = &quot;&quot;
-      		end
-# line 185 &quot;lib/parser.rl&quot;
-when 20 then
-# line 190 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :group)
-      		end
-# line 190 &quot;lib/parser.rl&quot;
-when 21 then
-# line 194 &quot;lib/parser.rl&quot;
-		begin
-
-        last = apply_op(stack, :from)
-      		end
-# line 194 &quot;lib/parser.rl&quot;
-when 22 then
-# line 198 &quot;lib/parser.rl&quot;
-		begin
-
-        if clause_state == :relation
-          last = apply_op(stack, &quot;clause_#{str_buf}&quot;.to_sym)
-          str_buf = &quot;&quot;
+        change_elem = last.last
+        last[-1] = [op.to_sym, change_elem]
+        if change_last
+          stack.push last[-1]
         end
-      		end
-# line 198 &quot;lib/parser.rl&quot;
-when 23 then
-# line 209 &quot;lib/parser.rl&quot;
-		begin
-
-        p = p - 1;
-        raise QueryException.new(&quot;Syntax error near #{data[p..-1].chomp.inspect}.&quot;)
-      		end
-# line 209 &quot;lib/parser.rl&quot;
-# line 1493 &quot;lib/parser.rb&quot;
-			end # action switch
-		end
-	end
-	if _trigger_goto
-		next
-	end
-	end
-	if _goto_level &lt;= _again
-	if cs == 0
-		_goto_level = _out
-		next
-	end
-	p += 1
-	if p != pe
-		_goto_level = _resume
-		next
-	end
-	end
-	if _goto_level &lt;= _test_eof
-	if p == eof
-	__acts = _pseudo_sql_eof_actions[cs]
-	__nacts =  _pseudo_sql_actions[__acts]
-	__acts += 1
-	while __nacts &gt; 0
-		__nacts -= 1
-		__acts += 1
-		case _pseudo_sql_actions[__acts - 1]
-when 23 then
-# line 209 &quot;lib/parser.rl&quot;
-		begin
-
-        p = p - 1;
-        raise QueryException.new(&quot;Syntax error near #{data[p..-1].chomp.inspect}.&quot;)
-      		end
-# line 209 &quot;lib/parser.rl&quot;
-# line 1529 &quot;lib/parser.rb&quot;
-		end # eof action switch
-	end
-	if _trigger_goto
-		next
-	end
-end
-	end
-	if _goto_level &lt;= _out
-		break
-	end
-	end
-	end
-# line 267 &quot;lib/parser.rl&quot;
-      
-      raise QueryException.new(&quot;Syntax error near #{data[p..-1].chomp.inspect}.&quot;) if p != pe
-      stack.first
-    end
-  
-    def self.apply_op(stack, op, change_last = true)
-      pop_stack(stack, op)
-      last = stack.last
-      change_elem = last.last
-      last[-1] = [op.to_sym, change_elem]
-      if change_last
-        stack.push last[-1]
+        stack.last
       end
-      stack.last
-    end
   
-    def self.insert(stack, arg)
-      # insert [:relation, &quot;...&quot;]
-      # stack: [[:query]]  --&gt; [[:query, [:relation, &quot;...&quot;]], [:relation, &quot;...&quot;]]
-      pop_stack(stack, arg.first)
-      last = stack.last
-      last &lt;&lt; arg
-      stack.push last.last
-      stack.last
-    end
+      def insert(stack, arg)
+        # insert [:relation, &quot;...&quot;]
+        # stack: [[:query]]  --&gt; [[:query, [:relation, &quot;...&quot;]], [:relation, &quot;...&quot;]]
+        pop_stack(stack, arg.first)
+        last = stack.last
+        last &lt;&lt; arg
+        stack.push last.last
+        stack.last
+      end
   
-    def self.pop_stack(stack, op)
-      # debug_stack(stack, op)
-      stack_op = stack.last.first
-      while OP_PRECEDENCE[op.to_s.upcase] &lt;= OP_PRECEDENCE[stack_op.to_s.upcase]
-        stack.pop
+      def pop_stack(stack, op)
+        # debug_stack(stack, op)
         stack_op = stack.last.first
+        while OP_PRECEDENCE[op] &lt;= OP_PRECEDENCE[stack_op]
+          stack.pop
+          stack_op = stack.last.first
+        end
       end
-    end
   
-    def self.debug_stack(stack, msg = '')
-      puts &quot;======= #{msg} =======&quot;
-      stack.reverse_each do |s|
-        puts s.inspect
+      def debug_stack(stack, msg = '')
+        puts &quot;======= #{msg} =======&quot;
+        stack.reverse_each do |s|
+          puts s.inspect
+        end
+        puts &quot;======================&quot;
       end
-      puts &quot;======================&quot;
     end
   end
 end</diff>
      <filename>lib/parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-module NewQueryBuilder  
+module QueryBuilder  
   class Query
     attr_accessor :processor_class, :distinct, :select, :tables, :where, :limit, :offset, :page_size, :order, :group, :error
     def initialize(processor_class)</diff>
      <filename>lib/query.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class DummyProcessor &lt; NewQueryBuilder::Processor
+class DummyProcessor &lt; QueryBuilder::Processor
   self.main_table = &quot;objects&quot;
   self.main_class = 'DummyClass'
 
@@ -118,3 +118,9 @@ class DummyProcessor &lt; NewQueryBuilder::Processor
     end
 
 end
+
+
+class DummyClass
+  def self.connection; self; end
+  def self.quote(obj); &quot;[[#{obj}]]&quot;; end
+end
\ No newline at end of file</diff>
      <filename>test/mock/dummy_processor.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class UserProcessor &lt; NewQueryBuilder::Processor
+class UserProcessor &lt; QueryBuilder::Processor
   self.main_table = 'users'
   self.main_class = 'TestUser'
   </diff>
      <filename>test/mock/user_processor.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,7 @@
 require 'stringio'
 require 'test/unit'
-require File.dirname(__FILE__) + '/../lib/QueryBuilder'
-require File.dirname(__FILE__) + '/../lib/new_query_builder'
-require File.dirname(__FILE__) + '/../lib/parser'
-require File.dirname(__FILE__) + '/mock/dummy_query'
+require File.dirname(__FILE__) + '/../lib/querybuilder'
 require File.dirname(__FILE__) + '/mock/dummy_processor'
 require File.dirname(__FILE__) + '/mock/user_processor'
-require File.dirname(__FILE__) + '/mock/user_query'
 require 'rubygems'
 require 'yamltest'</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/QueryBuilder.rb</filename>
    </removed>
    <removed>
      <filename>lib/new_query_builder.rb</filename>
    </removed>
    <removed>
      <filename>lib/parser.rl</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/basic.yml</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/custom.yml</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/errors.yml</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/filters.yml</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/joins.yml</filename>
    </removed>
    <removed>
      <filename>test/QueryBuilder/mixed.yml</filename>
    </removed>
    <removed>
      <filename>test/test_QueryBuilder.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>4abda5bfd692dae707d27139b7a67c0dd28b39ff</id>
    </parent>
  </parents>
  <author>
    <name>Gaspard Bucher</name>
    <email>gaspard@teti.ch</email>
  </author>
  <url>http://github.com/zena/querybuilder/commit/864a4cb1644c382aab3f53f76621400621f05a1e</url>
  <id>864a4cb1644c382aab3f53f76621400621f05a1e</id>
  <committed-date>2009-06-12T14:15:20-07:00</committed-date>
  <authored-date>2009-06-12T14:15:20-07:00</authored-date>
  <message>Started to implement C extension instead of pure ruby ragel (known to be slow).</message>
  <tree>a31cff671eb66f98cef3abbb42e361d0be38dd54</tree>
  <committer>
    <name>Gaspard Bucher</name>
    <email>gaspard@teti.ch</email>
  </committer>
</commit>
