/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 *
 * Generated from Khronos GL API description (gl.xml) revision 32093.
 */

GLW_APICALL void GLW_APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program)
{
	DE_UNREF(pipeline);
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glActiveTexture (GLenum texture)
{
	DE_UNREF(texture);

}

GLW_APICALL void GLW_APIENTRY glAttachShader (GLuint program, GLuint shader)
{
	DE_UNREF(program);
	DE_UNREF(shader);

}

GLW_APICALL void GLW_APIENTRY glBeginConditionalRender (GLuint id, GLenum mode)
{
	DE_UNREF(id);
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glBeginQuery (GLenum target, GLuint id)
{
	DE_UNREF(target);
	DE_UNREF(id);

}

GLW_APICALL void GLW_APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(id);

}

GLW_APICALL void GLW_APIENTRY glBeginTransformFeedback (GLenum primitiveMode)
{
	DE_UNREF(primitiveMode);

}

GLW_APICALL void GLW_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(index);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers)
{
	DE_UNREF(target);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(buffers);

}

GLW_APICALL void GLW_APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes)
{
	DE_UNREF(target);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(buffers);
	DE_UNREF(offsets);
	DE_UNREF(sizes);

}

GLW_APICALL void GLW_APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(color);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(colorNumber);
	DE_UNREF(index);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer)
{
	DE_UNREF(target);
	DE_UNREF(framebuffer);

}

GLW_APICALL void GLW_APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
{
	DE_UNREF(unit);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(layered);
	DE_UNREF(layer);
	DE_UNREF(access);
	DE_UNREF(format);

}

GLW_APICALL void GLW_APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(textures);

}

GLW_APICALL void GLW_APIENTRY glBindProgramPipeline (GLuint pipeline)
{
	DE_UNREF(pipeline);

}

GLW_APICALL void GLW_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer)
{
	DE_UNREF(target);
	DE_UNREF(renderbuffer);

}

GLW_APICALL void GLW_APIENTRY glBindSampler (GLuint unit, GLuint sampler)
{
	DE_UNREF(unit);
	DE_UNREF(sampler);

}

GLW_APICALL void GLW_APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(samplers);

}

GLW_APICALL void GLW_APIENTRY glBindTexture (GLenum target, GLuint texture)
{
	DE_UNREF(target);
	DE_UNREF(texture);

}

GLW_APICALL void GLW_APIENTRY glBindTextureUnit (GLuint unit, GLuint texture)
{
	DE_UNREF(unit);
	DE_UNREF(texture);

}

GLW_APICALL void GLW_APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(textures);

}

GLW_APICALL void GLW_APIENTRY glBindTransformFeedback (GLenum target, GLuint id)
{
	DE_UNREF(target);
	DE_UNREF(id);

}

GLW_APICALL void GLW_APIENTRY glBindVertexArray (GLuint array)
{
	DE_UNREF(array);

}

GLW_APICALL void GLW_APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
{
	DE_UNREF(bindingindex);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(stride);

}

GLW_APICALL void GLW_APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(buffers);
	DE_UNREF(offsets);
	DE_UNREF(strides);

}

GLW_APICALL void GLW_APIENTRY glBlendBarrier (void)
{

}

GLW_APICALL void GLW_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
	DE_UNREF(red);
	DE_UNREF(green);
	DE_UNREF(blue);
	DE_UNREF(alpha);

}

GLW_APICALL void GLW_APIENTRY glBlendEquation (GLenum mode)
{
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
{
	DE_UNREF(modeRGB);
	DE_UNREF(modeAlpha);

}

GLW_APICALL void GLW_APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
{
	DE_UNREF(buf);
	DE_UNREF(modeRGB);
	DE_UNREF(modeAlpha);

}

GLW_APICALL void GLW_APIENTRY glBlendEquationi (GLuint buf, GLenum mode)
{
	DE_UNREF(buf);
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor)
{
	DE_UNREF(sfactor);
	DE_UNREF(dfactor);

}

GLW_APICALL void GLW_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
	DE_UNREF(sfactorRGB);
	DE_UNREF(dfactorRGB);
	DE_UNREF(sfactorAlpha);
	DE_UNREF(dfactorAlpha);

}

GLW_APICALL void GLW_APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
{
	DE_UNREF(buf);
	DE_UNREF(srcRGB);
	DE_UNREF(dstRGB);
	DE_UNREF(srcAlpha);
	DE_UNREF(dstAlpha);

}

GLW_APICALL void GLW_APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst)
{
	DE_UNREF(buf);
	DE_UNREF(src);
	DE_UNREF(dst);

}

