/* 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 b7aee529f02340247e45621e9dbd054817d39c71.
 */

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 glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(texture);

}

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 glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit)
{
	DE_UNREF(target);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(commit);

}

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 GLenum GLW_APIENTRY glCheckNamedFramebufferStatusEXT (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 glClearNamedBufferDataEXT (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 glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr 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, GLint drawbuffer, GLfloat depth, GLint stencil)
{
	DE_UNREF(framebuffer);
	DE_UNREF(buffer);
	DE_UNREF(drawbuffer);
	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 void GLW_APIENTRY glClientAttribDefaultEXT (GLbitfield mask)
{
	DE_UNREF(mask);

}

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 glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(bits);

}

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

}

GLW_APICALL void GLW_APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texunit);
	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(bits);

}

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

}

GLW_APICALL void GLW_APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texunit);
	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(bits);

}

GLW_APICALL void GLW_APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texunit);
	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(bits);

}

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 glCompressedTexImage3DOES (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 glCompressedTexSubImage3DOES (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 glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(bits);

}

GLW_APICALL void GLW_APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);
	DE_UNREF(border);
	DE_UNREF(imageSize);
	DE_UNREF(bits);

}

GLW_APICALL void GLW_APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	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(bits);

}

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 glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(width);
	DE_UNREF(format);
	DE_UNREF(imageSize);
	DE_UNREF(bits);

}

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 glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	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(bits);

}

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 glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)
{
	DE_UNREF(texture);
	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(bits);

}

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 glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
	DE_UNREF(texunit);
	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 glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
	DE_UNREF(texunit);
	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 glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(xoffset);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(width);

}

GLW_APICALL void GLW_APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texunit);
	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 glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texunit);
	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 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 glCopyTexSubImage3DOES (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 glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
	DE_UNREF(texture);
	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 glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
	DE_UNREF(texture);
	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 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 glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	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 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 glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	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 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 glDepthBoundsEXT (GLclampd zmin, GLclampd zmax)
{
	DE_UNREF(zmin);
	DE_UNREF(zmax);

}

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 n, GLdouble f)
{
	DE_UNREF(n);
	DE_UNREF(f);

}

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

}

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 glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat 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 glDisableClientStateIndexedEXT (GLenum array, GLuint index)
{
	DE_UNREF(array);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index)
{
	DE_UNREF(array);
	DE_UNREF(index);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array)
{
	DE_UNREF(vaobj);
	DE_UNREF(array);

}

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 glEnableClientStateIndexedEXT (GLenum array, GLuint index)
{
	DE_UNREF(array);
	DE_UNREF(index);

}

GLW_APICALL void GLW_APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index)
{
	DE_UNREF(array);
	DE_UNREF(index);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array)
{
	DE_UNREF(vaobj);
	DE_UNREF(array);

}

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 glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(length);

}

GLW_APICALL void GLW_APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode)
{
	DE_UNREF(framebuffer);
	DE_UNREF(mode);

}

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

}

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 glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode)
{
	DE_UNREF(framebuffer);
	DE_UNREF(mode);

}

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 glFramebufferTexture3DOES (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 glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(samples);
	DE_UNREF(baseViewIndex);
	DE_UNREF(numViews);

}

GLW_APICALL void GLW_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
{
	DE_UNREF(target);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(baseViewIndex);
	DE_UNREF(numViews);

}

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 glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target)
{
	DE_UNREF(texunit);
	DE_UNREF(target);

}

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

}

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

}

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 glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(lod);
	DE_UNREF(img);

}

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 glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(lod);
	DE_UNREF(img);

}

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 void GLW_APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params)
{
	DE_UNREF(framebuffer);
	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 glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params)
{
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(samples);
	DE_UNREF(pname);
	DE_UNREF(bufSize);
	DE_UNREF(params);

}

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 glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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

}

