Web: Add compute stage.
authorJohn Kessenich <cepheus@frii.com>
Thu, 10 Oct 2019 17:40:11 +0000 (11:40 -0600)
committerJohn Kessenich <cepheus@frii.com>
Wed, 23 Oct 2019 06:25:39 +0000 (00:25 -0600)
13 files changed:
SPIRV/GlslangToSpv.cpp
Test/baseResults/web.comp.out [new file with mode: 0644]
Test/web.comp [new file with mode: 0644]
Test/web.testlist
glslang/MachineIndependent/Initialize.cpp
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/Scan.cpp
glslang/MachineIndependent/ShaderLang.cpp
glslang/MachineIndependent/Versions.cpp
glslang/MachineIndependent/glslang.m4
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/localintermediate.h

index ae5f24d..762a292 100644 (file)
@@ -292,8 +292,8 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage)
     switch (stage) {
     case EShLangVertex:           return spv::ExecutionModelVertex;
     case EShLangFragment:         return spv::ExecutionModelFragment;
-#ifndef GLSLANG_WEB
     case EShLangCompute:          return spv::ExecutionModelGLCompute;
+#ifndef GLSLANG_WEB
     case EShLangTessControl:      return spv::ExecutionModelTessellationControl;
     case EShLangTessEvaluation:   return spv::ExecutionModelTessellationEvaluation;
     case EShLangGeometry:         return spv::ExecutionModelGeometry;
@@ -1489,12 +1489,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
 #endif
         break;
 
-#ifndef GLSLANG_WEB
     case EShLangCompute:
         builder.addCapability(spv::CapabilityShader);
         builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
                                                                            glslangIntermediate->getLocalSize(1),
                                                                            glslangIntermediate->getLocalSize(2));
+#ifndef GLSLANG_WEB
         if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) {
             builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV);
             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV);
@@ -1504,7 +1504,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV);
             builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives);
         }
+#endif
         break;
+#ifndef GLSLANG_WEB
     case EShLangTessEvaluation:
     case EShLangTessControl:
         builder.addCapability(spv::CapabilityTessellation);
@@ -7826,7 +7828,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n
 
     // We now know we have a specialization constant to build
 
-#ifndef GLSLANG_WEB
     // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants,
     // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ...
     if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) {
@@ -7841,7 +7842,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n
         }
         return builder.makeCompositeConstant(builder.makeVectorType(builder.makeUintType(32), 3), dimConstId, true);
     }
-#endif
 
     // An AST node labelled as specialization constant should be a symbol node.
     // Its initializer should either be a sub tree with constant nodes, or a constant union array.
diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out
new file mode 100644 (file)
index 0000000..e69de88
--- /dev/null
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.0
+; Generator: Khronos Glslang Reference Front End; 7
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 2 5 7
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %s "s"
+               OpName %arrX "arrX"
+               OpName %arrY "arrY"
+               OpName %arrZ "arrZ"
+               OpDecorate %19 SpecId 18
+               OpDecorate %21 SpecId 19
+       %void = OpTypeVoid
+          %3 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+%uint_197645 = OpConstant %uint 197645
+%_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645
+%_ptr_Function__arr_v4float_uint_197645 = OpTypePointer Function %_arr_v4float_uint_197645
+        %int = OpTypeInt 32 1
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+         %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %19 = OpSpecConstant %uint 2
+     %uint_5 = OpConstant %uint 5
+         %21 = OpSpecConstant %uint 7
+     %v3uint = OpTypeVector %uint 3
+         %23 = OpSpecConstantComposite %v3uint %19 %uint_5 %21
+     %uint_0 = OpConstant %uint 0
+%_arr_int_25 = OpTypeArray %int %25
+%_ptr_Private__arr_int_25 = OpTypePointer Private %_arr_int_25
+       %arrX = OpVariable %_ptr_Private__arr_int_25 Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+     %uint_1 = OpConstant %uint 1
+%_arr_int_34 = OpTypeArray %int %34
+%_ptr_Private__arr_int_34 = OpTypePointer Private %_arr_int_34
+       %arrY = OpVariable %_ptr_Private__arr_int_34 Private
+     %uint_2 = OpConstant %uint 2
+%_arr_int_42 = OpTypeArray %int %42
+%_ptr_Private__arr_int_42 = OpTypePointer Private %_arr_int_42
+       %arrZ = OpVariable %_ptr_Private__arr_int_42 Private
+ %int_197645 = OpConstant %int 197645
+       %main = OpFunction %void None %3
+          %5 = OpLabel
+          %s = OpVariable %_ptr_Function__arr_v4float_uint_197645 Function
+         %18 = OpAccessChain %_ptr_Function_v4float %s %int_3
+               OpStore %18 %16
+         %25 = OpCompositeExtract %uint %23 0
+         %31 = OpAccessChain %_ptr_Private_int %arrX %int_0
+         %32 = OpLoad %int %31
+         %34 = OpCompositeExtract %uint %23 1
+         %38 = OpAccessChain %_ptr_Private_int %arrY %int_0
+         %39 = OpLoad %int %38
+         %40 = OpIMul %int %32 %39
+         %42 = OpCompositeExtract %uint %23 2
+         %46 = OpAccessChain %_ptr_Private_int %arrZ %int_0
+         %47 = OpLoad %int %46
+         %48 = OpIMul %int %40 %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Function_v4float %s %int_3
+         %51 = OpLoad %v4float %50
+         %52 = OpVectorTimesScalar %v4float %51 %49
+         %53 = OpAccessChain %_ptr_Function_v4float %s %int_3
+               OpStore %53 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/Test/web.comp b/Test/web.comp
new file mode 100644 (file)
index 0000000..9cc23bf
--- /dev/null
@@ -0,0 +1,28 @@
+#version 310 es
+
+layout(local_size_x_id = 18, local_size_z_id = 19) in;
+
+layout(local_size_x = 2) in;
+layout(local_size_y = 5) in;
+layout(local_size_z = 7) in;
+const int total = gl_MaxComputeWorkGroupCount.x
+                + gl_MaxComputeWorkGroupCount.y
+                + gl_MaxComputeWorkGroupCount.z
+                + gl_MaxComputeUniformComponents
+                + gl_MaxComputeTextureImageUnits;
+
+shared vec4 s[total];
+
+int arrX[gl_WorkGroupSize.x];
+int arrY[gl_WorkGroupSize.y];
+int arrZ[gl_WorkGroupSize.z];
+
+void main()
+{
+    barrier();
+    memoryBarrier();
+    memoryBarrierShared();
+    groupMemoryBarrier();
+    s[3] = vec4(1.0);
+    s[3] *= arrX[0] * arrY[0] * arrZ[0];
+}
index 0d9de22..764c0c0 100644 (file)
@@ -6,3 +6,4 @@ web.operations.frag
 web.texture.frag
 web.array.frag
 web.separate.frag
+web.comp
index 3348309..cb3baf1 100644 (file)
@@ -3795,42 +3795,50 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
             "void EndPrimitive();"
             "\n");
     }
+#endif
 
     //============================================================================
     //
     // Prototypes for all control functions.
     //
     //============================================================================
+#ifdef GLSLANG_WEB
+    bool esBarrier = true;
+#else
     bool esBarrier = (profile == EEsProfile && version >= 310);
-    if ((profile != EEsProfile && version >= 150) || esBarrier)
-        stageBuiltins[EShLangTessControl].append(
-            "void barrier();"
-            );
+#endif
     if ((profile != EEsProfile && version >= 420) || esBarrier)
         stageBuiltins[EShLangCompute].append(
             "void barrier();"
             );
-    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
-        stageBuiltins[EShLangMeshNV].append(
-            "void barrier();"
-            );
-        stageBuiltins[EShLangTaskNV].append(
-            "void barrier();"
-            );
-    }
     if ((profile != EEsProfile && version >= 130) || esBarrier)
         commonBuiltins.append(
             "void memoryBarrier();"
             );
     if ((profile != EEsProfile && version >= 420) || esBarrier) {
+        stageBuiltins[EShLangCompute].append(
+            "void memoryBarrierShared();"
+            "void groupMemoryBarrier();"
+            );
+    }
+#ifndef GLSLANG_WEB
+    if ((profile != EEsProfile && version >= 420) || esBarrier) {
         commonBuiltins.append(
             "void memoryBarrierAtomicCounter();"
             "void memoryBarrierBuffer();"
             "void memoryBarrierImage();"
             );
-        stageBuiltins[EShLangCompute].append(
-            "void memoryBarrierShared();"
-            "void groupMemoryBarrier();"
+    }
+    if ((profile != EEsProfile && version >= 150) || esBarrier)
+        stageBuiltins[EShLangTessControl].append(
+            "void barrier();"
+            );
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
+        stageBuiltins[EShLangMeshNV].append(
+            "void barrier();"
+            );
+        stageBuiltins[EShLangTaskNV].append(
+            "void barrier();"
             );
     }
     if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
@@ -4279,6 +4287,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
 
             "\n");
     }
+#endif
 
     //============================================================================
     //
@@ -4308,6 +4317,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
             "\n");
     }
 
+#ifndef GLSLANG_WEB
     //============================================================================
     //
     // Define the interface to the mesh/task shader.