GLW_APICALL void GLW_APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
	DE_UNREF(srcX0);
	DE_UNREF(srcY0);
	DE_UNREF(srcX1);
	DE_UNREF(srcY1);
	DE_UNREF(dstX0);
	DE_UNREF(dstY0);
	DE_UNREF(dstX1);
	DE_UNREF(dstY1);
	DE_UNREF(mask);
	DE_UNREF(filter);

}

GLW_APICALL void GLW_APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
	DE_UNREF(readFramebuffer);
	DE_UNREF(drawFramebuffer);
	DE_UNREF(srcX0);
	DE_UNREF(srcY0);
	DE_UNREF(srcX1);
	DE_UNREF(srcY1);
	DE_UNREF(dstX0);
	DE_UNREF(dstY0);
	DE_UNREF(dstX1);
	DE_UNREF(dstY1);
	DE_UNREF(mask);
	DE_UNREF(filter);

}

GLW_APICALL void GLW_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage)
{
	DE_UNREF(target);
	DE_UNREF(size);
	DE_UNREF(data);
	DE_UNREF(usage);

}

GLW_APICALL void GLW_APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
{
	DE_UNREF(target);
	DE_UNREF(size);
	DE_UNREF(data);
	DE_UNREF(flags);

}

GLW_APICALL void GLW_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(data);

}

GLW_APICALL GLenum GLW_APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target)
{
	DE_UNREF(framebuffer);
	DE_UNREF(target);

	return (GLenum)0;
}

GLW_APICALL void GLW_APIENTRY glClampColor (GLenum target, GLenum clamp)
{
	DE_UNREF(target);
	DE_UNREF(clamp);

}

GLW_APICALL void GLW_APIENTRY glClear (GLbitfield mask)
{
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(depth);
	DE_UNREF(stencil);

}

GLW_APICALL void GLW_APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value)
{
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value)
{
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value)
{
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
	DE_UNREF(red);
	DE_UNREF(green);
	DE_UNREF(blue);
	DE_UNREF(alpha);

}

GLW_APICALL void GLW_APIENTRY glClearDepth (GLdouble depth)
{
	DE_UNREF(depth);

}

GLW_APICALL void GLW_APIENTRY glClearDepthf (GLfloat d)
{
	DE_UNREF(d);

}

GLW_APICALL void GLW_APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(buffer);
	DE_UNREF(internalformat);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(buffer);
	DE_UNREF(internalformat);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buffer);
	DE_UNREF(depth);
	DE_UNREF(stencil);

}

GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glClearStencil (GLint s)
{
	DE_UNREF(s);

}

GLW_APICALL void GLW_APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(data);

}

GLW_APICALL GLenum GLW_APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
{
	DE_UNREF(sync);
	DE_UNREF(flags);
	DE_UNREF(timeout);

	return (GLenum)0;
}

GLW_APICALL void GLW_APIENTRY glClipControl (GLenum origin, GLenum depth)
{
	DE_UNREF(origin);
	DE_UNREF(depth);

}

GLW_APICALL void GLW_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
	DE_UNREF(red);
	DE_UNREF(green);
	DE_UNREF(blue);
	DE_UNREF(alpha);

}

GLW_APICALL void GLW_APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
	DE_UNREF(index);
	DE_UNREF(r);
	DE_UNREF(g);
	DE_UNREF(b);
	DE_UNREF(a);

}

GLW_APICALL void GLW_APIENTRY glCompileShader (GLuint shader)
{
	DE_UNREF(shader);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(width);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(width);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
	DE_UNREF(readTarget);
	DE_UNREF(writeTarget);
	DE_UNREF(readOffset);
	DE_UNREF(writeOffset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
{
	DE_UNREF(srcName);
	DE_UNREF(srcTarget);
	DE_UNREF(srcLevel);
	DE_UNREF(srcX);
	DE_UNREF(srcY);
	DE_UNREF(srcZ);
	DE_UNREF(dstName);
	DE_UNREF(dstTarget);
	DE_UNREF(dstLevel);
	DE_UNREF(dstX);
	DE_UNREF(dstY);
	DE_UNREF(dstZ);
	DE_UNREF(srcWidth);
	DE_UNREF(srcHeight);
	DE_UNREF(srcDepth);

}

GLW_APICALL void GLW_APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
	DE_UNREF(readBuffer);
	DE_UNREF(writeBuffer);
	DE_UNREF(readOffset);
	DE_UNREF(writeOffset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(border);

}

GLW_APICALL void GLW_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(border);

}

GLW_APICALL void GLW_APIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers)
{
	DE_UNREF(n);
	DE_UNREF(buffers);

}

GLW_APICALL void GLW_APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers)
{
	DE_UNREF(n);
	DE_UNREF(framebuffers);

}

GLW_APICALL void GLW_APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines)
{
	DE_UNREF(n);
	DE_UNREF(pipelines);

}