GLW_APICALL void GLW_APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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

}

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

}

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

}

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

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(pname);
	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 glGetNamedBufferParameterivEXT (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 glGetNamedBufferPointervEXT (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 glGetNamedBufferSubDataEXT (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 glGetNamedFramebufferAttachmentParameterivEXT (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 glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params)
{
	DE_UNREF(framebuffer);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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

}

GLW_APICALL void GLW_APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(string);

}

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

}

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 glGetNamedRenderbufferParameterivEXT (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 glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data)
{
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(data);

}

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

}

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 glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(level);
	DE_UNREF(format);
	DE_UNREF(type);
	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 glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glGetVertexArrayIntegeri_vEXT (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 glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param)
{
	DE_UNREF(vaobj);
	DE_UNREF(pname);
	DE_UNREF(param);

}

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

}

GLW_APICALL void GLW_APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param)
{
	DE_UNREF(vaobj);
	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 glMapNamedBufferEXT (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 glMapNamedBufferRangeEXT (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 glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
	DE_UNREF(mode);
	DE_UNREF(left);
	DE_UNREF(right);
	DE_UNREF(bottom);
	DE_UNREF(top);
	DE_UNREF(zNear);
	DE_UNREF(zFar);

}

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

}

GLW_APICALL void GLW_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m)
{
	DE_UNREF(mode);
	DE_UNREF(m);

}

GLW_APICALL void GLW_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
	DE_UNREF(mode);
	DE_UNREF(left);
	DE_UNREF(right);
	DE_UNREF(bottom);
	DE_UNREF(top);
	DE_UNREF(zNear);
	DE_UNREF(zFar);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(mode);
	DE_UNREF(angle);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
	DE_UNREF(mode);
	DE_UNREF(angle);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(mode);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z)
{
	DE_UNREF(mode);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(mode);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z)
{
	DE_UNREF(mode);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

GLW_APICALL void GLW_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count)
{
	DE_UNREF(count);

}

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 glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
	DE_UNREF(mode);
	DE_UNREF(indirect);
	DE_UNREF(drawcount);
	DE_UNREF(maxdrawcount);
	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 glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
	DE_UNREF(mode);
	DE_UNREF(type);
	DE_UNREF(indirect);
	DE_UNREF(drawcount);
	DE_UNREF(maxdrawcount);
	DE_UNREF(stride);

}

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

}

GLW_APICALL void GLW_APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)
{
	DE_UNREF(texunit);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(pointer);

}

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

}

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

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(param);

}

GLW_APICALL void GLW_APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params)
{
	DE_UNREF(texunit);
	DE_UNREF(coord);
	DE_UNREF(pname);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texunit);
	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 glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texunit);
	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 glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texunit);
	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 glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params)
{
	DE_UNREF(texunit);
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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

}

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

}

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

}

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

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texunit);
	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 glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texunit);
	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 glMultiTexSubImage3DEXT (GLenum texunit, 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(texunit);
	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 glMulticastBarrierNV (void)
{

}

GLW_APICALL void GLW_APIENTRY glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
	DE_UNREF(srcGpu);
	DE_UNREF(dstGpu);
	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 glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
{
	DE_UNREF(gpuMask);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(data);

}

GLW_APICALL void GLW_APIENTRY glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
	DE_UNREF(readGpu);
	DE_UNREF(writeGpuMask);
	DE_UNREF(readBuffer);
	DE_UNREF(writeBuffer);
	DE_UNREF(readOffset);
	DE_UNREF(writeOffset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, 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(srcGpu);
	DE_UNREF(dstGpuMask);
	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 glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)
{
	DE_UNREF(gpu);
	DE_UNREF(framebuffer);
	DE_UNREF(start);
	DE_UNREF(count);
	DE_UNREF(v);

}

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

}

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

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask)
{
	DE_UNREF(signalGpu);
	DE_UNREF(waitGpuMask);

}

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 glNamedBufferDataEXT (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 glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(commit);

}