@@ -6300,9 +6310,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
             s.append(builtInConstant);
         }
 
-#ifdef GLSLANG_WEB
-    }
-#else
+#ifndef GLSLANG_WEB
         if (version >= 310) {
             // geometry
 
@@ -6584,8 +6592,29 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
             snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents);
             s.append(builtInConstant);
         }
+#endif
+    }
+
+    // compute
+    if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) {
+        snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX,
+                                                                                                         resources.maxComputeWorkGroupCountY,
+                                                                                                         resources.maxComputeWorkGroupCountZ);
+        s.append(builtInConstant);
+        snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX,
+                                                                                                        resources.maxComputeWorkGroupSizeY,
+                                                                                                        resources.maxComputeWorkGroupSizeZ);
+        s.append(builtInConstant);
+
+        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents);
+        s.append(builtInConstant);
+        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits);
+        s.append(builtInConstant);
+
+        s.append("\n");
     }
 
+#ifndef GLSLANG_WEB
     // images (some in compute below)
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 130)) {
@@ -6601,6 +6630,18 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
         s.append(builtInConstant);
     }
 
+    // compute
+    if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) {
+        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms);
+        s.append(builtInConstant);
+        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters);
+        s.append(builtInConstant);
+        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers);
+        s.append(builtInConstant);
+
+        s.append("\n");
+    }
+
     // atomic counters (some in compute below)
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 420)) {
@@ -6638,31 +6679,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
         s.append("\n");
     }
 
-    // compute
-    if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) {
-        snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX,
-                                                                                                         resources.maxComputeWorkGroupCountY,
-                                                                                                         resources.maxComputeWorkGroupCountZ);
-        s.append(builtInConstant);
-        snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX,
-                                                                                                        resources.maxComputeWorkGroupSizeY,
-                                                                                                        resources.maxComputeWorkGroupSizeZ);
-        s.append(builtInConstant);
-
-        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents);
-        s.append(builtInConstant);
-        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits);
-        s.append(builtInConstant);
-        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms);
-        s.append(builtInConstant);
-        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters);
-        s.append(builtInConstant);
-        snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers);
-        s.append(builtInConstant);
-
-        s.append("\n");
-    }
-
     // GL_ARB_cull_distance
     if (profile != EEsProfile && version >= 450) {
         snprintf(builtInConstant, maxSize, "const int gl_MaxCullDistances = %d;",                resources.maxCullDistances);
@@ -7547,7 +7563,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 #endif
         break;
 
-#ifndef GLSLANG_WEB
     case EShLangCompute:
         BuiltInVariable("gl_NumWorkGroups",         EbvNumWorkGroups,        symbolTable);
         BuiltInVariable("gl_WorkGroupSize",         EbvWorkGroupSize,        symbolTable);
@@ -7556,6 +7571,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
         BuiltInVariable("gl_GlobalInvocationID",    EbvGlobalInvocationId,   symbolTable);
         BuiltInVariable("gl_LocalInvocationIndex",  EbvLocalInvocationIndex, symbolTable);
 
+#ifndef GLSLANG_WEB
         if (profile != EEsProfile && version < 430) {
             symbolTable.setVariableExtensions("gl_NumWorkGroups",        1, &E_GL_ARB_compute_shader);
             symbolTable.setVariableExtensions("gl_WorkGroupSize",        1, &E_GL_ARB_compute_shader);
@@ -7635,6 +7651,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
             BuiltInVariable("gl_WarpIDNV",              EbvWarpID,          symbolTable);
             BuiltInVariable("gl_SMIDNV",                EbvSMID,            symbolTable);
         }
+#endif
 
         if ((profile != EEsProfile && version >= 140) ||
             (profile == EEsProfile && version >= 310)) {
@@ -7644,6 +7661,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
             BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
         }
 
+#ifndef GLSLANG_WEB
         // GL_KHR_shader_subgroup
         if ((profile == EEsProfile && version >= 310) ||
             (profile != EEsProfile && version >= 140)) {
@@ -8088,6 +8106,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
     symbolTable.relateToOperator("packUint2x32",    EOpPackUint2x32);
     symbolTable.relateToOperator("unpackUint2x32",  EOpUnpackUint2x32);
 
+    symbolTable.relateToOperator("barrier",                    EOpBarrier);
+    symbolTable.relateToOperator("memoryBarrier",              EOpMemoryBarrier);
+
 #ifndef GLSLANG_WEB
     symbolTable.relateToOperator("packInt2x16",     EOpPackInt2x16);
     symbolTable.relateToOperator("unpackInt2x16",   EOpUnpackInt2x16);
@@ -8109,9 +8130,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
     symbolTable.relateToOperator("unpack16",        EOpUnpack16);
     symbolTable.relateToOperator("unpack8",         EOpUnpack8);
 
-    symbolTable.relateToOperator("barrier",                    EOpBarrier);
     symbolTable.relateToOperator("controlBarrier",             EOpBarrier);
-    symbolTable.relateToOperator("memoryBarrier",              EOpMemoryBarrier);
     symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter);
     symbolTable.relateToOperator("memoryBarrierBuffer",        EOpMemoryBarrierBuffer);
     symbolTable.relateToOperator("memoryBarrierImage",         EOpMemoryBarrierImage);
@@ -8443,8 +8462,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 #endif
     }
 
-#ifndef GLSLANG_WEB
     switch(language) {
+#ifndef GLSLANG_WEB
     case EShLangVertex:
         break;
 
@@ -8479,10 +8498,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
         symbolTable.relateToOperator("endInvocationInterlockARB",   EOpEndInvocationInterlock);
 
         break;
+#endif
 
     case EShLangCompute:
         symbolTable.relateToOperator("memoryBarrierShared",         EOpMemoryBarrierShared);
         symbolTable.relateToOperator("groupMemoryBarrier",          EOpGroupMemoryBarrier);
+#ifndef GLSLANG_WEB
         symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
         if ((profile != EEsProfile && version >= 450) ||
             (profile == EEsProfile && version >= 320)) {
@@ -8499,8 +8520,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
         symbolTable.relateToOperator("coopMatLoadNV",              EOpCooperativeMatrixLoad);
         symbolTable.relateToOperator("coopMatStoreNV",             EOpCooperativeMatrixStore);
         symbolTable.relateToOperator("coopMatMulAddNV",            EOpCooperativeMatrixMulAdd);
+#endif
         break;
 
+#ifndef GLSLANG_WEB
     case EShLangRayGenNV:
     case EShLangClosestHitNV:
     case EShLangMissNV:
@@ -8539,8 +8562,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 
     default:
         assert(false && "Language not supported");
-    }
 #endif
+    }
 }
 
 //
index e9ff320..786da18 100644 (file)
@@ -3387,11 +3387,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
                     requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array");
             }
             break;
-#ifndef GLSLANG_WEB
        case EShLangCompute:
             if (! symbolTable.atBuiltInLevel())
                 error(loc, "global storage input qualifier cannot be used in a compute shader", "in", "");
             break;
+#ifndef GLSLANG_WEB
        case EShLangTessControl:
             if (qualifier.patch)
                 error(loc, "can only use on output in tessellation-control shader", "patch", "");
@@ -3432,10 +3432,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
                 error(loc, "cannot contain a double, int64, or uint64", GetStorageQualifierString(qualifier.storage), "");
         break;
 
-#ifndef GLSLANG_WEB
         case EShLangCompute:
             error(loc, "global storage output qualifier cannot be used in a compute shader", "out", "");
             break;
+#ifndef GLSLANG_WEB
         case EShLangTessEvaluation:
             if (qualifier.patch)
                 error(loc, "can only use on input in tessellation-evaluation shader", "patch", "");
@@ -5293,11 +5293,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
             error(loc, "needs a literal integer", "buffer_reference_align", "");
         return;
     }
+#endif
 
     switch (language) {
-    case EShLangVertex:
-        break;
-
+#ifndef GLSLANG_WEB
     case EShLangTessControl:
         if (id == "vertices") {
             if (value == 0)
@@ -5310,9 +5309,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
         }
         break;
 
-    case EShLangTessEvaluation:
-        break;
-
     case EShLangGeometry:
         if (id == "invocations") {
             profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, nullptr, "invocations");
@@ -5385,6 +5381,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
 
     case EShLangTaskNV:
         // Fall through
+#endif
     case EShLangCompute:
         if (id.compare(0, 11, "local_size_") == 0) {
             if (language == EShLangMeshNV || language == EShLangTaskNV) {
@@ -5432,12 +5429,11 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
             }
         }
         break;
+
     default:
         break;
     }
 
-#endif // GLSLANG_WEB
-
     error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), "");
 }
 
@@ -8004,6 +8000,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
         else
             error(loc, "can only apply to 'in'", "point_mode", "");
     }