GLW_APICALL void GLW_APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids)
{
	DE_UNREF(target);
	DE_UNREF(n);
	DE_UNREF(ids);

}

GLW_APICALL void GLW_APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers)
{
	DE_UNREF(n);
	DE_UNREF(renderbuffers);

}

GLW_APICALL void GLW_APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers)
{
	DE_UNREF(n);
	DE_UNREF(samplers);

}

GLW_APICALL GLuint GLW_APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings)
{
	DE_UNREF(type);
	DE_UNREF(count);
	DE_UNREF(strings);

	return (GLuint)0;
}

GLW_APICALL void GLW_APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures)
{
	DE_UNREF(target);
	DE_UNREF(n);
	DE_UNREF(textures);

}

GLW_APICALL void GLW_APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids)
{
	DE_UNREF(n);
	DE_UNREF(ids);

}

GLW_APICALL void GLW_APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays)
{
	DE_UNREF(n);
	DE_UNREF(arrays);

}

GLW_APICALL void GLW_APIENTRY glCullFace (GLenum mode)
{
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam)
{
	DE_UNREF(callback);
	DE_UNREF(userParam);

}

GLW_APICALL void GLW_APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
{
	DE_UNREF(source);
	DE_UNREF(type);
	DE_UNREF(severity);
	DE_UNREF(count);
	DE_UNREF(ids);
	DE_UNREF(enabled);

}

GLW_APICALL void GLW_APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)
{
	DE_UNREF(source);
	DE_UNREF(type);
	DE_UNREF(id);
	DE_UNREF(severity);
	DE_UNREF(length);
	DE_UNREF(buf);

}

GLW_APICALL void GLW_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
{
	DE_UNREF(n);
	DE_UNREF(framebuffers);

}

GLW_APICALL void GLW_APIENTRY glDeleteProgram (GLuint program)
{
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines)
{
	DE_UNREF(n);
	DE_UNREF(pipelines);

}

GLW_APICALL void GLW_APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids)
{
	DE_UNREF(n);
	DE_UNREF(ids);

}

GLW_APICALL void GLW_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
{
	DE_UNREF(n);
	DE_UNREF(renderbuffers);

}

GLW_APICALL void GLW_APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers)
{
	DE_UNREF(count);
	DE_UNREF(samplers);

}

GLW_APICALL void GLW_APIENTRY glDeleteShader (GLuint shader)
{
	DE_UNREF(shader);

}

GLW_APICALL void GLW_APIENTRY glDeleteSync (GLsync sync)
{
	DE_UNREF(sync);

}

GLW_APICALL void GLW_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures)
{
	DE_UNREF(n);
	DE_UNREF(textures);

}

GLW_APICALL void GLW_APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids)
{
	DE_UNREF(n);
	DE_UNREF(ids);

}

GLW_APICALL void GLW_APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays)
{
	DE_UNREF(n);
	DE_UNREF(arrays);

}

GLW_APICALL void GLW_APIENTRY glDepthFunc (GLenum func)
{
	DE_UNREF(func);

}

GLW_APICALL void GLW_APIENTRY glDepthMask (GLboolean flag)
{
	DE_UNREF(flag);

}

GLW_APICALL void GLW_APIENTRY glDepthRange (GLdouble near, GLdouble far)
{
	DE_UNREF(near);
	DE_UNREF(far);

}

GLW_APICALL void GLW_APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f)
{
	DE_UNREF(index);
	DE_UNREF(n);
	DE_UNREF(f);

}

GLW_APICALL void GLW_APIENTRY glDepthRangef (GLfloat n, GLfloat f)
{
	DE_UNREF(n);
	DE_UNREF(f);

}

GLW_APICALL void GLW_APIENTRY glDetachShader (GLuint program, GLuint shader)
{
	DE_UNREF(program);
	DE_UNREF(shader);

}

GLW_APICALL void GLW_APIENTRY glDisable (GLenum cap)
{
	DE_UNREF(cap);

}

GLW_APICALL void GLW_APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index)
{
	DE_UNREF(vaobj);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glDisableVertexAttribArray (GLuint index)
{
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glDisablei (GLenum target, GLuint index)
{
	DE_UNREF(target);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
{
	DE_UNREF(num_groups_x);
	DE_UNREF(num_groups_y);
	DE_UNREF(num_groups_z);

}

GLW_APICALL void GLW_APIENTRY glDispatchComputeIndirect (GLintptr indirect)
{
	DE_UNREF(indirect);

}

GLW_APICALL void GLW_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
{
	DE_UNREF(mode);
	DE_UNREF(first);
	DE_UNREF(count);

}

GLW_APICALL void GLW_APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect)
{
	DE_UNREF(mode);
	DE_UNREF(indirect);

}

GLW_APICALL void GLW_APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
{
	DE_UNREF(mode);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(instancecount);

}

GLW_APICALL void GLW_APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
{
	DE_UNREF(mode);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(instancecount);
	DE_UNREF(baseinstance);

}

GLW_APICALL void GLW_APIENTRY glDrawBuffer (GLenum buf)
{
	DE_UNREF(buf);

}

GLW_APICALL void GLW_APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs)
{
	DE_UNREF(n);
	DE_UNREF(bufs);

}

GLW_APICALL void GLW_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(basevertex);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect)
{
	DE_UNREF(mode);
	DE_UNREF(type);
	DE_UNREF(indirect);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(instancecount);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(instancecount);
	DE_UNREF(baseinstance);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(instancecount);
	DE_UNREF(basevertex);

}

