#version 310 es

layout(location = 0) out float none_1;
layout(location = 1) flat out float tint_symbol_2;
layout(location = 2) out float perspective_center_1;
layout(location = 3) centroid out float perspective_centroid_1;
layout(location = 4) out float perspective_sample_1;
layout(location = 5) out float linear_center_1;
layout(location = 6) centroid out float linear_centroid_1;
layout(location = 7) out float linear_sample_1;
struct Out {
  vec4 pos;
  float none;
  float tint_symbol;
  float perspective_center;
  float perspective_centroid;
  float perspective_sample;
  float linear_center;
  float linear_centroid;
  float linear_sample;
};

Out tint_symbol_1() {
  Out tint_symbol_3 = Out(vec4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  return tint_symbol_3;
}

void main() {
  Out inner_result = tint_symbol_1();
  gl_Position = inner_result.pos;
  none_1 = inner_result.none;
  tint_symbol_2 = inner_result.tint_symbol;
  perspective_center_1 = inner_result.perspective_center;
  perspective_centroid_1 = inner_result.perspective_centroid;
  perspective_sample_1 = inner_result.perspective_sample;
  linear_center_1 = inner_result.linear_center;
  linear_centroid_1 = inner_result.linear_centroid;
  linear_sample_1 = inner_result.linear_sample;
  gl_Position.y = -(gl_Position.y);
  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
  return;
}
