Index: ruby/trunk/adl_parser/lib/parser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/parser.rb	(revision 18)
+++ ruby/trunk/adl_parser/lib/parser.rb	(revision 19)
@@ -13,4 +13,5 @@
 require 'lib/util.rb'
 require 'lib/scanner.rb'
+require 'lib/model.rb'
 $DEBUG = true
 
@@ -24,8 +25,9 @@
     class Parser < Racc::Parser
 
-module_eval <<'..end lib/parser.y modeval..idd4a3e5c962', 'lib/parser.y', 654
+module_eval <<'..end lib/parser.y modeval..ide0b42f72dd', 'lib/parser.y', 720
 
 @@log = Logger.new('log/parser.log','daily')
 @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
 
 ###----------/* keywords */ --------------------------------------------- 
@@ -128,4 +130,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\Adescription/   # description
@@ -143,7 +146,8 @@
         word = $&
         if @@adl_reserved[word]
-          @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
           yield @@adl_reserved[word], @@adl_reserved[word]
         elsif #/\A[A-Z][a-zA-Z0-9_]*/
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, $&
         end
@@ -174,4 +178,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -179,4 +184,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, $&
       when /\A\-/   # -
@@ -296,4 +302,16 @@
     when :cadl
 #      puts "Entering scan_cadl"
+      case scanned = @@cadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
+          @in_c_domain_type = true
+          @adl_type.push(:dadl)
+          yield scanned.value
+        else
+          yield scanned.value
+        end
+        data = scanned.input
+      end
+
       case data
       when /\A\n/ # carriage return
@@ -304,4 +322,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -312,11 +331,8 @@
       when /\A\<=/   # <=
         yield :SYM_LE, :SYM_LE
-      when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
-        @in_c_domain_type = true
-        @adl_type.push(:dadl)
-          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
-###         else
-###           raise
-###         end
+###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+###         @in_c_domain_type = true
+###         @adl_type.push(:dadl)
+###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
       when /\A\</   # <
         if @in_interval
@@ -374,4 +390,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -379,4 +396,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
       when /\A\$/   # $
@@ -394,10 +412,11 @@
         end
         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+
       when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
         yield :V_QUALIFIED_TERM_CODE_REF, $&
       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-#      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
-#        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
       when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
         @adl_type.push(:term_constraint)
@@ -422,4 +441,5 @@
           yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
         else
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
         end
@@ -443,11 +463,11 @@
       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
         yield :V_REAL, $&
-        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
       when /\A"([^"]*)"/m #V_STRING
         yield :V_STRING, $1
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -491,10 +511,5 @@
         yield scanned.value
         data = scanned.input
-###       when Yaparc::Result::Fail
-###         raise "Scan Failed: #{scanned}"
-###       when Yaparc::Result::Error
-###         raise "Scan Error: #{scanned}"
       else
-        
       end
 
@@ -507,4 +522,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -626,6 +642,6 @@
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -724,4 +740,5 @@
       when /\A--.*$/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
@@ -794,5 +811,5 @@
 
 
-..end lib/parser.y modeval..idd4a3e5c962
+..end lib/parser.y modeval..ide0b42f72dd
 
 ##### racc 1.4.5 generates ###
@@ -800,119 +817,134 @@
 racc_reduce_table = [
  0, 0, :racc_error,
- 2, 96, :_reduce_none,
- 1, 96, :_reduce_none,
- 8, 97, :_reduce_none,
+ 2, 95, :_reduce_none,
+ 1, 95, :_reduce_none,
+ 8, 96, :_reduce_none,
+ 2, 97, :_reduce_none,
+ 2, 97, :_reduce_none,
+ 1, 105, :_reduce_none,
+ 2, 105, :_reduce_none,
+ 3, 106, :_reduce_none,
+ 1, 107, :_reduce_none,
+ 3, 107, :_reduce_none,
+ 3, 108, :_reduce_none,
+ 1, 108, :_reduce_none,
+ 0, 98, :_reduce_none,
  2, 98, :_reduce_none,
  2, 98, :_reduce_none,
- 1, 106, :_reduce_none,
- 2, 106, :_reduce_none,
- 3, 107, :_reduce_none,
- 1, 108, :_reduce_none,
- 3, 108, :_reduce_none,
- 3, 109, :_reduce_none,
- 1, 109, :_reduce_none,
- 0, 99, :_reduce_none,
  2, 99, :_reduce_none,
  2, 99, :_reduce_none,
- 2, 100, :_reduce_none,
+ 0, 100, :_reduce_none,
+ 2, 100, :_reduce_19,
  2, 100, :_reduce_none,
  0, 101, :_reduce_none,
- 2, 101, :_reduce_19,
  2, 101, :_reduce_none,
- 0, 102, :_reduce_none,
+ 2, 101, :_reduce_none,
  2, 102, :_reduce_none,
  2, 102, :_reduce_none,
- 2, 103, :_reduce_none,
- 2, 103, :_reduce_none,
- 1, 111, :_reduce_none,
- 1, 111, :_reduce_none,
- 5, 112, :_reduce_none,
- 5, 112, :_reduce_none,
- 2, 114, :_reduce_none,
- 1, 116, :_reduce_31,
- 2, 116, :_reduce_32,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 3, 128, :_reduce_none,
+ 1, 110, :_reduce_none,
+ 1, 110, :_reduce_none,
+ 5, 111, :_reduce_none,
+ 5, 111, :_reduce_none,
+ 2, 113, :_reduce_none,
+ 1, 115, :_reduce_31,
+ 2, 115, :_reduce_32,
+ 1, 114, :_reduce_none,
+ 1, 114, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 3, 121, :_reduce_none,
  4, 122, :_reduce_none,
  3, 122, :_reduce_none,
  6, 123, :_reduce_none,
+ 2, 129, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 3, 132, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 1, 127, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 118, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 2, 119, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 2, 143, :_reduce_68,
+ 3, 143, :_reduce_69,
+ 1, 144, :_reduce_none,
+ 2, 144, :_reduce_none,
+ 1, 144, :_reduce_none,
+ 0, 130, :_reduce_none,
  2, 130, :_reduce_none,
- 2, 133, :_reduce_none,
- 3, 133, :_reduce_none,
- 2, 133, :_reduce_none,
- 1, 127, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 119, :_reduce_none,
- 1, 120, :_reduce_none,
- 2, 120, :_reduce_none,
- 5, 143, :_reduce_none,
- 5, 143, :_reduce_none,
- 5, 143, :_reduce_none,
- 2, 144, :_reduce_none,
- 3, 144, :_reduce_none,
- 1, 145, :_reduce_none,
- 2, 145, :_reduce_none,
- 1, 145, :_reduce_none,
  0, 131, :_reduce_none,
  2, 131, :_reduce_none,
- 0, 132, :_reduce_none,
- 2, 132, :_reduce_none,
+ 1, 147, :_reduce_none,
+ 2, 147, :_reduce_none,
+ 3, 148, :_reduce_none,
  1, 148, :_reduce_none,
- 2, 148, :_reduce_none,
- 3, 149, :_reduce_none,
- 1, 149, :_reduce_none,
- 3, 149, :_reduce_none,
- 0, 104, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 0, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
  2, 104, :_reduce_none,
  2, 104, :_reduce_none,
- 2, 105, :_reduce_none,
- 2, 105, :_reduce_none,
- 1, 110, :_reduce_none,
+ 1, 109, :_reduce_none,
+ 1, 151, :_reduce_none,
+ 1, 151, :_reduce_none,
  1, 152, :_reduce_none,
- 1, 152, :_reduce_none,
+ 2, 152, :_reduce_none,
+ 3, 152, :_reduce_none,
+ 3, 154, :_reduce_93,
+ 1, 155, :_reduce_94,
+ 2, 155, :_reduce_none,
+ 1, 156, :_reduce_none,
+ 1, 156, :_reduce_none,
  1, 153, :_reduce_none,
- 2, 153, :_reduce_none,
- 3, 153, :_reduce_none,
- 3, 155, :_reduce_none,
- 1, 156, :_reduce_94,
- 2, 156, :_reduce_none,
- 1, 157, :_reduce_none,
- 1, 157, :_reduce_none,
- 1, 154, :_reduce_none,
- 1, 154, :_reduce_none,
- 1, 160, :_reduce_none,
- 2, 160, :_reduce_none,
- 3, 161, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 163, :_reduce_none,
- 2, 163, :_reduce_none,
- 3, 164, :_reduce_none,
- 3, 165, :_reduce_none,
+ 1, 153, :_reduce_none,
  1, 159, :_reduce_none,
  2, 159, :_reduce_none,
- 2, 167, :_reduce_none,
- 3, 167, :_reduce_none,
- 1, 168, :_reduce_none,
+ 3, 160, :_reduce_none,
+ 1, 161, :_reduce_none,
+ 1, 162, :_reduce_none,
+ 2, 162, :_reduce_none,
+ 3, 163, :_reduce_none,
+ 3, 164, :_reduce_107,
  1, 158, :_reduce_none,
  2, 158, :_reduce_none,
- 3, 169, :_reduce_none,
+ 2, 166, :_reduce_none,
+ 3, 166, :_reduce_none,
+ 1, 167, :_reduce_none,
+ 1, 157, :_reduce_none,
+ 2, 157, :_reduce_none,
+ 3, 168, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 165, :_reduce_121,
+ 1, 165, :_reduce_122,
+ 1, 165, :_reduce_123,
+ 1, 165, :_reduce_124,
+ 1, 165, :_reduce_125,
+ 1, 165, :_reduce_126,
+ 1, 165, :_reduce_127,
+ 1, 165, :_reduce_128,
+ 1, 165, :_reduce_129,
+ 1, 165, :_reduce_130,
  1, 170, :_reduce_none,
  1, 170, :_reduce_none,
@@ -920,14 +952,8 @@
  1, 170, :_reduce_none,
  1, 170, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
  1, 171, :_reduce_none,
  1, 171, :_reduce_none,
@@ -936,19 +962,25 @@
  1, 171, :_reduce_none,
  1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 175, :_reduce_148,
+ 1, 117, :_reduce_146,
+ 1, 117, :_reduce_147,
+ 1, 174, :_reduce_148,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 1, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
+ 5, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 7, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 3, 193, :_reduce_none,
  1, 176, :_reduce_none,
  2, 176, :_reduce_none,
@@ -967,9 +999,16 @@
  3, 194, :_reduce_none,
  1, 177, :_reduce_none,
- 2, 177, :_reduce_none,
- 2, 177, :_reduce_none,
+ 1, 177, :_reduce_none,
  3, 187, :_reduce_none,
  3, 187, :_reduce_none,
  3, 187, :_reduce_none,
+ 1, 178, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 1, 179, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
  5, 195, :_reduce_none,
  6, 195, :_reduce_none,
@@ -981,13 +1020,4 @@
  4, 195, :_reduce_none,
  3, 195, :_reduce_none,
- 1, 178, :_reduce_none,
- 1, 178, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
- 1, 179, :_reduce_none,
- 3, 189, :_reduce_none,
- 3, 189, :_reduce_none,
- 3, 189, :_reduce_none,
  1, 180, :_reduce_none,
  3, 190, :_reduce_none,
@@ -1016,5 +1046,5 @@
  4, 197, :_reduce_none,
  3, 197, :_reduce_none,
- 1, 182, :_reduce_none,
+ 1, 182, :_reduce_230,
  3, 192, :_reduce_none,
  3, 192, :_reduce_none,
@@ -1029,84 +1059,77 @@
  4, 198, :_reduce_none,
  3, 198, :_reduce_none,
+ 1, 172, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
  1, 183, :_reduce_none,
- 3, 193, :_reduce_none,
- 3, 193, :_reduce_none,
- 3, 193, :_reduce_none,
- 5, 199, :_reduce_none,
- 6, 199, :_reduce_none,
- 6, 199, :_reduce_none,
- 7, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 2, 112, :_reduce_none,
  3, 199, :_reduce_none,
- 1, 173, :_reduce_none,
- 3, 174, :_reduce_none,
- 3, 174, :_reduce_none,
- 3, 174, :_reduce_none,
- 1, 184, :_reduce_none,
- 1, 113, :_reduce_none,
- 2, 113, :_reduce_none,
+ 1, 199, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
  3, 200, :_reduce_none,
  1, 200, :_reduce_none,
- 3, 200, :_reduce_none,
- 1, 151, :_reduce_none,
- 1, 151, :_reduce_none,
- 2, 202, :_reduce_none,
- 2, 202, :_reduce_none,
- 5, 202, :_reduce_none,
- 5, 202, :_reduce_none,
- 2, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 201, :_reduce_none,
- 1, 201, :_reduce_none,
- 1, 201, :_reduce_none,
+ 1, 200, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 204, :_reduce_none,
  1, 204, :_reduce_none,
  1, 204, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 129, :_reduce_none,
- 2, 129, :_reduce_none,
- 1, 203, :_reduce_none,
- 3, 203, :_reduce_none,
- 2, 207, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 128, :_reduce_none,
+ 2, 128, :_reduce_none,
+ 1, 202, :_reduce_none,
+ 3, 202, :_reduce_none,
+ 2, 206, :_reduce_288,
+ 1, 206, :_reduce_289,
+ 0, 145, :_reduce_none,
+ 5, 145, :_reduce_none,
  1, 207, :_reduce_none,
- 0, 146, :_reduce_none,
+ 3, 207, :_reduce_none,
  5, 146, :_reduce_none,
  1, 208, :_reduce_none,
  3, 208, :_reduce_none,
- 5, 147, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 0, 116, :_reduce_none,
+ 5, 116, :_reduce_none,
+ 2, 116, :_reduce_none,
  1, 209, :_reduce_none,
  3, 209, :_reduce_none,
- 3, 209, :_reduce_none,
- 3, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
  1, 211, :_reduce_none,
  1, 211, :_reduce_none,
- 0, 117, :_reduce_none,
- 5, 117, :_reduce_none,
- 2, 117, :_reduce_none,
- 1, 210, :_reduce_none,
- 3, 210, :_reduce_none,
+ 1, 211, :_reduce_none,
+ 1, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
  1, 212, :_reduce_none,
  1, 212, :_reduce_none,
@@ -1134,4 +1157,5 @@
  3, 138, :_reduce_none,
  1, 216, :_reduce_none,
+ 3, 216, :_reduce_none,
  1, 216, :_reduce_none,
  1, 216, :_reduce_none,
@@ -1139,8 +1163,7 @@
  3, 139, :_reduce_none,
  3, 139, :_reduce_none,
- 1, 217, :_reduce_none,
- 3, 217, :_reduce_none,
- 1, 217, :_reduce_none,
- 1, 217, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 3, 218, :_reduce_none,
  1, 140, :_reduce_none,
  3, 140, :_reduce_none,
@@ -1149,500 +1172,494 @@
  1, 219, :_reduce_none,
  3, 219, :_reduce_none,
+ 3, 219, :_reduce_none,
  1, 141, :_reduce_none,
  3, 141, :_reduce_none,
  3, 141, :_reduce_none,
- 1, 220, :_reduce_none,
- 1, 220, :_reduce_none,
- 3, 220, :_reduce_none,
- 3, 220, :_reduce_none,
- 1, 142, :_reduce_none,
- 3, 142, :_reduce_none,
- 3, 142, :_reduce_none,
  1, 126, :_reduce_none,
  3, 126, :_reduce_none,
  3, 126, :_reduce_none,
- 1, 221, :_reduce_none,
+ 1, 220, :_reduce_none,
+ 3, 220, :_reduce_none,
  3, 221, :_reduce_none,
- 3, 222, :_reduce_none,
  1, 125, :_reduce_none,
  1, 125, :_reduce_none,
- 3, 223, :_reduce_none,
- 0, 224, :_reduce_none,
- 1, 224, :_reduce_none,
- 2, 224, :_reduce_none,
+ 3, 222, :_reduce_none,
+ 0, 223, :_reduce_none,
+ 1, 223, :_reduce_none,
+ 2, 223, :_reduce_none,
  1, 124, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 218, :_reduce_none ]