+#endif
     for (int i = 0; i < 3; ++i) {
         if (publicType.shaderQualifiers.localSizeNotDefault[i]) {
             if (publicType.qualifier.storage == EvqVaryingIn) {
@@ -8063,6 +8060,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
         }
     }
 
+#ifndef GLSLANG_WEB
     if (publicType.shaderQualifiers.earlyFragmentTests) {
         if (publicType.qualifier.storage == EvqVaryingIn)
             intermediate.setEarlyFragmentTests();
index 8e54de8..459e49a 100644 (file)
@@ -1058,13 +1058,12 @@ int TScanContext::tokenizeIdentifier()
 
     case SUBROUTINE:
         return es30ReservedFromGLSL(400);
+#endif
     case SHARED:
         if ((parseContext.isEsProfile() && parseContext.version < 300) ||
             (!parseContext.isEsProfile() && parseContext.version < 140))
             return identifierOrType();
         return keyword;
-#endif
-
     case LAYOUT:
     {
         const int numLayoutExts = 2;
index 9b3cdc6..f14d442 100644 (file)
@@ -341,6 +341,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable,  TS
         (profile == EEsProfile && version >= 310))
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source,
                                    infoSink, commonTable, symbolTables);
+#endif
 
     // check for compute
     if ((profile != EEsProfile && version >= 420) ||
@@ -348,6 +349,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable,  TS
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source,
                                    infoSink, commonTable, symbolTables);
 
+#ifndef GLSLANG_WEB
     // check for ray tracing stages
     if (profile != EEsProfile && version >= 450) {
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source,
index bccf6a5..518ba6c 100644 (file)
@@ -527,11 +527,11 @@ const char* StageName(EShLanguage stage)
     switch(stage) {
     case EShLangVertex:         return "vertex";
     case EShLangFragment:       return "fragment";
+    case EShLangCompute:        return "compute";
 #ifndef GLSLANG_WEB
     case EShLangTessControl:    return "tessellation control";
     case EShLangTessEvaluation: return "tessellation evaluation";
     case EShLangGeometry:       return "geometry";
-    case EShLangCompute:        return "compute";
     case EShLangRayGenNV:       return "ray-generation";
     case EShLangIntersectNV:    return "intersection";
     case EShLangAnyHitNV:       return "any-hit";
index 1b463ec..e9780e2 100644 (file)
@@ -1360,7 +1360,6 @@ storage_qualifier
         $$.init($1.loc);
         $$.qualifier.storage = EvqUniform;
     }
-GLSLANG_WEB_EXCLUDE_ON
     | SHARED {
         parseContext.globalCheck($1.loc, "shared");
         parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -1369,6 +1368,7 @@ GLSLANG_WEB_EXCLUDE_ON
         $$.init($1.loc);
         $$.qualifier.storage = EvqShared;
     }
+GLSLANG_WEB_EXCLUDE_ON
     | BUFFER {
         parseContext.globalCheck($1.loc, "buffer");
         $$.init($1.loc);
index e308825..5001f60 100644 (file)
@@ -1156,6 +1156,14 @@ storage_qualifier
         $$.init($1.loc);
         $$.qualifier.storage = EvqUniform;
     }
+    | SHARED {
+        parseContext.globalCheck($1.loc, "shared");
+        parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
+        parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared");
+        parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared");
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqShared;
+    }
 
     ;
 
index 8b9ec34..4488b69 100644 (file)
@@ -578,18 +578,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  122
+#define YYFINAL  123
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3110
+#define YYLAST   3111
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  143
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  103
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  293
+#define YYNRULES  294
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  422
+#define YYNSTATES  423
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -663,22 +663,22 @@ static const yytype_uint16 yyrline[] =
      939,   942,   946,   950,   955,   963,   968,   973,   978,   983,
      992,  1002,  1029,  1038,  1045,  1056,  1062,  1065,  1072,  1076,
     1080,  1090,  1093,  1104,  1107,  1110,  1114,  1118,  1126,  1130,
-    1135,  1141,  1147,  1154,  1165,  1170,  1180,  1185,  1193,  1197,
-    1207,  1210,  1216,  1222,  1229,  1239,  1243,  1247,  1251,  1256,
-    1260,  1265,  1270,  1275,  1280,  1285,  1290,  1295,  1300,  1305,
-    1311,  1317,  1323,  1328,  1333,  1338,  1343,  1348,  1353,  1358,
-    1363,  1368,  1373,  1378,  1384,  1389,  1394,  1399,  1404,  1409,
-    1414,  1420,  1425,  1430,  1435,  1440,  1445,  1450,  1456,  1461,
-    1466,  1471,  1476,  1481,  1486,  1491,  1496,  1501,  1506,  1511,
-    1516,  1521,  1526,  1532,  1537,  1553,  1558,  1563,  1571,  1571,
-    1582,  1582,  1592,  1595,  1608,  1630,  1657,  1661,  1667,  1672,
-    1683,  1692,  1696,  1697,  1703,  1704,  1705,  1706,  1707,  1708,
-    1709,  1716,  1717,  1721,  1717,  1733,  1734,  1738,  1738,  1745,
-    1745,  1759,  1762,  1770,  1778,  1789,  1790,  1794,  1800,  1807,
-    1811,  1819,  1823,  1836,  1842,  1842,  1862,  1865,  1871,  1883,
-    1895,  1901,  1901,  1916,  1916,  1932,  1932,  1953,  1956,  1962,
-    1965,  1971,  1975,  1982,  1987,  1992,  1999,  2002,  2011,  2015,
-    2024,  2027,  2034,  2034
+    1135,  1141,  1147,  1154,  1159,  1173,  1178,  1188,  1193,  1201,
+    1205,  1215,  1218,  1224,  1230,  1237,  1247,  1251,  1255,  1259,
+    1264,  1268,  1273,  1278,  1283,  1288,  1293,  1298,  1303,  1308,
+    1313,  1319,  1325,  1331,  1336,  1341,  1346,  1351,  1356,  1361,
+    1366,  1371,  1376,  1381,  1386,  1392,  1397,  1402,  1407,  1412,
+    1417,  1422,  1428,  1433,  1438,  1443,  1448,  1453,  1458,  1464,
+    1469,  1474,  1479,  1484,  1489,  1494,  1499,  1504,  1509,  1514,
+    1519,  1524,  1529,  1534,  1540,  1545,  1561,  1566,  1571,  1579,
+    1579,  1590,  1590,  1600,  1603,  1616,  1638,  1665,  1669,  1675,
+    1680,  1691,  1700,  1704,  1705,  1711,  1712,  1713,  1714,  1715,
+    1716,  1717,  1724,  1725,  1729,  1725,  1741,  1742,  1746,  1746,
+    1753,  1753,  1767,  1770,  1778,  1786,  1797,  1798,  1802,  1808,
+    1815,  1819,  1827,  1831,  1844,  1850,  1850,  1870,  1873,  1879,
+    1891,  1903,  1909,  1909,  1924,  1924,  1940,  1940,  1961,  1964,
+    1970,  1973,  1979,  1983,  1990,  1995,  2000,  2007,  2010,  2019,
+    2023,  2032,  2035,  2042,  2042
 };
 #endif
 
@@ -774,12 +774,12 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -357
+#define YYPACT_NINF -362
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-357)))
+  (!!((Yystate) == (-362)))
 