GLW_APICALL void GLW_APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit)
{
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);
	DE_UNREF(commit);

}

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 glNamedCopyBufferSubDataEXT (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 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 glNamedFramebufferParameteriEXT (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 glNamedFramebufferRenderbufferEXT (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 glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(textarget);
	DE_UNREF(texture);
	DE_UNREF(level);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glNamedFramebufferTextureEXT (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 glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face)
{
	DE_UNREF(framebuffer);
	DE_UNREF(attachment);
	DE_UNREF(texture);
	DE_UNREF(level);
	DE_UNREF(face);

}

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 glNamedFramebufferTextureLayerEXT (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 glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(count);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(count);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(index);
	DE_UNREF(count);
	DE_UNREF(params);

}

GLW_APICALL void GLW_APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string)
{
	DE_UNREF(program);
	DE_UNREF(target);
	DE_UNREF(format);
	DE_UNREF(len);
	DE_UNREF(string);

}

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 glNamedRenderbufferStorageEXT (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 glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(renderbuffer);
	DE_UNREF(coverageSamples);
	DE_UNREF(colorSamples);
	DE_UNREF(internalformat);
	DE_UNREF(width);
	DE_UNREF(height);

}

GLW_APICALL void GLW_APIENTRY glNamedRenderbufferStorageMultisampleEXT (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 glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
{
	DE_UNREF(factor);
	DE_UNREF(units);
	DE_UNREF(clamp);

}

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 glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(x);

}

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 glProgramUniform1dvEXT (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 glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);

}

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 glProgramUniform2dvEXT (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 glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);

}

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 glProgramUniform3dvEXT (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 glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
	DE_UNREF(program);
	DE_UNREF(location);
	DE_UNREF(x);
	DE_UNREF(y);
	DE_UNREF(z);
	DE_UNREF(w);

}

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 glProgramUniform4dvEXT (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 glProgramUniformMatrix2dvEXT (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 glProgramUniformMatrix2x3dvEXT (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 glProgramUniformMatrix2x4dvEXT (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 glProgramUniformMatrix3dvEXT (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 glProgramUniformMatrix3x2dvEXT (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 glProgramUniformMatrix3x4dvEXT (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 glProgramUniformMatrix4dvEXT (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 glProgramUniformMatrix4x2dvEXT (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 glProgramUniformMatrix4x3dvEXT (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 glPushClientAttribDefaultEXT (GLbitfield mask)
{
	DE_UNREF(mask);

}

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 glRenderGpuMaskNV (GLbitfield mask)
{
	DE_UNREF(mask);

}

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 glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)
{
	DE_UNREF(shader);
	DE_UNREF(pEntryPoint);
	DE_UNREF(numSpecializationConstants);
	DE_UNREF(pConstantIndex);
	DE_UNREF(pConstantValue);

}

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 glTexImage3DOES (GLenum target, GLint level, GLenum 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 glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
{
	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(commit);

}

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 glTexSubImage3DOES (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 glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(internalformat);
	DE_UNREF(buffer);
	DE_UNREF(offset);
	DE_UNREF(size);

}

GLW_APICALL void GLW_APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	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 glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	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 glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	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 glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
{
	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(commit);

}

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 glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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 glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	DE_UNREF(pname);
	DE_UNREF(params);

}

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

}

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 glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{
	DE_UNREF(texture);
	DE_UNREF(target);
	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 glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
{
	DE_UNREF(texture);
	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 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 glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	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 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 glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
	DE_UNREF(texture);
	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 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 glTextureSubImage3DEXT (GLuint texture, 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(texture);
	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 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 GLboolean GLW_APIENTRY glUnmapNamedBufferEXT (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 glVertexArrayBindVertexBufferEXT (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 glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor)
{
	DE_UNREF(vaobj);
	DE_UNREF(bindingindex);
	DE_UNREF(divisor);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(texunit);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

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

}

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

}

GLW_APICALL void GLW_APIENTRY glVertexArrayVertexAttribFormatEXT (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 glVertexArrayVertexAttribIFormatEXT (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 glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayVertexAttribLFormatEXT (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 glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

GLW_APICALL void GLW_APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(index);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(normalized);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

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

}

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 glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
	DE_UNREF(vaobj);
	DE_UNREF(buffer);
	DE_UNREF(size);
	DE_UNREF(type);
	DE_UNREF(stride);
	DE_UNREF(offset);

}

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);

}