+ 1, 149, :_reduce_none,
+ 1, 149, :_reduce_374,
+ 1, 217, :_reduce_none ]
 
 racc_reduce_n = 376
 
-racc_shift_n = 633
+racc_shift_n = 631
 
 racc_action_table = [
-   574,   501,   476,   159,   397,   590,   473,   469,   471,   146,
-   229,   130,     9,   576,     1,   572,    58,   543,    67,   379,
-   540,   383,   600,   541,   542,   385,    29,   451,   523,   390,
-    22,   115,    11,     4,   499,   185,   537,   511,    51,   515,
-   516,   497,   228,   514,    51,   443,    61,   571,    23,   152,
-   154,    46,    49,   316,    30,   147,    77,    80,    83,   188,
-   117,    92,   304,   308,   398,   110,   112,   115,   117,   529,
-   117,   523,   110,   115,   112,   573,   117,   152,   154,   537,
-   511,    75,   515,   516,   272,   156,   117,   280,   284,   286,
-   534,   162,   115,   296,    46,    49,   316,   230,   112,    77,
-    80,    83,   188,   115,    92,   304,   308,   435,   110,   112,
-   115,   117,   529,   156,   495,   627,   214,   101,   433,   108,
-   211,   381,   148,   150,   459,   466,   482,    67,   391,   376,
-   280,   284,   286,   534,   117,   101,   296,   133,   213,   138,
-   112,   331,   212,    73,   152,   154,   458,    51,   124,   126,
-   148,   150,   393,    77,    80,    83,   274,   138,    92,    95,
-    99,   152,   154,   101,   112,   467,   152,   154,    87,    90,
-   110,    77,    80,    83,   110,    75,    92,    95,    99,   128,
-   156,    77,   325,   326,   134,   100,    87,    90,   152,   154,
-   568,   152,   154,    75,    46,    49,   395,   156,   337,    77,
-    80,    83,   156,   396,    92,    95,    99,   236,   110,   152,
-   154,   419,   157,   158,    87,    90,   149,   148,   150,   151,
-   153,    75,   321,   322,   156,   236,    92,   156,   334,   247,
-   388,   170,   387,   217,   148,   150,   238,   127,   164,   148,
-   150,    46,    49,   152,   154,   156,   157,   158,  -373,   257,
-   149,   101,   250,   151,   153,   253,   255,   239,   171,   321,
-   322,   148,   150,    92,   148,   150,   493,   139,   241,    77,
-    80,    83,   140,   138,    92,  -374,    16,   155,    17,   156,
-    95,    99,   148,   150,   217,   349,   350,    77,    80,    83,
-   217,    75,    92,    95,    99,   399,    77,    80,    83,   239,
-   217,    92,    87,    90,   570,   110,   112,   115,   117,    75,
-   400,   155,   491,   101,   321,   322,   148,   150,    92,   143,
-    77,    80,    83,   401,   144,    92,    77,    80,    83,   321,
-   322,    92,   217,    92,   402,   138,    77,    80,    83,   217,
-   417,    92,    75,   321,   322,   217,   403,    92,    75,    77,
-    80,    83,   339,   340,    92,    95,    99,   217,    75,    77,
-   325,   326,   404,   237,    87,    90,   341,   342,    77,    80,
-    83,    75,   217,    92,   405,    77,    80,    83,    25,    26,
-    92,    77,    80,    83,   101,   406,    92,    77,   325,   326,
-    75,    46,    49,    77,    80,    83,   407,    75,    92,   408,
-   321,   322,   101,    75,    92,   385,   138,   481,    77,    80,
-    83,   351,   352,    92,   102,    75,   168,   169,   166,   167,
-    77,    80,    83,   409,   100,    92,    95,    99,   101,    16,
-    75,    17,   410,    46,    49,    87,    90,   217,    77,    80,
-    83,   268,    75,    92,    95,    99,   101,   598,   599,   210,
-   138,    39,   267,    87,    90,    46,    49,   359,   360,    35,
-    75,    35,   272,   274,    77,    80,    83,   246,   138,    92,
-    95,    99,   245,    77,    80,    83,   140,   101,    92,    87,
-    90,   144,    77,    80,    83,   217,    75,    92,    95,    99,
-   139,    51,   143,    51,   244,    75,   102,    87,    90,   100,
-    46,    49,    46,    49,    75,   367,   368,    56,    46,    49,
-   101,   124,   126,    77,    80,    83,   243,    35,    92,    95,
-    99,    77,    80,    83,   258,    35,    92,   259,    87,    90,
-   430,   431,   100,   101,   260,    75,   117,    46,    49,   428,
-   429,    46,    49,    75,   261,   217,    77,    80,    83,    51,
-   115,    92,    95,    99,   242,   100,   101,    51,    46,    49,
-   241,    87,    90,   436,    46,    49,    46,    49,    75,    77,
-    80,    83,   426,   427,    92,    95,    99,   437,   100,   101,
-   438,    77,    80,    83,    87,    90,    92,    46,    49,   415,
-   439,    75,    77,    80,    83,   415,   440,    92,    95,    99,
-   441,   138,   240,    75,   414,   325,   326,    87,    90,   415,
-   414,   325,   326,   444,    75,    77,    80,    83,   424,   425,
-    92,    95,    99,   445,    77,   325,   326,    77,   325,   326,
-    87,    90,   617,   618,   619,   316,   446,    75,    77,    80,
-    83,   188,   447,    92,   304,   308,   448,   110,   112,   115,
-   117,   128,   422,   423,    77,    80,    83,   420,   421,    92,
-   124,   126,   127,   110,   112,   115,   117,   449,   120,   280,
-   284,   286,  -103,   631,   632,   296,   203,   124,   126,    77,
-    80,    83,   188,   239,    92,   124,   126,   127,   110,   112,
-   115,   117,   185,   120,    77,    80,    83,   452,   453,    92,
-    77,   325,   326,   110,   112,   115,   117,    77,    80,    83,
-   454,   455,    92,    77,   325,   326,   110,   112,   115,   117,
-    77,    80,    83,   456,   457,    92,    77,   325,   326,   110,
-   112,   115,   117,    77,    80,    83,   238,   461,    92,    77,
-   325,   326,   110,   112,   115,   117,   328,   462,   321,   322,
-   463,   262,    92,   168,   169,   166,   167,   324,    77,   325,
-   326,   168,   169,   166,   167,   168,   169,   166,   167,   168,
+   571,   442,   161,   472,   144,   588,   470,   466,   468,   129,
+   214,   570,   165,   573,   229,    10,   542,   170,   376,   539,
+    29,    58,   540,   541,   171,   458,   496,   386,   522,   385,
+    24,   116,   213,   494,  -373,    12,   535,   510,   434,   513,
+   514,  -374,   512,   569,    60,   492,   228,   457,    30,    50,
+   145,    46,    48,   317,    97,    98,    78,    81,    84,   188,
+   116,    94,   302,   307,    75,   109,   112,   114,   116,   529,
+   522,   116,   109,   114,   112,   116,   152,   154,   535,   510,
+    76,   513,   514,   272,   101,   116,   314,   279,   281,   532,
+   160,   114,   291,    46,    48,   317,   114,   625,    78,    81,
+    84,   188,   112,    94,   302,   307,    99,   109,   112,   114,
+   116,   529,   156,   432,     1,    46,    48,   101,   347,   348,
+    78,    81,    84,   230,   479,    94,    97,    98,   314,   279,
+   281,   532,   490,     5,   291,    88,    92,   152,   154,   138,
+   152,   154,    76,   101,   260,   374,   152,   154,   430,   148,
+   150,   133,   259,    78,    81,    84,   236,   114,    94,    97,
+    98,   152,   154,    67,   481,   138,   152,   154,    88,    92,
+   112,   152,   154,   156,   462,    76,   156,   127,   329,    78,
+    81,    84,   156,    50,    94,    97,    98,   126,   109,   152,
+   154,   465,   157,   158,    88,    92,   149,   156,   134,   151,
+   153,    76,   156,   594,   109,   152,   154,   156,   157,   158,
+   148,   150,   149,   148,   150,   151,   153,   566,   332,   148,
+   150,   236,   337,   338,   378,   156,   123,   124,   109,   101,
+    78,   382,   383,    55,   148,   150,   211,    20,   184,   148,
+   150,   156,   497,    35,   148,   150,   209,   257,   323,   324,
+   250,   138,    94,   254,   256,    21,    35,   155,   212,    78,
+   382,   383,   148,   150,   390,    78,    81,    84,    46,    48,
+    94,    97,    98,   155,   217,    50,   391,   455,   148,   150,
+    88,    92,   217,   274,    46,    48,   394,    76,    50,    78,
+   382,   383,   101,   237,    78,    81,    84,    46,    48,    94,
+   102,   395,   335,   109,   112,   114,   116,   272,   274,   108,
+    78,    81,    84,   112,   138,    94,   101,    67,    78,    81,
+    84,   396,   141,    94,    78,   382,   383,   142,    78,    81,
+    84,   268,    76,    94,    97,    98,   568,    50,   138,   101,
+    76,    46,    48,    88,    92,   239,   168,   169,   166,   167,
+    76,   101,    78,    81,    84,   146,   397,    94,    97,    98,
+   147,   138,   398,   217,   326,   345,   346,    88,    92,   217,
+   102,   123,   124,   138,    76,    78,    81,    84,   217,   399,
+    94,    97,    98,   168,   169,   166,   167,    78,    81,    84,
+    88,    92,    94,    97,    98,   400,   217,    76,   401,    78,
+    81,    84,    88,    92,    94,    78,    81,    84,   101,    76,
+    94,    46,    48,   402,    78,    81,    84,   403,    16,    94,
+    17,    76,   322,   404,   323,   324,   101,    76,    94,   405,
+    99,   488,    78,    81,    84,   217,    76,    94,   406,    46,
+    48,    78,   382,   383,    78,    81,    84,   407,    99,    94,
+    97,    98,   416,   217,    76,    46,    48,    46,    48,    88,
+    92,   217,    78,    81,    84,   408,    76,    94,    97,    98,
+   265,    78,    81,    84,   349,   350,    94,    88,    92,   323,
+   324,    25,    26,    94,    76,   101,   357,   358,    35,    78,
+    81,    84,   409,    76,    94,   596,   597,    78,    81,    84,
+   323,   324,    94,   217,    94,   267,   380,    99,   477,   217,
+   268,    76,   615,   616,   617,   217,    46,    48,   266,    76,
+    50,    78,    81,    84,   427,   428,    94,    97,    98,    46,
+    48,   323,   324,   101,   248,    94,    88,    92,   247,    78,
+    81,    84,   142,    76,    94,    78,    81,    84,   371,   372,
+    94,    78,    81,    84,   147,    99,    94,   101,   246,   323,
+   324,    76,    39,    94,    46,    48,   413,    76,   380,    78,
+    81,    84,    35,    76,    94,    97,    98,   425,   426,    99,
+   101,    78,   382,   383,    88,    92,   423,   424,    46,    48,
+   413,    76,   261,    78,    81,    84,   421,   422,    94,    97,
+    98,    16,   138,    17,    50,   412,   382,   383,    88,    92,
+   413,   419,   420,    46,    48,    76,    78,    81,    84,   417,
+   418,    94,    97,    98,   262,   412,   382,   383,   263,   323,
+   324,    88,    92,    94,   629,   630,   317,   116,    76,    78,
+    81,    84,   188,   264,    94,   302,   307,   245,   109,   112,
+   114,   116,    78,    81,    84,   123,   124,    94,    78,   382,
+   383,   109,   112,   114,   116,   168,   169,   166,   167,   314,
+   279,   281,  -103,   244,   243,   291,   202,   435,   436,    78,
+    81,    84,   188,   437,    94,   123,   124,   126,   109,   112,
+   114,   116,   184,   119,   127,   438,   439,    78,    81,    84,
+   440,   242,    94,   123,   124,   126,   109,   112,   114,   116,
+   443,   119,    78,    81,    84,   444,   445,    94,    78,   382,
+   383,   109,   112,   114,   116,    78,    81,    84,   446,   447,
+    94,    78,   382,   383,   109,   112,   114,   116,    78,    81,
+    84,   448,   449,    94,   450,   451,   452,   109,   112,   114,
+   116,   168,   169,   166,   167,   388,    78,   382,   383,   168,
    169,   166,   167,   168,   169,   166,   167,   168,   169,   166,
-   167,   168,   169,   166,   167,   168,   169,   166,   167,   138,
-   171,   147,   208,   102,   475,   165,   478,   480,   263,   162,
-   484,   485,   486,   264,   488,   145,   138,   135,    51,   109,
-    69,    66,   502,   110,   504,   112,   506,   115,   508,   117,
-   510,    35,   538,   539,    61,    57,   545,   546,   547,   265,
-   549,  -103,   551,   110,   553,   112,   555,   115,   557,   117,
-   559,   560,   561,   562,   563,    54,   162,   566,   266,    34,
-   170,   112,    31,    28,   578,   579,   580,   581,   117,   117,
-   117,   267,   583,   584,   585,   586,   587,   588,   589,    24,
-   592,   593,   110,   596,   268,   127,   185,    21,   603,   604,
-    75,   570,   606,   608,   609,   610,   319,   616,   276,    15,
-   621,    14,   622,    12,   624,   625,   626,     8,     7,   629,
-   630,   277,   117 ]
+   167,   168,   169,   166,   167,   168,   169,   166,   167,   453,
+   454,   241,   141,   146,   240,   460,   461,   239,   238,   138,
+   171,   145,   207,   474,   476,   265,   478,   102,   163,   483,
+   484,   485,   160,   143,   138,   135,    50,   131,    69,   499,
+   109,   501,   112,   503,   114,   505,   116,   266,   508,   509,
+    68,   537,   538,    35,    60,   544,   545,    57,   547,   109,
+   549,   112,   551,   114,   553,   116,   267,   556,   557,   558,
+   559,   560,   561,   562,  -103,   564,   268,    54,   170,    34,
+   114,    31,   575,   576,   160,   578,   579,   116,   116,   116,
+    28,   581,   582,   583,   584,   585,   586,   587,   112,   590,
+   591,   276,   184,   109,   598,    23,   601,   602,    76,   568,
+   604,   606,   607,   608,   277,   613,   126,    15,   619,    13,
+     9,   621,   622,   623,   624,     8,     7,   627,   628,   319,
+   116 ]
 
 racc_action_check = [
-   528,   431,   406,    87,   278,   567,   404,   402,   403,    85,
-   162,    62,     4,   528,     0,   526,    42,   480,    52,   262,
-   480,   264,   579,   480,   480,   265,    21,   368,   528,   270,
-    14,   262,     4,     0,   429,   264,   528,   528,    52,   528,
-   528,   427,   162,   459,    42,   360,    62,   526,    14,   226,
-   226,   528,   528,   528,    21,    85,   528,   528,   528,   528,
-   431,   528,   528,   528,   278,   528,   528,   528,   528,   528,
-   406,   459,   402,   404,   403,   526,   480,   224,   224,   459,
-   459,    87,   459,   459,   459,   226,   368,   528,   528,   528,
-   528,   567,   429,   528,   459,   459,   459,   165,   427,   459,
-   459,   459,   459,   360,   459,   459,   459,   352,   459,   459,
-   459,   459,   459,   224,   425,   621,   146,   165,   350,    59,
-   145,   263,   226,   226,   390,   400,   410,    59,   271,   259,
-   459,   459,   459,   459,   263,   621,   459,    69,   146,   165,
-   259,   243,   145,    54,   227,   227,   390,    59,   243,   243,
-   224,   224,   274,   165,   165,   165,   275,   621,   165,   165,
-   165,   222,   222,    54,   352,   401,   218,   218,   165,   165,
-   425,   621,   621,   621,   350,   165,   621,   621,   621,   410,
-   227,   400,   400,   400,    69,    54,   621,   621,   220,   220,
-   516,   318,   318,   621,    54,    54,   276,   222,   247,    54,
-    54,    54,   218,   277,    54,    54,    54,   318,   247,   172,
-   172,   342,   172,   172,    54,    54,   172,   227,   227,   172,
-   172,    54,   401,   401,   220,   172,   401,   318,   245,   187,
-   267,    97,   267,   158,   222,   222,   281,   245,    90,   218,
-   218,   516,   516,    86,    86,   172,    86,    86,    97,   188,
-    86,   164,   188,    86,    86,   188,   188,   282,   100,   342,
-   342,   220,   220,   342,   318,   318,   423,    80,   285,   158,
-   158,   158,    80,   164,   158,   100,    11,   172,    11,    86,
-    90,    90,   172,   172,   157,   251,   251,   164,   164,   164,
-   156,   158,   164,   164,   164,   287,   188,   188,   188,   519,
-   155,   188,   164,   164,   519,   188,   188,   188,   188,   164,
-   288,    86,   421,   166,   423,   423,    86,    86,   423,    83,
-   157,   157,   157,   291,    83,   157,   156,   156,   156,   419,
-   419,   156,   154,   419,   294,   166,   155,   155,   155,   153,
-   340,   155,   157,   493,   493,   152,   298,   493,   156,   166,
-   166,   166,   248,   248,   166,   166,   166,   151,   155,   421,
-   421,   421,   301,   173,   166,   166,   249,   249,   154,   154,
-   154,   166,   150,   154,   304,   153,   153,   153,    18,    18,
-   153,   152,   152,   152,   167,   305,   152,   340,   340,   340,
-   154,   515,   515,   151,   151,   151,   308,   153,   151,   309,
-   238,   238,    81,   152,   238,   409,   167,   409,   150,   150,
-   150,   252,   252,   150,    57,   151,   173,   173,   173,   173,
-   167,   167,   167,   311,    81,   167,   167,   167,   168,    26,
-   150,    26,   313,    81,    81,   167,   167,   149,    81,    81,
-    81,   315,   167,    81,    81,    81,   169,   577,   577,   135,
-   168,    28,   316,    81,    81,    57,    57,   254,   254,   135,
-    81,    28,   211,   211,   168,   168,   168,   186,   169,   168,
-   168,   168,   184,   149,   149,   149,   321,   606,   149,   168,
-   168,   322,   169,   169,   169,   148,   168,   169,   169,   169,
-   325,   135,   326,    28,   183,   149,   109,   169,   169,   606,
-   135,   135,    28,    28,   169,   256,   256,    34,   606,   606,
-   611,   398,   398,   606,   606,   606,   182,    34,   606,   606,
-   606,   148,   148,   148,   189,   511,   148,   190,   606,   606,
-   348,   348,   611,   616,   191,   606,   261,   109,   109,   347,
-   347,   611,   611,   148,   192,   217,   611,   611,   611,    34,
-   258,   611,   611,   611,   181,   616,   623,   511,    34,    34,
-   179,   611,   611,   353,   616,   616,   511,   511,   611,   616,
-   616,   616,   346,   346,   616,   616,   616,   354,   623,   101,
-   355,   217,   217,   217,   616,   616,   217,   623,   623,   319,
-   356,   616,   623,   623,   623,   580,   357,   623,   623,   623,
-   358,   101,   178,   217,   319,   319,   319,   623,   623,   485,
-   580,   580,   580,   361,   623,   101,   101,   101,   345,   345,
-   101,   101,   101,   362,   485,   485,   485,   268,   268,   268,
-   101,   101,   609,   609,   609,   214,   363,   101,   214,   214,
-   214,   214,   364,   214,   214,   214,   365,   214,   214,   214,
-   214,    61,   344,   344,    61,    61,    61,   343,   343,    61,
-    61,    61,    61,    61,    61,    61,    61,   366,    61,   214,
-   214,   214,   102,   626,   626,   214,   102,   240,   240,   102,
-   102,   102,   102,   176,   102,   102,   102,   102,   102,   102,
-   102,   102,   102,   102,   250,   250,   250,   369,   370,   250,
-   417,   417,   417,   250,   250,   250,   250,   257,   257,   257,
-   371,   372,   257,   573,   573,   573,   257,   257,   257,   257,
-   253,   253,   253,   373,   374,   253,   571,   571,   571,   253,
-   253,   253,   253,   255,   255,   255,   175,   392,   255,   491,
-   491,   491,   255,   255,   255,   255,   241,   393,   241,   241,
-   397,   193,   241,   234,   234,   234,   234,   239,   239,   239,
-   239,    96,    96,    96,    96,   614,   614,   614,   614,   235,
-   235,   235,   235,   231,   231,   231,   231,   232,   232,   232,
-   232,   233,   233,   233,   233,   628,   628,   628,   628,   147,
-   138,   137,   114,   107,   405,    91,   407,   408,   196,    88,
-   412,   414,   416,   199,   418,    84,    75,    70,    67,    60,
-    53,    51,   432,   433,   434,   435,   442,   443,   450,   451,
-   458,    48,   461,   462,    47,    41,   487,   489,   490,   201,
-   492,    35,   494,   495,   496,   497,   498,   499,   500,   501,
-   503,   505,   507,   509,   510,    33,   512,   514,   202,    27,
-   517,   246,    24,    20,   534,   535,   538,   539,   540,   541,
-   542,   203,   548,   550,   552,   554,   556,   558,   564,    16,
-   569,   570,   244,   572,   205,   242,   266,    13,   581,   582,
-   591,   594,   600,   601,   602,   603,   228,   607,   212,     8,
-   613,     6,   615,     5,   617,   618,   619,     3,     2,   624,
-   625,   213,   543 ]
+   526,   358,    88,   403,    83,   565,   402,   400,   401,    61,
+   144,   524,    92,   526,   160,     5,   476,    95,   261,   476,
+    23,    40,   476,   476,    99,   390,   426,   266,   526,   266,
+    16,   261,   144,   424,    95,     5,   526,   526,   350,   526,
+   526,    99,   458,   524,    61,   422,   160,   390,    23,    40,
+    83,   526,   526,   526,    92,    92,   526,   526,   526,   526,
+   358,   526,   526,   526,    54,   526,   526,   526,   526,   526,
+   458,   403,   400,   402,   401,   476,   226,   226,   458,   458,
+    88,   458,   458,   458,    54,   426,   526,   526,   526,   526,
+   565,   424,   526,   458,   458,   458,   350,   619,   458,   458,
+   458,   458,   422,   458,   458,   458,    54,   458,   458,   458,
+   458,   458,   226,   348,     0,    54,    54,   619,   252,   252,
+    54,    54,    54,   163,   408,    54,    54,    54,   458,   458,
+   458,   458,   420,     0,   458,    54,    54,   224,   224,   619,
+   318,   318,    54,   163,   190,   260,   227,   227,   346,   226,
+   226,    69,   189,   619,   619,   619,   318,   260,   619,   619,
+   619,   220,   220,    49,   409,   163,   218,   218,   619,   619,
+   348,   222,   222,   224,   398,   619,   318,   408,   243,   163,
+   163,   163,   227,    49,   163,   163,   163,   243,   420,    85,
+    85,   399,    85,    85,   163,   163,    85,   220,    69,    85,
+    85,   163,   218,   570,   346,   172,   172,   222,   172,   172,
+   224,   224,   172,   318,   318,   172,   172,   514,   245,   227,
+   227,   172,   249,   249,   262,    85,   409,   409,   245,   168,
+   398,   398,   398,    34,   220,   220,   143,    13,   262,   218,
+   218,   172,   428,    34,   222,   222,   135,   188,   399,   399,
+   188,   168,   399,   188,   188,    13,   135,    85,   143,   570,
+   570,   570,    85,    85,   269,   168,   168,   168,   514,   514,
+   168,   168,   168,   172,   151,    34,   270,   372,   172,   172,
+   168,   168,   217,   273,    34,    34,   274,   168,   135,   428,
+   428,   428,   167,   173,   188,   188,   188,   135,   135,   188,
+   131,   276,   247,   188,   188,   188,   188,   211,   211,    59,
+   151,   151,   151,   247,   167,   151,   166,    59,   217,   217,
+   217,   277,    81,   217,   372,   372,   372,    81,   167,   167,
+   167,   516,   151,   167,   167,   167,   516,    59,   166,   169,
+   217,   131,   131,   167,   167,   280,   173,   173,   173,   173,
+   167,   165,   166,   166,   166,    84,   282,   166,   166,   166,
+    84,   169,   283,   152,   241,   251,   251,   166,   166,   150,
+    57,   241,   241,   165,   166,   169,   169,   169,   149,   286,
+   169,   169,   169,   235,   235,   235,   235,   165,   165,   165,
+   169,   169,   165,   165,   165,   289,   148,   169,   293,   152,
+   152,   152,   165,   165,   152,   150,   150,   150,    79,   165,
+   150,    57,    57,   296,   149,   149,   149,   299,    12,   149,
+    12,   152,   239,   302,   239,   239,   620,   150,   239,   303,
+    79,   418,   148,   148,   148,   153,   149,   148,   305,    79,
+    79,   265,   265,   265,    79,    79,    79,   307,   620,    79,
+    79,    79,   338,   158,   148,   513,   513,   620,   620,    79,
+    79,   154,   620,   620,   620,   308,    79,   620,   620,   620,
+   310,   153,   153,   153,   253,   253,   153,   620,   620,   418,
+   418,    18,    18,   418,   620,   613,   255,   255,   510,   158,
+   158,   158,   312,   153,   158,   574,   574,   154,   154,   154,
+   338,   338,   154,   155,   338,   315,   406,   613,   406,   156,
+   316,   158,   606,   606,   606,   157,   613,   613,   317,   154,
+   510,   613,   613,   613,   344,   344,   613,   613,   613,   510,
+   510,   267,   267,   609,   187,   267,   613,   613,   186,   155,
+   155,   155,   323,   613,   155,   156,   156,   156,   258,   258,
+   156,   157,   157,   157,   324,   609,   157,   604,   185,   488,
+   488,   155,    28,   488,   609,   609,   484,   156,   263,   609,
+   609,   609,    28,   157,   609,   609,   609,   343,   343,   604,
+   101,   484,   484,   484,   609,   609,   342,   342,   604,   604,
+   578,   609,   193,   604,   604,   604,   341,   341,   604,   604,
+   604,    26,   101,    26,    28,   578,   578,   578,   604,   604,
+   319,   340,   340,    28,    28,   604,   101,   101,   101,   339,
+   339,   101,   101,   101,   196,   319,   319,   319,   198,   416,
+   416,   101,   101,   416,   624,   624,   214,   259,   101,   214,
+   214,   214,   214,   199,   214,   214,   214,   183,   214,   214,
+   214,   214,   254,   254,   254,   238,   238,   254,   569,   569,
+   569,   254,   254,   254,   254,    93,    93,    93,    93,   214,
+   214,   214,   102,   182,   181,   214,   102,   351,   352,   102,
+   102,   102,   102,   353,   102,   102,   102,   102,   102,   102,
+   102,   102,   102,   102,    60,   354,   355,    60,    60,    60,
+   356,   180,    60,    60,    60,    60,    60,    60,    60,    60,
+   359,    60,   250,   250,   250,   360,   361,   250,   455,   455,
+   455,   250,   250,   250,   250,   257,   257,   257,   362,   363,
+   257,   497,   497,   497,   257,   257,   257,   257,   256,   256,
+   256,   364,   365,   256,   366,   367,   368,   256,   256,   256,
+   256,   612,   612,   612,   612,   268,   268,   268,   268,   231,
+   231,   231,   231,   232,   232,   232,   232,   233,   233,   233,
+   233,   234,   234,   234,   234,   626,   626,   626,   626,   369,
+   370,   179,   382,   383,   178,   393,   394,   176,   175,   145,
+   138,   137,   111,   404,   405,   201,   407,   106,    89,   410,
+   412,   415,    86,    82,    76,    70,    67,    63,    53,   429,
+   430,   431,   432,   433,   434,   441,   442,   202,   456,   457,
+    50,   460,   461,    45,    44,   486,   487,    38,   489,   490,
+   491,   492,   493,   494,   495,   496,   204,   498,   500,   502,
+   504,   506,   507,   509,    35,   512,   205,    33,   515,    27,
+   246,    24,   532,   533,   536,   537,   538,   539,   540,   541,
+    22,   546,   548,   550,   552,   554,   555,   563,   244,   567,
+   568,   212,   264,   242,   576,    14,   579,   580,   589,   593,
+   598,   599,   600,   601,   213,   605,   240,     8,   611,     6,
+     4,   614,   615,   616,   617,     3,     2,   622,   623,   228,
+   542 ]
 
 racc_action_pointer = [
-    13,   nil,   879,   897,    11,   875,   864,   nil,   889,   nil,
-   nil,   252,   nil,   849,    29,   nil,   861,   nil,   356,   nil,
-   823,    25,   nil,   nil,   827,   nil,   405,   818,   450,   nil,
-   nil,   nil,   nil,   813,   506,   781,   nil,   nil,   nil,   nil,
-   nil,   817,     1,   nil,   nil,   nil,   nil,   774,   810,   nil,
-   nil,   810,    -5,   763,   142,   nil,   nil,   403,   nil,   104,
-   801,   597,    -4,   nil,   nil,   nil,   nil,   765,   nil,   136,
-   758,   nil,   nil,   nil,   nil,   763,   nil,   nil,   nil,   nil,
-   210,   381,   nil,   262,   772,   -24,   237,     2,   712,   nil,
-   217,   749,   nil,   nil,   nil,   nil,   686,   202,   nil,   nil,
-   229,   558,   622,   nil,   nil,   nil,   nil,   782,   nil,   485,
-   nil,   nil,   nil,   nil,   741,   nil,   nil,   nil,   nil,   nil,
+   113,   nil,   877,   895,   872,    14,   862,   nil,   887,   nil,
+   nil,   nil,   394,   236,   847,   nil,    22,   nil,   459,   nil,
+   nil,   nil,   830,    19,   826,   nil,   577,   818,   561,   nil,
+   nil,   nil,   nil,   815,   232,   794,   nil,   nil,   819,   nil,
+     6,   nil,   nil,   nil,   774,   812,   nil,   nil,   nil,   140,
+   819,   nil,   nil,   761,    63,   nil,   nil,   359,   nil,   294,
+   640,    -6,   nil,   799,   nil,   nil,   nil,   763,   nil,   150,
+   756,   nil,   nil,   nil,   nil,   nil,   761,   nil,   nil,   387,
+   nil,   265,   770,   -29,   298,   183,   716,   nil,     1,   752,
+   nil,   nil,    -9,   590,   nil,   -12,   nil,   nil,   nil,    -5,
+   nil,   559,   622,   nil,   nil,   nil,   786,   nil,   nil,   nil,
+   nil,   741,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   448,   nil,   712,   761,   nil,
-   nil,   nil,   nil,   nil,   nil,   108,   104,   746,   464,   416,
-   351,   336,   324,   318,   311,   279,   269,   263,   212,   nil,
-   nil,   nil,     9,   nil,   230,    96,   292,   363,   407,   425,
-   nil,   nil,   203,   341,   nil,   681,   628,   nil,   547,   505,
-   nil,   499,   461,   439,   417,   nil,   412,   174,   239,   469,
-   472,   519,   489,   696,   nil,   nil,   743,   nil,   nil,   748,
-   nil,   774,   793,   806,   nil,   819,   nil,   nil,   nil,   nil,
-   nil,   420,   853,   866,   581,   nil,   nil,   524,   160,   nil,
-   182,   nil,   155,   nil,    71,   nil,    43,   138,   874,   nil,
-   nil,   698,   702,   706,   678,   694,   nil,   nil,   342,   701,
-   614,   690,   810,    85,   806,   172,   784,   142,   292,   306,
-   637,   225,   351,   663,   397,   676,   445,   650,   482,    73,
-   nil,   467,   -37,    65,   -35,   -29,   806,   176,   570,   nil,
-    -4,   114,   nil,   nil,    71,   113,   160,   167,   -19,   nil,
-   nil,   181,   202,   nil,   nil,   213,   nil,   281,   227,   nil,
-   nil,   240,   nil,   nil,   251,   nil,   nil,   nil,   263,   nil,
-   nil,   279,   nil,   nil,   319,   302,   nil,   nil,   341,   320,
-   nil,   368,   nil,   349,   nil,   386,   397,   nil,   185,   547,
-   nil,   414,   419,   nil,   nil,   433,   435,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   330,   nil,   201,   597,   592,   558,   512,   479,   470,   nil,
-   108,   nil,    97,   503,   517,   520,   530,   536,   540,   nil,
-    35,   553,   563,   576,   582,   586,   607,   nil,    17,   637,
-   638,   650,   651,   663,   664,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   112,   nil,   655,   714,   nil,   nil,   nil,   749,   448,   nil,
-   124,   164,     6,     7,     5,   730,     1,   733,   737,   351,
-   125,   nil,   786,   nil,   740,   nil,   742,   643,   744,   271,
-   nil,   302,   nil,   256,   nil,   104,   nil,    31,   nil,    24,
-   nil,    -9,   752,   747,   754,   748,   nil,   nil,   nil,   nil,
-   nil,   nil,   756,   749,   nil,   nil,   nil,   nil,   nil,   nil,
-   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,   785,    42,
-   nil,   789,   811,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-     7,   nil,   nil,   nil,   nil,   567,   nil,   766,   nil,   767,
-   768,   682,   770,   285,   772,   767,   774,   768,   776,   769,
-   778,   770,   nil,   780,   nil,   781,   nil,   782,   nil,   783,
-   808,   514,   759,   nil,   833,   339,   189,   821,   nil,   244,
-   nil,   nil,   nil,   nil,   nil,   nil,    -8,   nil,    -1,   nil,
-   nil,   nil,   nil,   nil,   761,   822,   nil,   nil,   844,   800,
-   789,   790,   791,   833,   nil,   nil,   nil,   nil,   802,   nil,
-   803,   nil,   804,   nil,   805,   nil,   806,   nil,   807,   nil,
-   nil,   nil,   nil,   nil,   829,   nil,   nil,     4,   nil,   841,
-   801,   669,   872,   656,   nil,   nil,   nil,   355,   nil,    10,
-   553,   817,   865,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   801,   nil,   nil,   821,   nil,   nil,   nil,   nil,   nil,
-   838,   869,   801,   828,   nil,   nil,   456,   842,   nil,   548,
-   nil,   489,   nil,   844,   690,   878,   512,   811,   812,   813,
-   nil,   114,   nil,   535,   813,   814,   589,   nil,   710,   nil,
-   nil,   nil,   nil ]
+   nil,   289,   nil,   nil,   nil,   245,   nil,   712,   761,   nil,
+   nil,   nil,   nil,   224,    -2,   746,   nil,   nil,   375,   357,
+   348,   253,   342,   414,   440,   482,   488,   494,   432,   nil,
+    13,   nil,   nil,   122,   nil,   330,   295,   271,   208,   318,
+   nil,   nil,   199,   271,   nil,   733,   732,   nil,   729,   726,
+   646,   619,   618,   592,   nil,   503,   483,   519,   237,    97,
+    89,   nil,   nil,   537,   nil,   nil,   569,   nil,   573,   588,
+   nil,   740,   762,   nil,   781,   791,   nil,   nil,   nil,   nil,
+   nil,   265,   836,   849,   582,   nil,   nil,   261,   160,   nil,
+   155,   nil,   165,   nil,   131,   nil,    70,   140,   887,   nil,
+   nil,   684,   688,   692,   696,   308,   nil,   nil,   592,   366,
+   821,   308,   807,   122,   801,   162,   782,   246,   nil,   162,
+   655,   305,    58,   414,   595,   426,   681,   668,   488,   568,
+    89,   -38,   168,   514,   802,   384,   -27,   473,   699,   231,
+   262,   nil,   nil,   240,   205,   nil,   265,   285,   nil,   nil,
+   290,   nil,   342,   339,   nil,   nil,   356,   nil,   nil,   372,
+   nil,   nil,   nil,   375,   nil,   nil,   390,   nil,   nil,   394,
+   nil,   nil,   368,   350,   nil,   383,   nil,   392,   442,   nil,
+   415,   nil,   469,   nil,   nil,   450,   455,   463,   134,   568,
+   nil,   nil,   nil,   480,   492,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   442,   559,
+   551,   536,   526,   517,   464,   nil,   138,   nil,   103,   nil,
+    28,   617,   618,   623,   635,   636,   640,   nil,    -9,   650,
+   655,   656,   668,   669,   681,   682,   684,   685,   686,   719,
+   720,   nil,   267,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,
+    13,   nil,   nil,   703,   753,   nil,   nil,   nil,   173,   190,
+     6,     7,     5,     2,   729,   734,   452,   733,   123,   163,
+   785,   nil,   739,   nil,   nil,   741,   571,   nil,   421,   nil,
+   122,   nil,    35,   nil,    23,   nil,    16,   nil,   232,   749,
+   744,   751,   745,   753,   746,   nil,   nil,   nil,   nil,   nil,
+   nil,   755,   747,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   661,   758,   784,    41,   nil,
+   788,   810,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,     6,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   524,   nil,   765,   766,   501,   768,
+   763,   770,   764,   772,   765,   774,   766,   674,   777,   nil,
+   778,   nil,   779,   nil,   780,   nil,   781,   782,   nil,   807,
+   477,   nil,   831,   403,   216,   819,   276,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -12,   nil,    -1,   nil,   nil,   nil,
+   nil,   nil,   760,   820,   nil,   nil,   768,   843,   799,   788,
+   789,   790,   831,   nil,   nil,   nil,   801,   nil,   802,   nil,
+   803,   nil,   804,   nil,   805,   806,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   828,   nil,     4,   nil,   840,   800,   601,
+   202,   nil,   nil,   nil,   404,   nil,   862,   nil,   548,   815,
+   863,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   799,
+   nil,   nil,   nil,   819,   nil,   nil,   nil,   nil,   836,   858,
+   868,   826,   nil,   nil,   536,   840,   429,   nil,   nil,   512,
+   nil,   842,   676,   464,   877,   869,   870,   871,   nil,    96,
+   405,   nil,   812,   813,   551,   nil,   700,   nil,   nil,   nil,
+   nil ]
 
 racc_action_default = [
-  -376,    -2,  -376,  -376,    -6,  -376,   -13,    -4,  -376,    -5,
-    -7,  -376,    -1,  -376,  -376,   633,  -376,   -12,  -376,    -9,
-   -18,  -376,   -15,   -14,  -376,    -8,  -376,   -21,  -376,   -17,
-   -16,   -11,   -10,  -376,  -376,  -112,   -89,   -19,   -90,   -20,
-  -108,  -376,  -376,   -98,   -99,  -100,  -146,  -376,  -376,  -147,
-   -87,   -94,   -88,   -82,  -376,   -22,   -23,  -376,  -110,  -376,
-  -376,  -376,  -376,  -104,  -109,  -101,   -95,  -376,   -91,  -376,
-  -376,  -281,  -282,   -25,   -24,  -284,  -248,  -152,   -26,  -253,
-  -376,   -27,  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,
-  -376,  -376,  -167,  -283,  -274,  -271,  -251,   -31,  -286,  -272,
-  -289,  -376,  -112,   -96,   -93,  -113,   -97,  -376,  -111,  -376,
-  -191,  -122,  -204,  -123,  -376,  -217,  -124,  -230,  -125,  -126,
-  -247,  -127,  -128,  -129,  -182,  -130,  -183,  -187,  -148,  -121,
-  -102,  -105,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -153,
-  -168,  -249,  -373,  -154,  -169,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -256,
-  -255,   -30,  -376,  -259,  -376,  -376,  -376,  -376,  -376,  -376,
-   -32,  -288,  -376,  -376,  -144,  -133,  -122,  -145,  -134,  -123,
-  -116,  -135,  -124,  -136,  -125,  -243,  -137,  -126,  -376,  -138,
-  -127,  -376,  -139,  -128,  -117,  -140,  -129,  -118,  -141,  -119,
-  -142,  -131,  -120,  -148,  -143,  -132,  -114,  -106,  -107,   -85,
-   -86,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
+  -376,    -2,  -376,  -376,  -376,    -6,   -13,    -4,  -376,    -1,
+    -5,    -7,  -376,  -376,  -376,   631,  -376,   -12,  -376,    -9,
+   -15,   -14,   -18,  -376,  -376,    -8,  -376,   -21,  -376,   -17,
+   -16,   -11,   -10,  -376,  -376,  -112,   -90,  -108,  -376,   -20,
+  -376,   -98,   -99,  -100,  -376,  -376,  -146,   -87,  -147,   -88,
+   -94,   -89,   -19,   -82,  -376,   -23,   -22,  -376,  -110,  -376,
+  -376,  -376,  -104,  -376,  -109,  -101,   -91,  -376,   -95,  -376,
+  -376,  -282,   -24,  -248,   -26,   -25,  -284,  -253,  -152,   -27,
+  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,  -376,  -376,
+  -283,  -274,  -376,  -251,  -167,   -31,  -286,  -271,  -272,  -289,
+  -281,  -376,  -112,   -93,  -113,   -97,  -376,   -96,  -111,  -191,
+  -123,  -376,  -204,  -124,  -217,  -125,  -230,  -126,  -127,  -247,
+  -128,  -129,  -130,  -182,  -183,  -121,  -187,  -148,  -122,  -102,
+  -105,  -376,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -249,
+  -373,  -153,  -168,  -376,  -376,  -376,  -154,  -169,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -30,
+  -376,  -256,  -255,  -376,  -259,  -376,  -376,  -376,  -376,  -376,
+   -32,  -288,  -376,  -376,  -145,  -134,  -123,  -116,  -135,  -124,
+  -136,  -125,  -137,  -126,  -243,  -138,  -127,  -376,  -376,  -139,
+  -128,  -117,  -140,  -129,  -118,  -141,  -119,  -142,  -131,  -120,
+  -143,  -132,  -148,  -144,  -133,  -122,  -114,  -107,  -106,   -86,
+   -85,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
   -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -376,  -307,
   -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -115,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -115,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -63,
-  -376,  -376,   -62,   -33,  -290,   -34,  -376,  -376,  -357,  -336,
-  -322,  -317,  -310,  -343,  -328,  -316,  -334,  -376,  -313,   -54,
-  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,  -331,   -57,
-  -342,  -337,  -312,   -58,  -353,  -344,  -318,   -59,  -354,  -340,
-  -324,  -348,   -60,  -350,  -330,  -311,  -347,   -61,  -376,  -376,
-  -171,  -376,  -376,  -155,  -157,  -376,  -376,  -185,  -172,  -170,
-  -189,  -186,  -184,  -193,  -190,  -188,  -206,  -194,  -192,  -166,
-  -376,  -181,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -203,
-  -376,  -216,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -229,
+  -376,   -33,   -62,   -34,  -290,   -63,  -376,  -376,  -343,  -328,
+  -316,  -334,  -376,  -313,   -54,  -323,  -319,   -55,  -329,  -325,
+   -56,  -375,  -335,  -331,   -57,  -342,  -337,  -312,   -58,  -344,
+  -318,   -59,  -353,  -340,  -324,  -348,   -60,  -354,  -350,  -330,
+  -311,   -61,  -357,  -336,  -322,  -317,  -310,  -347,  -376,  -376,
+  -185,  -170,  -172,  -376,  -376,  -189,  -186,  -184,  -193,  -190,
+  -188,  -206,  -194,  -192,  -219,  -207,  -205,  -181,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -203,  -376,  -216,  -376,  -229,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -242,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -219,  -207,  -205,  -232,  -220,
-  -218,  -233,  -231,  -246,  -244,  -150,  -245,  -151,  -149,  -156,
-  -376,   -29,   -68,  -376,   -64,   -28,  -258,  -376,  -376,  -257,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -303,  -376,  -308,  -152,  -304,  -376,  -376,  -376,  -376,
-  -164,  -376,  -179,  -376,  -201,  -376,  -214,  -376,  -227,  -376,
-  -240,  -376,  -376,  -376,  -376,  -376,  -163,  -178,  -200,  -213,
-  -226,  -239,  -376,  -376,  -165,  -180,  -202,  -215,  -228,  -241,
-  -376,  -376,  -162,  -177,  -199,  -212,  -225,  -238,  -376,  -376,
-   -69,  -376,  -376,  -359,  -358,  -314,  -315,  -321,  -320,  -327,
-  -326,  -333,  -332,  -339,  -338,  -355,  -346,  -345,  -356,  -341,
-  -376,  -349,  -352,  -351,  -306,  -376,  -158,  -376,  -173,  -376,
+  -376,  -166,  -376,  -232,  -220,  -218,  -233,  -231,  -246,  -244,
+  -150,  -245,  -376,  -376,  -156,  -151,  -149,  -171,  -157,  -155,
+  -376,   -29,   -64,   -68,  -376,   -28,  -258,  -257,  -376,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -195,  -376,  -208,  -376,  -221,  -376,  -234,  -376,
-  -376,  -376,  -305,   -53,   -44,  -376,  -376,   -31,   -72,  -310,
-   -70,   -36,   -37,  -372,   -38,   -39,  -360,   -40,  -376,  -367,
-  -363,   -41,  -366,   -42,  -369,  -376,   -35,   -43,  -376,  -376,
-  -376,  -376,  -376,  -376,  -309,  -160,  -175,  -159,  -376,  -174,
-  -376,  -196,  -376,  -209,  -376,  -222,  -376,  -235,  -376,  -197,
-  -210,  -223,  -236,   -66,  -376,   -49,   -67,  -305,   -52,   -50,
-  -376,  -376,  -376,  -376,   -44,   -71,   -65,  -376,  -370,  -376,
-  -376,  -292,  -376,  -161,  -176,  -198,  -211,  -224,  -237,   -45,
-   -47,  -376,   -51,  -365,  -376,  -364,  -362,  -361,  -368,  -371,
-   -73,  -376,  -295,  -376,  -291,   -46,  -376,   -75,  -294,  -376,
-  -293,   -74,   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,
-   -78,  -376,   -48,   -76,  -376,  -376,  -376,   -81,   -79,  -299,
-  -300,  -301,  -302 ]
+  -376,  -308,  -152,  -304,  -303,  -376,  -376,  -179,  -376,  -201,
+  -376,  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -178,  -200,  -213,  -226,  -239,
+  -163,  -376,  -376,  -180,  -202,  -215,  -228,  -241,  -165,  -177,
+  -199,  -212,  -225,  -238,  -162,  -376,  -376,  -376,  -376,   -69,
+  -376,  -376,  -315,  -314,  -320,  -321,  -327,  -326,  -333,  -332,
+  -339,  -338,  -346,  -345,  -355,  -341,  -376,  -349,  -356,  -352,
+  -351,  -359,  -358,  -306,  -376,  -173,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -195,
+  -376,  -208,  -376,  -221,  -376,  -234,  -376,  -376,  -158,  -376,
+  -376,   -53,   -44,  -376,  -376,   -31,  -310,   -72,   -70,   -35,
+   -37,   -38,  -372,   -39,  -360,   -40,  -376,  -363,   -41,  -367,
+  -366,   -42,  -369,  -376,   -36,   -43,  -305,  -376,  -376,  -376,
+  -376,  -376,  -376,  -309,  -175,  -174,  -376,  -196,  -376,  -209,
+  -376,  -222,  -376,  -235,  -376,  -376,  -159,  -197,  -210,  -223,
+  -236,  -160,   -66,  -376,   -67,  -305,   -52,   -50,  -376,  -376,
+  -376,   -44,   -71,   -65,  -376,  -370,  -376,   -49,  -376,  -292,
+  -376,  -176,  -198,  -211,  -224,  -237,  -161,   -45,   -47,  -376,
+   -51,  -365,  -364,  -376,  -362,  -361,  -368,  -371,   -73,  -295,
+  -376,  -376,  -291,   -46,  -376,   -75,  -376,  -294,  -293,   -74,
+   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,   -78,  -376,
+   -76,   -48,  -376,  -376,  -376,   -81,   -79,  -299,  -300,  -301,
+  -302 ]
 
 racc_goto_table = [
-    96,   111,   160,   161,   116,   177,   412,   123,   273,    48,
-    37,   199,   269,   172,   520,    48,    55,   114,    64,    65,
-   103,   122,   104,    91,    76,   620,    19,    96,     3,    68,
-   392,    63,   528,    59,   113,    97,    68,   620,   107,   611,
-   121,    32,   176,   118,   132,   182,   131,   173,   196,   623,
-    91,   141,   287,   615,   607,   275,    62,   119,   180,   271,
-   460,   218,   193,   220,    81,   222,   206,   224,   191,   226,
-   227,   194,   103,   197,   207,   179,   394,    64,    65,    78,
-   202,   190,   483,   575,   184,   216,    74,   219,    18,   221,
-   107,   223,    10,   225,     2,   136,    70,    53,   187,    33,
-   201,   205,   175,   178,   181,   183,   186,   189,   192,   195,
-   173,   231,   232,   233,   234,   235,    48,   209,   198,   200,
-   204,   174,    27,    20,   163,   137,    13,     6,   248,   318,
-   215,   582,   601,     5,   256,   544,   595,   577,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   254,   nil,
-   nil,   nil,   nil,   nil,   282,   nil,   nil,   nil,   nil,   nil,
-   nil,   249,   nil,   nil,   nil,   nil,   nil,   252,   nil,   nil,
-   nil,   nil,   nil,   384,   nil,   386,   nil,   nil,   nil,   323,
-   nil,   nil,   nil,   327,   251,   nil,   332,   285,   nil,   nil,
-   343,   nil,   nil,   353,   nil,   361,   348,   369,   nil,   358,
-   nil,   366,   nil,   374,   nil,   nil,   nil,   378,   389,   382,
-   347,   320,   nil,   357,   329,   365,   nil,   373,   375,   nil,
-   nil,   nil,   380,   344,   330,   336,   354,   335,   362,   346,
-   370,   nil,   356,   nil,   364,   nil,   372,   nil,   377,   nil,
-   333,   nil,   nil,   338,   nil,   nil,   345,   nil,   nil,   355,
-   nil,   363,   nil,   371,   nil,   nil,   518,   nil,   nil,   411,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   602,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   416,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    93,   128,   162,    45,   174,   159,   113,   410,   271,    45,
+    52,   196,   107,   115,   172,   103,    56,   518,   121,   275,
+    89,    65,    64,   111,    73,    93,    66,    19,   618,    95,
+     3,   609,   106,    62,   393,   526,    66,   120,    59,   618,
+   620,    32,   282,   205,   132,    89,   110,   173,   179,   139,
+   130,   614,   605,   273,   118,   181,    61,   270,   459,    79,
+   193,   206,   218,   187,   220,   177,   222,   191,   224,   194,
+   226,   227,   216,    74,   219,   199,   221,   117,   223,   190,
+   225,   392,    65,    64,   480,   572,   107,    72,   176,   208,
+    18,    11,     2,   136,    70,    53,   186,    33,   198,   201,
+   204,   175,   178,   180,   182,   185,   106,   189,   192,   231,
+    45,   173,   232,   233,   234,   235,   195,   210,   197,   183,
+   200,   203,    27,    22,   164,   137,    14,     6,   215,   258,
+   318,   580,   600,     4,   543,   592,   574,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   255,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   316,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,
+   nil,   379,   nil,   381,   249,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   252,   nil,   320,   nil,   nil,   327,   nil,   nil,
+   nil,   344,   nil,   325,   nil,   356,   330,   364,   370,   nil,
+   280,   nil,   nil,   nil,   nil,   251,   384,   nil,   343,   389,
+   nil,   nil,   355,   nil,   363,   369,   nil,   373,   nil,   377,
+   nil,   nil,   nil,   334,   nil,   321,   nil,   342,   nil,   nil,
+   nil,   354,   nil,   362,   368,   nil,   339,   375,   331,   nil,
+   351,   336,   359,   365,   341,   nil,   nil,   nil,   353,   nil,
+   361,   367,   nil,   387,   nil,   517,   nil,   nil,   nil,   328,
+   414,   nil,   333,   nil,   nil,   nil,   599,   340,   nil,   nil,
+   nil,   352,   nil,   360,   366,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   479,   nil,   nil,   450,   418,   nil,   nil,   nil,   nil,
-   442,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   434,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   465,   464,   nil,   nil,   nil,   nil,   432,   nil,   nil,   nil,
-   nil,   nil,   477,   nil,   nil,   nil,   nil,   487,   nil,   nil,
-   nil,   490,   nil,   nil,   474,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   468,   nil,   nil,   500,   nil,   nil,
-   nil,   nil,   472,   nil,   nil,   nil,   nil,   nil,   nil,   498,
-   nil,   nil,   489,   nil,   nil,   nil,   492,   509,   470,   519,
-   nil,   nil,   nil,   507,   nil,   nil,   496,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   505,   nil,   nil,   nil,   nil,   nil,
-   nil,   494,   nil,   nil,   nil,   411,   256,   565,   nil,   503,
-   nil,   548,   285,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   517,   nil,   nil,   nil,   nil,   nil,   nil,   558,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   556,
-   nil,   nil,   nil,   nil,   nil,   nil,   550,   nil,   519,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   554,   nil,   nil,   nil,
-   nil,   nil,   591,   nil,   nil,   nil,   348,   358,   366,   374,
-   nil,   552,    48,   564,   nil,   nil,   567,   569,   nil,   nil,
-   nil,   285,   nil,   nil,   nil,   nil,   605,   nil,   nil,   517,
-   nil,   594,   nil,   597,   nil,   nil,   nil,   nil,   nil,   nil,
-   411,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   475,   nil,   nil,
+   nil,   nil,   nil,   456,   nil,   nil,   441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   415,   nil,   nil,   433,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   463,
+   nil,   nil,   431,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   482,   nil,   nil,   nil,   nil,
+   nil,   473,   nil,   429,   nil,   nil,   nil,   nil,   nil,   498,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   471,
+   nil,   nil,   nil,   nil,   495,   464,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   469,   507,   nil,   nil,   516,
+   506,   493,   486,   nil,   487,   nil,   nil,   nil,   nil,   nil,
+   nil,   504,   nil,   nil,   nil,   nil,   491,   467,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   414,   502,   nil,   nil,   nil,
+   nil,   nil,   nil,   515,   255,   nil,   nil,   489,   555,   nil,
+   nil,   nil,   nil,   nil,   280,   nil,   nil,   500,   nil,   nil,
+   nil,   nil,   nil,   nil,   554,   577,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   516,   nil,   nil,
+   nil,   552,   nil,   nil,   546,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   589,    45,   550,   nil,   565,   567,
+   nil,   nil,   563,   nil,   nil,   nil,   nil,   343,   355,   363,
+   369,   515,   nil,   603,   nil,   nil,   nil,   548,   nil,   nil,
+   593,   595,   280,   nil,   nil,   nil,   nil,   nil,   nil,   414,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   628 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   626 ]
 
 racc_goto_check = [
-    56,    81,    34,    22,    83,   104,   115,    88,    24,    23,
-    15,    78,    48,   109,    26,    23,    15,    71,    72,    66,
-    59,    87,    62,    55,   105,    54,    14,    56,     1,    60,
-    51,    69,    50,    58,    82,    23,    60,    54,    23,    53,
-    86,    14,    81,    84,    60,    83,    69,    56,    88,    53,
-    55,   105,    39,    37,    36,    25,    68,    85,    71,    20,
-    52,   109,    87,   109,    18,   109,    74,   109,    75,   109,
-   109,    76,    59,    77,    62,    82,    48,    72,    66,    17,
-    79,    86,    80,    26,    84,   110,    16,   110,    13,   110,
-    23,   110,    12,   110,    11,    10,     9,     8,    85,     7,
-    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-    56,    56,    56,    56,    56,    56,    23,    15,   100,   101,
-   102,   103,     6,     5,   106,   108,     4,     3,    81,   109,
-   112,   113,   114,     2,    88,   116,   127,   129,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,   nil,
-   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,   nil,
-   nil,    82,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,
-   nil,   nil,   nil,    78,   nil,    78,   nil,   nil,   nil,    81,
-   nil,   nil,   nil,    83,    85,   nil,    83,    82,   nil,   nil,
-    81,   nil,   nil,    81,   nil,    81,    88,    81,   nil,    88,
-   nil,    88,   nil,    88,   nil,   nil,   nil,    88,    81,    88,
-    87,    82,   nil,    87,    82,    87,   nil,    87,    87,   nil,
-   nil,   nil,    87,    82,    84,    86,    82,    84,    82,    86,
-    82,   nil,    86,   nil,    86,   nil,    86,   nil,    86,   nil,
-    85,   nil,   nil,    85,   nil,   nil,    85,   nil,   nil,    85,
-   nil,    85,   nil,    85,   nil,   nil,    24,   nil,   nil,    81,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   115,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    56,    81,    34,    23,   104,    22,    83,   115,    24,    23,
+    15,    78,    59,    84,   109,    62,    15,    26,    88,    48,
+    55,    66,    72,    71,   105,    56,    60,    14,    54,    23,
+     1,    53,    23,    69,    51,    50,    60,    87,    58,    54,
+    53,    14,    39,    81,    60,    55,    82,    56,    83,   105,
+    69,    37,    36,    25,    86,    84,    68,    20,    52,    18,
+    88,    74,   109,    75,   109,    71,   109,    76,   109,    77,
+   109,   109,   110,    17,   110,    79,   110,    85,   110,    87,
+   110,    48,    66,    72,    80,    26,    59,    16,    82,    62,
+    13,    12,    11,    10,     9,     8,    86,     7,    90,    91,
+    92,    93,    94,    95,    96,    97,    23,    98,    99,    56,
+    23,    56,    56,    56,    56,    56,   100,    15,   101,    85,
+   102,   103,     6,     5,   106,   108,     4,     3,   112,    81,
+   109,   113,   114,     2,   116,   127,   129,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,
+   nil,    78,   nil,    78,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    86,   nil,    83,   nil,   nil,    83,   nil,   nil,
+   nil,    81,   nil,    84,   nil,    81,    84,    81,    81,   nil,
+    82,   nil,   nil,   nil,   nil,    85,    81,   nil,    88,    81,
+   nil,   nil,    88,   nil,    88,    88,   nil,    88,   nil,    88,
+   nil,   nil,   nil,    87,   nil,    82,   nil,    87,   nil,   nil,
+   nil,    87,   nil,    87,    87,   nil,    82,    87,    86,   nil,
+    82,    86,    82,    82,    86,   nil,   nil,   nil,    86,   nil,
+    86,    86,   nil,    82,   nil,    24,   nil,   nil,   nil,    85,
+    81,   nil,    85,   nil,   nil,   nil,   115,    85,   nil,   nil,
+   nil,    85,   nil,    85,    85,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   104,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
-    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,    83,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,
-   nil,   nil,    88,   nil,   nil,   nil,   nil,    81,   nil,   nil,
-   nil,    81,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    82,   nil,   nil,    88,   nil,   nil,
-   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,    87,
-   nil,   nil,    82,   nil,   nil,   nil,    82,    88,    85,    81,
-   nil,   nil,   nil,    87,   nil,   nil,    86,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
-   nil,    85,   nil,   nil,   nil,    81,    88,    22,   nil,    85,
-   nil,    81,    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    23,   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   104,   nil,   nil,
+   nil,   nil,   nil,    81,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    87,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
+   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,   nil,
+   nil,    88,   nil,    85,   nil,   nil,   nil,   nil,   nil,    81,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
-   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,    81,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,
-   nil,   nil,    22,   nil,   nil,   nil,    88,    88,    88,    88,
-   nil,    85,    23,    15,   nil,   nil,    23,    23,   nil,   nil,
-   nil,    82,   nil,   nil,   nil,   nil,    34,   nil,   nil,    23,
-   nil,    81,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    86,    81,   nil,   nil,    81,
+    88,    87,    82,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,    87,   nil,   nil,   nil,   nil,    86,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,    86,   nil,   nil,   nil,
+   nil,   nil,   nil,    23,    88,   nil,   nil,    85,    81,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,    88,    22,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
+   nil,    87,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    22,    23,    86,   nil,    23,    23,
+   nil,   nil,    15,   nil,   nil,   nil,   nil,    88,    88,    88,
+    88,    23,   nil,    34,   nil,   nil,   nil,    85,   nil,   nil,
+    81,    81,    82,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    56 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    56 ]
 
 racc_goto_pointer = [
-   nil,    28,   133,   127,   120,   110,   102,    72,    64,    43,
-    25,    94,    88,    77,    15,   -18,    32,    25,    10,   nil,
-  -152,   nil,   -85,   -19,  -203,  -156,  -445,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   -85,   nil,  -546,  -554,   nil,  -162,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -199,   nil,
-  -427,  -244,  -332,  -567,  -586,   -31,   -54,   nil,    -9,   -37,
-   -23,   nil,   -35,   nil,   nil,   nil,   -29,   nil,     9,   -16,
-   nil,   -44,   -30,   nil,   -41,   -34,   -31,   -29,   -91,   -22,
-  -328,   -60,   -27,   -57,   -18,    -4,   -21,   -40,   -54,   nil,
-    -2,    -1,     0,     1,     2,     3,     4,     5,     6,     7,
-    16,    17,    18,    19,   -97,   -30,    34,   nil,    50,   -88,
-   -63,   nil,   -17,  -408,  -448,  -313,  -350,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -435,   nil,  -397 ]
+   nil,    30,   133,   127,   120,   109,   100,    70,    62,    41,
+    23,    92,    86,    78,    15,   -18,    33,    19,     5,   nil,
+  -154,   nil,   -81,   -25,  -203,  -158,  -441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -86,   nil,  -546,  -554,   nil,  -172,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -192,   nil,
+  -423,  -240,  -335,  -573,  -581,   -34,   -54,   nil,    -2,   -45,
+   -23,   nil,   -42,   nil,   nil,   nil,   -24,   nil,    12,   -11,
+   nil,   -37,   -23,   nil,   -45,   -39,   -35,   -33,   -91,   -27,
+  -324,   -59,   -14,   -54,   -47,    17,    -6,   -23,   -42,   nil,
+    -4,    -3,    -2,    -1,     0,     1,     2,     3,     5,     6,
+    14,    16,    18,    19,   -98,   -30,    32,   nil,    49,   -87,
+   -76,   nil,   -17,  -407,  -446,  -312,  -350,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -434,   nil,  -396 ]
 
 racc_goto_default = [
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    84,
-   nil,    88,   nil,   142,   nil,   nil,   nil,   521,   522,   524,
-   525,   527,   531,   533,    93,   535,   nil,   nil,   512,   513,
-   289,   292,   295,   299,   303,   307,   312,   317,   nil,   270,
-   nil,   nil,   nil,   nil,   612,   613,   614,    50,    52,    36,
-    38,    41,   nil,   106,    43,    44,    45,    47,   nil,   nil,
-    60,   nil,    40,    42,   105,   nil,   nil,   nil,   nil,   nil,
-   129,    71,    72,   nil,   nil,   290,   293,   297,   300,   125,
-   311,   315,   281,   nil,   nil,   nil,   nil,   nil,   nil,   302,
-   306,   310,   314,   279,   283,   nil,    79,    82,    85,    86,
-    89,    94,    98,   nil,   nil,   nil,   413,   288,   291,   294,
-   298,   301,   305,   309,   313,   278,   526,   530,   532,   nil ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   534,   nil,    82,
+   nil,    86,   nil,   140,   nil,   nil,   nil,   519,   520,   521,
+   523,   525,   528,   531,    90,   533,   nil,   nil,   536,   511,
+   284,   287,   290,   294,   298,   301,   306,   311,   nil,   269,
+   nil,   nil,   nil,   nil,   610,   611,   612,    47,    49,    51,
+    36,    38,   nil,   105,    41,    42,    43,    44,   nil,   nil,
+    63,   nil,    37,    40,   104,   nil,   nil,   nil,   nil,   nil,
+   125,   100,    71,   nil,   nil,   285,   288,   292,   295,   122,
+   305,   310,   315,   nil,   nil,   nil,   nil,   nil,   nil,   297,
+   300,   304,   309,   313,   278,   nil,    77,    80,    83,    85,
+    87,    91,    96,   nil,   nil,   nil,   411,   283,   286,   289,
+   293,   296,   299,   303,   308,   312,   524,   527,   530,   nil ]
 
 racc_token_table = {
@@ -1670,5 +1687,5 @@
  :Left_parenthesis_code => 21,
  :Right_parenthesis_code => 22,
- ";" => 23,
+ :Semicolon_code => 23,
  :SYM_ADL_VERSION => 24,
  :V_VERSION_STRING => 25,
@@ -1730,20 +1747,19 @@
  :SYM_EXISTENCE => 81,
  :SYM_CARDINALITY => 82,
- :Semicolon_code => 83,
- :SYM_ORDERED => 84,
- :SYM_UNORDERED => 85,
- :SYM_UNIQUE => 86,
- :SYM_OCCURRENCES => 87,
- :V_ISO8601_DATE_CONSTRAINT_PATTERN => 88,
- :V_ISO8601_TIME_CONSTRAINT_PATTERN => 89,
- :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 90,
- :START_TERM_CODE_CONSTRAINT => 91,
- :END_TERM_CODE_CONSTRAINT => 92,
- :TERM_CODE => 93,
- :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 94 }
+ :SYM_ORDERED => 83,
+ :SYM_UNORDERED => 84,
+ :SYM_UNIQUE => 85,
+ :SYM_OCCURRENCES => 86,
+ :V_ISO8601_DATE_CONSTRAINT_PATTERN => 87,
+ :V_ISO8601_TIME_CONSTRAINT_PATTERN => 88,
+ :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 89,
+ :START_TERM_CODE_CONSTRAINT => 90,
+ :END_TERM_CODE_CONSTRAINT => 91,
+ :TERM_CODE => 92,
+ :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 93 }
 
 racc_use_result_var = true
 