GLW_APICALL void GLW_APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(instancecount);
	DE_UNREF(basevertex);
	DE_UNREF(baseinstance);

}

GLW_APICALL void GLW_APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
{
	DE_UNREF(mode);
	DE_UNREF(start);
	DE_UNREF(end);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);

}

GLW_APICALL void GLW_APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
{
	DE_UNREF(mode);
	DE_UNREF(start);
	DE_UNREF(end);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(basevertex);

}

GLW_APICALL void GLW_APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id)
{
	DE_UNREF(mode);
	DE_UNREF(id);

}

GLW_APICALL void GLW_APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount)
{
	DE_UNREF(mode);
	DE_UNREF(id);
	DE_UNREF(instancecount);

}

GLW_APICALL void GLW_APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream)
{
	DE_UNREF(mode);
	DE_UNREF(id);
	DE_UNREF(stream);

}

GLW_APICALL void GLW_APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount)
{
	DE_UNREF(mode);
	DE_UNREF(id);
	DE_UNREF(stream);
	DE_UNREF(instancecount);

}

GLW_APICALL void GLW_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image)
{
	DE_UNREF(target);
	DE_UNREF(image);

}

GLW_APICALL void GLW_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
{
	DE_UNREF(target);
	DE_UNREF(image);

}

GLW_APICALL void GLW_APIENTRY glEnable (GLenum cap)
{
	DE_UNREF(cap);

}

GLW_APICALL void GLW_APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index)
{
	DE_UNREF(vaobj);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glEnableVertexAttribArray (GLuint index)
{
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glEnablei (GLenum target, GLuint index)
{
	DE_UNREF(target);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glEndConditionalRender (void)
{

}

GLW_APICALL void GLW_APIENTRY glEndQuery (GLenum target)
{
	DE_UNREF(target);

}

GLW_APICALL void GLW_APIENTRY glEndQueryIndexed (GLenum target, GLuint index)
{
	DE_UNREF(target);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glEndTransformFeedback (void)
{

}

GLW_APICALL GLsync GLW_APIENTRY glFenceSync (GLenum condition, GLbitfield flags)
{
	DE_UNREF(condition);
	DE_UNREF(flags);

	return (GLsync)0;
}

GLW_APICALL void GLW_APIENTRY glFinish (void)
{

}

GLW_APICALL void GLW_APIENTRY glFlush (void)
{

}

GLW_APICALL void GLW_APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
{
	DE_UNREF(target);
	DE_UNREF(offset);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(renderbuffertarget);
	DE_UNREF(renderbuffer);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(textarget);
	DE_UNREF(texture);
	DE_UNREF(level);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(textarget);
	DE_UNREF(texture);
	DE_UNREF(level);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(textarget);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(zoffset);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(layer);

}

GLW_APICALL void GLW_APIENTRY glFrontFace (GLenum mode)
{
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glGenerateMipmap (GLenum target)
{
	DE_UNREF(target);

}

GLW_APICALL void GLW_APIENTRY glGenerateTextureMipmap (GLuint texture)
{
	DE_UNREF(texture);

}

GLW_APICALL void GLW_APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(bufferIndex);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(index);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(index);
	DE_UNREF(bufsize);
	DE_UNREF(length);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(index);
	DE_UNREF(bufsize);
	DE_UNREF(length);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(values);

}

GLW_APICALL void GLW_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(index);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
{
	DE_UNREF(program);
	DE_UNREF(uniformBlockIndex);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(uniformBlockName);

}

GLW_APICALL void GLW_APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(uniformBlockIndex);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)
{
	DE_UNREF(program);
	DE_UNREF(uniformIndex);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(uniformName);

}

GLW_APICALL void GLW_APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(uniformCount);
	DE_UNREF(uniformIndices);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)
{
	DE_UNREF(program);
	DE_UNREF(maxCount);
	DE_UNREF(count);
	DE_UNREF(shaders);

}

GLW_APICALL void GLW_APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data)
{
	DE_UNREF(target);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(img);

}

GLW_APICALL void GLW_APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL GLuint GLW_APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)
{
	DE_UNREF(count);
	DE_UNREF(bufSize);
	DE_UNREF(sources);
	DE_UNREF(types);
	DE_UNREF(ids);
	DE_UNREF(severities);
	DE_UNREF(lengths);
	DE_UNREF(messageLog);

	return (GLuint)0;
}