-#define YYTABLE_NINF -248
+#define YYTABLE_NINF -249
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -788,49 +788,49 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1676,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,    42,  -357,  -357,  -357,  -357,  -357,   -70,
-    -357,  -357,  -357,  -357,   -57,  -357,   -69,   -48,   -21,   -15,
-    2236,    -6,  -357,   -37,  -357,  -357,  -357,  1536,  -357,  -357,
-    -357,   -40,  -357,  -357,   416,  -357,  -357,  2985,  -357,     3,
-     -96,  -357,   -29,  -357,    14,  -357,  2236,  -357,  -357,  -357,
-    2236,   -14,     5,  -357,   -53,  -357,   -52,  -357,  -357,  2741,
-       9,  -357,  -357,  -357,    37,  2236,  -357,    66,  -357,   -12,
-    -357,  2375,  -357,   -28,   556,  -357,  -357,  -357,  -357,     9,
-     -34,  -357,  2741,   -25,  -357,    41,  -357,    28,  2741,  2741,
-    2741,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,   -43,  -357,  -357,  -357,    50,   -10,  2863,    72,
-    -357,  2741,  -357,   -65,    77,  -357,  2236,    55,  1816,  -357,
-    2236,  2741,  -357,   -96,  -357,  -357,    38,    36,     8,   -47,
-      40,    70,    76,    73,   114,   113,   -58,   100,  2497,  -357,
-      99,  -357,  -357,   108,   101,   102,  -357,   109,   110,   104,
-    2619,   115,  2741,   111,    67,  -357,  -357,    29,  -357,   -48,
-     116,  -357,  -357,  -357,  -357,   696,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,    77,  2741,   -23,  -357,  -357,
-    2741,  2236,  -357,    81,  -357,  -357,  -357,    -5,  -357,  -357,
-    2741,    82,  -357,  -357,  2741,   119,  -357,  -357,  -357,  2741,
-    -357,    55,     9,    30,  -357,  -357,  -357,  1956,  -357,  -357,
-    -357,  2741,  2741,  2741,  2741,  2741,  2741,  2741,  2741,  2741,
-    2741,  2741,  2741,  2741,  2741,  2741,  2741,  2741,  2741,  2741,
-    -357,  -357,  -357,   118,  -357,   836,  -357,  -357,  -357,   836,
-    -357,  2741,  -357,  -357,    35,  2741,    63,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  2741,
-    2741,  -357,  -357,  -357,  -357,  2741,  -357,  2096,  -357,  -357,
-     120,   121,  -357,  -357,  -357,    39,    77,    55,  -357,  -357,
-    -357,  -357,  -357,    38,    38,    36,    36,     8,     8,     8,
-       8,   -47,   -47,    40,    70,    76,    73,   114,   113,  2741,
-    -357,   836,  1396,    78,  1256,    -1,  -357,     2,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,    75,   122,   121,    90,
-    2236,   128,   130,  -357,  -357,  1396,   127,  -357,  2741,  -357,
-     124,   976,  2741,  -357,   126,   133,    89,   134,  1116,  -357,
-     135,  -357,  2741,  -357,  -357,  -357,     7,  2741,   976,   127,
-    -357,  -357,   836,  -357,   131,   121,  -357,  -357,   836,   137,
-    -357,  -357
+    1677,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,    20,  -362,  -362,  -362,  -362,  -362,   -66,
+    -362,  -362,  -362,  -362,  -362,   -43,  -362,   -73,   -33,   -11,
+       3,  2237,   -19,  -362,   -29,  -362,  -362,  -362,  1537,  -362,
+    -362,  -362,     2,  -362,  -362,   417,  -362,  -362,  2986,  -362,
+      11,   -90,  -362,   -28,  -362,    24,  -362,  2237,  -362,  -362,
+    -362,  2237,     5,    18,  -362,   -58,  -362,   -18,  -362,  -362,
+    2742,    55,  -362,  -362,  -362,    61,  2237,  -362,    21,  -362,
+     -54,  -362,  2376,  -362,   -26,   557,  -362,  -362,  -362,  -362,
+      55,   -30,  -362,  2742,   -24,  -362,    43,  -362,    -7,  2742,
+    2742,  2742,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,   -41,  -362,  -362,  -362,    87,   -49,  2864,
+      73,  -362,  2742,  -362,   -59,    90,  -362,  2237,    57,  1817,
+    -362,  2237,  2742,  -362,   -90,  -362,  -362,    33,   -39,    72,
+     -50,    70,    76,    75,    80,   107,   114,   -52,   105,  2498,
+    -362,   104,  -362,  -362,   110,   101,   102,  -362,   113,   116,
+     108,  2620,   117,  2742,   106,    69,  -362,  -362,    17,  -362,
+     -33,   119,  -362,  -362,  -362,  -362,   697,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,    90,  2742,   -15,  -362,
+    -362,  2742,  2237,  -362,    84,  -362,  -362,  -362,    -6,  -362,
+    -362,  2742,    85,  -362,  -362,  2742,   121,  -362,  -362,  -362,
+    2742,  -362,    57,    55,    28,  -362,  -362,  -362,  1957,  -362,
+    -362,  -362,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,
+    2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,
+    2742,  -362,  -362,  -362,   120,  -362,   837,  -362,  -362,  -362,
+     837,  -362,  2742,  -362,  -362,    30,  2742,    62,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    2742,  2742,  -362,  -362,  -362,  -362,  2742,  -362,  2097,  -362,
+    -362,   122,   124,  -362,  -362,  -362,    32,    90,    57,  -362,
+    -362,  -362,  -362,  -362,    33,    33,   -39,   -39,    72,    72,
+      72,    72,   -50,   -50,    70,    76,    75,    80,   107,   114,
+    2742,  -362,   837,  1397,    82,  1257,    -3,  -362,     1,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,    74,   123,   124,
+      88,  2237,   128,   132,  -362,  -362,  1397,   130,  -362,  2742,
+    -362,   126,   977,  2742,  -362,   129,   135,    92,   134,  1117,
+    -362,   137,  -362,  2742,  -362,  -362,  -362,     4,  2742,   977,
+     130,  -362,  -362,   837,  -362,   133,   124,  -362,  -362,   837,
+     140,  -362,  -362
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -838,81 +838,81 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   138,   159,   157,   158,   156,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   160,   161,   162,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   211,   212,   199,   200,   202,
-     201,   203,   204,   205,   206,   207,   208,   209,   210,   122,
-     215,   216,   217,     0,   214,   142,   140,   141,   139,     0,
-     155,   143,   124,   123,     0,   291,     0,   292,     0,    99,
-      98,     0,   110,   115,   137,   136,   134,     0,   131,   133,
-     120,   151,   135,   213,     0,   288,   290,     0,   220,     0,
-       0,    87,     0,    84,     0,    97,     0,   106,   100,   108,
-       0,   109,     0,    85,   116,    90,     0,   132,   121,     0,
-     144,   150,     1,   289,     0,     0,   218,   128,   130,     0,
-     126,     0,    88,     0,     0,   293,   101,   105,   107,   103,
-     111,   102,     0,   117,    93,     0,    91,     0,     0,     0,
-       0,    33,    32,    34,    31,     5,     6,     7,     8,     2,
-       3,     9,    27,    11,    16,    17,     0,     0,    21,     0,
-     153,     0,    25,     0,   145,    86,     0,     0,     0,   222,
-       0,     0,   125,     0,   146,    35,    39,    42,    45,    50,
-      53,    55,    57,    59,    61,    63,    65,     0,     0,    89,
-     242,   251,   255,     0,     0,     0,   273,     0,     0,     0,
-       0,     0,     0,     0,    35,    68,    81,     0,   231,     0,
-     120,   234,   253,   233,   232,     0,   235,   236,   257,   237,
-     263,   238,   239,   270,   240,   104,     0,   112,   230,   119,
-       0,     0,    95,     0,    92,    28,    29,     0,    13,    14,
-       0,     0,    19,    18,     0,   155,    22,    24,    30,     0,
-     152,     0,   228,     0,   226,   221,   223,     0,    83,   129,
-     127,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   138,   160,   158,   159,   157,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   161,   162,   163,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   212,   213,   200,   201,   203,
+     202,   204,   205,   206,   207,   208,   209,   210,   211,   122,
+     216,   217,   218,     0,   215,   142,   140,   141,   139,     0,
+     156,   143,   144,   124,   123,     0,   292,     0,   293,     0,
+      99,    98,     0,   110,   115,   137,   136,   134,     0,   131,
+     133,   120,   152,   135,   214,     0,   289,   291,     0,   221,
+       0,     0,    87,     0,    84,     0,    97,     0,   106,   100,
+     108,     0,   109,     0,    85,   116,    90,     0,   132,   121,
+       0,   145,   151,     1,   290,     0,     0,   219,   128,   130,
+       0,   126,     0,    88,     0,     0,   294,   101,   105,   107,
+     103,   111,   102,     0,   117,    93,     0,    91,     0,     0,
+       0,     0,    33,    32,    34,    31,     5,     6,     7,     8,
+       2,     3,     9,    27,    11,    16,    17,     0,     0,    21,
+       0,   154,     0,    25,     0,   146,    86,     0,     0,     0,
+     223,     0,     0,   125,     0,   147,    35,    39,    42,    45,
+      50,    53,    55,    57,    59,    61,    63,    65,     0,     0,
+      89,   243,   252,   256,     0,     0,     0,   274,     0,     0,
+       0,     0,     0,     0,     0,    35,    68,    81,     0,   232,
+       0,   120,   235,   254,   234,   233,     0,   236,   237,   258,
+     238,   264,   239,   240,   271,   241,   104,     0,   112,   231,
+     119,     0,     0,    95,     0,    92,    28,    29,     0,    13,
+      14,     0,     0,    19,    18,     0,   156,    22,    24,    30,
+       0,   153,     0,   229,     0,   227,   222,   224,     0,    83,
+     129,   127,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      66,   147,   148,     0,   241,     0,   271,   284,   283,     0,
-     275,     0,   287,   285,     0,     0,     0,   269,    71,    72,
-      74,    73,    76,    77,    78,    79,    80,    75,    70,     0,
-       0,   256,   252,   254,   114,     0,   118,     0,    96,     4,
-       0,    15,    12,    23,   154,     0,   229,     0,   224,   219,
-      36,    37,    38,    41,    40,    43,    44,    48,    49,    46,
-      47,    51,    52,    54,    56,    58,    60,    62,    64,     0,
-     149,   243,     0,     0,     0,     0,   286,     0,   268,    69,
-      82,   113,    94,    10,   225,   227,     0,     0,   261,     0,
-       0,     0,     0,   278,   277,   280,   249,   264,     0,   244,
-       0,     0,     0,   279,     0,     0,   260,     0,     0,   258,
-       0,    67,     0,   246,   272,   245,     0,   281,     0,   249,
-     248,   250,   266,   262,     0,   282,   276,   259,   267,     0,
-     274,   265
+       0,    66,   148,   149,     0,   242,     0,   272,   285,   284,
+       0,   276,     0,   288,   286,     0,     0,     0,   270,    71,
+      72,    74,    73,    76,    77,    78,    79,    80,    75,    70,
+       0,     0,   257,   253,   255,   114,     0,   118,     0,    96,
+       4,     0,    15,    12,    23,   155,     0,   230,     0,   225,
+     220,    36,    37,    38,    41,    40,    43,    44,    48,    49,
+      46,    47,    51,    52,    54,    56,    58,    60,    62,    64,
+       0,   150,   244,     0,     0,     0,     0,   287,     0,   269,
+      69,    82,   113,    94,    10,   226,   228,     0,     0,   262,
+       0,     0,     0,     0,   279,   278,   281,   250,   265,     0,
+     245,     0,     0,     0,   280,     0,     0,   261,     0,     0,
+     259,     0,    67,     0,   247,   273,   246,     0,   282,     0,
+     250,   249,   251,   267,   263,     0,   283,   277,   260,   268,
+       0,   275,   266
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,    58,  -357,  -108,  -106,  -166,  -114,   -62,   -59,
-     -56,   -60,   -55,   -61,  -357,  -123,  -357,  -138,  -357,  -145,
-    -357,    15,  -357,  -357,  -357,    17,  -357,  -357,  -357,   125,
-     132,   136,  -357,  -357,  -334,  -357,  -357,  -357,  -357,    48,
-     -79,   -84,  -357,     0,  -107,  -357,  -357,  -357,  -357,   169,
-    -357,  -357,  -357,  -169,  -164,   -27,  -101,  -230,  -127,  -223,
-    -356,  -155,  -357,  -357,  -165,  -160,  -357,  -357,   140,  -286,
-    -119,  -357,  -357,  -357,  -134,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-     158,  -357,  -357
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,    37,  -362,  -110,  -105,  -166,  -116,   -61,   -57,
+     -56,   -60,   -55,   -53,  -362,  -120,  -362,  -137,  -362,  -148,
+    -362,    10,  -362,  -362,  -362,    13,  -362,  -362,  -362,   136,
+     125,   138,  -362,  -362,  -342,  -362,  -362,  -362,  -362,    46,
+     -80,   -86,  -362,     0,  -104,  -362,  -362,  -362,  -362,   170,
+    -362,  -362,  -362,  -167,  -172,   -27,   -99,  -232,  -125,  -222,
+    -361,  -157,  -362,  -362,  -165,  -164,  -362,  -362,   145,  -288,
+    -122,  -362,  -362,  -362,  -135,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+     158,  -362,  -362
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   160,   161,   162,   330,   163,   164,   165,   166,   167,
-     168,   169,   214,   171,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   215,   359,   216,   319,   217,
-     269,   218,    76,   241,   147,   219,    78,    79,    80,   107,
-     108,   109,    81,    82,    83,    84,    85,    86,   129,   130,
-      87,    88,    89,   172,   133,   120,   121,   173,    91,    92,
-      93,   180,   125,   178,   179,   263,   264,   239,   221,   222,
-     223,   224,   295,   377,   404,   396,   397,   398,   405,   225,
-     226,   227,   228,   399,   381,   229,   230,   400,   419,   231,
-     232,   233,   362,   299,   364,   385,   394,   395,   234,    94,
-      95,    96,   104
+      -1,   161,   162,   163,   331,   164,   165,   166,   167,   168,
+     169,   170,   215,   172,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   216,   360,   217,   320,   218,
+     270,   219,    77,   242,   148,   220,    79,    80,    81,   108,
+     109,   110,    82,    83,    84,    85,    86,    87,   130,   131,
+      88,    89,    90,   173,   134,   121,   122,   174,    92,    93,
+      94,   181,   126,   179,   180,   264,   265,   240,   222,   223,
+     224,   225,   296,   378,   405,   397,   398,   399,   406,   226,
+     227,   228,   229,   400,   382,   230,   231,   401,   420,   232,
+     233,   234,   363,   300,   365,   386,   395,   396,   235,    95,
+      96,    97,   105
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -920,230 +920,305 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      90,   110,   323,   117,   238,   247,   324,   143,   197,   361,
-     326,   267,   289,   174,   266,    75,    98,    77,   278,   279,
-     248,   249,   127,   101,   259,   100,   117,   110,   379,   141,
-     256,   131,   235,   237,   144,   403,   260,   145,   142,   -26,
-     146,   250,   411,   128,   103,   251,   176,   290,    99,   102,
-     131,   379,   403,   280,   281,   131,   198,   236,   268,   198,
-     119,   198,   105,   132,   199,   304,   240,   306,   325,   276,
-     277,   182,   327,   253,   106,   293,   363,   183,   329,   254,
-     111,   114,   386,   112,   320,   387,   113,   118,   320,   126,
-     414,   320,   117,   131,    90,   371,   320,   124,   238,   176,
-     134,   176,   238,   266,   139,   331,   111,   282,   283,    75,
-     111,    77,   347,   348,   349,   350,   333,   243,   320,   337,
-     244,   321,   338,   140,   320,   177,   418,   366,   337,   175,
-     274,   374,   275,   252,   220,   271,   272,   273,   323,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,    60,
-      61,    62,   320,   368,   257,   336,   365,   181,   318,   242,
-     367,   198,   176,   266,   320,   388,   343,   344,   351,   352,
-     345,   346,   413,   262,   284,   286,   261,   170,   177,   285,
-     177,   369,   370,   287,   288,   291,   294,   238,   176,   185,
-     296,   300,   301,   297,   298,   323,   302,   305,   -25,   328,
-     332,   307,   -20,   360,   382,   373,   245,   246,   390,   389,
-     320,   391,   392,  -247,   376,   402,   408,   378,   407,   409,
-     200,   412,   353,   420,   421,   220,   354,   356,   358,   258,
-     355,   270,    97,   357,   335,   137,   375,   383,   136,   185,
-     378,   177,   410,   416,   135,   384,   138,   406,   176,   417,
-     401,   393,   123,     0,     0,     0,   185,     0,     0,     0,
-       0,     0,   415,     0,   238,     0,     0,   177,     0,     0,
+      91,   111,   118,   248,   324,   325,   239,   267,   362,   327,
+      76,   144,   198,    78,   268,   279,   280,   175,   290,   102,
+      99,   380,   249,   250,   142,   118,   132,   111,   128,   183,
+     260,   404,   257,   143,   254,   184,   236,   238,   412,   101,
+     255,   -26,   261,   251,   380,   103,   177,   252,   404,   129,
+     281,   282,   100,   291,   132,   275,   132,   276,   199,   104,
+     199,   237,   269,   305,   133,   307,   200,   241,   145,   199,
+     113,   146,   106,   114,   147,   328,   326,   330,   364,   294,
+     387,   112,   244,   321,   388,   245,   321,   415,   119,   115,
+     321,   118,   107,   321,   372,    91,   267,   127,   125,   177,
+     239,   177,   120,   332,   239,    76,   321,   112,    78,   322,
+     135,   112,   182,   348,   349,   350,   351,   338,   334,   321,
+     339,   338,   367,   140,   375,   419,   178,    60,    61,    62,
+     272,   273,   274,   277,   278,   221,   141,   283,   284,   132,
+     324,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   321,   369,   176,   366,   258,   267,   171,   368,   337,
+     319,   243,   177,   321,   389,   344,   345,   352,   353,   186,
+     253,   414,   346,   347,   199,   263,   288,   262,   286,   178,
+     285,   178,   287,   370,   371,   289,   246,   247,   177,   239,
+     292,   295,   297,   298,   299,   301,   308,   324,   302,   306,
+     303,   -25,   329,   333,   -20,   361,   391,   374,   383,   259,
+     390,   392,   377,   321,   393,   379,  -248,   403,   409,   186,
+     201,   408,   410,   413,   354,   421,   221,   422,   357,   355,
+     271,   356,   137,    98,   358,   336,   186,   359,   379,   376,
+     384,   411,   178,   385,   417,   407,   418,   138,   177,   139,
+     136,   394,   402,   124,     0,     0,     0,     0,     0,     0,
+     416,     0,     0,     0,     0,     0,   239,     0,   178,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   380,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   220,   117,     0,     0,   220,
-       0,     0,     0,     0,     0,     0,   380,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   334,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   177,     0,   340,
-     341,   342,   185,   185,   185,   185,   185,   185,   185,   185,
-     185,   185,   185,   185,   185,   185,   185,   185,     0,     0,
+       0,     0,     0,   381,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   118,   221,   335,     0,     0,
+     221,     0,     0,     0,     0,     0,   381,     0,     0,   341,
+     342,   343,   186,   186,   186,   186,   186,   186,   186,   186,
+     186,   186,   186,   186,   186,   186,   186,   186,   178,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   220,   220,     0,   220,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     118,     0,     0,     0,     0,   220,     0,     0,     0,     0,
-       0,   220,     0,     0,     0,     0,     0,     0,   220,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   220,     0,
-       0,     0,   220,     0,     0,     0,   122,     0,   220,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   221,   221,     0,   221,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   119,     0,     0,     0,     0,   221,     0,     0,     0,
+       0,     0,   221,     0,     0,     0,     0,     0,     0,   221,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   221,
+       0,     0,     0,   221,     0,     0,     0,   123,     0,   221,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,   200,   201,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,   203,   204,   205,   206,     0,   207,   208,   209,
-     210,   211,   212,   213,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,   200,   322,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,   203,   204,   205,   206,     0,   207,   208,   209,
-     210,   211,   212,   213,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,   200,     0,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,   203,   204,   205,   206,     0,   207,   208,   209,
-     210,   211,   212,   213,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,   134,     0,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,   203,   204,   205,   206,     0,   207,   208,   209,
-     210,   211,   212,   213,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,   203,   204,   205,   206,     0,   207,   208,   209,
-     210,   211,   212,   213,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   202,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   148,
-     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,   201,   202,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
+     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,   201,   323,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
+     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,   201,     0,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
+     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,   135,     0,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
+     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
+     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-     155,   156,   157,   158,   159,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   115,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-       0,     0,     0,     0,   116,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   116,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,   117,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   265,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   266,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   340,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   373,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
+      52,    53,    54,    55,    56,    57,    58,     0,     0,   149,
+     150,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   151,     0,
+       0,   185,     0,     0,     0,     0,     0,     0,     0,   152,
+     153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     156,   157,   158,   159,   160,    64,     0,     0,     0,     0,
+      69,    70,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
+       0,   149,   150,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     151,     0,     0,   293,     0,     0,     0,     0,     0,     0,
+       0,   152,   153,   154,   155,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   372,     0,     0,     0,     0,     0,     0,
+       0,     0,   156,   157,   158,   159,   160,    64,     0,     0,
+       0,     0,    69,    70,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,     0,     0,   149,   150,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     1,
+       0,     0,   151,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   304,   152,   153,   154,   155,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   156,   157,   158,   159,   160,    64,
+       0,     0,     0,     0,    69,    70,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,     0,     0,   149,   150,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   151,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   152,   153,   154,   155,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   156,   157,   158,   159,
+     160,    64,     0,     0,     0,     0,    69,    70,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,     0,     0,   149,   150,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   151,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,   153,   154,
+     155,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   156,   157,
+     158,   159,   160,    64,     0,     0,     0,     0,    69,   256,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
@@ -1154,228 +1229,251 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    71,     0,    72,    73,    74,     2,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    64,     0,     0,     0,     0,
+      69,    70
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,    81,    88,   151,   226,   237,   143,   179,   296,   241,
+       0,   115,   132,     0,   181,    65,    66,   121,    70,    92,
+      86,   363,    63,    64,    82,   111,    84,   107,   118,    83,
+      89,   392,   169,    91,    83,    89,   140,   141,   399,    82,
+      89,    82,   101,    84,   386,   118,   126,    88,   409,   139,
+     100,   101,   118,   105,    84,    94,    84,    96,    84,    92,
+      84,    91,   182,   211,    92,   213,    92,    91,    86,    84,
+      89,    89,    83,    92,    92,   242,    91,    83,   300,   199,
+      83,    81,    89,    89,    83,    92,    89,    83,    88,   118,
+      89,   177,    89,    89,   326,    95,   268,    86,    98,   179,
+     237,   181,   100,   251,   241,    95,    89,   107,    95,    92,
+      86,   111,    91,   279,   280,   281,   282,    89,   255,    89,
+      92,    89,    92,   118,    92,   413,   126,   107,   108,   109,
+      97,    98,    99,    61,    62,   135,   118,    67,    68,    84,
+     362,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    89,    90,    92,   302,    82,   328,   120,   306,   263,
+      91,   118,   242,    89,    90,   275,   276,   283,   284,   132,
+      83,   403,   277,   278,    84,   118,    69,   177,   103,   179,
+     104,   181,   102,   320,   321,    71,   149,   150,   268,   326,
+      85,    87,    82,    92,    92,    82,    90,   419,    82,    82,
+      92,    82,   118,   118,    83,    85,   118,    85,   126,   172,
+      87,    83,   360,    89,    82,   363,    86,    91,    83,   182,
+      86,    92,   130,    86,   285,    92,   226,    87,   288,   286,
+     184,   287,   107,    63,   289,   262,   199,   290,   386,   338,
+     365,   398,   242,   365,   409,   393,   410,   111,   328,   111,
+     105,   386,   389,    95,    -1,    -1,    -1,    -1,    -1,    -1,
+     408,    -1,    -1,    -1,    -1,    -1,   403,    -1,   268,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   381,   296,   260,    -1,    -1,
+     300,    -1,    -1,    -1,    -1,    -1,   386,    -1,    -1,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   328,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   362,   363,    -1,   365,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   381,    -1,    -1,    -1,    -1,   386,    -1,    -1,    -1,
+      -1,    -1,   392,    -1,    -1,    -1,    -1,    -1,    -1,   399,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   409,
+      -1,    -1,    -1,   413,    -1,    -1,    -1,     0,    -1,   419,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,     0,     0,   148,   149,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
-     184,     0,     0,     0,     0,     0,     0,     0,   151,   152,
-     153,   154,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   155,
-     156,   157,   158,   159,    64,     0,     0,     0,     0,    69,
-      70,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     148,   149,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-       0,     0,   292,     0,     0,     0,     0,     0,     0,     0,
-     151,   152,   153,   154,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   155,   156,   157,   158,   159,    64,     0,     0,     0,
-       0,    69,    70,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-       0,     0,   148,   149,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   303,   151,   152,   153,   154,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   155,   156,   157,   158,   159,    64,     0,
-       0,     0,     0,    69,    70,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,     0,     0,   148,   149,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   150,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   151,   152,   153,   154,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   155,   156,   157,   158,   159,
-      64,     0,     0,     0,     0,    69,    70,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,     0,     0,   148,   149,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   150,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   151,   152,   153,   154,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   155,   156,   157,
-     158,   159,    64,     0,     0,     0,     0,    69,   255,     2,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    64,     0,     0,     0,     0,    69,
-      70
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,    80,   225,    87,   142,   150,   236,   114,   131,   295,
-     240,   180,    70,   120,   178,     0,    86,     0,    65,    66,
-      63,    64,   118,    92,    89,    82,   110,   106,   362,    82,
-     168,    84,   139,   140,    86,   391,   101,    89,    91,    82,
-      92,    84,   398,   139,    92,    88,   125,   105,   118,   118,
-      84,   385,   408,   100,   101,    84,    84,    91,   181,    84,
-     100,    84,    83,    92,    92,   210,    91,   212,    91,    61,
-      62,    83,   241,    83,    89,   198,   299,    89,    83,    89,
-      80,   118,    83,    89,    89,    83,    92,    87,    89,    86,
-      83,    89,   176,    84,    94,   325,    89,    97,   236,   178,
-      86,   180,   240,   267,   118,   250,   106,    67,    68,    94,
-     110,    94,   278,   279,   280,   281,   254,    89,    89,    89,
-      92,    92,    92,   118,    89,   125,   412,    92,    89,    92,
-      94,    92,    96,    83,   134,    97,    98,    99,   361,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,   107,
-     108,   109,    89,    90,    82,   262,   301,    91,    91,   118,
-     305,    84,   241,   327,    89,    90,   274,   275,   282,   283,
-     276,   277,   402,   118,   104,   102,   176,   119,   178,   103,
-     180,   319,   320,    69,    71,    85,    87,   325,   267,   131,
-      82,    82,    82,    92,    92,   418,    92,    82,    82,   118,
-     118,    90,    83,    85,   126,    85,   148,   149,   118,    87,
-      89,    83,    82,    86,   359,    91,    83,   362,    92,   130,
-      86,    86,   284,    92,    87,   225,   285,   287,   289,   171,
-     286,   183,    63,   288,   261,   110,   337,   364,   106,   181,
-     385,   241,   397,   408,   104,   364,   110,   392,   327,   409,
-     388,   385,    94,    -1,    -1,    -1,   198,    -1,    -1,    -1,
-      -1,    -1,   407,    -1,   402,    -1,    -1,   267,    -1,    -1,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   295,   380,    -1,    -1,   299,
-      -1,    -1,    -1,    -1,    -1,    -1,   385,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   259,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    -1,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   361,   362,    -1,   364,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     380,    -1,    -1,    -1,    -1,   385,    -1,    -1,    -1,    -1,
-      -1,   391,    -1,    -1,    -1,    -1,    -1,    -1,   398,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   408,    -1,
-      -1,    -1,   412,    -1,    -1,    -1,     0,    -1,   418,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
+      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -1384,82 +1482,59 @@ static const yytype_int16 yycheck[] =
       54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