-racc_nt_base = 95
+racc_nt_base = 94
 
 Racc_arg = [
@@ -1787,5 +1803,5 @@
 'Left_parenthesis_code',
 'Right_parenthesis_code',
-'";"',
+'Semicolon_code',
 'SYM_ADL_VERSION',
 'V_VERSION_STRING',
@@ -1847,5 +1863,4 @@
 'SYM_EXISTENCE',
 'SYM_CARDINALITY',
-'Semicolon_code',
 'SYM_ORDERED',
 'SYM_UNORDERED',
@@ -1886,4 +1901,5 @@
 'c_attributes',
 'c_object',
+'v_c_domain_type',
 'archetype_internal_ref',
 'archetype_slot',
@@ -1892,5 +1908,4 @@
 'c_ordinal',
 'c_primitive_object',
-'v_c_domain_type',
 'absolute_path',
 'c_archetype_slot_head',
@@ -2032,5 +2047,5 @@
  # reduce 18 omitted
 
-module_eval <<'.,.,', 'lib/parser.y', 73
+module_eval <<'.,.,', 'lib/parser.y', 74
   def _reduce_19( val, _values, result )
     result = {:language => val[1]}
@@ -2061,5 +2076,5 @@
  # reduce 30 omitted
 
-module_eval <<'.,.,', 'lib/parser.y', 110
+module_eval <<'.,.,', 'lib/parser.y', 111
   def _reduce_31( val, _values, result )
     result = {:c_complex_object_id => {:type_identifier => val[0]}}
@@ -2068,5 +2083,5 @@
 .,.,
 
-module_eval <<'.,.,', 'lib/parser.y', 114
+module_eval <<'.,.,', 'lib/parser.y', 115
   def _reduce_32( val, _values, result )
     result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
@@ -2145,7 +2160,17 @@
  # reduce 67 omitted
 
- # reduce 68 omitted
-
- # reduce 69 omitted
+module_eval <<'.,.,', 'lib/parser.y', 186
+  def _reduce_68( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 190
+  def _reduce_69( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 70 omitted
@@ -2195,9 +2220,14 @@
  # reduce 92 omitted
 
- # reduce 93 omitted
-
-module_eval <<'.,.,', 'lib/parser.y', 233
+module_eval <<'.,.,', 'lib/parser.y', 240
+  def _reduce_93( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[1]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 245
   def _reduce_94( val, _values, result )
-    @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
    result
   end
@@ -2228,5 +2258,10 @@
  # reduce 106 omitted
 
- # reduce 107 omitted
+module_eval <<'.,.,', 'lib/parser.y', 269
+  def _reduce_107( val, _values, result )
+    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 108 omitted
@@ -2256,23 +2291,73 @@
  # reduce 120 omitted
 
- # reduce 121 omitted
-
- # reduce 122 omitted
-
- # reduce 123 omitted
-
- # reduce 124 omitted
-
- # reduce 125 omitted
-
- # reduce 126 omitted
-
- # reduce 127 omitted
-
- # reduce 128 omitted
-
- # reduce 129 omitted
-
- # reduce 130 omitted
+module_eval <<'.,.,', 'lib/parser.y', 287
+  def _reduce_121( val, _values, result )
+    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 291
+  def _reduce_122( val, _values, result )
+    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 295
+  def _reduce_123( val, _values, result )
+    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 299
+  def _reduce_124( val, _values, result )
+    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 303
+  def _reduce_125( val, _values, result )
+    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 307
+  def _reduce_126( val, _values, result )
+    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 311
+  def _reduce_127( val, _values, result )
+    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 315
+  def _reduce_128( val, _values, result )
+    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 319
+  def _reduce_129( val, _values, result )
+    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 323
+  def _reduce_130( val, _values, result )
+    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 131 omitted
@@ -2306,11 +2391,21 @@
  # reduce 145 omitted
 
- # reduce 146 omitted
-
- # reduce 147 omitted
-
-module_eval <<'.,.,', 'lib/parser.y', 302
+module_eval <<'.,.,', 'lib/parser.y', 344
+  def _reduce_146( val, _values, result )
+    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 348
+  def _reduce_147( val, _values, result )
+    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 353
   def _reduce_148( val, _values, result )
-    @@log.info("V_STRING: #{val[0]} at #{@filename}")
+    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    result
   end
@@ -2479,5 +2574,10 @@
  # reduce 229 omitted
 
- # reduce 230 omitted
+module_eval <<'.,.,', 'lib/parser.y', 464
+  def _reduce_230( val, _values, result )
+    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 231 omitted
@@ -2595,7 +2695,17 @@
  # reduce 287 omitted
 
- # reduce 288 omitted
-
- # reduce 289 omitted
+module_eval <<'.,.,', 'lib/parser.y', 555
+  def _reduce_288( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 559
+  def _reduce_289( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 290 omitted
@@ -2767,5 +2877,10 @@
  # reduce 373 omitted
 
- # reduce 374 omitted
+module_eval <<'.,.,', 'lib/parser.y', 697
+  def _reduce_374( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 375 omitted
