diff options
author | chai <chaifix@163.com> | 2018-10-25 00:50:35 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-25 00:50:35 +0800 |
commit | f889c9c20fc09f26eb8a70674c1d60181835c38a (patch) | |
tree | 4c5a994a8494595b6a94c1ac135d1e0646ac621d /src | |
parent | d8d7963b9b658799b806d516bbd6b44c4baa28f8 (diff) |
*修改项目结构
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/GLee/GLee.c (renamed from src/libjin/3rdparty/GLee/GLee.c) | 0 | ||||
-rw-r--r-- | src/3rdparty/GLee/GLee.h (renamed from src/libjin/3rdparty/GLee/GLee.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/ogl/OpenGL.h | 178 | ||||
-rw-r--r-- | src/3rdparty/smount/dirent.h (renamed from src/libjin/3rdparty/smount/dirent.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/smount/smount.c (renamed from src/libjin/3rdparty/smount/smount.c) | 0 | ||||
-rw-r--r-- | src/3rdparty/smount/smount.h (renamed from src/libjin/3rdparty/smount/smount.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/stb/stb_image.h (renamed from src/libjin/3rdparty/stb/stb_image.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/stb/stb_truetype.h (renamed from src/libjin/3rdparty/stb/stb_truetype.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/stb/stb_vorbis.c (renamed from src/libjin/3rdparty/stb/stb_vorbis.c) | 0 | ||||
-rw-r--r-- | src/3rdparty/tekcos/README (renamed from src/libjin/3rdparty/tekcos/README) | 0 | ||||
-rw-r--r-- | src/3rdparty/tekcos/tekcos.c (renamed from src/libjin/3rdparty/tekcos/tekcos.c) | 0 | ||||
-rw-r--r-- | src/3rdparty/tekcos/tekcos.h (renamed from src/libjin/3rdparty/tekcos/tekcos.h) | 0 | ||||
-rw-r--r-- | src/3rdparty/wav/wav.c (renamed from src/libjin/3rdparty/wav/wav.c) | 0 | ||||
-rw-r--r-- | src/3rdparty/wav/wav.h (renamed from src/libjin/3rdparty/wav/wav.h) | 0 | ||||
-rw-r--r-- | src/libjin/3rdparty/base64/base64.h | 186 | ||||
-rw-r--r-- | src/libjin/3rdparty/ogl/OpenGL.h | 520 | ||||
-rw-r--r-- | src/libjin/Audio/SDL/je_sdl_source.cpp | 5 | ||||
-rw-r--r-- | src/libjin/Filesystem/je_asset_database.h | 2 | ||||
-rw-r--r-- | src/libjin/Game/je_application.cpp (renamed from src/libjin/Game/je_game.cpp) | 12 | ||||
-rw-r--r-- | src/libjin/Game/je_application.h (renamed from src/libjin/Game/je_game.h) | 8 | ||||
-rw-r--r-- | src/libjin/Graphics/Font/je_texture_font.cpp | 6 | ||||
-rw-r--r-- | src/libjin/Graphics/Font/je_ttf.cpp | 4 | ||||
-rw-r--r-- | src/libjin/Graphics/Font/je_ttf.h | 3 | ||||
-rw-r--r-- | src/libjin/Graphics/Shader/je_shader.cpp | 2 | ||||
-rw-r--r-- | src/libjin/Graphics/Shader/je_shader.h | 2 | ||||
-rw-r--r-- | src/libjin/Graphics/je_bitmap.cpp | 2 | ||||
-rw-r--r-- | src/libjin/Graphics/je_bitmap.h | 3 | ||||
-rw-r--r-- | src/libjin/Graphics/je_gl.h | 5 | ||||
-rw-r--r-- | src/libjin/Graphics/je_image.cpp | 3 | ||||
-rw-r--r-- | src/libjin/Graphics/je_texture.h | 2 | ||||
-rw-r--r-- | src/libjin/Net/je_socket.h | 2 | ||||
-rw-r--r-- | src/libjin/jin.h | 2 | ||||
-rw-r--r-- | src/lua/modules/core/je_lua_core.cpp | 8 | ||||
-rw-r--r-- | src/lua/resources/font.ttf.h | 713 |
34 files changed, 571 insertions, 1097 deletions
diff --git a/src/libjin/3rdparty/GLee/GLee.c b/src/3rdparty/GLee/GLee.c index 0f32273..0f32273 100644 --- a/src/libjin/3rdparty/GLee/GLee.c +++ b/src/3rdparty/GLee/GLee.c diff --git a/src/libjin/3rdparty/GLee/GLee.h b/src/3rdparty/GLee/GLee.h index 1e9a297..1e9a297 100644 --- a/src/libjin/3rdparty/GLee/GLee.h +++ b/src/3rdparty/GLee/GLee.h diff --git a/src/3rdparty/ogl/OpenGL.h b/src/3rdparty/ogl/OpenGL.h new file mode 100644 index 0000000..04043fe --- /dev/null +++ b/src/3rdparty/ogl/OpenGL.h @@ -0,0 +1,178 @@ +#ifndef __OGL2D_H +#define __OGL2D_H +#include <vector> + +/* include gl.h before this file */ +namespace ogl2d +{ + /* 2d wrap of opengl 3.0 */ + class OpenGL + { + public: + OpenGL(); + ~OpenGL(); + + inline void enable(GLenum cap) + { + glEnable(cap); + } + + inline void disable(GLenum cap) + { + glDisable(cap); + } + + inline void setBlendFunc(GLenum sfactor, GLenum dfactor) + { + glBlendFunc(sfactor, dfactor); + } + + inline void setClearColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) + { + glClearColor(r / 255.f, g / 255.f, b / 255.f, a / 255.f); + } + + void pushColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a = 255); + void popColor(); + void flushError(); + GLuint genTexture(); + void bindTexture(GLuint texture = 0); + inline GLuint curTexture() + { + return _texture; + } + void setTexParameter(GLenum pname, GLint param); + void texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels = NULL); + void texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void activeTexUnit(unsigned int unit = 0); + + inline void drawArrays(GLenum mode, GLint first, GLsizei count) + { + glDrawArrays(mode, first, count); + } + + inline void drawBuffer(GLenum mode) + { + + } + + inline void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) + { + + } + + inline void enableClientState(GLenum arr) + { + glEnableClientState(arr); + } + + inline void disableClientState(GLenum arr) + { + glDisableClientState(arr); + } + + inline GLuint genFrameBuffer() + { + GLuint fbo; + glGenFramebuffers(1, &fbo); + return fbo; + } + + inline void bindFrameBuffer(GLuint fbo) + { + glBindFramebuffer(GL_FRAMEBUFFER, fbo); + } + + // Ļһ + inline void ortho(int w, float radio) + { + glOrtho(0, w, w*radio, 0, -1, 1); + } + + inline void orthox(int w, int h) + { + glOrtho(0, w, h, 0, -1, 1); + } + + protected: + struct { GLubyte r, g, b, a; } _color; // current draw color + struct { GLubyte r, g, b, a; } _precolor; // previous draw color + GLuint _texture; // current binded texture + + }; + + ///* OpenGL instance singleton */ + extern OpenGL gl; + +#if defined(OGL2D_IMPLEMENT) + + OpenGL gl; + + OpenGL::OpenGL() + { + memset(&_color, 0xff, sizeof(_color)); + memset(&_precolor, 0xff, sizeof(_precolor)); + } + + OpenGL::~OpenGL() + { + } + + void OpenGL::pushColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) + { + memcpy(&_precolor, &_color, sizeof(_precolor)); + _color.r = r; + _color.g = g; + _color.b = b; + _color.a = a; + glColor4ub(r, g, b, a); + } + + void OpenGL::popColor() + { + memcpy(&_color, &_precolor, sizeof(_precolor)); + glColor4ub(_color.r, _color.g, _color.b, _color.a); + } + + void OpenGL::flushError() + { + while (glGetError() != GL_NO_ERROR); + } + + GLuint OpenGL::genTexture() + { + GLuint t; + glGenTextures(1, &t); + return t; + } + + void OpenGL::bindTexture(GLuint texture) + { + glBindTexture(GL_TEXTURE_2D, texture); + } + + void OpenGL::setTexParameter(GLenum pname, GLint param) + { + glTexParameteri(GL_TEXTURE_2D, pname, param); + } + + void OpenGL::texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) + { + glTexImage2D(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, type, pixels); + } + + void OpenGL::texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) + { + glTexSubImage2D(GL_TEXTURE_2D, 0, xoffset, yoffset, width, height, format, type, pixels); + } + + void OpenGL::activeTexUnit(unsigned int unit) + { + // glActiveTexture selects which texture unit subsequent texture state calls will affect. + glActiveTexture(GL_TEXTURE0 + unit); + } + +#endif // OGL2D_IMPLEMENT +} + +#endif
\ No newline at end of file diff --git a/src/libjin/3rdparty/smount/dirent.h b/src/3rdparty/smount/dirent.h index 832b164..832b164 100644 --- a/src/libjin/3rdparty/smount/dirent.h +++ b/src/3rdparty/smount/dirent.h diff --git a/src/libjin/3rdparty/smount/smount.c b/src/3rdparty/smount/smount.c index 6214800..6214800 100644 --- a/src/libjin/3rdparty/smount/smount.c +++ b/src/3rdparty/smount/smount.c diff --git a/src/libjin/3rdparty/smount/smount.h b/src/3rdparty/smount/smount.h index 0f8f774..0f8f774 100644 --- a/src/libjin/3rdparty/smount/smount.h +++ b/src/3rdparty/smount/smount.h diff --git a/src/libjin/3rdparty/stb/stb_image.h b/src/3rdparty/stb/stb_image.h index 4df317a..4df317a 100644 --- a/src/libjin/3rdparty/stb/stb_image.h +++ b/src/3rdparty/stb/stb_image.h diff --git a/src/libjin/3rdparty/stb/stb_truetype.h b/src/3rdparty/stb/stb_truetype.h index 927ee21..927ee21 100644 --- a/src/libjin/3rdparty/stb/stb_truetype.h +++ b/src/3rdparty/stb/stb_truetype.h diff --git a/src/libjin/3rdparty/stb/stb_vorbis.c b/src/3rdparty/stb/stb_vorbis.c index a863042..a863042 100644 --- a/src/libjin/3rdparty/stb/stb_vorbis.c +++ b/src/3rdparty/stb/stb_vorbis.c diff --git a/src/libjin/3rdparty/tekcos/README b/src/3rdparty/tekcos/README index fe5ede1..fe5ede1 100644 --- a/src/libjin/3rdparty/tekcos/README +++ b/src/3rdparty/tekcos/README diff --git a/src/libjin/3rdparty/tekcos/tekcos.c b/src/3rdparty/tekcos/tekcos.c index e2b7e5c..e2b7e5c 100644 --- a/src/libjin/3rdparty/tekcos/tekcos.c +++ b/src/3rdparty/tekcos/tekcos.c diff --git a/src/libjin/3rdparty/tekcos/tekcos.h b/src/3rdparty/tekcos/tekcos.h index cddc8f3..cddc8f3 100644 --- a/src/libjin/3rdparty/tekcos/tekcos.h +++ b/src/3rdparty/tekcos/tekcos.h diff --git a/src/libjin/3rdparty/wav/wav.c b/src/3rdparty/wav/wav.c index 6f9b2ab..6f9b2ab 100644 --- a/src/libjin/3rdparty/wav/wav.c +++ b/src/3rdparty/wav/wav.c diff --git a/src/libjin/3rdparty/wav/wav.h b/src/3rdparty/wav/wav.h index c12cd5d..c12cd5d 100644 --- a/src/libjin/3rdparty/wav/wav.h +++ b/src/3rdparty/wav/wav.h diff --git a/src/libjin/3rdparty/base64/base64.h b/src/libjin/3rdparty/base64/base64.h deleted file mode 100644 index 2519797..0000000 --- a/src/libjin/3rdparty/base64/base64.h +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef BASE64_H -#define BASE64_H - -#define BASE64_ENCODE_OUT_SIZE(s) ((unsigned int)((((s) + 2) / 3) * 4 + 1)) -#define BASE64_DECODE_OUT_SIZE(s) ((unsigned int)(((s) / 4) * 3)) - -/* -* out is null-terminated encode string. -* return values is out length, exclusive terminating `\0' -*/ -unsigned int -base64_encode(const unsigned char *in, unsigned int inlen, char *out); - -/* -* return values is out length -*/ -unsigned int -base64_decode(const char *in, unsigned int inlen, unsigned char *out); - -#endif /* BASE64_H */ - -#ifdef BASE64_IMPLEMENT - -/* This is a public domain base64 implementation written by WEI Zhicheng. */ - -#define BASE64_PAD '=' - -/* BASE 64 encode table */ -static const char base64en[] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', - 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', - 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', '0', '1', '2', '3', - '4', '5', '6', '7', '8', '9', '+', '/', -}; - -/* ASCII order for BASE 64 decode, 255 in unused character */ -static const unsigned char base64de[] = { - /* nul, soh, stx, etx, eot, enq, ack, bel, */ - 255, 255, 255, 255, 255, 255, 255, 255, - - /* bs, ht, nl, vt, np, cr, so, si, */ - 255, 255, 255, 255, 255, 255, 255, 255, - - /* dle, dc1, dc2, dc3, dc4, nak, syn, etb, */ - 255, 255, 255, 255, 255, 255, 255, 255, - - /* can, em, sub, esc, fs, gs, rs, us, */ - 255, 255, 255, 255, 255, 255, 255, 255, - - /* sp, '!', '"', '#', '$', '%', '&', ''', */ - 255, 255, 255, 255, 255, 255, 255, 255, - - /* '(', ')', '*', '+', ',', '-', '.', '/', */ - 255, 255, 255, 62, 255, 255, 255, 63, - - /* '0', '1', '2', '3', '4', '5', '6', '7', */ - 52, 53, 54, 55, 56, 57, 58, 59, - - /* '8', '9', ':', ';', '<', '=', '>', '?', */ - 60, 61, 255, 255, 255, 255, 255, 255, - - /* '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', */ - 255, 0, 1, 2, 3, 4, 5, 6, - - /* 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', */ - 7, 8, 9, 10, 11, 12, 13, 14, - - /* 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', */ - 15, 16, 17, 18, 19, 20, 21, 22, - - /* 'X', 'Y', 'Z', '[', '\', ']', '^', '_', */ - 23, 24, 25, 255, 255, 255, 255, 255, - - /* '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', */ - 255, 26, 27, 28, 29, 30, 31, 32, - - /* 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', */ - 33, 34, 35, 36, 37, 38, 39, 40, - - /* 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', */ - 41, 42, 43, 44, 45, 46, 47, 48, - - /* 'x', 'y', 'z', '{', '|', '}', '~', del, */ - 49, 50, 51, 255, 255, 255, 255, 255 -}; - -unsigned int -base64_encode(const unsigned char *in, unsigned int inlen, char *out) -{ - int s; - unsigned int i; - unsigned int j; - unsigned char c; - unsigned char l; - - s = 0; - l = 0; - for (i = j = 0; i < inlen; i++) { - c = in[i]; - - switch (s) { - case 0: - s = 1; - out[j++] = base64en[(c >> 2) & 0x3F]; - break; - case 1: - s = 2; - out[j++] = base64en[((l & 0x3) << 4) | ((c >> 4) & 0xF)]; - break; - case 2: - s = 0; - out[j++] = base64en[((l & 0xF) << 2) | ((c >> 6) & 0x3)]; - out[j++] = base64en[c & 0x3F]; - break; - } - l = c; - } - - switch (s) { - case 1: - out[j++] = base64en[(l & 0x3) << 4]; - out[j++] = BASE64_PAD; - out[j++] = BASE64_PAD; - break; - case 2: - out[j++] = base64en[(l & 0xF) << 2]; - out[j++] = BASE64_PAD; - break; - } - - out[j] = 0; - - return j; -} - -unsigned int -base64_decode(const char *in, unsigned int inlen, unsigned char *out) -{ - unsigned int i; - unsigned int j; - unsigned char c; - - if (inlen & 0x3) { - return 0; - } - - for (i = j = 0; i < inlen; i++) { - if (in[i] == BASE64_PAD) { - break; - } - if (in[i] < 0) { - return 0; - } - - c = base64de[in[i]]; - if (c == 255) { - return 0; - } - - switch (i & 0x3) { - case 0: - out[j] = (c << 2) & 0xFF; - break; - case 1: - out[j++] |= (c >> 4) & 0x3; - out[j] = (c & 0xF) << 4; - break; - case 2: - out[j++] |= (c >> 2) & 0xF; - out[j] = (c & 0x3) << 6; - break; - case 3: - out[j++] |= c; - break; - } - } - out[j] = '\0'; - - return j; -} - -#endif diff --git a/src/libjin/3rdparty/ogl/OpenGL.h b/src/libjin/3rdparty/ogl/OpenGL.h deleted file mode 100644 index 3984b49..0000000 --- a/src/libjin/3rdparty/ogl/OpenGL.h +++ /dev/null @@ -1,520 +0,0 @@ -#ifndef __OGL2D_H -#define __OGL2D_H -#include <vector> - -/* include gl.h before this file */ -namespace ogl2d -{ - /* 2d wrap of opengl 3.0 */ - class OpenGL - { - public: - OpenGL(); - ~OpenGL(); - - inline void enable(GLenum cap) - { - glEnable(cap); - } - - inline void disable(GLenum cap) - { - glDisable(cap); - } - - inline void setBlendFunc(GLenum sfactor, GLenum dfactor) - { - glBlendFunc(sfactor, dfactor); - } - - inline void setClearColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) - { - glClearColor(r / 255.f, g / 255.f, b / 255.f, a / 255.f); - } - - void pushColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a = 255); - void popColor(); - void flushError(); - GLuint genTexture(); - void bindTexture(GLuint texture = 0); - inline GLuint curTexture() - { - return _texture; - } - void setTexParameter(GLenum pname, GLint param); - void texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels = NULL); - void texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); - void activeTexUnit(unsigned int unit = 0); - - inline void drawArrays(GLenum mode, GLint first, GLsizei count) - { - glDrawArrays(mode, first, count); - } - - inline void drawBuffer(GLenum mode) - { - - } - - inline void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) - { - - } - - inline void enableClientState(GLenum arr) - { - glEnableClientState(arr); - } - - inline void disableClientState(GLenum arr) - { - glDisableClientState(arr); - } - - inline GLuint genFrameBuffer() - { - GLuint fbo; - glGenFramebuffers(1, &fbo); - return fbo; - } - - inline void bindFrameBuffer(GLuint fbo) - { - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - } - - // Ļһ - inline void ortho(int w, float radio) - { - glOrtho(0, w, w*radio, 0, -1, 1); - } - - inline void orthox(int w, int h) - { - glOrtho(0, w, h, 0, -1, 1); - } - - protected: - struct { GLubyte r, g, b, a; } _color; // current draw color - struct { GLubyte r, g, b, a; } _precolor; // previous draw color - GLuint _texture; // current binded texture - - }; - - ///* OpenGL instance singleton */ - extern OpenGL gl; - -#if defined(OGL2D_IMPLEMENT) - - OpenGL gl; - - OpenGL::OpenGL() - { - memset(&_color, 0xff, sizeof(_color)); - memset(&_precolor, 0xff, sizeof(_precolor)); - } - - OpenGL::~OpenGL() - { - } - - void OpenGL::pushColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) - { - memcpy(&_precolor, &_color, sizeof(_precolor)); - _color.r = r; - _color.g = g; - _color.b = b; - _color.a = a; - glColor4ub(r, g, b, a); - } - - void OpenGL::popColor() - { - memcpy(&_color, &_precolor, sizeof(_precolor)); - glColor4ub(_color.r, _color.g, _color.b, _color.a); - } - - void OpenGL::flushError() - { - while (glGetError() != GL_NO_ERROR); - } - - GLuint OpenGL::genTexture() - { - GLuint t; - glGenTextures(1, &t); - return t; - } - - void OpenGL::bindTexture(GLuint texture) - { - glBindTexture(GL_TEXTURE_2D, texture); - } - - void OpenGL::setTexParameter(GLenum pname, GLint param) - { - glTexParameteri(GL_TEXTURE_2D, pname, param); - } - - void OpenGL::texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) - { - glTexImage2D(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, type, pixels); - } - - void OpenGL::texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) - { - glTexSubImage2D(GL_TEXTURE_2D, 0, xoffset, yoffset, width, height, format, type, pixels); - } - - void OpenGL::activeTexUnit(unsigned int unit) - { - // glActiveTexture selects which texture unit subsequent texture state calls will affect. - glActiveTexture(GL_TEXTURE0 + unit); - } - -#endif // OGL2D_IMPLEMENT -} - -#endif - - -/* GL.h - -WINGDIAPI void APIENTRY glAccum(GLenum op, GLfloat value); -WINGDIAPI void APIENTRY glAlphaFunc(GLenum func, GLclampf ref); -WINGDIAPI GLboolean APIENTRY glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); -WINGDIAPI void APIENTRY glArrayElement(GLint i); -WINGDIAPI void APIENTRY glBegin(GLenum mode); -WINGDIAPI void APIENTRY glBindTexture(GLenum target, GLuint texture); -WINGDIAPI void APIENTRY glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -WINGDIAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); -WINGDIAPI void APIENTRY glCallList(GLuint list); -WINGDIAPI void APIENTRY glCallLists(GLsizei n, GLenum type, const GLvoid *lists); -WINGDIAPI void APIENTRY glClear(GLbitfield mask); -WINGDIAPI void APIENTRY glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -WINGDIAPI void APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -WINGDIAPI void APIENTRY glClearDepth(GLclampd depth); -WINGDIAPI void APIENTRY glClearIndex(GLfloat c); -WINGDIAPI void APIENTRY glClearStencil(GLint s); -WINGDIAPI void APIENTRY glClipPlane(GLenum plane, const GLdouble *equation); -WINGDIAPI void APIENTRY glColor3b(GLbyte red, GLbyte green, GLbyte blue); -WINGDIAPI void APIENTRY glColor3bv(const GLbyte *v); -WINGDIAPI void APIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); -WINGDIAPI void APIENTRY glColor3dv(const GLdouble *v); -WINGDIAPI void APIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); -WINGDIAPI void APIENTRY glColor3fv(const GLfloat *v); -WINGDIAPI void APIENTRY glColor3i(GLint red, GLint green, GLint blue); -WINGDIAPI void APIENTRY glColor3iv(const GLint *v); -WINGDIAPI void APIENTRY glColor3s(GLshort red, GLshort green, GLshort blue); -WINGDIAPI void APIENTRY glColor3sv(const GLshort *v); -WINGDIAPI void APIENTRY glColor3ub(GLubyte red, GLubyte green, GLubyte blue); -WINGDIAPI void APIENTRY glColor3ubv(const GLubyte *v); -WINGDIAPI void APIENTRY glColor3ui(GLuint red, GLuint green, GLuint blue); -WINGDIAPI void APIENTRY glColor3uiv(const GLuint *v); -WINGDIAPI void APIENTRY glColor3us(GLushort red, GLushort green, GLushort blue); -WINGDIAPI void APIENTRY glColor3usv(const GLushort *v); -WINGDIAPI void APIENTRY glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -WINGDIAPI void APIENTRY glColor4bv(const GLbyte *v); -WINGDIAPI void APIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -WINGDIAPI void APIENTRY glColor4dv(const GLdouble *v); -WINGDIAPI void APIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -WINGDIAPI void APIENTRY glColor4fv(const GLfloat *v); -WINGDIAPI void APIENTRY glColor4i(GLint red, GLint green, GLint blue, GLint alpha); -WINGDIAPI void APIENTRY glColor4iv(const GLint *v); -WINGDIAPI void APIENTRY glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); -WINGDIAPI void APIENTRY glColor4sv(const GLshort *v); -WINGDIAPI void APIENTRY glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -WINGDIAPI void APIENTRY glColor4ubv(const GLubyte *v); -WINGDIAPI void APIENTRY glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); -WINGDIAPI void APIENTRY glColor4uiv(const GLuint *v); -WINGDIAPI void APIENTRY glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); -WINGDIAPI void APIENTRY glColor4usv(const GLushort *v); -WINGDIAPI void APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -WINGDIAPI void APIENTRY glColorMaterial(GLenum face, GLenum mode); -WINGDIAPI void APIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -WINGDIAPI void APIENTRY glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -WINGDIAPI void APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -WINGDIAPI void APIENTRY glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -WINGDIAPI void APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -WINGDIAPI void APIENTRY glCullFace(GLenum mode); -WINGDIAPI void APIENTRY glDeleteLists(GLuint list, GLsizei range); -WINGDIAPI void APIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); -WINGDIAPI void APIENTRY glDepthFunc(GLenum func); -WINGDIAPI void APIENTRY glDepthMask(GLboolean flag); -WINGDIAPI void APIENTRY glDepthRange(GLclampd zNear, GLclampd zFar); -WINGDIAPI void APIENTRY glDisable(GLenum cap); -WINGDIAPI void APIENTRY glDisableClientState(GLenum array); -WINGDIAPI void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); -WINGDIAPI void APIENTRY glDrawBuffer(GLenum mode); -WINGDIAPI void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -WINGDIAPI void APIENTRY glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -WINGDIAPI void APIENTRY glEdgeFlag(GLboolean flag); -WINGDIAPI void APIENTRY glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glEdgeFlagv(const GLboolean *flag); -WINGDIAPI void APIENTRY glEnable(GLenum cap); -WINGDIAPI void APIENTRY glEnableClientState(GLenum array); -WINGDIAPI void APIENTRY glEnd(void); -WINGDIAPI void APIENTRY glEndList(void); -WINGDIAPI void APIENTRY glEvalCoord1d(GLdouble u); -WINGDIAPI void APIENTRY glEvalCoord1dv(const GLdouble *u); -WINGDIAPI void APIENTRY glEvalCoord1f(GLfloat u); -WINGDIAPI void APIENTRY glEvalCoord1fv(const GLfloat *u); -WINGDIAPI void APIENTRY glEvalCoord2d(GLdouble u, GLdouble v); -WINGDIAPI void APIENTRY glEvalCoord2dv(const GLdouble *u); -WINGDIAPI void APIENTRY glEvalCoord2f(GLfloat u, GLfloat v); -WINGDIAPI void APIENTRY glEvalCoord2fv(const GLfloat *u); -WINGDIAPI void APIENTRY glEvalMesh1(GLenum mode, GLint i1, GLint i2); -WINGDIAPI void APIENTRY glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -WINGDIAPI void APIENTRY glEvalPoint1(GLint i); -WINGDIAPI void APIENTRY glEvalPoint2(GLint i, GLint j); -WINGDIAPI void APIENTRY glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); -WINGDIAPI void APIENTRY glFinish(void); -WINGDIAPI void APIENTRY glFlush(void); -WINGDIAPI void APIENTRY glFogf(GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glFogfv(GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glFogi(GLenum pname, GLint param); -WINGDIAPI void APIENTRY glFogiv(GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glFrontFace(GLenum mode); -WINGDIAPI void APIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -WINGDIAPI GLuint APIENTRY glGenLists(GLsizei range); -WINGDIAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures); -WINGDIAPI void APIENTRY glGetBooleanv(GLenum pname, GLboolean *params); -WINGDIAPI void APIENTRY glGetClipPlane(GLenum plane, GLdouble *equation); -WINGDIAPI void APIENTRY glGetDoublev(GLenum pname, GLdouble *params); -WINGDIAPI GLenum APIENTRY glGetError(void); -WINGDIAPI void APIENTRY glGetFloatv(GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetIntegerv(GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetLightiv(GLenum light, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetMapdv(GLenum target, GLenum query, GLdouble *v); -WINGDIAPI void APIENTRY glGetMapfv(GLenum target, GLenum query, GLfloat *v); -WINGDIAPI void APIENTRY glGetMapiv(GLenum target, GLenum query, GLint *v); -WINGDIAPI void APIENTRY glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetMaterialiv(GLenum face, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetPixelMapfv(GLenum map, GLfloat *values); -WINGDIAPI void APIENTRY glGetPixelMapuiv(GLenum map, GLuint *values); -WINGDIAPI void APIENTRY glGetPixelMapusv(GLenum map, GLushort *values); -WINGDIAPI void APIENTRY glGetPointerv(GLenum pname, GLvoid* *params); -WINGDIAPI void APIENTRY glGetPolygonStipple(GLubyte *mask); -WINGDIAPI const GLubyte * APIENTRY glGetString(GLenum name); -WINGDIAPI void APIENTRY glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetTexEnviv(GLenum target, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); -WINGDIAPI void APIENTRY glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -WINGDIAPI void APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); -WINGDIAPI void APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); -WINGDIAPI void APIENTRY glHint(GLenum target, GLenum mode); -WINGDIAPI void APIENTRY glIndexMask(GLuint mask); -WINGDIAPI void APIENTRY glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glIndexd(GLdouble c); -WINGDIAPI void APIENTRY glIndexdv(const GLdouble *c); -WINGDIAPI void APIENTRY glIndexf(GLfloat c); -WINGDIAPI void APIENTRY glIndexfv(const GLfloat *c); -WINGDIAPI void APIENTRY glIndexi(GLint c); -WINGDIAPI void APIENTRY glIndexiv(const GLint *c); -WINGDIAPI void APIENTRY glIndexs(GLshort c); -WINGDIAPI void APIENTRY glIndexsv(const GLshort *c); -WINGDIAPI void APIENTRY glIndexub(GLubyte c); -WINGDIAPI void APIENTRY glIndexubv(const GLubyte *c); -WINGDIAPI void APIENTRY glInitNames(void); -WINGDIAPI void APIENTRY glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); -WINGDIAPI GLboolean APIENTRY glIsEnabled(GLenum cap); -WINGDIAPI GLboolean APIENTRY glIsList(GLuint list); -WINGDIAPI GLboolean APIENTRY glIsTexture(GLuint texture); -WINGDIAPI void APIENTRY glLightModelf(GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glLightModelfv(GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glLightModeli(GLenum pname, GLint param); -WINGDIAPI void APIENTRY glLightModeliv(GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glLightf(GLenum light, GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glLighti(GLenum light, GLenum pname, GLint param); -WINGDIAPI void APIENTRY glLightiv(GLenum light, GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glLineStipple(GLint factor, GLushort pattern); -WINGDIAPI void APIENTRY glLineWidth(GLfloat width); -WINGDIAPI void APIENTRY glListBase(GLuint base); -WINGDIAPI void APIENTRY glLoadIdentity(void); -WINGDIAPI void APIENTRY glLoadMatrixd(const GLdouble *m); -WINGDIAPI void APIENTRY glLoadMatrixf(const GLfloat *m); -WINGDIAPI void APIENTRY glLoadName(GLuint name); -WINGDIAPI void APIENTRY glLogicOp(GLenum opcode); -WINGDIAPI void APIENTRY glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -WINGDIAPI void APIENTRY glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -WINGDIAPI void APIENTRY glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -WINGDIAPI void APIENTRY glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -WINGDIAPI void APIENTRY glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); -WINGDIAPI void APIENTRY glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); -WINGDIAPI void APIENTRY glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -WINGDIAPI void APIENTRY glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -WINGDIAPI void APIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glMateriali(GLenum face, GLenum pname, GLint param); -WINGDIAPI void APIENTRY glMaterialiv(GLenum face, GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glMatrixMode(GLenum mode); -WINGDIAPI void APIENTRY glMultMatrixd(const GLdouble *m); -WINGDIAPI void APIENTRY glMultMatrixf(const GLfloat *m); -WINGDIAPI void APIENTRY glNewList(GLuint list, GLenum mode); -WINGDIAPI void APIENTRY glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); -WINGDIAPI void APIENTRY glNormal3bv(const GLbyte *v); -WINGDIAPI void APIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); -WINGDIAPI void APIENTRY glNormal3dv(const GLdouble *v); -WINGDIAPI void APIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); -WINGDIAPI void APIENTRY glNormal3fv(const GLfloat *v); -WINGDIAPI void APIENTRY glNormal3i(GLint nx, GLint ny, GLint nz); -WINGDIAPI void APIENTRY glNormal3iv(const GLint *v); -WINGDIAPI void APIENTRY glNormal3s(GLshort nx, GLshort ny, GLshort nz); -WINGDIAPI void APIENTRY glNormal3sv(const GLshort *v); -WINGDIAPI void APIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -WINGDIAPI void APIENTRY glPassThrough(GLfloat token); -WINGDIAPI void APIENTRY glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values); -WINGDIAPI void APIENTRY glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values); -WINGDIAPI void APIENTRY glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values); -WINGDIAPI void APIENTRY glPixelStoref(GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glPixelStorei(GLenum pname, GLint param); -WINGDIAPI void APIENTRY glPixelTransferf(GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glPixelTransferi(GLenum pname, GLint param); -WINGDIAPI void APIENTRY glPixelZoom(GLfloat xfactor, GLfloat yfactor); -WINGDIAPI void APIENTRY glPointSize(GLfloat size); -WINGDIAPI void APIENTRY glPolygonMode(GLenum face, GLenum mode); -WINGDIAPI void APIENTRY glPolygonOffset(GLfloat factor, GLfloat units); -WINGDIAPI void APIENTRY glPolygonStipple(const GLubyte *mask); -WINGDIAPI void APIENTRY glPopAttrib(void); -WINGDIAPI void APIENTRY glPopClientAttrib(void); -WINGDIAPI void APIENTRY glPopMatrix(void); -WINGDIAPI void APIENTRY glPopName(void); -WINGDIAPI void APIENTRY glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities); -WINGDIAPI void APIENTRY glPushAttrib(GLbitfield mask); -WINGDIAPI void APIENTRY glPushClientAttrib(GLbitfield mask); -WINGDIAPI void APIENTRY glPushMatrix(void); -WINGDIAPI void APIENTRY glPushName(GLuint name); -WINGDIAPI void APIENTRY glRasterPos2d(GLdouble x, GLdouble y); -WINGDIAPI void APIENTRY glRasterPos2dv(const GLdouble *v); -WINGDIAPI void APIENTRY glRasterPos2f(GLfloat x, GLfloat y); -WINGDIAPI void APIENTRY glRasterPos2fv(const GLfloat *v); -WINGDIAPI void APIENTRY glRasterPos2i(GLint x, GLint y); -WINGDIAPI void APIENTRY glRasterPos2iv(const GLint *v); -WINGDIAPI void APIENTRY glRasterPos2s(GLshort x, GLshort y); -WINGDIAPI void APIENTRY glRasterPos2sv(const GLshort *v); -WINGDIAPI void APIENTRY glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); -WINGDIAPI void APIENTRY glRasterPos3dv(const GLdouble *v); -WINGDIAPI void APIENTRY glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); -WINGDIAPI void APIENTRY glRasterPos3fv(const GLfloat *v); -WINGDIAPI void APIENTRY glRasterPos3i(GLint x, GLint y, GLint z); -WINGDIAPI void APIENTRY glRasterPos3iv(const GLint *v); -WINGDIAPI void APIENTRY glRasterPos3s(GLshort x, GLshort y, GLshort z); -WINGDIAPI void APIENTRY glRasterPos3sv(const GLshort *v); -WINGDIAPI void APIENTRY glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); -WINGDIAPI void APIENTRY glRasterPos4dv(const GLdouble *v); -WINGDIAPI void APIENTRY glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -WINGDIAPI void APIENTRY glRasterPos4fv(const GLfloat *v); -WINGDIAPI void APIENTRY glRasterPos4i(GLint x, GLint y, GLint z, GLint w); -WINGDIAPI void APIENTRY glRasterPos4iv(const GLint *v); -WINGDIAPI void APIENTRY glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); -WINGDIAPI void APIENTRY glRasterPos4sv(const GLshort *v); -WINGDIAPI void APIENTRY glReadBuffer(GLenum mode); -WINGDIAPI void APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -WINGDIAPI void APIENTRY glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -WINGDIAPI void APIENTRY glRectdv(const GLdouble *v1, const GLdouble *v2); -WINGDIAPI void APIENTRY glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -WINGDIAPI void APIENTRY glRectfv(const GLfloat *v1, const GLfloat *v2); -WINGDIAPI void APIENTRY glRecti(GLint x1, GLint y1, GLint x2, GLint y2); -WINGDIAPI void APIENTRY glRectiv(const GLint *v1, const GLint *v2); -WINGDIAPI void APIENTRY glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); -WINGDIAPI void APIENTRY glRectsv(const GLshort *v1, const GLshort *v2); -WINGDIAPI GLint APIENTRY glRenderMode(GLenum mode); -WINGDIAPI void APIENTRY glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -WINGDIAPI void APIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -WINGDIAPI void APIENTRY glScaled(GLdouble x, GLdouble y, GLdouble z); -WINGDIAPI void APIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); -WINGDIAPI void APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); -WINGDIAPI void APIENTRY glSelectBuffer(GLsizei size, GLuint *buffer); -WINGDIAPI void APIENTRY glShadeModel(GLenum mode); -WINGDIAPI void APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); -WINGDIAPI void APIENTRY glStencilMask(GLuint mask); -WINGDIAPI void APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); -WINGDIAPI void APIENTRY glTexCoord1d(GLdouble s); -WINGDIAPI void APIENTRY glTexCoord1dv(const GLdouble *v); -WINGDIAPI void APIENTRY glTexCoord1f(GLfloat s); -WINGDIAPI void APIENTRY glTexCoord1fv(const GLfloat *v); -WINGDIAPI void APIENTRY glTexCoord1i(GLint s); -WINGDIAPI void APIENTRY glTexCoord1iv(const GLint *v); -WINGDIAPI void APIENTRY glTexCoord1s(GLshort s); -WINGDIAPI void APIENTRY glTexCoord1sv(const GLshort *v); -WINGDIAPI void APIENTRY glTexCoord2d(GLdouble s, GLdouble t); -WINGDIAPI void APIENTRY glTexCoord2dv(const GLdouble *v); -WINGDIAPI void APIENTRY glTexCoord2f(GLfloat s, GLfloat t); -WINGDIAPI void APIENTRY glTexCoord2fv(const GLfloat *v); -WINGDIAPI void APIENTRY glTexCoord2i(GLint s, GLint t); -WINGDIAPI void APIENTRY glTexCoord2iv(const GLint *v); -WINGDIAPI void APIENTRY glTexCoord2s(GLshort s, GLshort t); -WINGDIAPI void APIENTRY glTexCoord2sv(const GLshort *v); -WINGDIAPI void APIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); -WINGDIAPI void APIENTRY glTexCoord3dv(const GLdouble *v); -WINGDIAPI void APIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); -WINGDIAPI void APIENTRY glTexCoord3fv(const GLfloat *v); -WINGDIAPI void APIENTRY glTexCoord3i(GLint s, GLint t, GLint r); -WINGDIAPI void APIENTRY glTexCoord3iv(const GLint *v); -WINGDIAPI void APIENTRY glTexCoord3s(GLshort s, GLshort t, GLshort r); -WINGDIAPI void APIENTRY glTexCoord3sv(const GLshort *v); -WINGDIAPI void APIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); -WINGDIAPI void APIENTRY glTexCoord4dv(const GLdouble *v); -WINGDIAPI void APIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); -WINGDIAPI void APIENTRY glTexCoord4fv(const GLfloat *v); -WINGDIAPI void APIENTRY glTexCoord4i(GLint s, GLint t, GLint r, GLint q); -WINGDIAPI void APIENTRY glTexCoord4iv(const GLint *v); -WINGDIAPI void APIENTRY glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); -WINGDIAPI void APIENTRY glTexCoord4sv(const GLshort *v); -WINGDIAPI void APIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); -WINGDIAPI void APIENTRY glTexEnviv(GLenum target, GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glTexGend(GLenum coord, GLenum pname, GLdouble param); -WINGDIAPI void APIENTRY glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); -WINGDIAPI void APIENTRY glTexGenf(GLenum coord, GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glTexGeni(GLenum coord, GLenum pname, GLint param); -WINGDIAPI void APIENTRY glTexGeniv(GLenum coord, GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -WINGDIAPI void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -WINGDIAPI void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); -WINGDIAPI void APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); -WINGDIAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); -WINGDIAPI void APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint *params); -WINGDIAPI void APIENTRY glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -WINGDIAPI void APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -WINGDIAPI void APIENTRY glTranslated(GLdouble x, GLdouble y, GLdouble z); -WINGDIAPI void APIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); -WINGDIAPI void APIENTRY glVertex2d(GLdouble x, GLdouble y); -WINGDIAPI void APIENTRY glVertex2dv(const GLdouble *v); -WINGDIAPI void APIENTRY glVertex2f(GLfloat x, GLfloat y); -WINGDIAPI void APIENTRY glVertex2fv(const GLfloat *v); -WINGDIAPI void APIENTRY glVertex2i(GLint x, GLint y); -WINGDIAPI void APIENTRY glVertex2iv(const GLint *v); -WINGDIAPI void APIENTRY glVertex2s(GLshort x, GLshort y); -WINGDIAPI void APIENTRY glVertex2sv(const GLshort *v); -WINGDIAPI void APIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); -WINGDIAPI void APIENTRY glVertex3dv(const GLdouble *v); -WINGDIAPI void APIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); -WINGDIAPI void APIENTRY glVertex3fv(const GLfloat *v); -WINGDIAPI void APIENTRY glVertex3i(GLint x, GLint y, GLint z); -WINGDIAPI void APIENTRY glVertex3iv(const GLint *v); -WINGDIAPI void APIENTRY glVertex3s(GLshort x, GLshort y, GLshort z); -WINGDIAPI void APIENTRY glVertex3sv(const GLshort *v); -WINGDIAPI void APIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); -WINGDIAPI void APIENTRY glVertex4dv(const GLdouble *v); -WINGDIAPI void APIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -WINGDIAPI void APIENTRY glVertex4fv(const GLfloat *v); -WINGDIAPI void APIENTRY glVertex4i(GLint x, GLint y, GLint z, GLint w); -WINGDIAPI void APIENTRY glVertex4iv(const GLint *v); -WINGDIAPI void APIENTRY glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); -WINGDIAPI void APIENTRY glVertex4sv(const GLshort *v); -WINGDIAPI void APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -WINGDIAPI void APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); - -*/ diff --git a/src/libjin/Audio/SDL/je_sdl_source.cpp b/src/libjin/Audio/SDL/je_sdl_source.cpp index 72607dd..9e09e61 100644 --- a/src/libjin/Audio/SDL/je_sdl_source.cpp +++ b/src/libjin/Audio/SDL/je_sdl_source.cpp @@ -6,10 +6,11 @@ #include <climits> #define STB_VORBIS_HEADER_ONLY -#include "../../3rdparty/stb/stb_vorbis.c" +#include "stb/stb_vorbis.c" +#include "wav/wav.h" + #include "../../math/je_math.h" #include "../../utils/je_macros.h" -#include "../../3rdparty/wav/wav.h" #include "je_sdl_audio.h" #include "je_sdl_source.h" diff --git a/src/libjin/Filesystem/je_asset_database.h b/src/libjin/Filesystem/je_asset_database.h index 1d50a2f..c85b378 100644 --- a/src/libjin/Filesystem/je_asset_database.h +++ b/src/libjin/Filesystem/je_asset_database.h @@ -6,7 +6,7 @@ #include <vector> -#include "../3rdparty/smount/smount.h" +#include "smount/smount.h" #include "je_buffer.h" diff --git a/src/libjin/Game/je_game.cpp b/src/libjin/Game/je_application.cpp index 7562831..a5a8812 100644 --- a/src/libjin/Game/je_game.cpp +++ b/src/libjin/Game/je_application.cpp @@ -8,7 +8,7 @@ #include "../graphics/je_window.h" #include "../math/je_math.h" -#include "je_game.h" +#include "je_application.h" namespace JinEngine { @@ -20,10 +20,10 @@ namespace JinEngine using namespace JinEngine::Time; using namespace JinEngine::Math; - Game::Game() :_running(true) {}; + Application::Application() :_running(true) {}; /* default game loop */ - void Game::run() + void Application::run() { if (_onLoad != nullptr) _onLoad(); @@ -57,11 +57,11 @@ namespace JinEngine quitloop:; } - bool Game::initSystem(const SettingBase* setting) + bool Application::initSystem(const SettingBase* setting) { if (setting == nullptr) return false; - Game::Setting* s = (Game::Setting*) setting; + Application::Setting* s = (Application::Setting*) setting; _onEvent = s->eventHandler; _onUpdate = s->updater; _onDraw = s->drawer; @@ -69,7 +69,7 @@ namespace JinEngine return true; } - void Game::quitSystem() + void Application::quitSystem() { } diff --git a/src/libjin/Game/je_game.h b/src/libjin/Game/je_application.h index 2ccc428..f740c22 100644 --- a/src/libjin/Game/je_game.h +++ b/src/libjin/Game/je_application.h @@ -18,7 +18,7 @@ namespace JinEngine /// /// Game class. /// - class Game : public Subsystem<Game> + class Application : public Subsystem<Application> { public: @@ -63,10 +63,10 @@ namespace JinEngine private: - Game(); - ~Game() {}; + Application(); + ~Application() {}; - singleton(Game); + singleton(Application); onEvent _onEvent; onUpdate _onUpdate; diff --git a/src/libjin/Graphics/Font/je_texture_font.cpp b/src/libjin/Graphics/Font/je_texture_font.cpp index 5834140..15d0ace 100644 --- a/src/libjin/Graphics/Font/je_texture_font.cpp +++ b/src/libjin/Graphics/Font/je_texture_font.cpp @@ -6,14 +6,14 @@ #include "je_texture_font.h" +using namespace std; +using namespace JinEngine::Math; + namespace JinEngine { namespace Graphics { - using namespace std; - using namespace Math; - TextureFont * TextureFont::createTextureFont(const Bitmap* bitmap, const Content& codepoints, int cellw, int cellh) { TextureFont* tf = new TextureFont(bitmap, codepoints, cellw, cellh); diff --git a/src/libjin/Graphics/Font/je_ttf.cpp b/src/libjin/Graphics/Font/je_ttf.cpp index 72e5da9..52547c9 100644 --- a/src/libjin/Graphics/Font/je_ttf.cpp +++ b/src/libjin/Graphics/Font/je_ttf.cpp @@ -13,7 +13,7 @@ #include "je_page.h" #define STB_TRUETYPE_IMPLEMENTATION -#include "../../3rdparty/stb/stb_truetype.h" +#include "stb/stb_truetype.h" namespace JinEngine { @@ -144,7 +144,7 @@ namespace JinEngine // TTF ///////////////////////////////////////////////////////////////////////////// - #include "../shader/je_font.shader.h" + #include "../shader/shaders/je_font.shader.h" using namespace std; using namespace JinEngine::Math; diff --git a/src/libjin/Graphics/Font/je_ttf.h b/src/libjin/Graphics/Font/je_ttf.h index 42e7e62..b2c1802 100644 --- a/src/libjin/Graphics/Font/je_ttf.h +++ b/src/libjin/Graphics/Font/je_ttf.h @@ -6,7 +6,8 @@ #include <vector> #include <map> -#include "../../3rdparty/stb/stb_truetype.h" +#include "stb/stb_truetype.h" + #include "../../math/je_quad.h" #include "../je_color.h" diff --git a/src/libjin/Graphics/Shader/je_shader.cpp b/src/libjin/Graphics/Shader/je_shader.cpp index e6f82a4..8e909d8 100644 --- a/src/libjin/Graphics/Shader/je_shader.cpp +++ b/src/libjin/Graphics/Shader/je_shader.cpp @@ -23,7 +23,7 @@ namespace JinEngine // SHADER_FORMAT_SIZE // formatShader // - #include "je_default.shader.h" + #include "shaders/je_default.shader.h" // // https://stackoverflow.com/questions/27941496/use-sampler-without-passing-through-value diff --git a/src/libjin/Graphics/Shader/je_shader.h b/src/libjin/Graphics/Shader/je_shader.h index f721b5d..039efb5 100644 --- a/src/libjin/Graphics/Shader/je_shader.h +++ b/src/libjin/Graphics/Shader/je_shader.h @@ -7,7 +7,7 @@ #include <string> #include <map> -#include "../../3rdparty/GLee/GLee.h" +#include "GLee/GLee.h" #include "../je_color.h" #include "../je_texture.h" diff --git a/src/libjin/Graphics/je_bitmap.cpp b/src/libjin/Graphics/je_bitmap.cpp index 0747f0b..14cf3c6 100644 --- a/src/libjin/Graphics/je_bitmap.cpp +++ b/src/libjin/Graphics/je_bitmap.cpp @@ -1,5 +1,5 @@ #define STB_IMAGE_IMPLEMENTATION -#include "../3rdparty/stb/stb_image.h" +#include "stb/stb_image.h" #include "../filesystem/je_asset_database.h" #include "../math/je_math.h" diff --git a/src/libjin/Graphics/je_bitmap.h b/src/libjin/Graphics/je_bitmap.h index 8f0c30d..9d10106 100644 --- a/src/libjin/Graphics/je_bitmap.h +++ b/src/libjin/Graphics/je_bitmap.h @@ -3,7 +3,8 @@ #include "../core/je_configuration.h" #if defined(jin_graphics) -#include "../3rdparty/GLee/GLee.h" +#include "GLee/GLee.h" + #include "../common/je_types.h" #include "../math/je_vector2.hpp" diff --git a/src/libjin/Graphics/je_gl.h b/src/libjin/Graphics/je_gl.h index cda8bf9..f1e7a2b 100644 --- a/src/libjin/Graphics/je_gl.h +++ b/src/libjin/Graphics/je_gl.h @@ -1,8 +1,9 @@ #ifndef __JE_OPENGL_H #define __JE_OPENGL_H -#include "../3rdparty/GLee/GLee.h" -#include "../3rdparty/ogl/OpenGL.h" +#include "GLee/GLee.h" +#include "ogl/OpenGL.h" + #include "../math/je_matrix.h" namespace JinEngine diff --git a/src/libjin/Graphics/je_image.cpp b/src/libjin/Graphics/je_image.cpp index f800423..171bba0 100644 --- a/src/libjin/Graphics/je_image.cpp +++ b/src/libjin/Graphics/je_image.cpp @@ -1,4 +1,5 @@ -#include "../3rdparty/stb/stb_image.h" +#include "stb/stb_image.h" + #include "../filesystem/je_asset_database.h" #include "je_image.h" diff --git a/src/libjin/Graphics/je_texture.h b/src/libjin/Graphics/je_texture.h index 656ccd7..dff3f40 100644 --- a/src/libjin/Graphics/je_texture.h +++ b/src/libjin/Graphics/je_texture.h @@ -3,7 +3,7 @@ #include "../core/je_configuration.h" #if defined(jin_graphics) -#include "../3rdparty/GLee/GLee.h" +#include "GLee/GLee.h" #include "je_color.h" #include "je_graphic_single.h" diff --git a/src/libjin/Net/je_socket.h b/src/libjin/Net/je_socket.h index d496fcb..df2a2bf 100644 --- a/src/libjin/Net/je_socket.h +++ b/src/libjin/Net/je_socket.h @@ -3,7 +3,7 @@ #include "../core/je_configuration.h" #if defined(jin_net) -#include "../3rdparty/tekcos/tekcos.h" +#include "tekcos/tekcos.h" namespace JinEngine { diff --git a/src/libjin/jin.h b/src/libjin/jin.h index b47a56d..88276ca 100644 --- a/src/libjin/jin.h +++ b/src/libjin/jin.h @@ -7,7 +7,7 @@ #if jin_audio == jin_audio_sdl #include "audio/sdl/je_sdl_audio.h" #endif -#include "game/je_game.h" +#include "game/je_application.h" #include "filesystem/je_asset_database.h" #include "filesystem/je_buffer.h" #include "input/je_input.h" diff --git a/src/lua/modules/core/je_lua_core.cpp b/src/lua/modules/core/je_lua_core.cpp index a576bec..1b7d762 100644 --- a/src/lua/modules/core/je_lua_core.cpp +++ b/src/lua/modules/core/je_lua_core.cpp @@ -6,11 +6,11 @@ namespace JinEngine namespace Lua { - using namespace JinEngine::Core; + using namespace JinEngine::Game; static int l_running(lua_State* L) { - static Game* game = Game::get(); + static Application* game = Application::get(); bool running = game->running(); luax_pushboolean(L, running); return 1; @@ -18,13 +18,13 @@ namespace JinEngine static int l_stop(lua_State* L) { - Game::get()->stop(); + Application::get()->stop(); return 0; } static int l_quit(lua_State* L) { - Game::get()->quit(); + Application::get()->quit(); return 0; } diff --git a/src/lua/resources/font.ttf.h b/src/lua/resources/font.ttf.h index a4dff31..124e83f 100644 --- a/src/lua/resources/font.ttf.h +++ b/src/lua/resources/font.ttf.h @@ -2,364 +2,361 @@ static const char default_font_bitmap[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,3,154,0,0,0,14,8,6,0,0,0,78, 234,99,67,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115, -0,0,14,193,0,0,14,193,1,184,145,107,237,0,0,0,25,116,69,88,116,83,111,102,116, -119,97,114,101,0,112,97,105,110,116,46,110,101,116,32,52,46,48,46,50,49,241, -32,105,149,0,0,29,60,73,68,65,84,120,94,237,92,61,168,117,75,82,125,8,134,166, -26,138,32,152,152,12,8,34,6,3,142,163,32,98,160,78,48,42,226,24,24,56,129,201, -203,20,52,80,49,120,32,42,200,68,79,3,3,25,5,5,49,18,49,246,39,50,209,68,76, -52,82,16,197,68,68,142,189,106,117,157,90,245,211,231,236,115,191,239,225,19, -166,14,235,222,221,85,171,171,171,171,171,123,239,125,238,247,222,7,183,15, -110,55,224,131,34,174,159,108,46,202,121,196,131,92,225,93,225,64,174,242,32, -143,120,87,253,40,239,21,238,86,189,247,24,182,234,165,184,170,92,237,167,188, -87,184,91,117,148,171,92,229,157,184,143,108,144,43,125,31,245,135,188,202, -219,205,167,242,62,253,190,47,142,139,115,175,250,124,198,115,249,36,248,202, -185,194,219,205,135,162,254,174,244,121,196,63,233,93,158,217,85,174,112,175, -112,38,209,126,87,251,190,202,135,92,237,115,149,87,229,149,126,87,120,175, -250,122,223,92,200,171,252,42,87,251,190,50,198,251,246,233,188,19,87,237,39, -142,202,85,238,39,229,239,255,27,239,93,244,213,230,114,178,191,170,119,121, -102,135,92,181,87,206,179,126,144,19,199,245,213,118,210,187,168,253,196,113, -121,43,119,171,146,92,181,239,102,146,79,147,237,36,222,231,147,232,119,133, -163,242,42,223,229,222,239,222,187,160,106,114,43,80,53,185,21,168,154,147,94, -49,107,137,125,165,14,246,212,108,114,170,31,19,83,57,134,219,237,227,133,143, -208,82,49,102,230,110,75,136,49,30,112,182,150,254,31,240,84,96,187,243,190, -112,191,66,124,144,143,239,154,133,221,165,201,178,133,15,199,213,121,222,110, -255,185,240,37,209,249,213,151,22,254,101,225,243,98,131,124,126,1,122,216, -183,215,209,47,198,78,241,111,236,30,143,5,60,233,115,236,103,172,204,123,37, -79,219,210,197,152,23,184,198,202,188,196,13,77,183,185,152,245,96,47,182,177, -63,196,88,175,243,182,246,44,133,255,78,126,223,202,185,183,4,166,207,220,219, -237,23,83,43,128,125,149,53,236,175,26,69,229,159,252,46,152,31,126,66,59,241, -161,171,218,231,60,250,87,187,162,207,171,249,76,253,31,197,208,109,185,85, -237,101,156,132,39,92,139,137,159,35,7,112,73,250,234,27,152,252,75,123,232, -147,91,19,248,9,205,16,159,225,213,218,90,48,251,85,255,128,114,227,30,145, -161,113,60,242,85,115,81,184,22,155,183,47,112,33,119,221,3,126,226,157,160, -253,203,88,9,15,120,109,156,183,248,204,179,200,224,39,107,180,149,253,16,167, -53,3,170,191,43,235,187,174,92,18,7,200,188,171,254,128,220,114,212,249,156, -114,88,121,87,199,125,33,62,155,47,63,207,245,30,231,180,30,117,14,157,51,251, -124,162,119,49,235,3,59,196,24,131,253,174,169,49,241,185,235,171,246,219,117, -101,30,46,171,21,125,53,191,53,167,222,191,142,85,252,54,59,177,71,203,2,189, -112,12,219,52,74,226,214,90,24,106,32,181,52,174,26,51,63,108,85,191,143,250, -229,49,179,237,234,120,181,95,129,203,106,101,102,245,121,66,237,23,243,251, -112,193,158,249,167,220,217,152,170,81,84,159,207,248,14,237,87,109,142,170, -201,173,64,213,228,86,160,106,110,183,111,177,171,170,87,204,90,98,95,169,3, -155,60,196,180,161,31,139,185,114,12,159,230,23,205,159,177,159,241,34,247,27, -98,91,216,93,154,24,75,120,134,175,189,104,54,49,102,230,110,75,23,99,94,224, -26,43,243,18,55,52,221,230,98,86,183,127,246,126,69,160,157,53,187,87,22,99, -189,206,219,218,179,20,254,59,249,125,43,103,183,80,111,255,181,128,195,116, -91,237,227,45,8,106,243,63,236,42,228,195,116,131,0,114,142,81,167,42,157,207, -49,171,240,64,7,234,26,205,252,15,19,135,188,58,54,230,55,237,69,160,114,63, -106,113,2,28,27,15,36,159,89,208,252,205,251,81,247,115,182,249,213,233,28, -128,127,140,19,235,193,49,234,28,32,237,204,88,250,28,123,172,221,20,59,224, -57,157,242,232,54,156,121,106,129,207,252,112,6,196,250,251,28,84,56,159,190, -166,19,247,227,39,181,133,120,84,162,102,250,252,231,90,128,85,99,225,195,72, -173,243,92,179,115,172,46,185,6,116,125,151,70,114,222,235,37,252,198,60,2,19, -31,243,175,107,2,30,98,183,241,54,122,141,113,29,34,7,193,227,25,16,188,83,76, -104,67,255,25,225,122,157,84,97,60,206,139,53,132,15,23,206,163,214,5,239,217, -206,205,126,28,228,212,53,153,253,113,125,125,158,16,206,1,62,130,103,235,4, -217,154,200,75,230,185,191,90,135,31,183,113,231,57,231,252,1,221,151,75,222, -151,28,87,243,205,181,212,58,157,121,204,97,157,199,158,179,105,175,232,35, -223,211,121,161,251,103,90,179,217,231,19,189,139,89,31,216,33,198,40,118,233, -129,53,168,123,169,159,101,212,165,115,21,178,108,225,155,181,135,53,251,168, -229,148,253,78,103,251,239,45,252,214,66,175,1,98,143,150,5,122,225,24,182, -105,148,196,101,45,96,108,196,251,249,86,43,81,163,61,110,214,16,99,133,70, -227,96,14,188,198,242,122,135,158,245,169,57,138,241,16,79,206,3,99,224,158, -131,70,199,203,113,250,62,166,127,234,125,238,209,7,96,236,24,7,18,115,9,125, -31,11,96,222,242,89,85,115,151,91,191,188,128,88,128,175,152,174,250,140,57,0, -117,207,199,92,192,115,86,240,51,170,38,183,2,85,195,159,223,184,240,75,11, -223,181,219,19,239,47,22,190,167,233,21,179,150,216,87,234,216,22,8,98,218, -208,143,197,92,57,6,223,116,165,139,49,51,119,91,66,140,241,128,179,181,244, -255,128,167,2,219,157,199,130,193,2,98,147,127,166,22,203,238,210,196,88,194, -51,92,157,39,54,86,62,128,212,90,109,144,231,135,27,121,253,176,36,118,143, -199,2,158,244,57,246,51,86,230,189,146,167,109,233,98,204,11,92,99,101,94,226, -134,166,219,92,204,234,118,30,138,200,45,15,210,154,255,161,63,196,88,175,243, -182,246,44,133,255,78,126,223,194,185,95,177,158,254,117,97,190,153,0,165,54, -247,111,220,88,242,139,15,115,236,135,119,61,208,177,111,234,141,55,223,196,8, -240,168,235,123,164,243,251,58,66,184,71,84,171,188,233,70,23,92,244,61,189, -116,221,185,150,211,224,247,253,168,57,203,54,191,138,90,84,59,253,99,28,222, -252,248,155,55,241,122,147,43,235,98,49,241,51,113,224,195,125,58,48,22,206, -68,218,212,2,196,216,113,227,39,224,19,49,230,216,185,254,136,5,124,228,197, -45,224,195,79,127,137,239,243,245,118,62,235,233,219,253,232,218,58,159,58, -189,65,3,190,62,161,65,27,252,92,95,225,91,227,192,3,97,60,4,49,6,71,172,31, -218,234,11,40,118,91,27,90,122,189,224,139,79,141,43,44,145,27,215,0,140,177, -114,49,71,136,174,19,199,210,47,86,57,22,184,154,19,92,127,52,240,224,11,57, -225,28,53,30,229,230,188,0,193,211,245,38,79,125,58,111,170,11,240,32,168,207, -190,79,0,250,195,28,125,206,225,175,175,7,198,195,60,193,57,141,171,235,4,68, -78,159,215,45,81,235,15,253,24,163,230,187,215,75,207,33,252,194,127,125,33, -69,93,33,127,182,231,23,162,110,158,243,114,45,16,156,51,63,207,245,58,111, -213,211,246,155,11,94,43,152,111,61,23,103,159,79,244,46,102,125,96,135,24, -163,216,119,11,113,241,172,12,59,4,122,204,39,234,139,181,143,124,1,166,53,63, -234,155,235,202,125,211,107,3,57,231,179,102,214,35,119,208,227,133,164,219, -137,174,161,182,89,44,168,131,36,110,212,8,126,99,220,188,46,172,61,143,45, -127,105,81,115,161,245,205,28,160,78,89,219,90,211,236,23,57,87,159,28,47,242, -174,53,201,126,225,83,199,139,56,89,127,212,250,220,160,39,115,190,7,48,254, -243,53,250,212,126,190,7,127,97,1,188,47,47,228,250,193,88,188,194,248,136,25, -243,66,63,198,167,57,1,152,51,212,71,189,71,2,232,139,61,155,107,42,115,2,85, -147,91,129,170,225,207,159,95,248,199,5,172,57,45,202,1,110,183,111,93,248, -239,166,87,240,231,15,47,252,192,190,6,190,205,126,239,150,58,222,229,57,108, -230,184,10,212,133,4,124,211,101,109,231,198,194,4,234,98,76,28,247,159,181, -185,165,208,113,89,188,177,249,181,176,129,184,202,168,113,1,87,231,137,190, -185,191,90,187,111,221,148,143,121,24,187,63,216,130,151,53,51,166,56,213,238, -168,227,2,185,21,184,234,19,168,92,180,213,238,152,198,175,126,149,51,249,209, -177,162,6,248,208,82,107,224,20,115,141,227,10,239,196,81,188,79,191,175,114, -226,202,111,46,56,20,163,246,248,113,46,164,214,102,180,149,199,28,163,62,243, -193,239,200,49,64,252,32,175,92,238,177,190,79,19,127,60,175,200,227,30,217, -28,136,177,220,206,195,254,122,156,192,52,54,45,243,126,60,229,40,60,71,45, -170,157,254,49,14,198,3,39,30,22,235,222,41,235,98,49,241,51,113,226,91,244, -176,162,31,214,159,53,160,253,128,152,51,110,180,254,114,0,11,126,67,159,99, -231,250,207,231,163,206,69,181,121,190,174,197,245,233,101,204,214,181,0,241, -192,119,255,203,83,239,131,56,152,119,229,70,46,114,61,148,125,99,57,102,43, -252,152,197,62,206,131,36,187,244,235,245,18,15,31,177,214,68,248,112,13,208, -185,190,30,128,230,158,107,49,63,228,49,95,4,174,115,62,200,171,107,131,223, -104,143,127,9,188,183,52,231,253,12,174,245,17,62,93,3,112,124,96,206,1,48, -223,59,56,182,206,25,8,127,142,137,167,118,196,133,122,224,252,171,63,230,6, -118,93,175,211,30,133,15,214,201,137,183,90,146,195,240,221,199,197,120,90, -167,115,126,116,13,136,136,67,121,62,46,63,207,245,26,155,234,129,156,99,142, -175,26,183,231,218,57,235,87,75,197,172,15,236,16,99,20,251,110,205,117,54, -229,5,57,47,121,54,63,234,155,28,228,119,170,13,248,132,237,209,139,230,87,90, -63,194,175,114,221,240,163,188,62,121,145,196,253,29,251,137,249,240,11,67, -180,213,206,185,32,63,125,207,210,22,177,232,26,213,126,252,212,126,168,205, -92,199,180,69,126,31,217,116,60,214,9,114,136,88,48,46,218,49,190,215,92,173, -35,254,117,17,62,157,15,222,227,245,101,63,223,67,222,167,215,40,207,32,112, -38,57,213,155,159,189,62,23,8,116,136,199,115,29,247,227,232,237,248,238,133, -63,110,218,219,237,223,22,126,108,183,2,185,5,193,207,127,88,248,62,107,221, -110,223,188,112,226,117,189,226,118,251,53,251,73,249,149,5,104,255,125,225, -155,156,163,14,44,209,16,211,134,30,130,159,154,200,233,207,199,16,112,252,97, -198,165,111,194,40,36,20,189,75,126,200,33,7,11,81,37,191,104,198,141,70,227, -227,226,106,65,116,95,245,27,98,252,84,31,40,76,110,16,229,145,91,231,137,121, -228,127,26,64,222,59,253,211,217,5,140,67,223,153,215,15,112,234,221,47,14,49, -23,223,32,46,211,183,111,62,46,250,249,154,48,135,202,35,23,63,53,79,140,239, -154,79,62,204,204,245,240,124,173,1,142,141,181,129,47,196,24,121,160,31,141, -45,255,51,166,62,70,206,161,174,11,53,113,160,101,30,242,201,252,100,94,196, -219,125,97,108,206,63,218,117,124,248,85,14,230,146,215,161,143,237,60,29,27, -253,225,71,133,126,157,19,89,65,28,238,15,126,128,167,47,52,11,209,47,243,34, -103,91,171,178,52,213,175,142,79,14,45,39,255,137,111,168,251,142,60,238,17, -213,230,243,160,197,153,48,251,236,99,19,28,75,53,128,230,44,219,252,42,106, -68,237,17,27,246,14,214,45,98,228,71,185,105,93,44,127,103,14,252,232,26,2, -200,17,244,252,173,253,128,60,231,168,15,250,132,254,225,25,230,130,235,133, -200,121,238,51,173,69,207,105,225,185,224,122,3,177,77,231,91,173,133,152,71, -62,31,16,123,206,55,144,243,169,99,198,250,117,30,36,217,165,95,159,27,234,45, -230,7,187,91,200,237,95,184,212,156,97,44,60,164,224,11,1,232,97,143,181,208, -156,196,61,19,125,97,7,232,71,243,145,121,240,9,127,49,102,62,35,226,138,246, -56,199,248,161,133,113,33,78,173,193,200,147,107,136,103,118,227,184,108,77, -228,176,214,65,204,7,136,252,233,94,15,142,231,14,127,193,32,175,215,21,56, -122,206,130,119,250,87,24,152,51,236,46,221,95,110,161,79,175,81,32,94,214, -185,14,172,145,233,75,185,90,247,81,15,202,91,189,44,127,252,60,215,235,26, -170,30,136,252,69,126,213,174,235,147,245,88,99,228,114,140,205,5,109,177,53, -59,196,24,98,23,54,115,214,243,228,117,29,245,149,247,163,229,185,249,198,250, -185,207,186,150,236,223,239,35,174,119,212,181,37,252,42,226,162,182,115,185, -198,147,76,249,229,30,242,152,213,206,185,176,142,160,209,177,34,23,92,115, -157,43,251,69,173,106,63,218,162,230,122,63,196,4,159,143,95,52,213,22,249, -195,152,46,113,214,48,254,254,126,162,115,139,107,230,33,88,125,61,24,7,158, -95,193,101,255,202,137,154,7,23,207,166,200,21,248,140,169,214,128,230,75,253, -70,76,184,38,39,250,248,213,119,46,252,225,194,223,47,252,248,93,235,184,221, -62,183,240,71,118,165,47,156,157,247,35,11,127,181,91,127,182,240,171,118,221, -121,188,170,122,197,237,246,63,11,223,190,91,127,0,197,146,223,93,184,247,83, -7,182,145,32,166,13,61,4,147,246,5,137,194,81,14,121,72,18,95,60,168,193,239, -126,120,80,15,94,44,114,95,140,232,75,13,198,69,59,111,32,22,165,23,142,107, -185,96,122,160,240,112,134,47,22,239,124,40,99,83,163,72,160,65,155,115,81,30, -185,117,158,104,79,15,3,239,242,162,25,241,204,155,102,122,176,69,63,223,20, -208,32,191,16,240,209,134,125,90,15,207,173,207,223,219,211,131,39,231,26,26, -140,1,238,52,23,245,9,109,204,41,115,35,46,106,124,30,121,173,201,197,216,28, -207,181,97,67,44,58,94,62,20,162,6,152,251,190,94,97,163,6,126,224,175,222,44, -97,247,117,130,38,250,5,7,125,121,48,83,227,47,199,94,243,152,71,246,203,248, -160,71,158,208,175,31,180,87,198,206,55,179,224,171,159,56,28,125,60,92,199, -90,246,253,8,63,176,169,244,111,70,53,103,75,83,197,216,153,159,214,204,56, -180,244,121,5,95,229,180,71,49,39,21,206,43,236,41,206,13,228,194,101,170,189, -58,182,202,180,31,35,247,217,230,87,167,57,122,108,16,196,100,22,203,77,207, -95,170,135,11,28,228,197,125,198,248,212,77,251,93,215,7,124,228,27,58,244, -129,190,198,222,226,129,224,122,131,245,166,154,190,22,240,193,189,242,128, -167,130,246,2,231,54,159,151,42,62,78,206,21,239,37,176,65,88,47,176,228,7,11, -29,79,243,151,125,1,197,46,253,24,167,114,99,63,98,124,207,55,192,51,164,206, -137,103,133,174,37,174,1,140,197,117,225,248,60,67,242,126,246,43,207,231,189, -198,246,167,242,224,11,243,192,23,31,244,247,152,203,181,11,75,88,195,151,213, -199,70,228,201,53,196,51,187,114,28,152,11,243,87,207,48,230,216,215,23,194, -24,149,199,179,83,235,44,174,235,26,144,171,192,216,211,115,0,214,69,159,23, -224,55,159,71,132,95,197,186,83,155,253,197,125,66,101,122,129,194,56,117,220, -233,188,100,109,214,113,78,122,141,79,245,64,206,223,244,165,79,216,178,30,49, -34,39,217,103,205,177,174,21,97,49,170,24,67,236,251,42,106,168,250,96,77,34, -166,88,143,188,31,231,253,193,243,2,182,241,75,131,33,150,187,222,197,172,217, -174,115,142,184,208,238,115,239,147,23,73,220,103,121,140,154,194,124,25,149, -219,242,179,66,158,43,115,16,57,210,126,180,197,126,215,126,28,15,253,48,191, -233,175,150,177,94,90,215,180,121,13,193,14,104,141,35,142,211,31,83,80,95,16, -244,197,23,114,228,134,244,117,228,28,224,27,99,112,156,202,137,220,98,62,0, -198,130,111,196,57,189,188,98,76,231,197,250,82,199,60,114,204,175,72,159,159, -88,248,253,5,204,225,231,22,104,113,123,240,252,234,59,22,254,124,225,111,22, -190,152,56,192,237,246,167,11,63,187,91,223,187,128,255,116,234,235,6,30,175, -170,94,209,53,95,127,191,222,26,117,176,203,115,60,88,240,211,147,237,114,122, -9,65,18,85,11,93,125,96,0,199,19,122,26,51,113,54,232,95,53,81,116,85,88,192, -206,139,130,225,141,178,23,34,248,88,104,215,196,6,81,30,208,231,137,126,121, -60,242,222,250,162,137,24,233,15,150,185,80,79,47,154,244,75,77,204,161,182, -115,191,202,3,122,174,129,206,243,252,215,53,158,124,66,7,110,157,247,181,181, -6,122,238,35,55,244,143,141,200,155,56,180,122,128,69,13,32,174,233,191,119, -11,27,53,243,220,226,80,246,152,25,147,30,136,228,32,78,0,254,192,241,195,109, -206,3,227,243,57,196,225,169,235,31,126,125,108,94,235,216,113,21,241,163,173, -126,120,56,250,88,94,247,209,206,254,32,176,233,122,186,239,135,47,13,85,22, -167,250,141,189,179,249,248,157,244,15,248,6,93,227,224,105,142,8,229,149,56, -11,184,158,85,59,141,77,112,44,213,0,154,179,108,243,171,168,55,181,71,108, -254,215,169,152,7,63,202,77,235,98,249,123,204,1,176,198,248,205,121,146,133, -235,233,76,175,115,6,31,253,127,106,1,250,211,25,118,143,7,130,235,133,200, -121,238,227,122,149,126,211,215,254,75,227,130,235,13,206,167,247,211,90,240, -248,17,103,206,85,60,80,57,15,210,254,105,165,140,137,57,114,253,204,98,31, -231,65,146,93,250,49,30,229,70,79,205,95,228,190,214,56,207,10,112,112,175,64, -159,120,49,241,181,36,56,111,221,251,49,79,196,225,247,26,203,105,226,229,17, -61,31,228,209,58,249,196,120,158,107,206,89,121,92,67,141,21,136,60,185,134, -120,102,215,113,145,3,172,235,125,236,50,151,186,190,0,99,213,245,237,231,107, -212,92,61,19,87,203,101,107,230,56,179,63,96,222,7,17,95,172,59,218,252,4,143, -246,168,97,142,203,61,173,60,214,136,175,27,4,121,103,238,149,183,231,129,223, -162,59,235,117,13,85,15,196,152,156,111,93,3,222,119,250,153,125,210,199,186, -186,212,51,202,98,84,129,238,110,143,156,158,99,226,24,200,183,174,155,95,133, -141,218,176,112,174,240,249,126,95,52,243,154,169,180,123,210,118,51,74,225, -110,45,5,109,177,65,242,190,204,118,191,66,92,249,124,101,14,226,156,209,126, -180,33,111,60,207,180,31,199,225,94,129,70,215,221,107,65,247,129,107,184,63, -49,22,98,113,173,215,63,190,8,163,207,83,125,17,190,166,184,135,193,23,230,14, -31,152,127,126,222,200,123,18,118,60,151,213,251,23,250,234,187,145,202,135, -67,189,177,102,116,76,90,152,95,94,51,167,209,231,215,237,39,102,18,158,178, -95,32,183,190,127,225,159,22,254,58,105,129,219,237,135,164,5,252,224,194,55, -36,13,224,87,85,175,152,181,196,190,82,7,187,4,199,34,196,162,112,193,9,92,79, -15,37,181,0,102,46,57,44,76,71,63,96,58,199,253,171,70,199,200,220,233,127, -153,28,11,171,54,160,251,136,13,162,60,160,207,19,253,152,159,204,123,203,139, -38,54,12,190,93,136,27,73,47,84,230,70,117,212,135,95,106,98,14,181,157,251, -85,30,208,115,13,116,222,105,141,39,159,17,95,230,94,91,107,160,231,62,114, -195,67,8,192,56,216,248,121,77,162,6,24,67,175,129,176,81,51,207,45,251,137,7, -110,173,225,92,111,120,97,64,204,240,75,127,248,182,170,62,184,176,15,56,88, -251,249,69,147,7,166,143,253,163,11,240,127,229,175,149,176,7,39,30,168,38, -201,121,3,24,23,198,100,76,4,215,77,121,225,183,174,39,209,247,121,236,29,229, -121,236,53,71,133,63,158,87,228,221,99,112,49,150,219,135,56,141,195,107,142, -237,45,199,52,54,45,61,15,128,230,44,219,252,202,235,163,230,58,234,46,234,1, -99,156,30,146,238,235,98,49,233,60,7,206,2,230,23,255,105,64,232,166,51,189, -174,143,199,230,200,123,153,121,101,254,66,235,192,88,152,75,61,127,116,190, -97,169,115,125,92,91,158,167,103,255,141,166,143,213,243,201,189,165,152,214, -143,57,102,11,243,129,29,60,248,169,227,214,188,59,24,143,106,114,79,207,95, -228,177,230,130,177,186,127,228,13,92,95,35,244,241,254,204,169,198,22,103,19, -215,130,28,92,215,7,180,227,92,77,223,125,134,159,205,129,36,222,188,214,184, -134,46,239,131,232,21,99,103,187,158,135,62,23,179,180,113,131,171,232,126,25, -59,124,77,146,215,236,138,63,128,243,243,250,3,34,7,202,163,191,158,159,58,15, -173,11,98,246,23,247,1,7,226,235,231,205,242,254,48,95,248,173,122,142,199, -251,142,234,1,246,241,218,235,62,87,235,165,177,92,239,168,246,213,170,98,12, -183,179,127,222,135,106,7,104,71,254,116,221,148,17,249,238,231,5,247,216,33, -46,211,14,122,23,179,102,187,206,57,226,66,187,143,1,65,92,147,212,251,215,30, -145,130,182,216,244,220,102,221,169,61,234,136,118,125,214,136,125,223,215, -155,182,200,189,246,227,120,177,239,117,110,156,127,236,37,112,221,166,181,71, -141,3,190,32,125,157,8,109,249,60,225,3,247,65,232,224,23,250,188,119,99,45, -192,135,111,206,85,57,156,75,244,15,46,25,53,22,218,128,200,13,175,113,238, -192,71,223,207,252,201,255,46,243,118,251,231,133,47,154,206,237,153,135,151, -200,191,92,248,219,133,159,52,221,204,235,168,154,147,94,49,107,137,125,165, -14,118,9,14,69,200,4,32,121,104,225,55,100,122,40,65,146,238,55,154,5,112,217, -206,60,36,22,122,47,22,252,254,114,225,160,111,60,108,243,55,218,121,3,177, -152,177,104,44,88,106,209,55,127,147,64,30,124,240,160,213,162,7,24,187,250, -128,79,142,175,188,224,70,33,113,60,246,205,188,119,249,167,179,145,187,30,43, -198,158,30,108,195,47,53,234,47,183,115,191,202,3,56,71,229,1,212,3,174,57, -173,49,124,66,175,92,246,213,131,131,220,107,107,77,46,227,82,109,216,248,127, -4,99,11,191,153,11,183,71,13,80,223,227,240,152,17,15,52,248,13,121,244,64, -128,47,5,56,199,126,19,242,188,130,227,113,129,139,118,255,203,11,15,44,159, -31,198,102,77,233,33,156,15,125,160,115,56,79,248,208,122,206,55,170,136,159, -177,7,16,39,247,166,106,99,46,62,15,239,159,215,40,230,93,215,30,124,180,107, -157,196,60,67,59,207,235,196,175,28,242,184,71,86,203,197,88,110,63,199,9,160, -61,213,94,26,219,124,210,114,218,143,145,51,213,115,108,128,253,122,29,122, -110,49,30,52,200,57,246,195,244,87,190,186,46,61,31,157,227,254,116,222,184, -158,206,244,105,125,188,63,114,151,215,147,115,115,59,230,231,22,207,245,163, -127,78,103,243,117,49,150,242,206,107,230,253,169,155,111,236,202,71,124,240, -81,191,101,199,248,202,155,214,143,177,177,5,63,176,131,199,104,131,167,251, -89,243,23,99,43,55,251,69,28,224,144,103,86,251,4,191,159,3,117,126,24,19,247, -186,30,91,228,203,215,39,242,151,107,81,99,74,115,53,125,246,233,235,226,53, -27,208,122,228,217,164,53,229,99,143,127,21,218,87,49,118,182,215,51,51,91, -251,62,192,184,202,99,222,116,206,172,49,69,196,215,247,41,230,12,187,242,166, -127,186,93,115,227,235,155,231,195,220,128,11,63,115,158,1,237,79,205,92,83, -121,46,231,60,59,111,206,87,143,147,57,255,160,229,3,168,249,171,123,241,60, -214,60,135,197,82,65,91,108,205,14,49,134,219,123,189,101,59,160,57,15,61,125, -177,133,216,248,220,168,113,211,55,81,231,227,253,249,105,122,23,179,102,187, -113,246,85,170,133,253,81,94,159,188,72,225,110,45,5,109,177,249,92,98,31,169, -157,107,54,215,79,228,151,231,143,246,163,13,177,243,12,237,253,34,175,87,109, -177,223,57,30,225,177,65,168,175,235,17,231,101,196,170,99,232,181,51,1,230,3, -125,0,92,115,108,229,48,63,152,39,108,240,133,151,87,248,155,115,173,57,161, -95,8,106,31,127,180,192,111,72,190,79,70,111,224,179,11,127,178,48,253,165,18, -127,193,252,187,133,159,94,8,139,114,128,220,10,84,205,73,175,152,181,196,190, -82,7,150,20,136,105,67,15,65,130,93,176,24,44,56,229,144,135,68,251,127,139,6, -193,195,70,46,48,128,133,228,9,134,192,95,94,96,114,116,92,112,48,118,126,0, -204,55,92,23,22,146,30,114,44,134,40,166,90,136,44,16,47,86,72,124,227,175,60, -114,225,159,27,146,192,92,250,28,222,253,127,6,228,243,207,115,166,254,255, -234,69,179,230,137,55,162,186,198,225,19,255,211,36,23,230,168,230,254,234,90, -3,61,247,225,171,199,150,15,69,214,128,114,114,14,123,28,115,173,231,67,139, -53,142,54,63,149,131,120,57,239,218,167,215,160,114,61,206,250,127,80,243,43, -223,63,248,157,107,157,241,96,12,21,142,153,57,188,177,47,141,237,123,90,0, -196,145,115,195,245,244,125,237,210,95,26,98,222,117,45,230,179,32,230,161,18, -235,171,243,122,196,87,14,121,220,35,171,229,178,244,225,43,226,4,192,83,97, -77,43,3,224,216,247,181,52,159,180,112,44,229,2,186,175,178,222,107,140,227, -156,207,34,174,45,225,243,174,103,193,180,46,95,29,56,186,191,39,255,200,193, -213,23,77,0,252,158,167,200,235,20,23,199,235,107,154,226,113,49,150,242,206, -181,5,137,125,216,243,121,175,5,1,218,156,151,107,250,254,135,212,7,115,198, -198,22,198,67,94,49,87,70,27,188,233,188,113,25,95,170,196,175,247,97,124,102, -181,79,226,239,43,175,11,93,203,199,253,117,237,162,15,230,130,28,106,13,104, -76,105,174,166,239,62,39,201,53,18,107,168,124,228,188,215,69,180,98,236,108, -135,76,249,133,112,238,202,229,250,234,184,228,148,243,213,101,107,220,255, -244,151,242,90,227,240,221,231,193,113,61,191,144,249,44,100,189,164,253,102, -113,240,83,253,105,157,158,206,214,26,223,105,255,33,54,62,23,101,61,248,121, -253,168,119,191,253,188,224,250,34,54,206,161,143,133,121,97,172,122,38,34,6, -248,204,250,213,91,5,109,177,53,59,196,24,110,143,23,19,214,152,245,176,143, -183,32,152,15,226,213,121,210,23,91,17,179,230,152,122,244,251,104,170,93,235, -207,79,211,187,152,53,219,141,179,175,34,46,106,27,119,187,25,165,112,183,150, -130,182,216,188,166,176,222,189,134,105,139,88,116,31,212,126,234,55,250,241, -222,163,185,163,45,234,238,145,77,199,227,30,241,188,171,32,6,213,231,251,36, -235,18,62,227,188,38,124,31,205,123,136,177,232,153,209,191,72,162,239,17,79, -114,13,193,111,181,6,116,13,170,141,248,92,211,220,110,191,45,173,64,213,228, -86,160,106,78,122,197,172,37,246,149,58,176,164,64,76,27,122,136,182,136,122, -232,2,44,130,142,186,9,167,133,169,254,78,139,215,199,205,45,5,63,108,85,127, -53,38,181,17,81,148,213,114,154,103,141,13,237,172,243,171,217,247,219,253, -134,62,107,102,76,254,212,238,152,198,200,173,64,207,103,28,48,202,3,42,119, -94,107,222,28,170,118,138,213,175,38,155,142,85,199,169,243,155,227,152,242, -144,91,161,85,75,182,77,168,121,152,226,7,230,57,224,128,194,161,138,195,149, -35,187,229,228,71,231,81,56,46,119,93,157,243,149,216,136,220,170,184,58,231, -5,139,135,159,208,78,252,26,43,32,60,151,213,82,30,117,222,170,120,226,19,72, -253,31,241,171,173,248,121,37,39,79,125,1,87,56,19,106,63,160,244,77,115,6, -122,159,220,154,192,79,104,134,49,32,171,149,121,181,149,129,115,6,15,11,124, -96,80,139,248,55,191,97,201,241,199,222,202,200,235,211,125,220,45,246,9,205, -201,31,80,215,252,145,95,160,250,174,173,103,208,254,37,223,9,121,61,143,49, -153,254,141,62,147,77,161,254,92,163,173,236,135,184,62,238,75,235,11,73,28, -160,174,217,105,108,126,66,115,109,220,145,103,113,188,213,223,213,248,120,47, -233,255,153,130,247,175,121,60,233,129,26,91,141,137,207,5,184,183,231,151, -218,179,79,203,129,139,89,31,216,33,198,112,187,62,107,45,77,179,147,3,27,95, -162,66,79,110,176,240,66,114,254,235,119,157,167,247,231,167,233,93,204,154, -237,198,105,26,106,155,101,187,25,165,112,183,150,130,182,216,124,46,243,11, -53,95,214,49,127,190,172,235,92,227,165,137,47,154,186,126,236,23,207,129,234, -147,227,69,222,53,175,236,23,62,117,188,90,95,39,212,58,186,218,175,174,99, -244,227,30,153,56,171,245,72,140,173,252,240,137,249,235,23,65,46,24,43,247, -139,222,25,85,147,91,129,170,201,173,64,213,156,244,138,89,75,236,43,117,176, -211,210,19,179,213,73,42,103,99,91,179,64,47,156,145,103,140,39,28,136,177,46, -240,32,198,60,240,138,13,130,197,229,2,19,40,242,254,207,218,136,237,37,11, -244,194,49,222,254,176,29,7,83,63,180,136,237,41,139,177,10,111,127,84,103, -250,43,2,158,244,57,246,51,86,230,29,7,48,166,114,245,128,41,221,26,119,181, -84,182,118,126,209,20,110,104,186,205,197,172,7,123,177,141,253,33,198,122, -157,183,181,103,41,252,107,126,121,176,199,55,169,247,158,246,185,238,231,192, -113,41,220,171,62,143,60,23,99,191,103,190,49,50,231,10,111,107,103,41,220, -167,125,96,19,94,226,227,183,232,238,122,23,179,62,176,171,24,243,9,215,24,79, -56,147,88,175,220,239,105,95,216,133,251,148,15,177,30,23,250,24,235,10,79,25, -64,125,200,56,244,131,24,243,9,239,10,7,82,120,239,141,11,49,246,11,252,42, -214,251,66,223,171,60,200,85,238,27,121,141,107,214,108,111,28,21,216,132,119, -228,26,235,147,243,247,233,231,249,63,245,59,236,27,211,94,211,223,109,46,104, -139,13,194,7,118,125,233,32,102,254,214,187,152,85,237,241,76,21,208,121,248, -179,214,182,141,62,244,133,39,244,198,133,108,141,115,244,149,101,51,206,113, -155,118,208,187,152,53,219,27,199,5,122,225,24,182,105,148,194,221,90,10,218, -98,211,89,245,63,130,112,205,48,247,211,151,218,176,67,242,95,191,67,207,47, -255,116,93,98,60,172,13,125,187,134,49,160,15,159,199,117,188,117,117,69,74, -159,119,234,151,90,212,52,206,35,49,118,225,167,214,9,218,175,218,28,85,147, -91,129,170,201,173,64,213,156,244,138,89,75,236,43,117,176,211,210,19,179,213, -73,42,103,99,91,179,64,47,156,145,103,140,39,28,136,177,46,240,32,198,60,240, -138,13,130,159,40,122,23,22,127,63,16,129,237,37,11,244,194,49,222,254,176, -205,67,15,194,13,121,56,108,171,24,171,240,246,71,117,166,191,34,224,73,159, -99,63,99,101,222,113,0,99,42,151,7,243,215,94,52,31,72,225,95,243,27,135,247, -163,155,167,233,170,92,225,184,20,238,85,159,71,158,139,177,223,51,223,24,153, -115,133,183,181,179,20,238,211,62,176,9,47,241,241,91,116,119,189,139,89,31, -216,85,140,249,132,107,140,39,156,73,172,87,238,247,180,47,236,194,125,202, -135,88,143,11,125,140,117,129,87,197,122,93,236,103,204,39,188,43,28,72,225, -189,55,46,196,216,47,240,171,88,239,11,125,175,242,32,87,185,111,228,53,174, -89,179,189,113,84,96,19,222,145,107,172,79,206,223,167,159,199,47,47,63,184, -125,97,65,245,187,191,105,175,233,239,54,23,180,197,246,230,177,92,204,170, -246,252,204,230,18,255,25,131,143,183,224,178,90,213,199,149,23,77,34,63,179, -109,198,57,110,211,14,122,23,179,102,123,227,184,64,47,28,195,54,141,82,184, -91,75,65,91,108,102,79,45,157,167,228,208,160,125,177,142,106,123,212,47,175, -121,182,93,29,111,93,93,145,210,231,189,246,51,198,19,142,138,177,95,224,187, -88,47,239,163,189,21,85,147,91,129,170,201,173,64,213,156,244,138,89,75,216, -207,219,237,127,1,190,39,240,204,169,220,136,220,0,0,0,0,73,69,78,68,174,66, -96,130 }; +0,0,14,191,0,0,14,191,1,56,5,83,36,0,0,0,24,116,69,88,116,83,111,102,116,119, +97,114,101,0,112,97,105,110,116,46,110,101,116,32,52,46,49,46,49,99,42,156,75, +0,0,28,245,73,68,65,84,120,94,237,92,59,200,117,75,82,189,8,134,166,26,138,32, +152,152,12,8,34,6,3,142,163,32,98,160,78,48,42,226,24,24,56,160,201,205,20,52, +80,49,184,32,42,200,68,87,3,131,97,20,20,196,72,196,216,71,100,162,137,152, +104,164,32,138,137,136,28,123,213,234,58,181,234,209,231,236,243,63,152,59,48, +117,88,223,183,187,106,117,117,117,117,117,239,189,207,247,223,251,193,237, +131,219,13,248,160,136,235,39,155,139,114,30,241,32,87,120,87,56,144,171,60, +200,35,222,85,63,202,123,133,187,85,239,60,134,173,98,107,208,95,145,171,253, +148,247,10,119,171,142,114,149,171,188,19,247,145,13,114,165,239,163,254,144, +87,121,187,249,84,222,165,223,119,197,113,113,238,85,159,207,120,46,239,131, +175,156,43,188,221,124,40,234,239,74,159,71,252,147,222,229,153,93,229,10,247, +10,103,18,237,119,181,239,171,124,200,213,62,87,121,85,94,233,119,133,247,170, +175,119,205,133,188,202,175,114,181,239,43,99,188,107,159,206,59,113,213,126, +226,168,92,229,190,47,127,95,107,188,183,209,87,155,203,201,254,170,222,229, +153,29,114,213,94,57,207,250,65,78,28,215,87,219,73,239,162,246,19,199,229,77, +185,91,149,228,170,125,55,147,124,146,108,39,241,62,239,163,223,21,142,202, +171,124,151,123,191,123,239,130,170,201,173,64,213,228,86,160,106,78,122,197, +172,37,246,149,58,216,83,179,201,169,126,76,76,229,24,110,183,143,23,62,66,75, +197,152,153,187,45,33,198,120,192,217,90,250,127,192,83,129,237,206,251,220, +253,10,241,65,62,190,107,22,118,151,38,203,22,62,28,87,231,121,187,253,247, +194,23,68,231,87,95,88,248,183,133,207,138,13,242,217,5,232,97,223,94,71,191, +191,176,128,24,178,126,181,174,136,245,186,208,207,88,153,247,74,158,182,165, +139,49,47,112,141,149,121,137,27,154,110,115,49,235,193,94,108,99,127,136,177, +94,231,109,237,89,10,255,173,252,190,41,231,222,18,152,62,115,111,183,95,73, +173,0,246,85,214,176,191,106,20,149,127,242,187,96,126,248,9,237,196,135,174, +106,159,243,232,95,237,138,62,175,230,51,245,127,20,67,183,229,86,181,151,113, +18,158,112,45,38,126,142,28,192,37,233,171,111,96,242,47,237,161,79,110,77, +224,39,52,67,124,134,87,107,107,193,236,87,253,3,202,141,123,68,134,198,241, +200,87,205,69,225,90,108,222,190,192,133,220,117,15,248,137,119,130,246,47,99, +37,60,224,181,113,222,196,103,158,69,6,63,89,163,173,236,135,56,173,25,80,253, +93,89,223,117,229,146,56,64,230,93,245,7,228,150,163,206,231,148,195,202,187, +58,238,11,241,217,124,249,121,174,247,56,167,245,168,115,232,156,217,231,19, +189,139,89,31,216,33,198,24,236,119,77,141,137,207,93,95,177,223,174,43,243, +112,89,173,232,171,249,173,57,245,254,117,172,226,183,217,137,61,90,22,232, +133,99,216,166,81,18,183,214,194,80,3,169,165,113,213,152,249,97,171,250,125, +212,47,143,153,109,87,199,171,253,10,92,86,43,51,171,207,19,106,191,152,223, +135,11,246,204,63,229,206,198,84,141,162,250,124,198,119,104,191,106,115,84, +77,110,5,170,38,183,2,85,115,187,125,155,93,85,189,98,214,18,251,74,29,216, +228,33,166,13,253,88,204,149,99,248,36,191,104,254,156,253,140,23,185,223,22, +219,194,238,210,196,88,194,51,124,253,69,179,137,49,51,119,91,186,24,243,2, +215,88,153,151,184,161,233,54,23,179,186,253,211,247,43,2,237,172,217,189,178, +24,235,117,222,214,158,165,240,223,202,239,155,114,118,11,245,246,63,11,56,76, +183,213,62,222,130,160,54,255,203,174,66,62,76,55,8,32,231,216,191,212,113, +233,124,142,89,133,7,58,80,215,104,230,127,152,56,228,213,177,49,191,105,47,2, +149,251,81,139,19,224,216,120,32,249,212,130,230,15,253,211,23,87,155,31,251, +57,219,252,234,116,14,192,63,198,137,245,224,24,117,14,144,118,102,44,125,142, +61,214,110,138,29,240,156,78,121,116,27,207,155,0,124,230,135,51,32,214,223, +231,160,194,249,244,53,157,184,31,63,169,45,196,163,18,53,211,231,63,215,2, +172,26,11,31,70,106,157,231,154,157,99,117,201,53,160,235,187,52,146,243,94, +47,225,55,230,17,152,248,152,127,93,19,240,16,187,141,183,209,107,140,235,16, +57,8,30,207,128,224,157,98,66,27,250,79,9,215,235,164,10,227,113,94,172,33, +124,184,112,30,181,46,120,207,118,110,246,227,32,167,174,201,236,143,235,235, +243,132,112,14,240,17,60,91,39,200,214,68,94,50,207,253,213,58,252,184,141,59, +207,57,231,15,232,190,92,242,190,228,184,154,111,174,165,214,233,204,99,14, +235,60,246,156,77,123,69,31,249,158,206,11,221,63,211,154,205,62,159,232,93, +204,250,192,14,49,70,177,75,15,172,65,221,75,253,44,163,46,157,171,144,101,11, +223,172,61,172,217,71,45,167,236,119,58,219,255,112,225,119,23,122,13,16,123, +180,44,208,11,199,176,77,163,36,46,107,1,99,35,222,207,182,90,137,26,237,113, +179,134,24,43,52,26,7,115,224,53,150,215,59,244,172,79,205,81,140,135,120,114, +30,24,3,247,28,52,58,94,142,211,247,49,253,83,239,115,143,62,0,99,199,56,144, +152,75,232,251,88,0,243,150,207,170,154,187,220,250,181,5,196,2,124,201,116, +213,103,204,1,168,123,62,230,2,158,179,130,159,81,53,185,21,168,26,254,252, +230,133,95,93,248,158,221,158,120,127,181,240,125,77,175,152,181,196,190,82, +199,182,64,16,211,134,126,44,230,202,49,248,166,43,93,140,153,185,219,18,98, +140,7,156,173,165,255,7,60,21,216,238,60,22,12,22,16,155,252,83,181,88,118, +151,38,198,18,158,225,234,60,177,177,242,1,164,214,106,131,60,63,220,200,251, +250,139,230,146,208,116,155,139,89,221,206,67,17,185,229,65,90,243,63,244,135, +24,235,117,222,214,158,165,240,223,202,239,155,112,238,87,172,229,127,95,152, +111,38,64,169,205,253,27,55,150,252,226,195,28,251,225,93,15,116,212,108,189, +241,230,155,24,1,30,117,125,143,116,126,95,71,8,31,40,84,171,188,233,70,23,92, +244,61,189,116,221,185,150,211,224,191,207,23,77,252,230,77,188,222,228,202, +186,88,76,252,76,28,248,112,159,14,140,133,51,145,54,181,0,49,118,220,248,9, +248,68,140,57,118,174,63,98,1,223,206,200,13,240,225,167,191,196,247,249,122, +59,159,245,244,237,126,116,109,157,79,157,222,160,1,95,159,208,160,13,126,174, +175,240,173,113,224,129,48,30,130,24,131,35,214,15,109,245,5,20,187,173,13,45, +189,94,240,197,167,198,21,150,200,141,107,0,198,88,185,152,35,68,215,137,99, +233,23,171,28,11,92,205,9,174,63,26,120,240,133,156,112,142,26,143,114,115,94, +128,224,233,122,147,167,62,157,55,213,5,120,16,212,103,223,39,0,253,97,142,62, +231,240,215,215,3,227,97,158,224,156,198,213,117,2,34,167,207,235,150,168,245, +135,126,140,81,243,221,235,165,231,16,126,225,191,190,144,162,174,144,63,219, +243,11,81,55,207,121,185,22,8,206,153,159,231,122,157,183,234,105,251,157,5, +175,21,204,183,158,139,179,207,39,122,23,179,62,176,67,140,81,236,187,133,184, +120,86,134,29,2,61,230,19,245,197,218,71,190,0,211,154,31,245,205,117,229,190, +233,181,129,156,243,89,51,235,145,59,232,241,66,210,237,68,215,80,219,44,22, +212,65,18,55,106,4,191,49,110,94,23,214,158,199,150,191,180,168,185,208,250, +102,14,80,167,172,109,173,105,246,139,156,171,79,142,23,121,215,154,100,191, +240,169,227,69,156,172,63,106,125,110,208,147,57,223,3,24,255,249,26,125,106, +63,223,131,191,188,0,222,23,23,114,253,96,44,94,97,124,196,140,121,161,31,227, +211,156,0,204,25,234,163,222,35,1,244,197,158,205,53,149,57,129,170,201,173, +64,213,240,231,47,45,252,243,2,214,156,22,229,0,183,219,183,47,252,111,211,43, +248,243,71,23,126,104,95,3,223,97,191,119,75,29,239,242,28,54,115,92,5,234,66, +2,190,233,178,182,115,99,97,2,117,49,38,142,251,207,218,220,82,232,184,44,222, +216,252,90,216,64,92,101,212,184,128,171,243,68,223,220,95,173,221,183,110, +202,199,188,249,69,19,188,104,157,49,197,169,118,71,29,23,200,173,192,85,159, +64,229,162,173,118,199,52,126,245,171,156,201,143,142,21,53,192,135,150,90,3, +167,152,107,28,87,120,39,142,226,93,250,125,149,19,87,126,115,193,161,24,181, +199,143,115,33,181,54,163,173,60,230,24,123,35,31,252,142,28,3,196,15,242,202, +229,30,235,251,52,241,199,243,138,60,196,96,123,196,197,88,110,231,97,127,61, +78,96,26,155,22,142,165,92,224,148,163,240,28,181,168,118,250,199,56,24,15, +156,120,88,172,123,167,172,139,197,196,207,196,137,111,209,195,138,126,88,127, +214,128,246,3,98,206,184,209,250,203,1,44,248,13,125,142,157,235,63,159,143, +58,23,213,230,249,186,22,215,167,151,49,158,125,25,136,7,190,251,95,158,122, +31,196,193,188,43,55,114,145,235,161,236,27,203,49,91,225,199,44,246,113,30, +36,217,165,95,175,151,120,248,136,181,38,194,135,107,128,206,245,245,0,52,247, +92,139,249,33,143,249,34,112,157,243,65,94,93,27,252,70,123,252,75,224,189, +165,57,239,103,112,173,143,240,233,26,128,227,3,115,14,128,249,222,193,177, +117,206,64,248,115,76,60,181,35,46,212,3,231,95,253,49,55,176,235,122,157,246, +40,124,176,78,78,188,213,146,28,134,239,62,46,198,211,58,157,243,163,107,64, +68,28,202,243,113,249,121,174,215,216,84,15,228,28,115,124,213,184,61,215,206, +89,191,90,42,102,125,96,135,24,163,216,119,107,174,179,41,47,200,121,201,179, +249,81,223,228,32,191,83,109,192,39,108,143,94,52,191,212,250,17,126,149,235, +134,31,229,245,201,139,36,238,239,219,79,204,135,95,24,162,173,118,206,5,249, +233,123,150,182,136,69,215,168,246,227,167,246,67,109,230,58,166,45,242,251, +200,166,227,177,78,144,67,196,130,113,209,142,241,189,230,106,29,241,175,139, +240,233,124,240,30,175,47,251,249,30,242,62,189,70,121,6,129,51,201,169,222, +252,236,245,185,64,160,67,60,158,235,184,31,71,111,199,247,46,252,105,211,222, +110,255,177,240,19,187,21,200,45,8,126,254,211,194,15,88,235,118,251,214,133, +19,175,235,21,183,219,111,218,79,202,175,47,64,251,159,11,223,226,28,117,96, +137,134,152,54,244,16,252,212,68,78,127,62,134,128,227,15,51,46,125,19,70,33, +161,232,93,242,67,14,57,88,136,42,249,69,51,110,52,26,31,23,87,11,162,251,170, +223,16,227,167,250,64,97,114,131,40,143,220,58,79,204,35,255,211,0,242,222, +234,159,206,46,96,28,250,206,188,249,69,51,252,226,16,115,241,13,226,50,125, +251,230,227,162,159,175,9,115,168,60,114,241,83,243,196,248,174,249,228,195, +204,92,15,207,215,26,224,216,88,27,248,66,140,113,35,163,31,141,45,255,51,166, +62,70,190,9,234,186,80,19,7,90,230,33,159,204,79,230,69,188,221,23,198,230, +252,163,93,199,135,95,229,96,46,121,29,250,216,206,211,177,209,31,126,84,232, +215,57,145,21,196,225,254,224,7,120,250,66,179,16,253,50,47,114,182,181,42,75, +83,253,234,248,228,208,114,242,159,248,134,186,239,200,67,158,56,23,71,62,15, +90,156,9,179,207,62,54,193,177,84,3,104,206,178,205,175,162,70,212,30,177,97, +239,96,221,34,70,126,148,155,214,197,242,119,230,192,143,174,33,128,28,65,207, +223,218,15,200,115,142,250,160,79,232,31,158,97,46,184,94,136,156,231,62,211, +90,244,156,22,158,11,174,55,16,219,116,190,213,90,136,121,228,243,1,177,231, +124,3,57,159,58,102,172,95,231,65,146,93,250,245,185,161,222,98,126,176,187, +133,220,254,133,75,205,25,198,194,67,10,190,16,128,30,246,88,11,205,73,220,51, +209,23,118,128,126,52,31,153,7,159,240,23,99,230,51,34,174,104,143,115,140,31, +90,24,23,226,212,26,140,60,185,134,120,102,55,142,203,214,68,14,107,29,196, +124,128,200,159,238,245,224,120,238,240,23,12,242,122,93,129,163,231,44,120, +167,127,133,129,57,195,238,210,253,229,22,250,244,26,5,226,101,157,235,192,26, +153,190,148,171,117,31,245,160,188,213,203,242,199,207,115,189,174,161,234, +129,200,95,228,87,237,186,62,89,143,53,70,46,199,216,92,208,22,91,179,67,140, +33,118,97,51,103,61,79,94,215,81,95,121,63,90,158,155,111,172,159,251,172,107, +201,254,253,62,226,122,71,93,91,194,175,34,46,106,59,151,107,60,201,148,95, +238,33,143,89,237,156,11,235,8,26,29,43,114,193,53,215,185,178,95,212,170,246, +163,45,106,174,247,67,76,240,249,248,69,83,109,145,63,140,233,18,103,13,227, +239,239,39,58,183,184,102,30,130,213,215,131,113,224,249,21,92,246,175,156, +168,121,112,241,108,138,92,129,207,152,106,13,104,190,212,111,196,132,107,114, +162,143,95,125,247,194,31,47,252,227,194,79,222,181,142,219,237,51,11,127,98, +87,250,194,217,121,63,182,240,55,187,245,23,11,191,97,215,157,199,171,170,87, +220,110,255,183,240,157,187,245,71,80,44,249,131,133,123,63,117,96,27,9,98, +218,208,67,48,105,95,144,40,28,229,144,135,36,241,197,131,26,252,238,135,7, +245,224,197,34,247,197,136,190,212,96,92,180,243,6,98,81,122,225,184,150,11, +166,7,10,15,103,248,98,241,206,135,50,54,53,138,4,26,180,57,23,229,145,91,231, +137,246,244,48,240,54,47,154,17,79,223,52,143,94,52,125,83,64,131,252,66,60, +55,176,79,235,225,185,245,249,123,123,122,240,228,92,67,131,49,192,157,230, +162,62,161,141,57,101,110,196,69,141,207,35,175,53,185,24,155,227,185,54,108, +136,69,199,203,135,66,212,0,115,223,215,43,108,212,192,15,252,213,155,37,236, +190,78,208,68,191,224,160,47,15,102,106,252,229,216,107,30,243,200,126,25,31, +244,200,19,250,245,131,246,202,216,249,102,22,124,245,19,135,163,143,135,235, +88,203,190,31,225,7,54,149,254,205,168,230,108,105,170,24,59,243,211,154,25, +135,150,62,175,224,171,156,246,40,230,164,194,121,133,61,197,185,129,92,184, +76,181,87,199,86,121,31,47,154,16,196,100,22,203,77,207,95,170,135,11,28,228, +197,125,198,248,212,77,251,93,215,7,124,228,27,58,244,129,190,198,222,226,129, +224,122,131,245,166,154,190,22,240,193,189,242,128,167,130,246,2,231,54,63, +100,168,248,56,57,87,188,151,192,6,97,189,192,146,31,44,116,60,205,95,246,5, +20,187,244,99,156,202,141,253,136,241,61,223,0,207,144,58,39,158,21,186,150, +184,6,48,22,215,133,227,243,12,201,251,217,175,60,159,247,26,219,159,202,131, +47,204,3,95,124,208,223,99,46,215,46,44,97,13,95,86,31,27,145,39,215,16,207, +236,202,113,96,46,204,95,61,195,152,99,95,95,8,99,84,30,207,78,173,179,184, +174,107,64,174,2,99,79,207,1,88,23,125,94,128,223,124,30,17,126,21,235,78,109, +246,23,247,9,149,233,5,10,227,212,113,167,243,146,181,89,199,57,233,53,62,213, +3,57,127,211,151,62,97,203,122,196,136,156,100,159,53,199,186,86,132,197,168, +98,12,177,239,171,168,161,234,131,53,137,152,98,61,242,126,156,247,7,207,11, +216,198,47,13,134,88,238,122,23,179,102,187,206,57,226,66,187,207,189,79,94, +36,113,159,229,49,106,10,243,101,84,110,203,207,10,121,174,204,65,228,72,251, +209,22,251,93,251,113,60,244,195,252,166,191,90,198,122,105,93,211,230,53,4, +59,160,53,142,56,78,127,76,65,125,65,208,23,95,200,145,27,210,215,145,115,128, +111,140,193,113,42,39,114,139,249,0,24,11,190,17,231,244,242,138,49,157,23, +235,75,29,243,200,49,191,36,125,126,106,225,203,11,152,195,47,46,208,226,246, +224,249,213,119,45,252,229,194,223,45,124,62,113,128,219,237,207,23,126,126, +183,190,127,1,255,233,212,55,12,60,94,85,189,162,107,190,241,126,189,53,234, +96,151,231,120,176,224,167,39,219,229,244,18,130,36,170,22,186,250,192,0,142, +39,244,52,102,226,108,208,191,106,162,232,170,176,128,157,23,5,195,27,101,47, +68,240,177,208,174,137,13,162,60,160,207,19,253,242,120,228,189,233,139,38,98, +164,63,88,122,161,62,251,139,166,23,110,204,161,182,115,191,202,3,122,174,129, +206,243,252,215,53,158,124,66,7,110,157,247,181,181,6,122,238,35,7,244,143, +141,200,155,56,180,122,128,69,13,32,174,233,191,119,11,27,53,243,220,226,80, +246,152,25,147,30,136,228,32,78,0,254,192,241,195,109,206,3,227,243,57,196, +225,169,235,31,126,125,108,94,235,216,113,21,241,163,173,126,120,56,250,88,94, +247,209,206,254,32,176,233,122,186,239,135,47,13,85,22,167,250,141,189,179, +249,248,157,244,15,248,6,93,227,224,105,142,8,229,149,56,11,184,158,85,59,141, +77,112,44,213,0,154,179,108,243,171,168,55,181,71,108,254,215,169,152,7,63, +202,77,235,98,249,123,204,1,176,198,248,205,121,146,133,235,233,76,175,115,6, +31,253,127,102,1,250,211,25,118,143,7,130,235,133,200,121,238,227,122,149,126, +211,215,254,75,227,130,235,13,206,167,247,211,90,240,248,17,103,206,85,60,80, +57,15,210,254,105,165,140,137,57,114,253,204,98,31,231,65,146,93,250,49,30, +229,70,79,205,95,228,190,214,56,207,10,112,112,175,64,159,120,49,241,181,36, +56,111,221,251,49,79,196,225,247,26,203,105,226,229,17,61,31,228,209,58,249, +196,120,158,107,206,89,121,92,67,141,21,136,60,185,134,120,102,215,113,145,3, +172,235,125,236,50,151,186,190,0,99,213,245,237,231,107,212,92,61,19,87,203, +101,107,230,56,179,63,96,222,7,17,95,172,59,218,252,4,143,246,168,97,142,203, +61,173,60,214,136,175,27,4,121,103,238,149,183,231,129,223,162,59,235,117,13, +85,15,196,152,156,111,93,3,222,119,250,153,125,210,199,186,186,212,51,202,98, +84,129,238,110,143,156,158,99,226,24,200,183,174,155,95,133,141,218,176,112, +174,240,249,110,95,52,243,154,169,180,123,210,118,51,74,225,110,45,5,109,177, +65,242,190,204,118,191,66,92,249,124,101,14,226,156,209,126,180,33,111,60,207, +180,31,199,225,94,129,70,215,221,107,65,247,129,107,184,63,49,22,98,113,173, +215,63,190,8,163,207,83,125,17,190,166,184,135,193,23,230,14,31,152,127,126, +222,200,123,18,118,60,151,213,251,23,250,234,187,145,202,135,67,189,177,102, +116,76,90,152,95,94,51,167,209,231,183,236,39,102,18,158,178,95,32,183,126, +112,225,95,22,254,54,105,129,219,237,71,164,5,252,240,194,55,37,13,224,87,85, +175,152,181,196,190,82,7,187,4,199,34,196,162,112,193,9,92,79,15,37,181,0,102, +46,57,44,76,71,63,96,58,199,253,171,70,199,200,220,233,127,153,28,11,171,54, +160,251,136,13,162,60,160,207,19,253,152,159,204,123,147,23,77,108,24,124,187, +16,55,146,94,168,95,171,47,154,17,95,230,94,91,107,160,231,62,114,192,67,8, +192,56,216,248,121,77,162,6,24,67,175,129,176,81,51,207,45,251,137,7,110,173, +225,92,111,120,97,64,204,240,75,127,248,182,170,62,184,176,15,56,88,251,249, +69,147,7,166,143,253,227,11,240,127,229,175,149,176,7,39,30,168,38,201,121,3, +24,23,198,100,76,4,215,77,121,225,183,174,39,209,247,121,236,29,229,121,236, +53,71,133,63,158,87,228,221,99,112,49,150,219,135,56,141,195,107,142,237,45, +199,52,54,45,61,15,128,230,44,219,252,202,235,163,230,58,234,46,234,1,99,156, +30,146,238,235,98,49,233,60,7,206,2,230,23,255,105,64,232,166,51,189,174,143, +199,230,200,123,153,121,101,254,66,235,192,88,152,75,61,127,116,190,97,169, +115,125,92,91,158,167,103,255,141,166,143,213,243,201,189,165,152,214,143,57, +102,11,243,129,29,60,248,169,227,214,188,59,24,143,106,114,79,207,95,228,177, +230,130,177,186,127,228,13,92,95,35,244,241,254,204,169,198,22,103,19,215,130, +28,92,215,7,180,227,92,77,223,125,134,159,205,129,36,222,188,214,184,134,46, +239,131,232,21,99,103,187,158,135,62,23,179,180,113,131,171,232,126,25,59,124, +77,146,215,236,138,63,128,243,243,250,3,34,7,202,163,191,158,159,58,15,173,11, +98,246,23,247,1,7,226,235,231,205,242,254,48,95,248,173,122,142,199,251,142, +234,1,246,241,218,235,62,87,235,165,177,92,239,168,246,213,170,98,12,183,179, +127,222,135,106,7,104,71,254,116,221,148,17,249,238,231,5,247,216,33,46,211, +14,122,23,179,102,187,206,57,226,66,187,143,1,65,92,147,212,251,215,30,145, +130,182,216,244,220,102,221,169,61,234,136,118,125,214,136,125,223,215,155, +182,200,189,246,227,120,177,239,117,110,156,127,236,37,112,221,166,181,71,141, +3,190,32,125,157,8,109,249,60,225,3,247,65,232,224,23,250,188,119,99,45,192, +135,111,206,85,57,156,75,244,15,46,25,53,22,218,128,200,13,175,113,238,192,71, +223,207,252,201,255,46,243,118,251,215,133,207,155,206,237,153,135,151,200, +191,94,248,251,133,159,54,221,204,235,168,154,147,94,49,107,137,125,165,14, +118,9,14,69,200,4,32,121,104,225,55,100,122,40,65,146,238,55,154,5,112,217, +206,60,36,22,122,47,22,252,254,98,225,160,111,60,108,243,55,218,121,3,177,152, +177,104,44,88,106,209,55,127,147,64,30,124,240,160,213,162,7,24,187,250,128, +79,142,175,188,224,70,33,113,60,246,205,188,183,249,167,179,145,187,30,235,87, +243,69,19,122,142,77,156,214,24,62,161,87,46,251,234,193,65,238,181,181,38, +151,113,169,54,108,252,63,130,177,133,223,204,133,219,163,6,168,239,113,120, +204,136,7,26,252,134,60,122,32,192,151,2,156,99,191,9,121,94,193,241,184,192, +69,187,255,229,133,7,150,207,15,99,179,166,244,16,206,135,62,208,57,156,103, +221,19,249,70,21,241,51,246,0,226,228,222,84,109,204,197,231,225,253,243,26, +197,188,235,218,131,143,118,173,147,152,103,104,231,121,157,248,149,67,30,230, +111,227,187,24,203,237,231,56,1,180,167,218,75,99,155,79,90,56,150,114,1,205, +153,234,57,54,192,126,189,14,61,183,24,15,26,228,28,251,97,250,43,95,93,151, +158,143,206,113,127,58,111,92,79,103,250,180,62,222,31,185,203,235,201,185, +185,29,243,115,139,231,250,209,63,167,179,249,186,24,75,121,231,53,243,254, +212,205,55,118,229,35,62,248,168,223,178,99,124,229,77,235,199,216,216,130,31, +216,193,99,180,193,211,253,172,249,139,177,149,155,253,34,14,112,200,51,171, +125,130,223,207,129,58,63,140,137,123,93,143,45,242,229,235,19,249,203,181, +168,49,165,185,154,62,251,244,117,241,154,13,104,61,242,108,210,154,242,177, +199,191,10,237,171,24,59,219,235,153,153,173,125,31,96,92,229,49,111,58,103, +214,152,34,226,235,251,20,115,134,93,121,211,63,221,174,185,241,245,205,243, +97,110,192,133,159,57,207,128,246,167,102,174,169,60,151,115,158,157,55,231, +171,199,201,156,127,208,242,1,212,252,213,189,120,30,107,158,195,98,169,160, +45,182,102,135,24,195,237,189,222,178,29,208,156,135,158,190,216,66,108,124, +110,212,184,233,155,168,243,241,254,252,52,189,139,89,179,221,56,251,42,213, +194,254,40,175,79,94,164,112,183,150,130,182,216,124,46,177,143,212,206,53, +155,235,39,242,203,243,71,251,209,134,216,121,134,246,126,145,215,171,182,216, +239,28,143,240,216,32,212,215,245,136,243,50,98,213,49,244,218,153,0,243,129, +62,0,174,57,182,114,152,31,204,19,54,248,194,203,43,252,205,185,214,156,208, +47,4,181,143,63,90,224,55,36,223,39,163,55,240,233,133,63,91,152,254,82,137, +191,96,254,195,194,207,46,132,69,57,64,110,5,170,230,164,87,204,90,98,95,169, +3,75,10,196,180,161,135,32,193,46,88,12,22,156,114,200,67,162,253,191,69,131, +224,97,35,23,24,192,66,242,4,67,224,47,47,48,57,58,46,56,24,59,63,0,230,27, +174,11,11,73,15,57,22,67,20,83,45,68,22,136,23,43,36,190,241,87,30,185,240, +207,13,73,96,46,125,14,111,255,63,3,242,249,231,57,127,117,95,52,107,158,120, +35,170,107,28,62,241,63,77,114,97,142,106,238,175,174,53,208,115,31,190,122, +108,249,80,100,13,40,39,31,24,61,142,185,214,243,161,197,26,71,155,159,202,65, +188,156,119,237,211,107,80,185,30,103,253,63,168,249,149,239,31,252,206,181, +206,120,48,134,10,199,204,28,222,216,151,198,246,61,45,0,226,200,185,225,122, +250,190,118,233,47,13,49,239,186,22,243,89,16,243,80,137,245,213,121,61,226, +43,135,60,248,192,60,108,110,144,165,15,95,17,39,0,158,10,107,90,25,0,199,190, +175,165,249,164,133,99,41,23,208,125,149,245,94,99,28,231,124,22,113,109,9, +159,119,61,11,166,117,249,202,192,209,253,61,249,71,14,174,190,104,2,224,247, +60,69,94,167,184,56,94,95,211,20,143,139,177,148,119,174,45,72,236,195,158, +207,123,45,8,208,230,188,92,211,247,63,164,62,152,51,54,182,48,30,242,138,185, +50,218,224,77,231,141,203,248,82,37,126,189,15,227,51,171,125,18,127,95,121, +93,232,90,62,238,175,107,23,125,48,23,228,80,107,64,99,74,115,53,125,247,57, +73,174,145,88,67,229,35,231,189,46,162,21,99,103,59,100,202,47,132,115,87,46, +215,87,199,37,167,156,175,46,91,227,254,167,191,148,215,26,135,239,62,15,142, +235,249,133,204,103,33,235,37,237,55,139,131,159,234,79,235,244,116,182,214, +248,78,251,15,177,241,185,40,235,193,207,235,71,189,251,237,231,5,215,23,177, +113,14,125,44,204,11,99,213,51,17,49,192,103,214,175,222,42,104,139,173,217, +33,198,112,123,188,152,176,198,172,135,125,188,5,193,124,16,175,206,147,190, +216,138,152,53,199,212,163,223,71,83,237,90,127,126,154,222,197,172,217,110, +156,125,21,113,81,219,184,219,205,40,133,187,181,20,180,197,230,53,133,245, +238,53,76,91,196,162,251,160,246,83,191,209,143,247,30,205,29,109,81,119,143, +108,58,30,247,136,231,93,5,49,168,62,223,39,89,151,240,25,231,53,225,251,104, +222,67,140,69,207,140,254,69,18,125,143,120,146,107,8,126,171,53,160,107,80, +109,196,103,154,230,118,251,61,105,5,170,38,183,2,85,115,210,43,102,45,177, +175,212,129,37,5,98,218,208,67,180,69,212,67,23,96,17,116,212,77,56,45,76,245, +119,90,188,62,110,110,41,248,97,171,250,171,49,169,141,136,162,172,150,211,60, +107,108,104,103,157,95,205,190,95,245,139,86,213,71,235,140,201,159,218,29, +149,7,228,86,160,231,51,14,24,229,1,149,59,175,53,111,14,85,59,197,234,87,147, +77,199,170,227,212,249,205,113,76,121,200,173,208,170,37,219,38,212,60,76,241, +3,243,28,112,64,225,80,197,225,202,145,221,114,242,163,243,40,28,151,187,174, +206,249,74,108,68,110,85,92,157,243,130,197,195,79,104,39,126,141,21,16,158, +203,106,41,143,58,111,85,60,241,9,164,254,143,248,213,86,252,188,146,147,167, +190,128,43,156,9,181,31,80,250,166,57,3,189,79,110,77,224,39,52,195,24,144, +213,202,188,218,202,192,57,131,135,5,62,48,168,69,252,155,223,176,228,248,99, +111,101,228,245,233,62,238,22,251,132,230,228,15,168,107,254,200,47,80,125, +215,214,51,104,255,146,239,132,188,158,199,152,76,255,134,62,147,77,161,254, +92,163,173,236,135,184,62,238,75,235,11,73,28,160,174,217,105,108,126,66,115, +109,220,145,103,113,188,169,191,171,241,241,94,210,255,51,5,239,95,243,120, +210,3,53,182,26,19,159,11,112,111,207,47,181,103,159,150,3,23,179,62,176,67, +140,225,118,125,214,90,154,102,39,7,54,190,68,133,158,220,96,225,133,228,252, +215,239,58,79,239,207,79,211,187,152,53,219,141,211,52,212,54,203,118,51,74, +225,110,45,5,109,177,249,92,230,23,106,190,172,99,254,124,89,215,185,198,75, +19,95,52,117,253,216,47,158,3,213,39,199,139,188,107,94,217,47,124,234,120, +181,190,78,168,117,116,181,95,93,199,232,199,61,50,113,86,235,145,24,91,249, +225,19,243,215,47,130,92,48,86,238,23,189,51,170,38,183,2,85,147,91,129,170, +57,233,21,179,150,216,87,234,96,167,165,39,102,171,147,84,206,198,182,102,129, +94,56,35,207,24,79,56,16,99,93,224,65,140,121,224,21,27,4,139,203,5,38,80,228, +253,159,181,17,219,75,22,232,133,99,188,253,97,59,14,166,126,104,17,219,83,22, +99,21,158,125,120,149,244,87,196,122,93,232,103,172,204,59,14,96,76,229,234,1, +83,186,53,238,106,169,108,237,252,162,41,220,208,116,155,139,89,15,246,98,27, +251,67,140,245,58,111,107,207,82,248,215,252,242,96,143,111,82,239,61,237,115, +221,207,129,227,82,184,87,125,30,121,46,198,126,199,124,99,100,206,21,222,214, +206,82,184,79,251,192,38,188,196,199,111,209,221,245,46,102,125,96,87,49,230, +19,174,49,158,112,38,177,94,185,223,211,190,176,11,247,41,31,98,61,46,244,49, +214,21,158,50,128,250,144,113,232,7,49,230,19,222,21,14,164,240,222,25,23,98, +236,23,248,85,172,247,133,190,87,121,144,171,220,55,228,53,174,89,179,189,113, +84,96,19,222,145,107,172,247,231,239,147,207,243,127,234,119,216,55,166,189, +166,191,219,92,208,22,27,132,15,236,250,210,65,204,252,173,119,49,171,218,227, +153,42,160,243,240,103,173,109,27,125,232,11,79,232,141,11,217,26,231,232,43, +203,102,156,227,54,237,160,119,49,107,182,55,142,11,244,194,49,108,211,40,133, +187,181,20,180,197,166,179,234,127,4,225,154,97,238,167,47,181,97,135,228,191, +126,135,158,95,254,233,186,196,120,88,27,250,118,13,99,64,31,62,143,235,120, +235,234,138,148,62,111,213,47,181,168,105,156,71,98,236,194,79,173,19,180,95, +181,57,170,38,183,2,85,147,91,129,170,57,233,21,179,150,216,87,234,96,167,165, +39,102,171,147,84,206,198,182,102,129,94,56,35,207,24,79,56,16,99,93,224,65, +140,121,224,21,27,4,63,81,244,46,44,254,126,32,2,219,75,22,232,133,99,188,253, +97,155,135,30,132,27,242,112,216,86,49,86,225,217,135,87,73,127,69,172,215, +133,126,198,202,188,227,0,198,84,46,15,230,175,191,104,62,144,194,191,230,55, +14,239,71,55,79,211,85,185,194,113,41,220,171,62,143,60,23,99,191,99,190,49, +50,231,10,111,107,103,41,220,167,125,96,19,94,226,227,183,232,238,122,23,179, +62,176,171,24,243,9,215,24,79,56,147,88,175,220,239,105,95,216,133,251,148,15, +177,30,23,250,24,235,2,175,138,245,186,216,207,152,79,120,87,56,144,194,123, +103,92,136,177,95,224,87,177,222,23,250,94,229,65,174,114,223,144,215,184,102, +205,246,198,81,129,77,120,71,174,177,222,159,191,79,62,143,95,94,126,112,251, +220,130,234,119,127,211,94,211,223,109,46,104,139,237,141,199,114,49,171,218, +243,51,155,75,252,103,12,62,222,130,203,106,85,31,87,94,52,137,252,204,182,25, +231,184,77,59,232,93,204,154,237,141,227,2,189,112,12,219,52,74,225,110,45,5, +109,177,153,61,181,116,158,146,67,131,246,197,58,170,237,81,191,188,230,217, +118,117,188,117,117,69,74,159,119,218,207,24,79,56,42,198,126,129,239,98,189, +188,143,246,86,84,77,110,5,170,38,183,2,85,115,210,43,102,45,97,63,111,183, +255,7,75,130,239,160,228,48,106,172,0,0,0,0,73,69,78,68,174,66,96,130 }; + static const char* default_charset = R"( abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.!?;:-_/|\!'"+=*()[]{}&%$#@<>^`~)"; |