+      -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
       94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     114,   115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,
+     124,   125,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
+      -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
+      82,    -1,    -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   114,   115,   116,   117,   118,   119,    -1,    -1,
+      -1,    -1,   124,   125,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,   119,
+      -1,    -1,    -1,    -1,   124,   125,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,   117,
+     118,   119,    -1,    -1,    -1,    -1,   124,   125,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    -1,    -1,    63,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     3,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
+      96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,   115,
+     116,   117,   118,   119,    -1,    -1,    -1,    -1,   124,   125,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -1470,84 +1545,9 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,   140,   141,   142,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    -1,    -1,    63,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-      85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
-     115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,   124,
-     125,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,    -1,    -1,    -1,
-      -1,   124,   125,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   114,   115,   116,   117,   118,   119,    -1,
-      -1,    -1,    -1,   124,   125,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,
-     119,    -1,    -1,    -1,    -1,   124,   125,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    -1,    -1,    63,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,
-     117,   118,   119,    -1,    -1,    -1,    -1,   124,   125,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,   124,
-     125
+      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
+     124,   125
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1561,42 +1561,42 @@ static const yytype_uint8 yystos[] =
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,   106,
      107,   108,   109,   110,   119,   120,   121,   122,   123,   124,
-     125,   138,   140,   141,   142,   174,   175,   178,   179,   180,
-     181,   185,   186,   187,   188,   189,   190,   193,   194,   195,
-     196,   201,   202,   203,   242,   243,   244,   202,    86,   118,
-      82,    92,   118,    92,   245,    83,    89,   182,   183,   184,
-     193,   196,    89,    92,   118,    92,   118,   194,   196,   100,
-     198,   199,     0,   243,   196,   205,    86,   118,   139,   191,
-     192,    84,    92,   197,    86,   221,   183,   182,   184,   118,
-     118,    82,    91,   197,    86,    89,    92,   177,    63,    64,
-      82,    93,    94,    95,    96,   114,   115,   116,   117,   118,
-     144,   145,   146,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   196,   200,   197,    92,   193,   196,   206,   207,
-     204,    91,    83,    89,    85,   155,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,    84,    92,
-      86,    87,    92,   126,   127,   128,   129,   131,   132,   133,
-     134,   135,   136,   137,   155,   168,   170,   172,   174,   178,
-     196,   211,   212,   213,   214,   222,   223,   224,   225,   228,
-     229,   232,   233,   234,   241,   197,    91,   197,   170,   210,
-      91,   176,   118,    89,    92,   155,   155,   172,    63,    64,
-      84,    88,    83,    83,    89,   125,   170,    82,   155,    89,
-     101,   196,   118,   208,   209,    87,   207,   206,   168,   173,
-     192,    97,    98,    99,    94,    96,    61,    62,    65,    66,
-     100,   101,    67,    68,   104,   103,   102,    69,    71,    70,
-     105,    85,    85,   168,    87,   215,    82,    92,    92,   236,
-      82,    82,    92,    92,   172,    82,   172,    90,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    91,   171,
-      89,    92,    87,   212,   210,    91,   210,   206,   118,    83,
-     147,   172,   118,   170,   155,   208,   197,    89,    92,    87,
-     155,   155,   155,   157,   157,   158,   158,   159,   159,   159,
-     159,   160,   160,   161,   162,   163,   164,   165,   166,   169,
-      85,   222,   235,   212,   237,   172,    92,   172,    90,   170,
-     170,   210,    87,    85,    92,   209,   172,   216,   172,   187,
-     193,   227,   126,   211,   223,   238,    83,    83,    90,    87,
-     118,    83,    82,   227,   239,   240,   218,   219,   220,   226,
-     230,   170,    91,   213,   217,   221,   172,    92,    83,   130,
-     214,   213,    86,   210,    83,   172,   217,   218,   222,   231,
-      92,    87
+     125,   138,   139,   140,   141,   142,   174,   175,   178,   179,
+     180,   181,   185,   186,   187,   188,   189,   190,   193,   194,
+     195,   196,   201,   202,   203,   242,   243,   244,   202,    86,
+     118,    82,    92,   118,    92,   245,    83,    89,   182,   183,
+     184,   193,   196,    89,    92,   118,    92,   118,   194,   196,
+     100,   198,   199,     0,   243,   196,   205,    86,   118,   139,
+     191,   192,    84,    92,   197,    86,   221,   183,   182,   184,
+     118,   118,    82,    91,   197,    86,    89,    92,   177,    63,
+      64,    82,    93,    94,    95,    96,   114,   115,   116,   117,
+     118,   144,   145,   146,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   196,   200,   197,    92,   193,   196,   206,
+     207,   204,    91,    83,    89,    85,   155,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,    84,
+      92,    86,    87,    92,   126,   127,   128,   129,   131,   132,
+     133,   134,   135,   136,   137,   155,   168,   170,   172,   174,
+     178,   196,   211,   212,   213,   214,   222,   223,   224,   225,
+     228,   229,   232,   233,   234,   241,   197,    91,   197,   170,
+     210,    91,   176,   118,    89,    92,   155,   155,   172,    63,
+      64,    84,    88,    83,    83,    89,   125,   170,    82,   155,
+      89,   101,   196,   118,   208,   209,    87,   207,   206,   168,
+     173,   192,    97,    98,    99,    94,    96,    61,    62,    65,
+      66,   100,   101,    67,    68,   104,   103,   102,    69,    71,
+      70,   105,    85,    85,   168,    87,   215,    82,    92,    92,
+     236,    82,    82,    92,    92,   172,    82,   172,    90,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    91,
+     171,    89,    92,    87,   212,   210,    91,   210,   206,   118,
+      83,   147,   172,   118,   170,   155,   208,   197,    89,    92,
+      87,   155,   155,   155,   157,   157,   158,   158,   159,   159,
+     159,   159,   160,   160,   161,   162,   163,   164,   165,   166,
+     169,    85,   222,   235,   212,   237,   172,    92,   172,    90,
+     170,   170,   210,    87,    85,    92,   209,   172,   216,   172,
+     187,   193,   227,   126,   211,   223,   238,    83,    83,    90,
+      87,   118,    83,    82,   227,   239,   240,   218,   219,   220,
+     226,   230,   170,    91,   213,   217,   221,   172,    92,    83,
+     130,   214,   213,    86,   210,    83,   172,   217,   218,   222,
+     231,    92,    87
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1616,22 +1616,22 @@ static const yytype_uint8 yyr1[] =
      185,   185,   185,   185,   185,   186,   186,   186,   186,   186,
      187,   187,   188,   189,   189,   190,   191,   191,   192,   192,
      192,   193,   193,   194,   194,   194,   194,   194,   195,   195,