GLW_APICALL void GLW_APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetDoublev (GLenum pname, GLdouble *data)
{
	DE_UNREF(pname);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

GLW_APICALL GLint GLW_APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL GLint GLW_APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL void GLW_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL GLenum GLW_APIENTRY glGetGraphicsResetStatus (void)
{

	return (GLenum)0;
}

GLW_APICALL void GLW_APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetInteger64v (GLenum pname, GLint64 *data)
{
	DE_UNREF(pname);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(pname);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val)
{
	DE_UNREF(pname);
	DE_UNREF(index);
	DE_UNREF(val);

}

GLW_APICALL void GLW_APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params)
{
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params)
{
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params)
{
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param)
{
	DE_UNREF(framebuffer);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params)
{
	DE_UNREF(renderbuffer);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)
{
	DE_UNREF(identifier);
	DE_UNREF(name);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(label);

}

GLW_APICALL void GLW_APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)
{
	DE_UNREF(ptr);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(label);

}

GLW_APICALL void GLW_APIENTRY glGetPointerv (GLenum pname, void **params)
{
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
{
	DE_UNREF(program);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(binaryFormat);
	DE_UNREF(binary);

}

GLW_APICALL void GLW_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
	DE_UNREF(program);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(infoLog);

}

GLW_APICALL void GLW_APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
	DE_UNREF(pipeline);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(infoLog);

}

GLW_APICALL void GLW_APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params)
{
	DE_UNREF(pipeline);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL GLuint GLW_APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(name);

	return (GLuint)0;
}

GLW_APICALL GLint GLW_APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL GLint GLW_APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL void GLW_APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(index);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(programInterface);
	DE_UNREF(index);
	DE_UNREF(propCount);
	DE_UNREF(props);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(pname);
	DE_UNREF(values);

}

GLW_APICALL void GLW_APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
{
	DE_UNREF(id);
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
{
	DE_UNREF(id);
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
{
	DE_UNREF(id);
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
{
	DE_UNREF(id);
	DE_UNREF(buffer);
	DE_UNREF(pname);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params)
{
	DE_UNREF(id);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params)
{
	DE_UNREF(id);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params)
{
	DE_UNREF(id);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params)
{
	DE_UNREF(id);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
	DE_UNREF(shader);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(infoLog);

}

GLW_APICALL void GLW_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
{
	DE_UNREF(shadertype);
	DE_UNREF(precisiontype);
	DE_UNREF(range);
	DE_UNREF(precision);

}

GLW_APICALL void GLW_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
{
	DE_UNREF(shader);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(source);

}

GLW_APICALL GLuint GLW_APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(name);

	return (GLuint)0;
}

GLW_APICALL GLint GLW_APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(shadertype);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL void GLW_APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{
	DE_UNREF(sync);
	DE_UNREF(pname);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(values);

}

GLW_APICALL void GLW_APIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(index);
	DE_UNREF(bufSize);
	DE_UNREF(length);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(name);

}

GLW_APICALL void GLW_APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param)
{
	DE_UNREF(xfb);
	DE_UNREF(pname);
	DE_UNREF(index);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param)
{
	DE_UNREF(xfb);
	DE_UNREF(pname);
	DE_UNREF(index);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param)
{
	DE_UNREF(xfb);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL GLuint GLW_APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName)
{
	DE_UNREF(program);
	DE_UNREF(uniformBlockName);

	return (GLuint)0;
}

GLW_APICALL void GLW_APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)
{
	DE_UNREF(program);
	DE_UNREF(uniformCount);
	DE_UNREF(uniformNames);
	DE_UNREF(uniformIndices);

}

GLW_APICALL GLint GLW_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name)
{
	DE_UNREF(program);
	DE_UNREF(name);

	return (GLint)0;
}

GLW_APICALL void GLW_APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params)
{
	DE_UNREF(shadertype);
	DE_UNREF(location);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param)
{
	DE_UNREF(vaobj);
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param)
{
	DE_UNREF(vaobj);
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param)
{
	DE_UNREF(vaobj);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(pointer);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params)
{
	DE_UNREF(index);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(lod);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(bufSize);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glHint (GLenum target, GLenum mode)
{
	DE_UNREF(target);
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker)
{
	DE_UNREF(length);
	DE_UNREF(marker);

}

GLW_APICALL void GLW_APIENTRY glInvalidateBufferData (GLuint buffer)
{
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments)
{
	DE_UNREF(target);
	DE_UNREF(numAttachments);
	DE_UNREF(attachments);

}

GLW_APICALL void GLW_APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments)
{
	DE_UNREF(framebuffer);
	DE_UNREF(numAttachments);
	DE_UNREF(attachments);

}