-     195,   195,   195,   195,   196,   196,   197,   197,   197,   197,
-     198,   198,   199,   200,   200,   201,   201,   201,   201,   201,
+     195,   195,   195,   195,   195,   196,   196,   197,   197,   197,
+     197,   198,   198,   199,   200,   200,   201,   201,   201,   201,
      201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
      201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
      201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
      201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
      201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   202,   202,   202,   204,   203,
-     205,   203,   206,   206,   207,   207,   208,   208,   209,   209,
-     210,   211,   212,   212,   213,   213,   213,   213,   213,   213,
-     213,   214,   215,   216,   214,   217,   217,   219,   218,   220,
-     218,   221,   221,   222,   222,   223,   223,   224,   225,   226,
-     226,   227,   227,   228,   230,   229,   231,   231,   232,   232,
-     233,   235,   234,   236,   234,   237,   234,   238,   238,   239,
-     239,   240,   240,   241,   241,   241,   241,   241,   242,   242,
-     243,   243,   245,   244
+     201,   201,   201,   201,   201,   201,   202,   202,   202,   204,
+     203,   205,   203,   206,   206,   207,   207,   208,   208,   209,
+     209,   210,   211,   212,   212,   213,   213,   213,   213,   213,
+     213,   213,   214,   215,   216,   214,   217,   217,   219,   218,
+     220,   218,   221,   221,   222,   222,   223,   223,   224,   225,
+     226,   226,   227,   227,   228,   230,   229,   231,   231,   232,
+     232,   233,   235,   234,   236,   234,   237,   234,   238,   238,
+     239,   239,   240,   240,   241,   241,   241,   241,   241,   242,
+     242,   243,   243,   245,   244
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1651,22 +1651,22 @@ static const yytype_uint8 yyr2[] =
        1,     3,     4,     6,     5,     1,     2,     3,     5,     4,
        1,     2,     1,     1,     1,     4,     1,     3,     1,     3,
        1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     3,     2,     3,     3,     4,
-       1,     0,     3,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     3,     2,     3,     3,
+       4,     1,     0,     3,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
-       0,     5,     1,     2,     3,     4,     1,     3,     1,     2,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     0,     0,     5,     1,     1,     0,     2,     0,
-       2,     2,     3,     1,     2,     1,     2,     1,     5,     3,
-       1,     1,     4,     1,     0,     8,     0,     1,     3,     2,
-       1,     0,     6,     0,     8,     0,     7,     1,     1,     1,
-       0,     2,     3,     2,     2,     2,     3,     2,     1,     2,
-       1,     1,     0,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       6,     0,     5,     1,     2,     3,     4,     1,     3,     1,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     0,     0,     5,     1,     1,     0,     2,
+       0,     2,     2,     3,     1,     2,     1,     2,     1,     5,
+       3,     1,     1,     4,     1,     0,     8,     0,     1,     3,
+       2,     1,     0,     6,     0,     8,     0,     7,     1,     1,
+       1,     0,     2,     3,     2,     2,     2,     3,     2,     1,
+       2,     1,     1,     0,     3
 };
 
 
@@ -3802,17 +3802,30 @@ yyreduce:
     break;
 
   case 144:
-#line 1165 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1159 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
+        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
+        parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqShared;
+    }
+#line 3815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 145:
+#line 1173 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters);
     }
-#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 145:
-#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 146:
+#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -3820,21 +3833,21 @@ yyreduce:
         (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 3824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 147:
+#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 3834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 147:
-#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 148:
+#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
@@ -3843,20 +3856,20 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 149:
+#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 3856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 1197 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 150:
+#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-3].interm);
 
@@ -3864,35 +3877,35 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 3868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 151:
+#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
     }
-#line 3876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 152:
+#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = 0;
     }