GLW_APICALL void GLW_APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(framebuffer);
	DE_UNREF(numAttachments);
	DE_UNREF(attachments);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(numAttachments);
	DE_UNREF(attachments);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glInvalidateTexImage (GLuint texture, GLint level)
{
	DE_UNREF(texture);
	DE_UNREF(level);

}

GLW_APICALL void GLW_APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);

}

GLW_APICALL GLboolean GLW_APIENTRY glIsBuffer (GLuint buffer)
{
	DE_UNREF(buffer);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsEnabled (GLenum cap)
{
	DE_UNREF(cap);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsEnabledi (GLenum target, GLuint index)
{
	DE_UNREF(target);
	DE_UNREF(index);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsFramebuffer (GLuint framebuffer)
{
	DE_UNREF(framebuffer);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsProgram (GLuint program)
{
	DE_UNREF(program);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsProgramPipeline (GLuint pipeline)
{
	DE_UNREF(pipeline);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsQuery (GLuint id)
{
	DE_UNREF(id);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsRenderbuffer (GLuint renderbuffer)
{
	DE_UNREF(renderbuffer);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsSampler (GLuint sampler)
{
	DE_UNREF(sampler);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsShader (GLuint shader)
{
	DE_UNREF(shader);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsSync (GLsync sync)
{
	DE_UNREF(sync);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsTexture (GLuint texture)
{
	DE_UNREF(texture);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsTransformFeedback (GLuint id)
{
	DE_UNREF(id);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glIsVertexArray (GLuint array)
{
	DE_UNREF(array);

	return (GLboolean)0;
}

GLW_APICALL void GLW_APIENTRY glLineWidth (GLfloat width)
{
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glLinkProgram (GLuint program)
{
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glLogicOp (GLenum opcode)
{
	DE_UNREF(opcode);

}

GLW_APICALL void * GLW_APIENTRY glMapBuffer (GLenum target, GLenum access)
{
	DE_UNREF(target);
	DE_UNREF(access);

	return (void *)0;
}

GLW_APICALL void * GLW_APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access)
{
	DE_UNREF(buffer);
	DE_UNREF(access);

	return (void *)0;
}

GLW_APICALL void * GLW_APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(length);
	DE_UNREF(access);

	return (void *)0;
}

GLW_APICALL void GLW_APIENTRY glMemoryBarrier (GLbitfield barriers)
{
	DE_UNREF(barriers);

}

GLW_APICALL void GLW_APIENTRY glMemoryBarrierByRegion (GLbitfield barriers)
{
	DE_UNREF(barriers);

}

GLW_APICALL void GLW_APIENTRY glMinSampleShading (GLfloat value)
{
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount)
{
	DE_UNREF(mode);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(drawcount);

}

GLW_APICALL void GLW_APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)
{
	DE_UNREF(mode);
	DE_UNREF(indirect);
	DE_UNREF(drawcount);
	DE_UNREF(stride);

}

GLW_APICALL void GLW_APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(drawcount);

}

GLW_APICALL void GLW_APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex)
{
	DE_UNREF(mode);
	DE_UNREF(count);
	DE_UNREF(type);
	DE_UNREF(indices);
	DE_UNREF(drawcount);
	DE_UNREF(basevertex);

}

GLW_APICALL void GLW_APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)
{
	DE_UNREF(mode);
	DE_UNREF(type);
	DE_UNREF(indirect);
	DE_UNREF(drawcount);
	DE_UNREF(stride);

}

GLW_APICALL void GLW_APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
{
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(data);
	DE_UNREF(usage);

}

GLW_APICALL void GLW_APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
{
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(data);
	DE_UNREF(flags);

}

GLW_APICALL void GLW_APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buf);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs)
{
	DE_UNREF(framebuffer);
	DE_UNREF(n);
	DE_UNREF(bufs);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param)
{
	DE_UNREF(framebuffer);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src)
{
	DE_UNREF(framebuffer);
	DE_UNREF(src);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(renderbuffertarget);
	DE_UNREF(renderbuffer);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(layer);

}

GLW_APICALL void GLW_APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(renderbuffer);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(renderbuffer);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label)
{
	DE_UNREF(identifier);
	DE_UNREF(name);
	DE_UNREF(length);
	DE_UNREF(label);

}

GLW_APICALL void GLW_APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label)
{
	DE_UNREF(ptr);
	DE_UNREF(length);
	DE_UNREF(label);

}

GLW_APICALL void GLW_APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values)
{
	DE_UNREF(pname);
	DE_UNREF(values);

}

GLW_APICALL void GLW_APIENTRY glPatchParameteri (GLenum pname, GLint value)
{
	DE_UNREF(pname);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glPauseTransformFeedback (void)
{

}

GLW_APICALL void GLW_APIENTRY glPixelStoref (GLenum pname, GLfloat param)
{
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glPixelStorei (GLenum pname, GLint param)
{
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glPointParameterf (GLenum pname, GLfloat param)
{
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params)
{
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glPointParameteri (GLenum pname, GLint param)
{
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glPointParameteriv (GLenum pname, const GLint *params)
{
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glPointSize (GLfloat size)
{
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glPolygonMode (GLenum face, GLenum mode)
{
	DE_UNREF(face);
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units)
{
	DE_UNREF(factor);
	DE_UNREF(units);

}

GLW_APICALL void GLW_APIENTRY glPopDebugGroup (void)
{

}

GLW_APICALL void GLW_APIENTRY glPopGroupMarkerEXT (void)
{

}

GLW_APICALL void GLW_APIENTRY glPrimitiveBoundingBox (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
{
	DE_UNREF(minX);
	DE_UNREF(minY);
	DE_UNREF(minZ);
	DE_UNREF(minW);
	DE_UNREF(maxX);
	DE_UNREF(maxY);
	DE_UNREF(maxZ);
	DE_UNREF(maxW);

}

GLW_APICALL void GLW_APIENTRY glPrimitiveRestartIndex (GLuint index)
{
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
{
	DE_UNREF(program);
	DE_UNREF(binaryFormat);
	DE_UNREF(binary);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value)
{
	DE_UNREF(program);
	DE_UNREF(pname);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glProvokingVertex (GLenum mode)
{
	DE_UNREF(mode);

}

GLW_APICALL void GLW_APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message)
{
	DE_UNREF(source);
	DE_UNREF(id);
	DE_UNREF(length);
	DE_UNREF(message);

}

GLW_APICALL void GLW_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker)
{
	DE_UNREF(length);
	DE_UNREF(marker);

}

GLW_APICALL void GLW_APIENTRY glQueryCounter (GLuint id, GLenum target)
{
	DE_UNREF(id);
	DE_UNREF(target);

}

GLW_APICALL void GLW_APIENTRY glReadBuffer (GLenum src)
{
	DE_UNREF(src);

}

GLW_APICALL void GLW_APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
{
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(bufSize);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glReleaseShaderCompiler (void)
{

}

GLW_APICALL void GLW_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glResumeTransformFeedback (void)
{

}

GLW_APICALL void GLW_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert)
{
	DE_UNREF(value);
	DE_UNREF(invert);

}

GLW_APICALL void GLW_APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask)
{
	DE_UNREF(maskNumber);
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param)
{
	DE_UNREF(sampler);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
{
	DE_UNREF(index);
	DE_UNREF(left);
	DE_UNREF(bottom);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glScissorIndexedv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length)
{
	DE_UNREF(count);
	DE_UNREF(shaders);
	DE_UNREF(binaryformat);
	DE_UNREF(binary);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length)
{
	DE_UNREF(shader);
	DE_UNREF(count);
	DE_UNREF(string);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
{
	DE_UNREF(program);
	DE_UNREF(storageBlockIndex);
	DE_UNREF(storageBlockBinding);

}

GLW_APICALL void GLW_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask)
{
	DE_UNREF(func);
	DE_UNREF(ref);
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
{
	DE_UNREF(face);
	DE_UNREF(func);
	DE_UNREF(ref);
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glStencilMask (GLuint mask)
{
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask)
{
	DE_UNREF(face);
	DE_UNREF(mask);

}

GLW_APICALL void GLW_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass)
{
	DE_UNREF(fail);
	DE_UNREF(zfail);
	DE_UNREF(zpass);

}

GLW_APICALL void GLW_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
{
	DE_UNREF(face);
	DE_UNREF(sfail);
	DE_UNREF(dpfail);
	DE_UNREF(dppass);

}

GLW_APICALL void GLW_APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(border);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(border);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
{
	DE_UNREF(target);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(border);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
{
	DE_UNREF(target);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
{
	DE_UNREF(target);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(target);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
{
	DE_UNREF(target);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{
	DE_UNREF(target);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);

}

GLW_APICALL void GLW_APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
{
	DE_UNREF(target);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(width);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTextureBarrier (void)
{

}

GLW_APICALL void GLW_APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer)
{
	DE_UNREF(texture);
	DE_UNREF(internalformat);
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
	DE_UNREF(texture);
	DE_UNREF(internalformat);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param)
{
	DE_UNREF(texture);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)
{
	DE_UNREF(texture);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
{
	DE_UNREF(texture);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{
	DE_UNREF(texture);
	DE_UNREF(levels);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);

}

GLW_APICALL void GLW_APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
{
	DE_UNREF(texture);
	DE_UNREF(samples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(fixedsamplelocations);

}

GLW_APICALL void GLW_APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(width);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(yoffset);
	DE_UNREF(zoffset);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(depth);
	DE_UNREF(format);
	DE_UNREF(type);
	DE_UNREF(pixels);

}

GLW_APICALL void GLW_APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(origtexture);
	DE_UNREF(internalformat);
	DE_UNREF(minlevel);
	DE_UNREF(numlevels);
	DE_UNREF(minlayer);
	DE_UNREF(numlayers);

}

GLW_APICALL void GLW_APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer)
{
	DE_UNREF(xfb);
	DE_UNREF(index);
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
	DE_UNREF(xfb);
	DE_UNREF(index);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)
{
	DE_UNREF(program);
	DE_UNREF(count);
	DE_UNREF(varyings);
	DE_UNREF(bufferMode);

}

GLW_APICALL void GLW_APIENTRY glUniform1d (GLint location, GLdouble x)
{
	DE_UNREF(location);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform1f (GLint location, GLfloat v0)
{
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform1i (GLint location, GLint v0)
{
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform1ui (GLint location, GLuint v0)
{
	DE_UNREF(location);
	DE_UNREF(v0);

}

GLW_APICALL void GLW_APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y)
{
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);

}

GLW_APICALL void GLW_APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);

}

GLW_APICALL void GLW_APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
{
	DE_UNREF(location);
	DE_UNREF(v0);
	DE_UNREF(v1);
	DE_UNREF(v2);
	DE_UNREF(v3);

}

GLW_APICALL void GLW_APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
{
	DE_UNREF(program);
	DE_UNREF(uniformBlockIndex);
	DE_UNREF(uniformBlockBinding);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
	DE_UNREF(location);
	DE_UNREF(count);
	DE_UNREF(transpose);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices)
{
	DE_UNREF(shadertype);
	DE_UNREF(count);
	DE_UNREF(indices);

}

GLW_APICALL GLboolean GLW_APIENTRY glUnmapBuffer (GLenum target)
{
	DE_UNREF(target);

	return (GLboolean)0;
}

GLW_APICALL GLboolean GLW_APIENTRY glUnmapNamedBuffer (GLuint buffer)
{
	DE_UNREF(buffer);

	return (GLboolean)0;
}

GLW_APICALL void GLW_APIENTRY glUseProgram (GLuint program)
{
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
{
	DE_UNREF(pipeline);
	DE_UNREF(stages);
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glValidateProgram (GLuint program)
{
	DE_UNREF(program);

}

GLW_APICALL void GLW_APIENTRY glValidateProgramPipeline (GLuint pipeline)
{
	DE_UNREF(pipeline);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
{
	DE_UNREF(vaobj);
	DE_UNREF(attribindex);
	DE_UNREF(bindingindex);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
{
	DE_UNREF(vaobj);
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
	DE_UNREF(vaobj);
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
	DE_UNREF(vaobj);
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor)
{
	DE_UNREF(vaobj);
	DE_UNREF(bindingindex);
	DE_UNREF(divisor);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
{
	DE_UNREF(vaobj);
	DE_UNREF(bindingindex);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(stride);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
{
	DE_UNREF(vaobj);
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(buffers);
	DE_UNREF(offsets);
	DE_UNREF(strides);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1d (GLuint index, GLdouble x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1s (GLuint index, GLshort x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex)
{
	DE_UNREF(attribindex);
	DE_UNREF(bindingindex);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor)
{
	DE_UNREF(index);
	DE_UNREF(divisor);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
{
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI1i (GLuint index, GLint x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI1ui (GLuint index, GLuint x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
{
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(pointer);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL1d (GLuint index, GLdouble x)
{
	DE_UNREF(index);
	DE_UNREF(x);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
	DE_UNREF(attribindex);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(relativeoffset);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
{
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(pointer);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
	DE_UNREF(index);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(value);

}

GLW_APICALL void GLW_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
{
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(stride);
	DE_UNREF(pointer);

}

GLW_APICALL void GLW_APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor)
{
	DE_UNREF(bindingindex);
	DE_UNREF(divisor);

}

GLW_APICALL void GLW_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v)
{
	DE_UNREF(first);
	DE_UNREF(count);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
{
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(w);
	DE_UNREF(h);

}

GLW_APICALL void GLW_APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v)
{
	DE_UNREF(index);
	DE_UNREF(v);

}

GLW_APICALL void GLW_APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
{
	DE_UNREF(sync);
	DE_UNREF(flags);
	DE_UNREF(timeout);

}