-#line 3884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 1216 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 153:
+#line 1224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
     }
-#line 3892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1222 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 154:
+#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = new TArraySizes;
 
@@ -3900,11 +3913,11 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 3904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 155:
+#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
 
@@ -3912,600 +3925,600 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 3916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 1239 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 156:
+#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtVoid;
     }
-#line 3925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 157:
+#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 3934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 158:
+#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 3943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 159:
+#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 3953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 160:
+#line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
     }
-#line 3962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 161:
+#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(2);
     }
-#line 3972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 162:
+#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(3);
     }
-#line 3982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 163:
+#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 3992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 1275 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 164:
+#line 1283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(2);
     }
-#line 4002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 165:
+#line 1288 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(3);
     }
-#line 4012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 166:
+#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(4);
     }
-#line 4022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 1290 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 167:
+#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(2);
     }
-#line 4032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 1295 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 168:
+#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(3);
     }
-#line 4042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 169:
+#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 4052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 170:
+#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(2);
     }
-#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 171:
+#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(3);
     }
-#line 4074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1317 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 172:
+#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 4085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 173:
+#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 4095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1328 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 174:
+#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 4105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 175:
+#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 4115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 176:
+#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 4125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1343 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 177:
+#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 4135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 178:
+#line 1356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 179:
+#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 4155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 180:
+#line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 4165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 181:
+#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1368 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 182:
+#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 4185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 183:
+#line 1381 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 4195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1378 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 184:
+#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 185:
+#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
-#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 186:
+#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
-#line 4225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 187:
+#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
     }
-#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 188:
+#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
     }
-#line 4245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 189:
+#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
-#line 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 190:
+#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
     }
-#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 191:
+#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
-#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 192:
+#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
-#line 4285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 193:
+#line 1433 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
-#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 194:
+#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
-#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 1435 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 195:
+#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
-#line 4315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 1440 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 196:
+#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
-#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 1445 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 197:
+#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
-#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 1450 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 198:
+#line 1458 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
-#line 4345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 199:
+#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
-#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 200:
+#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 201:
+#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 4375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 202:
+#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 4385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 203:
+#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 4395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 204:
+#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
-#line 4405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 205:
+#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
-#line 4415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 206:
+#line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
-#line 4425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 207:
+#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
-#line 4435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 208:
+#line 1509 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
-#line 4445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 209:
+#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
-#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 210:
+#line 1519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
-#line 4465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 211:
+#line 1524 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
-#line 4475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 212:
+#line 1529 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 4485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 213:
+#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(true);
     }
-#line 4495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 214:
+#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
     }
-#line 4505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 215:
+#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //
         // This is for user defined type names.  The lexical phase looked up the
@@ -4519,47 +4532,47 @@ yyreduce:
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 4523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 1553 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 216:
+#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
     }
-#line 4533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 217:
+#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
     }
-#line 4543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 1563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 218:
+#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
     }
-#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 219:
+#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 220:
+#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
         parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -4571,17 +4584,17 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 221:
+#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 222:
+#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -4589,19 +4602,19 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 4593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 1592 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 223:
+#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 224:
+#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -4612,11 +4625,11 @@ yyreduce:
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 4616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 225:
+#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4639,11 +4652,11 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 4643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 226:
+#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4668,38 +4681,38 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 227:
+#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 4681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 1661 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 228:
+#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 1667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 229:
+#line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeLine).type = new TType(EbtVoid);
         (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
     }
-#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 1672 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 230:
+#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
@@ -4708,181 +4721,181 @@ yyreduce:
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 231:
+#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 231:
-#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 232:
-#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 233:
-#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 234:
-#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 235:
-#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 236:
-#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 237:
-#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 238:
-#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 239:
-#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 240:
-#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 241:
-#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 4786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 242:
-#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = 0; }
+#line 4799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 243:
+#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 4795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 244:
+#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 245:
+#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
     }
-#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 246:
+#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 247:
+#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 248:
+#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 249:
+#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1745 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 250:
+#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 251:
+#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 252:
+#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1762 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 253:
+#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
             (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
     }
-#line 4882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 254:
+#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -4891,11 +4904,11 @@ yyreduce:
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 255:
+#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -4904,67 +4917,67 @@ yyreduce:
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 256:
+#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = 0; }
-#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 257:
+#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 258:
+#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1800 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 259:
+#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
         (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
     }
-#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 260:
+#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1811 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 261:
+#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 262:
+#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 263:
+#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
@@ -4975,19 +4988,19 @@ yyreduce:
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 264:
+#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 265:
+#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -4996,11 +5009,11 @@ yyreduce:
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 266:
+#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
@@ -5010,27 +5023,27 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1862 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 267:
+#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 5022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1865 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 268:
+#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1871 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 269:
+#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -5043,11 +5056,11 @@ yyreduce:
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 270:
+#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -5057,19 +5070,19 @@ yyreduce:
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 5061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1895 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 271:
+#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1901 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 272:
+#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -5078,11 +5091,11 @@ yyreduce:
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 273:
+#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -5090,21 +5103,21 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1916 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 274:
+#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 275:
+#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -5116,22 +5129,22 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 276:
+#line 1940 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 277:
+#line 1946 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -5144,81 +5157,81 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 278:
+#line 1961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 279:
+#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 280:
+#line 1970 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 281:
+#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = 0;
     }
-#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 282:
+#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 5189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 283:
+#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1982 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 284:
+#line 1990 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
     }
-#line 5208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 285:
+#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
     }
-#line 5218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 286:
+#line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -5226,73 +5239,73 @@ yyreduce:
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 5230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 287:
+#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 5238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 2002 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 288:
+#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 5247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 289:
+#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 290:
+#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) != nullptr) {
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
             parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
         }
     }
-#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 291:
+#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 2027 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 292:
+#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 293:
+#line 2042 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
         (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
     }
-#line 5292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 294:
+#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -5308,11 +5321,11 @@ yyreduce:
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
     }
-#line 5312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5540,5 +5553,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2057 "MachineIndependent/glslang.y" /* yacc.c:1906  */
+#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1906  */
 
index 13b0f6c..4d00d39 100644 (file)
@@ -267,7 +267,6 @@ public:
         uniformLocationBase(0)
 #endif
     {
-#ifndef GLSLANG_WEB
         localSize[0] = 1;
         localSize[1] = 1;
         localSize[2] = 1;
@@ -277,6 +276,7 @@ public:
         localSizeSpecId[0] = TQualifier::layoutNotSet;
         localSizeSpecId[1] = TQualifier::layoutNotSet;
         localSizeSpecId[2] = TQualifier::layoutNotSet;
+#ifndef GLSLANG_WEB
         xfbBuffers.resize(TQualifier::layoutXfbBufferEnd);
         shiftBinding.fill(0);
 #endif
@@ -492,6 +492,23 @@ public:
     bool usingVariablePointers() const { return false; }
     unsigned getXfbStride(int buffer) const { return 0; }
     bool hasLayoutDerivativeModeNone() const { return false; }
+    bool setLocalSize(int dim, int size)
+    {
+        if (localSizeNotDefault[dim])
+            return size == localSize[dim];
+        localSizeNotDefault[dim] = true;
+        localSize[dim] = size;
+        return true;
+    }
+    unsigned int getLocalSize(int dim) const { return localSize[dim]; }
+    bool setLocalSizeSpecId(int dim, int id)
+    {
+        if (localSizeSpecId[dim] != TQualifier::layoutNotSet)
+            return id == localSizeSpecId[dim];
+        localSizeSpecId[dim] = id;
+        return true;
+    }
+    int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; }
 #else
     void output(TInfoSink&, bool tree);
 
@@ -655,24 +672,6 @@ public:
     }
     TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; }
 
-    bool setLocalSize(int dim, int size)
-    {
-        if (localSizeNotDefault[dim])
-            return size == localSize[dim];
-        localSizeNotDefault[dim] = true;
-        localSize[dim] = size;
-        return true;
-    }
-    unsigned int getLocalSize(int dim) const { return localSize[dim]; }
-
-    bool setLocalSizeSpecId(int dim, int id)
-    {
-        if (localSizeSpecId[dim] != TQualifier::layoutNotSet)
-            return id == localSizeSpecId[dim];
-        localSizeSpecId[dim] = id;
-        return true;
-    }
-    int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; }
     void setXfbMode() { xfbMode = true; }
     bool getXfbMode() const { return xfbMode; }
     void setMultiStream() { multiStream = true; }
@@ -920,6 +919,9 @@ protected:
     bool useStorageBuffer;
     bool nanMinMaxClamp;            // true if desiring min/max/clamp to favor non-NaN over NaN
     bool depthReplacing;
+    int localSize[3];
+    bool localSizeNotDefault[3];
+    int localSizeSpecId[3];
 #ifndef GLSLANG_WEB
     bool useVulkanMemoryModel;
     int invocations;
@@ -932,9 +934,6 @@ protected:
     TVertexOrder vertexOrder;
     TInterlockOrdering interlockOrdering;
     bool pointMode;
-    int localSize[3];
-    bool localSizeNotDefault[3];
-    int localSizeSpecId[3];
     bool earlyFragmentTests;
     bool postDepthCoverage;
     TLayoutDepth depthLayout;