* simple per-pixel lighting.\r
*\r
* Michal Krol\r
- * 17 February 2006
+ * 20 February 2006
*\r
* Based on the original demo by:
* Brian Paul
static GLhandleARB fragShader;
static GLhandleARB vertShader;\r
static GLhandleARB program;\r
+\r
+static GLint uLightPos;\r
+static GLint uDiffuse;\r
+static GLint uSpecular;\r
static GLboolean anim = GL_TRUE;
static GLboolean wire = GL_FALSE;
static PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL;\r
static PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL;\r
static PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL;\r
-static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;
+static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;\r
+static PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL;\r
+static PFNGLUNIFORM4FVARBPROC glUniform4fvARB = NULL;
static void Redisplay (void)
{
if (pixelLight)\r
{\r
glUseProgramObjectARB (program);\r
- /* XXX source from uniform lightPos */\r
- glTexCoord4fv (lightPos);
+ glUniform4fvARB (uLightPos, 1, lightPos);
glDisable(GL_LIGHTING);
}
else\r
static void Init (void)
{
- static const char *fragShaderText =
+ static const char *fragShaderText =\r
+ "uniform vec4 lightPos;\n"\r
+ "uniform vec4 diffuse;\n"\r
+ "uniform vec4 specular;\n"
"void main () {\n"\r
-\r
- /* XXX source from uniform lightPos */\r
- " vec4 lightPos;\n"\r
- " lightPos = gl_TexCoord[1];\n"\r
-\r
- /* XXX source from uniform diffuse */\r
- " vec4 diffuse;\n"\r
- " diffuse = vec4 (0.5, 0.5, 1.0, 1.0);\n"\r
-\r
- /* XXX source from uniform specular */\r
- " vec4 specular;\n"\r
- " specular = vec4 (0.8, 0.8, 0.8, 1.0);\n"\r
-\r
" // Compute dot product of light direction and normal vector\n"\r
" float dotProd;\n"\r
" dotProd = clamp (dot (normalize (lightPos).xyz, normalize (gl_TexCoord[0]).xyz), 0.0, 1.0);\n"\r
"void main () {\n"\r
" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"\r
" gl_TexCoord[0] = vec4 (gl_NormalMatrix * gl_Normal, 1.0);\n"\r
-\r
- /* XXX source from uniform lightPos */\r
- " gl_TexCoord[1] = gl_MultiTexCoord0;\n"\r
"}\n"
;
\r
glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) GETPROCADDRESS ("glAttachObjectARB");\r
glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) GETPROCADDRESS ("glLinkProgramARB");\r
glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) GETPROCADDRESS ("glUseProgramObjectARB");\r
+ glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GETPROCADDRESS ("glGetUniformLocationARB");\r
+ glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC) GETPROCADDRESS ("glUniform4fvARB");\r
\r
fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB);\r
glShaderSourceARB (fragShader, 1, &fragShaderText, NULL);\r
glAttachObjectARB (program, vertShader);\r
glLinkProgramARB (program);\r
glUseProgramObjectARB (program);\r
+\r
+ uLightPos = glGetUniformLocationARB (program, "lightPos");\r
+ uDiffuse = glGetUniformLocationARB (program, "diffuse");\r
+ uSpecular = glGetUniformLocationARB (program, "specular");\r
+\r
+ glUniform4fvARB (uDiffuse, 1, diffuse);\r
+ glUniform4fvARB (uSpecular, 1, specular);\r
glClearColor (0.3f, 0.3f, 0.3f, 0.0f);
glEnable (GL_DEPTH_TEST);
* GLSL noise demo.
*\r
* Michal Krol\r
- * 17 February 2006
+ * 20 February 2006
*\r
* Based on the original demo by:
* Stefan Gustavson (stegu@itn.liu.se) 2004, 2005
static GLhandleARB vertShader;\r
static GLhandleARB program;\r
\r
+static GLint uTime;\r
+\r
static GLfloat u_time = 0.0f;\r
static PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB = NULL;\r
static PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL;\r
static PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL;\r
static PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL;\r
-static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;
+static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;\r
+static PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL;\r
+static PFNGLUNIFORM1FARBPROC glUniform1fARB = NULL;
static void Redisplay (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\r
\r
- /* XXX source from uniform time */\r
- glTexCoord1f (u_time);
+ glUniform1fARB (uTime, u_time);
glPushMatrix ();
glutSolidSphere (2.0, 20, 10);\r
static void Init (void)
{
- static const char *fragShaderText =
+ static const char *fragShaderText =\r
+ "uniform float time;\n"
"void main () {\n"\r
-\r
- /* XXX source from uniform time */\r
- " float time;\n"\r
- " time = gl_TexCoord[1].x;\n"\r
-\r
- " vec4 v;\n"\r
- " v = vec4 (4.0 * gl_TexCoord[0].xyz, 0.5 * time);\n"\r
- " gl_FragColor = gl_Color * vec4 ((0.5 + 0.5 * vec3 (noise1 (v))), 1.0);\n"\r
+ " gl_FragColor = gl_Color * vec4 ((0.5 + 0.5 * vec3 (noise1 (\n"\r
+ " vec4 (4.0 * gl_TexCoord[0].xyz, 0.5 * time)))), 1.0);\n"\r
"}\n"
;
static const char *vertShaderText =
" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"\r
" gl_TexCoord[0] = gl_Vertex;\n"\r
" gl_FrontColor = gl_Color;\n"\r
-\r
- /* XXX source from uniform time */\r
- " gl_TexCoord[1] = gl_MultiTexCoord0;\n"\r
"}\n"
;
\r
glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) wglGetProcAddress ("glAttachObjectARB");\r
glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) wglGetProcAddress ("glLinkProgramARB");\r
glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) wglGetProcAddress ("glUseProgramObjectARB");\r
+ glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GETPROCADDRESS ("glGetUniformLocationARB");\r
+ glUniform1fARB = (PFNGLUNIFORM1FARBPROC) GETPROCADDRESS ("glUniform1fARB");\r
\r
fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB);\r
glShaderSourceARB (fragShader, 1, &fragShaderText, NULL);\r
glAttachObjectARB (program, vertShader);\r
glLinkProgramARB (program);\r
glUseProgramObjectARB (program);\r
+\r
+ uTime = glGetUniformLocationARB (program, "time");\r
glClearColor (0.0f, 0.1f, 0.3f, 1.0f);\r
glEnable (GL_CULL_FACE);
_mesa_UseProgramObjectARB (GLhandleARB programObj)
{
GET_CURRENT_CONTEXT(ctx);
- struct gl2_program_intf **pro;
+ struct gl2_program_intf **pro;\r
+\r
+ FLUSH_VERTICES(ctx, _NEW_PROGRAM);
if (programObj == 0)
{
Uniform1i{v}ARB is used to load a sampler value.
-*/
-
+*/\r
+\r
+#define _RELEASE_PROGRAM(obj)\\r
+ (**pro)._container._generic._unknown.Release ((struct gl2_unknown_intf **) pro)\r
+\r
+#define _LOOKUP_PROGRAM(obj, function)\\r
+ struct gl2_unknown_intf **unk;\\r
+ _glthread_LOCK_MUTEX (ctx->Shared->Mutex);\\r
+ unk = (struct gl2_unknown_intf **) _mesa_HashLookup (ctx->Shared->GL2Objects, obj);\\r
+ _glthread_UNLOCK_MUTEX (ctx->Shared->Mutex);\\r
+ if (unk == NULL) {\\r
+ _mesa_error (ctx, GL_INVALID_VALUE, function);\\r
+ break;\\r
+ }\\r
+ pro = (struct gl2_program_intf **) (**unk).QueryInterface (unk, UIID_PROGRAM);\\r
+ if (pro == NULL) {\\r
+ _mesa_error (ctx, GL_INVALID_OPERATION, function);\\r
+ break;\\r
+ }\r
+\r
+#define _CURRENT_PROGRAM(function)\\r
+ if (ctx->ShaderObjects.CurrentProgram == NULL) {\\r
+ _mesa_error (ctx, GL_INVALID_OPERATION, function);\\r
+ break;\\r
+ }\\r
+ pro = ctx->ShaderObjects.CurrentProgram;\r
+\r
+#define _IS_LINKED(function)\\r
+ if ((**pro).GetLinkStatus (pro) == GL_FALSE) {\\r
+ _mesa_error (ctx, GL_INVALID_OPERATION, function);\\r
+ _RELEASE_PROGRAM(obj);\\r
+ break;\\r
+ }\r
+\r
+#define GET_PROGRAM(obj, function)\\r
+ struct gl2_program_intf **pro = NULL;\\r
+ do {\\r
+ _LOOKUP_PROGRAM(obj, function);\\r
+ } while (0)\r
+\r
+#define GET_LINKED_PROGRAM(obj, function)\\r
+ struct gl2_program_intf **pro = NULL;\\r
+ do {\\r
+ _LOOKUP_PROGRAM(obj, function);\\r
+ _IS_LINKED(function);\\r
+ } while (0)\r
+\r
+#define CURRENT_LINKED_PROGRAM(function)\\r
+ struct gl2_program_intf **pro = NULL;\\r
+ do {\\r
+ _CURRENT_PROGRAM(function);\\r
+ _IS_LINKED(function);\\r
+ } while (0)\r
+\r
+/* XXX */\r
+GLboolean _slang_write_uniform (struct gl2_program_intf **, GLint, GLsizei, const GLvoid *, GLenum);\r
+\r
void GLAPIENTRY
_mesa_Uniform1fARB (GLint location, GLfloat v0)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (ctx->ShaderObjects.CurrentProgram == NULL)
- {
+{\r
+ GET_CURRENT_CONTEXT(ctx);\r
+ CURRENT_LINKED_PROGRAM("glUniform1fARB");\r
+\r
+ if (!_slang_write_uniform (pro, location, 1, &v0, GL_FLOAT))\r
_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform1fARB");
- return;
- }
}
void GLAPIENTRY
void GLAPIENTRY
_mesa_Uniform4fvARB (GLint location, GLsizei count, const GLfloat *value)
{
- GET_CURRENT_CONTEXT(ctx);
+ GET_CURRENT_CONTEXT(ctx);\r
+ CURRENT_LINKED_PROGRAM("glUniform4fvARB");
- if (ctx->ShaderObjects.CurrentProgram == NULL)
- {
+ if (!_slang_write_uniform (pro, location, count, value, GL_FLOAT_VEC4_ARB))\r
_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform4fvARB");
- return;
- }
}
void GLAPIENTRY
if (count != NULL)
*count = cnt;
-}
+}\r
+\r
+/* XXX */\r
+GLint _slang_get_uniform_location (struct gl2_program_intf **, const char *);
GLint GLAPIENTRY
_mesa_GetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name)
{
- GET_CURRENT_CONTEXT(ctx);
- struct gl2_unknown_intf **unk;
- struct gl2_program_intf **pro;
+ GET_CURRENT_CONTEXT(ctx);\r
GLint loc = -1;
+ GET_LINKED_PROGRAM(programObj, "glGetUniformLocationARB");
- _glthread_LOCK_MUTEX (ctx->Shared->Mutex);
- unk = (struct gl2_unknown_intf **) _mesa_HashLookup (ctx->Shared->GL2Objects, programObj);
- _glthread_UNLOCK_MUTEX (ctx->Shared->Mutex);
-
- if (unk == NULL)
- {
- _mesa_error (ctx, GL_INVALID_VALUE, "glGetUniformLocationARB");
- return -1;
- }
-
- pro = (struct gl2_program_intf **) (**unk).QueryInterface (unk, UIID_PROGRAM);
- if (pro == NULL)
- {
- _mesa_error (ctx, GL_INVALID_OPERATION, "glGetUniformLocationARB");
- return -1;
- }
-
- if ((**pro).GetLinkStatus (pro) == GL_FALSE)
- {
- _mesa_error (ctx, GL_INVALID_OPERATION, "glGetUniformLocationARB");
- (**pro)._container._generic._unknown.Release ((struct gl2_unknown_intf **) pro);
+ if (pro == NULL)\r
return -1;
- }
- /* TODO */
-
- (**pro)._container._generic._unknown.Release ((struct gl2_unknown_intf **) pro);
+ loc = _slang_get_uniform_location (pro, name);
+ _RELEASE_PROGRAM(pro);
return loc;
}
#else\r
#include "slang_utility.h"\r
#include "slang_compile.h"\r
+#include "slang_link.h"\r
#endif\r
\r
struct gl2_unknown_obj\r
ShHandle linker;\r
ShHandle uniforms;\r
#endif\r
+ slang_program prog;\r
};\r
\r
struct gl2_program_impl\r
static void\r
_program_destructor (struct gl2_unknown_intf **intf)\r
{\r
-#if USE_3DLABS_FRONTEND\r
struct gl2_program_impl *impl = (struct gl2_program_impl *) intf;\r
-\r
+#if USE_3DLABS_FRONTEND\r
ShDestruct (impl->_obj.linker);\r
ShDestruct (impl->_obj.uniforms);\r
#endif\r
_container_destructor (intf);\r
+ slang_program_dtr (&impl->_obj.prog);\r
}\r
\r
static struct gl2_unknown_intf **\r
struct gl2_program_impl *impl = (struct gl2_program_impl *) intf;\r
#if USE_3DLABS_FRONTEND\r
ShHandle *handles;\r
- GLuint i;\r
#endif\r
+ GLuint i, count;\r
+ slang_translation_unit *units[2];\r
\r
impl->_obj.link_status = GL_FALSE;\r
_mesa_free ((void *) impl->_obj._container._generic.info_log);\r
impl->_obj._container._generic.info_log = NULL;\r
+ slang_program_dtr (&impl->_obj.prog);\r
+ slang_program_ctr (&impl->_obj.prog);\r
\r
#if USE_3DLABS_FRONTEND\r
handles = (ShHandle *) _mesa_malloc (impl->_obj._container.attached_count * sizeof (ShHandle));\r
\r
impl->_obj._container._generic.info_log = _mesa_strdup (ShGetInfoLog (impl->_obj.linker));\r
#else\r
- /* TODO: do the real linking */\r
- impl->_obj.link_status = GL_TRUE;\r
- impl->_obj._container._generic.info_log = _mesa_strdup ("Link OK.\n");\r
+ count = impl->_obj._container.attached_count;\r
+ if (count == 0 || count > 2)\r
+ return;\r
+ for (i = 0; i < count; i++)\r
+ {\r
+ struct gl2_generic_intf **obj;\r
+ struct gl2_unknown_intf **unk;\r
+ struct gl2_shader_impl *sha;\r
+\r
+ obj = impl->_obj._container.attached[i];\r
+ unk = (**obj)._unknown.QueryInterface ((struct gl2_unknown_intf **) obj, UIID_SHADER);\r
+ (**obj)._unknown.Release ((struct gl2_unknown_intf **) obj);\r
+ if (unk == NULL)\r
+ return;\r
+ sha = (struct gl2_shader_impl *) unk;\r
+ units[i] = &sha->_obj.unit;\r
+ (**unk).Release (unk);\r
+ }\r
+\r
+ impl->_obj.link_status = _slang_link (&impl->_obj.prog, units, count);\r
+ if (impl->_obj.link_status)\r
+ impl->_obj._container._generic.info_log = _mesa_strdup ("Link OK.\n");\r
+ else\r
+ impl->_obj._container._generic.info_log = _mesa_strdup ("Link failed.\n");\r
#endif\r
}\r
\r
impl->_obj.linker = ShConstructLinker (EShExVertexFragment, 0);\r
impl->_obj.uniforms = ShConstructUniformMap ();\r
#endif\r
+ slang_program_ctr (&impl->_obj.prog);\r
}\r
\r
struct gl2_fragment_shader_obj\r
{\r
slang_function *f;\r
slang_assembly_file_restore_point point;\r
- slang_machine mach;\r
slang_assemble_ctx A;\r
\r
f = &unit->functions.functions[i];\r
slang_assembly_file_restore_point_save (unit->assembly, &point);\r
- mach = *unit->machine;\r
- mach.ip = unit->assembly->count;\r
+\r
+ slang_machine_init (unit->machine);\r
+ unit->machine->ip = unit->assembly->count;\r
\r
A.file = unit->assembly;\r
A.mach = unit->machine;\r
_slang_assemble_function_call (&A, f, NULL, 0, GL_FALSE);\r
slang_assembly_file_push (unit->assembly, slang_asm_exit);\r
\r
- _slang_execute2 (unit->assembly, &mach);\r
+ _slang_execute2 (unit->assembly, unit->machine);\r
+\r
slang_assembly_file_restore_point_load (unit->assembly, &point);\r
- _mesa_memcpy (unit->machine->mem, mach.mem, SLANG_MACHINE_MEMORY_SIZE * sizeof (slang_machine_slot));\r
}\r
}\r
\r
{\r
slang_function *f;\r
slang_assembly_file_restore_point point;\r
- slang_machine mach;\r
slang_assemble_ctx A;\r
\r
f = &unit->functions.functions[i];\r
slang_assembly_file_restore_point_save (unit->assembly, &point);\r
- mach = *unit->machine;\r
- mach.ip = unit->assembly->count;\r
- mach.kill = 0;\r
+\r
+ slang_machine_init (unit->machine);\r
+ unit->machine->ip = unit->assembly->count;\r
\r
A.file = unit->assembly;\r
A.mach = unit->machine;\r
_slang_assemble_function_call (&A, f, NULL, 0, GL_FALSE);\r
slang_assembly_file_push (unit->assembly, slang_asm_exit);\r
\r
- _slang_execute2 (unit->assembly, &mach);\r
+ _slang_execute2 (unit->assembly, unit->machine);\r
+\r
slang_assembly_file_restore_point_load (unit->assembly, &point);\r
- _mesa_memcpy (unit->machine->mem, mach.mem, SLANG_MACHINE_MEMORY_SIZE * sizeof (slang_machine_slot));\r
- unit->machine->kill = mach.kill;\r
}\r
}\r
\r
+GLint _slang_get_uniform_location (struct gl2_program_intf **pro, const char *name)\r
+{\r
+ struct gl2_program_impl *impl;\r
+ slang_uniform_bindings *bind;\r
+ GLuint i;\r
+\r
+ impl = (struct gl2_program_impl *) pro;\r
+ bind = &impl->_obj.prog.uniforms;\r
+ for (i = 0; i < bind->count; i++)\r
+ if (_mesa_strcmp (bind->table[i].name, name) == 0)\r
+ return i;\r
+ return -1;\r
+}\r
+\r
+GLboolean _slang_write_uniform (struct gl2_program_intf **pro, GLint loc, GLsizei count,\r
+ const GLvoid *data, GLenum type)\r
+{\r
+ struct gl2_program_impl *impl;\r
+ slang_uniform_bindings *bind;\r
+ slang_uniform_binding *b;\r
+ GLuint i;\r
+\r
+ if (loc == -1)\r
+ return GL_TRUE;\r
+\r
+ impl = (struct gl2_program_impl *) pro;\r
+ bind = &impl->_obj.prog.uniforms;\r
+ if (loc >= bind->count)\r
+ return GL_FALSE;\r
+\r
+ b = &bind->table[loc];\r
+ /* TODO: check sizes */\r
+ /* TODO: check if not structure */\r
+ if (b->quant->u.basic_type != type)\r
+ return GL_FALSE;\r
+\r
+ for (i = 0; i < SLANG_UNIFORM_BINDING_MAX; i++)\r
+ if (b->address[i] != ~0)\r
+ {\r
+ _mesa_memcpy (&impl->_obj.prog.machines[i]->mem[b->address[i] / 4], data,\r
+ count * b->quant->size);\r
+ }\r
+ return GL_TRUE;\r
+}\r
+\r
void\r
_mesa_init_shaderobjects_3dlabs (GLcontext *ctx)\r
{\r
//
// TODO:
-// - implement texture1D, texture2D, texture3D, textureCube,
+// - implement texture1D, texture3D, textureCube,
// - implement shadow1D, shadow2D,
//
}\r
vec2 sin (vec2 angle) {
- vec2 u;\r
- u.x = sin (angle.x);\r
- u.y = sin (angle.y);\r
- return u;\r
+ return vec2 (\r
+ sin (angle.x),\r
+ sin (angle.y)\r
+ );\r
}\r
vec3 sin (vec3 angle) {
- vec3 u;\r
- u.x = sin (angle.x);\r
- u.y = sin (angle.y);\r
- u.z = sin (angle.z);\r
- return u;
+ return vec3 (\r
+ sin (angle.x),\r
+ sin (angle.y),\r
+ sin (angle.z)\r
+ );
}\r
vec4 sin (vec4 angle) {
- vec4 u;\r
- u.x = sin (angle.x);\r
- u.y = sin (angle.y);\r
- u.z = sin (angle.z);\r
- u.w = sin (angle.w);\r
- return u;
+ return vec4 (\r
+ sin (angle.x),\r
+ sin (angle.y),\r
+ sin (angle.z),\r
+ sin (angle.w)\r
+ );
}
float cos (float angle) {
}\r
vec2 cos (vec2 angle) {
- vec2 u;\r
- u.x = cos (angle.x);\r
- u.y = cos (angle.y);\r
- return u;
+ return vec2 (\r
+ cos (angle.x),\r
+ cos (angle.y)\r
+ );
}\r
vec3 cos (vec3 angle) {
- vec3 u;\r
- u.x = cos (angle.x);\r
- u.y = cos (angle.y);\r
- u.z = cos (angle.z);\r
- return u;
+ return vec2 (\r
+ cos (angle.x),\r
+ cos (angle.y),\r
+ cos (angle.z)\r
+ );
}\r
vec4 cos (vec4 angle) {
- vec4 u;\r
- u.x = cos (angle.x);\r
- u.y = cos (angle.y);\r
- u.z = cos (angle.z);\r
- u.w = cos (angle.w);\r
- return u;
+ return vec4 (\r
+ cos (angle.x),\r
+ cos (angle.y),\r
+ cos (angle.z),\r
+ cos (angle.w)\r
+ );
}
float tan (float angle) {
}\r
vec2 tan (vec2 angle) {
- vec2 u;\r
- u.x = tan (angle.x);\r
- u.y = tan (angle.y);\r
- return u;
+ return vec2 (\r
+ tan (angle.x),\r
+ tan (angle.y)\r
+ );
}\r
vec3 tan (vec3 angle) {
- vec3 u;\r
- u.x = tan (angle.x);\r
- u.y = tan (angle.y);\r
- u.z = tan (angle.z);\r
- return u;
+ return vec3 (\r
+ tan (angle.x),\r
+ tan (angle.y),\r
+ tan (angle.z)\r
+ );
}\r
vec4 tan (vec4 angle) {
- vec4 u;\r
- u.x = tan (angle.x);\r
- u.y = tan (angle.y);\r
- u.z = tan (angle.z);\r
- u.w = tan (angle.w);\r
- return u;
+ return vec4 (\r
+ tan (angle.x),\r
+ tan (angle.y),\r
+ tan (angle.z),\r
+ tan (angle.w)\r
+ );
}
float asin (float x) {
}\r
vec2 asin (vec2 v) {
- vec2 u;\r
- u.x = asin (v.x);\r
- u.y = asin (v.y);\r
- return u;
+ return vec2 (\r
+ asin (v.x),\r
+ asin (v.y)\r
+ );
}\r
vec3 asin (vec3 v) {
- vec3 u;\r
- u.x = asin (v.x);\r
- u.y = asin (v.y);\r
- u.z = asin (v.z);\r
- return u;
+ return vec3 (\r
+ asin (v.x),\r
+ asin (v.y),\r
+ asin (v.z)\r
+ );
}\r
vec4 asin (vec4 v) {
- vec4 u;\r
- u.x = asin (v.x);\r
- u.y = asin (v.y);\r
- u.z = asin (v.z);\r
- u.w = asin (v.w);\r
- return u;
+ return vec4 (\r
+ asin (v.x),\r
+ asin (v.y),\r
+ asin (v.z),\r
+ asin (v.w)\r
+ );
}
float acos (float x) {
}\r
vec2 acos (vec2 v) {
- vec2 u;\r
- u.x = acos (v.x);\r
- u.y = acos (v.y);\r
- return u;
+ return vec2 (\r
+ acos (v.x),\r
+ acos (v.y)\r
+ );
}\r
vec3 acos (vec3 v) {
- vec3 u;\r
- u.x = acos (v.x);\r
- u.y = acos (v.y);\r
- u.z = acos (v.z);\r
- return u;
+ return vec3 (\r
+ acos (v.x),\r
+ acos (v.y),\r
+ acos (v.z)\r
+ );
}\r
vec4 acos (vec4 v) {
- vec4 u;\r
- u.x = acos (v.x);\r
- u.y = acos (v.y);\r
- u.z = acos (v.z);\r
- u.w = acos (v.w);\r
- return u;
+ return vec4 (\r
+ acos (v.x),\r
+ acos (v.y),\r
+ acos (v.z),\r
+ acos (v.w)\r
+ );
}
float atan (float y_over_x) {\r
}\r
\r
vec2 atan (vec2 y_over_x) {\r
- vec2 u;\r
- u.x = atan (y_over_x.x);\r
- u.y = atan (y_over_x.y);\r
- return u;\r
+ return vec2 (\r
+ atan (y_over_x.x),\r
+ atan (y_over_x.y)\r
+ );\r
}\r
\r
vec3 atan (vec3 y_over_x) {\r
- vec3 u;\r
- u.x = atan (y_over_x.x);\r
- u.y = atan (y_over_x.y);\r
- u.z = atan (y_over_x.z);\r
- return u;\r
+ return vec3 (\r
+ atan (y_over_x.x),\r
+ atan (y_over_x.y),\r
+ atan (y_over_x.z)\r
+ );\r
}\r
\r
vec4 atan (vec4 y_over_x) {\r
- vec4 u;\r
- u.x = atan (y_over_x.x);\r
- u.y = atan (y_over_x.y);\r
- u.z = atan (y_over_x.z);\r
- u.w = atan (y_over_x.w);\r
- return u;\r
+ return vec4 (\r
+ atan (y_over_x.x),\r
+ atan (y_over_x.y),\r
+ atan (y_over_x.z),\r
+ atan (y_over_x.w)\r
+ );\r
}\r
\r
float atan (float y, float x) {\r
}\r
vec2 atan (vec2 u, vec2 v) {
- vec2 t;\r
- t.x = atan (u.x, v.x);\r
- t.y = atan (u.y, v.y);\r
- return t;
+ return vec2 (\r
+ atan (u.x, v.x),\r
+ atan (u.y, v.y)\r
+ );
}\r
vec3 atan (vec3 u, vec3 v) {
- vec3 t;\r
- t.x = atan (u.x, v.x);\r
- t.y = atan (u.y, v.y);\r
- t.z = atan (u.z, v.z);\r
- return t;
+ return vec3 (\r
+ atan (u.x, v.x),\r
+ atan (u.y, v.y),\r
+ atan (u.z, v.z)\r
+ );
}\r
vec4 atan (vec4 u, vec4 v) {
- vec4 t;\r
- t.x = atan (u.x, v.x);\r
- t.y = atan (u.y, v.y);\r
- t.z = atan (u.z, v.z);\r
- t.w = atan (u.w, v.w);\r
- return t;
+ return vec4 (\r
+ atan (u.x, v.x),\r
+ atan (u.y, v.y),\r
+ atan (u.z, v.z),\r
+ atan (u.w, v.w)\r
+ );
}
//
}\r
vec2 pow (vec2 v, vec2 u) {
- vec2 t;\r
- t.x = pow (v.x, u.x);\r
- t.y = pow (v.y, u.y);\r
- return t;
+ return vec2 (\r
+ pow (v.x, u.x),\r
+ pow (v.y, u.y)\r
+ );
}\r
vec3 pow (vec3 v, vec3 u) {
- vec3 t;\r
- t.x = pow (v.x, u.x);\r
- t.y = pow (v.y, u.y);\r
- t.z = pow (v.z, u.z);\r
- return t;
+ return vec3 (\r
+ pow (v.x, u.x),\r
+ pow (v.y, u.y),\r
+ pow (v.z, u.z)\r
+ );
}\r
vec4 pow (vec4 v, vec4 u) {
- vec4 t;\r
- t.x = pow (v.x, u.x);\r
- t.y = pow (v.y, u.y);\r
- t.z = pow (v.z, u.z);\r
- t.w = pow (v.w, u.w);\r
- return t;
+ return vec4 (\r
+ pow (v.x, u.x),\r
+ pow (v.y, u.y),\r
+ pow (v.z, u.z),\r
+ pow (v.w, u.w)\r
+ );
}
float exp (float x) {
}\r
\r
vec2 log2 (vec2 v) {\r
- vec2 u;\r
- u.x = log2 (v.x);\r
- u.y = log2 (v.y);\r
- return u;\r
+ return vec2 (\r
+ log2 (v.x),\r
+ log2 (v.y)\r
+ );\r
}\r
\r
vec3 log2 (vec3 v) {\r
- vec3 u;\r
- u.x = log2 (v.x);\r
- u.y = log2 (v.y);\r
- u.z = log2 (v.z);\r
- return u;\r
+ return vec3 (\r
+ log2 (v.x),\r
+ log2 (v.y),\r
+ log2 (v.z)\r
+ );\r
}\r
\r
vec4 log2 (vec4 v) {\r
- vec4 u;\r
- u.x = log2 (v.x);\r
- u.y = log2 (v.y);\r
- u.z = log2 (v.z);\r
- u.w = log2 (v.w);\r
- return u;\r
+ return vec4 (\r
+ log2 (v.x),\r
+ log2 (v.y),\r
+ log2 (v.z),\r
+ log2 (v.w)\r
+ );\r
}\r
\r
float log (float x) {
}\r
vec2 abs (vec2 v) {\r
- vec2 u;\r
- u.x = abs (v.x);\r
- u.y = abs (v.y);
- return u;
+ return vec2 (\r
+ abs (v.x),\r
+ abs (v.y)\r
+ );
}\r
vec3 abs (vec3 v) {
- vec3 u;\r
- u.x = abs (v.x);\r
- u.y = abs (v.y);\r
- u.z = abs (v.z);\r
- return u;
+ return vec3 (\r
+ abs (v.x),\r
+ abs (v.y),\r
+ abs (v.z)\r
+ );
}\r
vec4 abs (vec4 v) {
- vec4 u;\r
- u.x = abs (v.x);\r
- u.y = abs (v.y);\r
- u.z = abs (v.z);\r
- u.w = abs (v.w);\r
- return u;
+ return vec4 (\r
+ abs (v.x),\r
+ abs (v.y),\r
+ abs (v.z),\r
+ abs (v.w)\r
+ );
}
float sign (float x) {
}\r
vec2 sign (vec2 v) {
- vec2 u;\r
- u.x = sign (v.x);\r
- u.y = sign (v.y);\r
- return u;
+ return vec2 (\r
+ sign (v.x),\r
+ sign (v.y)\r
+ );
}\r
vec3 sign (vec3 v) {
- vec3 u;\r
- u.x = sign (v.x);\r
- u.y = sign (v.y);\r
- u.z = sign (v.z);\r
- return u;
+ return vec3 (\r
+ sign (v.x),\r
+ sign (v.y),\r
+ sign (v.z)\r
+ );
}\r
vec4 sign (vec4 v) {
- vec4 u;\r
- u.x = sign (v.x);\r
- u.y = sign (v.y);\r
- u.z = sign (v.z);\r
- u.w = sign (v.w);\r
- return u;
+ return vec4 (\r
+ sign (v.x),\r
+ sign (v.y),\r
+ sign (v.z),\r
+ sign (v.w)\r
+ );
}
float floor (float x) {\r
}\r
\r
vec2 floor (vec2 v) {\r
- vec2 u;\r
- u.x = floor (v.x);\r
- u.y = floor (v.y);\r
- return u;\r
+ return vec2 (\r
+ floor (v.x),\r
+ floor (v.y)\r
+ );\r
}\r
\r
vec3 floor (vec3 v) {\r
- vec3 u;\r
- u.x = floor (v.x);\r
- u.y = floor (v.y);\r
- u.z = floor (v.z);\r
- return u;\r
+ return vec3 (\r
+ floor (v.x),\r
+ floor (v.y),\r
+ floor (v.z)\r
+ );\r
}\r
\r
vec4 floor (vec4 v) {\r
- vec4 u;\r
- u.x = floor (v.x);\r
- u.y = floor (v.y);\r
- u.z = floor (v.z);\r
- u.w = floor (v.w);\r
- return u;\r
+ return vec4 (\r
+ floor (v.x),\r
+ floor (v.y),\r
+ floor (v.z),\r
+ floor (v.w)\r
+ );\r
}\r
\r
float ceil (float x) {\r
}\r
\r
vec2 ceil (vec2 v) {\r
- vec2 u;\r
- u.x = ceil (v.x);\r
- u.y = ceil (v.y);\r
- return u;\r
+ return vec2 (\r
+ ceil (v.x),\r
+ ceil (v.y)\r
+ );\r
}\r
\r
vec3 ceil (vec3 v) {\r
- vec3 u;\r
- u.x = ceil (v.x);\r
- u.y = ceil (v.y);\r
- u.z = ceil (v.z);\r
- return u;\r
+ return vec3 (\r
+ ceil (v.x),\r
+ ceil (v.y),\r
+ ceil (v.z)\r
+ );\r
}\r
\r
vec4 ceil (vec4 v) {\r
- vec4 u;\r
- u.x = ceil (v.x);\r
- u.y = ceil (v.y);\r
- u.z = ceil (v.z);\r
- u.w = ceil (v.w);\r
- return u;\r
+ return vec4 (\r
+ ceil (v.x),\r
+ ceil (v.y),\r
+ ceil (v.z),\r
+ ceil (v.w)\r
+ );\r
}
\r
float fract (float x) {\r
}\r
vec2 min (vec2 v, vec2 u) {\r
- vec2 t;\r
- t.x = min (v.x, u.x);\r
- t.y = min (v.y, u.y);\r
- return t;\r
+ return vec2 (\r
+ min (v.x, u.x),\r
+ min (v.y, u.y)\r
+ );\r
}\r
\r
vec3 min (vec3 v, vec3 u) {\r
- vec3 t;\r
- t.x = min (v.x, u.x);\r
- t.y = min (v.y, u.y);\r
- t.z = min (v.z, u.z);\r
- return t;\r
+ return vec2 (\r
+ min (v.x, u.x),\r
+ min (v.y, u.y),\r
+ min (v.z, u.z)\r
+ );\r
}\r
\r
vec4 min (vec4 v, vec4 u) {\r
- vec4 t;\r
- t.x = min (v.x, u.x);\r
- t.y = min (v.y, u.y);\r
- t.z = min (v.z, u.z);\r
- t.w = min (v.w, u.w);\r
- return t;\r
+ return vec4 (\r
+ min (v.x, u.x),\r
+ min (v.y, u.y),\r
+ min (v.z, u.z),\r
+ min (v.w, u.w)\r
+ );\r
}\r
\r
vec2 min (vec2 v, float y) {
}\r
vec2 max (vec2 v, vec2 u) {\r
- vec2 t;\r
- t.x = max (v.x, u.x);\r
- t.y = max (v.y, u.y);\r
- return t;\r
+ return vec2 (\r
+ max (v.x, u.x),\r
+ max (v.y, u.y)\r
+ );\r
}\r
\r
vec3 max (vec3 v, vec3 u) {\r
- vec3 t;\r
- t.x = max (v.x, u.x);\r
- t.y = max (v.y, u.y);\r
- t.z = max (v.z, u.z);\r
- return t;\r
+ return vec3 (\r
+ max (v.x, u.x),\r
+ max (v.y, u.y),\r
+ max (v.z, u.z)\r
+ );\r
}\r
\r
vec4 max (vec4 v, vec4 u) {\r
- vec4 t;\r
- t.x = max (v.x, u.x);\r
- t.y = max (v.y, u.y);\r
- t.z = max (v.z, u.z);\r
- t.w = max (v.w, u.w);\r
- return t;\r
+ return vec4 (\r
+ max (v.x, u.x),\r
+ max (v.y, u.y),\r
+ max (v.z, u.z),\r
+ max (v.w, u.w)\r
+ );\r
}\r
\r
vec2 max (vec2 v, float y) {
}\r
vec2 step (vec2 edge, vec2 v) {\r
- vec2 u;\r
- u.x = step (edge.x, v.x);\r
- u.y = step (edge.y, v.y);\r
- return u;\r
+ return vec2 (\r
+ step (edge.x, v.x),\r
+ step (edge.y, v.y)\r
+ );\r
}\r
\r
vec3 step (vec3 edge, vec3 v) {\r
- vec3 u;\r
- u.x = step (edge.x, v.x);\r
- u.y = step (edge.y, v.y);\r
- u.z = step (edge.z, v.z);\r
- return u;\r
+ return vec3 (\r
+ step (edge.x, v.x),\r
+ step (edge.y, v.y),\r
+ step (edge.z, v.z)\r
+ );\r
}\r
\r
vec4 step (vec4 edge, vec4 v) {\r
- vec4 u;\r
- u.x = step (edge.x, v.x);\r
- u.y = step (edge.y, v.y);\r
- u.z = step (edge.z, v.z);\r
- u.w = step (edge.w, v.w);\r
- return u;\r
+ return vec4 (\r
+ step (edge.x, v.x),\r
+ step (edge.y, v.y),\r
+ step (edge.z, v.z),\r
+ step (edge.w, v.w)\r
+ );\r
}\r
\r
vec2 step (float edge, vec2 v) {
}\r
vec2 smoothstep (vec2 edge0, vec2 edge1, vec2 v) {\r
- vec2 u;\r
- u.x = smoothstep (edge0.x, edge1.x, v.x);\r
- u.y = smoothstep (edge0.y, edge1.y, v.y);\r
- return u;\r
+ return vec2 (\r
+ smoothstep (edge0.x, edge1.x, v.x),\r
+ smoothstep (edge0.y, edge1.y, v.y)\r
+ );\r
}\r
\r
vec3 smoothstep (vec3 edge0, vec3 edge1, vec3 v) {\r
- vec3 u;\r
- u.x = smoothstep (edge0.x, edge1.x, v.x);\r
- u.y = smoothstep (edge0.y, edge1.y, v.y);\r
- u.z = smoothstep (edge0.z, edge1.z, v.z);\r
- return u;\r
+ return vec3 (\r
+ smoothstep (edge0.x, edge1.x, v.x),\r
+ smoothstep (edge0.y, edge1.y, v.y),\r
+ smoothstep (edge0.z, edge1.z, v.z)\r
+ );\r
}\r
\r
vec4 smoothstep (vec4 edge0, vec4 edge1, vec4 v) {\r
- vec4 u;\r
- u.x = smoothstep (edge0.x, edge1.x, v.x);\r
- u.y = smoothstep (edge0.y, edge1.y, v.y);\r
- u.z = smoothstep (edge0.z, edge1.z, v.z);\r
- u.w = smoothstep (edge0.w, edge1.w, v.w);\r
- return u;\r
+ return vec4 (\r
+ smoothstep (edge0.x, edge1.x, v.x),\r
+ smoothstep (edge0.y, edge1.y, v.y),\r
+ smoothstep (edge0.z, edge1.z, v.z),\r
+ smoothstep (edge0.w, edge1.w, v.w)\r
+ );\r
}\r
\r
vec2 smoothstep (float edge0, float edge1, vec2 v) {
- vec2 u;\r
- u.x = smoothstep (edge0, edge1, v.x);\r
- u.y = smoothstep (edge0, edge1, v.y);\r
- return u;
+ return vec2 (\r
+ smoothstep (edge0, edge1, v.x),\r
+ smoothstep (edge0, edge1, v.y)\r
+ );\r
}\r
vec3 smoothstep (float edge0, float edge1, vec3 v) {
- vec3 u;\r
- u.x = smoothstep (edge0, edge1, v.x);\r
- u.y = smoothstep (edge0, edge1, v.y);\r
- u.z = smoothstep (edge0, edge1, v.z);\r
- return u;
+ return vec3 (\r
+ smoothstep (edge0, edge1, v.x),\r
+ smoothstep (edge0, edge1, v.y),\r
+ smoothstep (edge0, edge1, v.z)\r
+ );\r
}\r
vec4 smoothstep (float edge0, float edge1, vec4 v) {
- vec4 u;\r
- u.x = smoothstep (edge0, edge1, v.x);\r
- u.y = smoothstep (edge0, edge1, v.y);\r
- u.z = smoothstep (edge0, edge1, v.z);\r
- u.w = smoothstep (edge0, edge1, v.w);\r
- return u;
+ return vec4 (\r
+ smoothstep (edge0, edge1, v.x),\r
+ smoothstep (edge0, edge1, v.y),\r
+ smoothstep (edge0, edge1, v.z),\r
+ smoothstep (edge0, edge1, v.w)\r
+ );\r
}\r
//
}
vec3 cross (vec3 v, vec3 u) {
- vec3 t;\r
- t.x = v.y * u.z - u.y * v.z;\r
- t.y = v.z * u.x - u.z * v.x;\r
- t.z = v.x * u.y - u.x * v.y;\r
- return t;
+ return vec3 (\r
+ v.y * u.z - u.y * v.z,\r
+ v.z * u.x - u.z * v.x,\r
+ v.x * u.y - u.x * v.y\r
+ );\r
}
float normalize (float x) {
//
mat2 matrixCompMult (mat2 m, mat2 n) {
- mat2 o;
- o[0] = m[0] * n[0];\r
- o[1] = m[1] * n[1];
- return o;
+ return mat2 (m[0] * n[0], m[1] * n[1]);
}\r
mat3 matrixCompMult (mat3 m, mat3 n) {
- mat3 o;
- o[0] = m[0] * n[0];\r
- o[1] = m[1] * n[1];\r
- o[2] = m[2] * n[2];
- return o;
+ return mat3 (m[0] * n[0], m[1] * n[1], m[2] * n[2]);
}\r
mat4 matrixCompMult (mat4 m, mat4 n) {
- mat4 o;
- o[0] = m[0] * n[0];\r
- o[1] = m[1] * n[1];\r
- o[2] = m[2] * n[2];\r
- o[3] = m[3] * n[3];
- return o;
+ return mat4 (m[0] * n[0], m[1] * n[1], m[2] * n[2], m[3] * n[3]);
}
//
//
bvec2 lessThan (vec2 v, vec2 u) {\r
- bvec2 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- return b;
+ return bvec2 (v.x < u.x, v.y < u.y);
}\r
bvec3 lessThan (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- b.z = v.z < u.z;\r
- return b;
+ return bvec3 (v.x < u.x, v.y < u.y, v.z < u.z);
}\r
bvec4 lessThan (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- b.z = v.z < u.z;\r
- b.w = v.w < u.w;\r
- return b;
+ return bvec4 (v.x < u.x, v.y < u.y, v.z < u.z, v.w < u.w);
}\r
bvec2 lessThan (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- return b;
+ return bvec2 (v.x < u.x, v.y < u.y);
}\r
bvec3 lessThan (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- b.z = v.z < u.z;\r
- return b;
+ return bvec3 (v.x < u.x, v.y < u.y, v.z < u.z);
}\r
bvec4 lessThan (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x < u.x;\r
- b.y = v.y < u.y;\r
- b.z = v.z < u.z;\r
- b.w = v.w < u.w;\r
- return b;
+ return bvec4 (v.x < u.x, v.y < u.y, v.z < u.z, v.w < u.w);
}
bvec2 lessThanEqual (vec2 v, vec2 u) {
- bvec2 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- return b;
+ return bvec2 (v.x <= u.x, v.y <= u.y);
}\r
bvec3 lessThanEqual (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- b.z = v.z <= u.z;\r
- return b;
+ return bvec3 (v.x <= u.x, v.y <= u.y, v.z <= u.z);
}\r
bvec4 lessThanEqual (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- b.z = v.z <= u.z;\r
- b.w = v.w <= u.w;\r
- return b;
+ return bvec4 (v.x <= u.x, v.y <= u.y, v.z <= u.z, v.w <= u.w);
}\r
bvec2 lessThanEqual (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- return b;
+ return bvec2 (v.x <= u.x, v.y <= u.y);
}\r
bvec3 lessThanEqual (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- b.z = v.z <= u.z;\r
- return b;
+ return bvec3 (v.x <= u.x, v.y <= u.y, v.z <= u.z);
}\r
bvec4 lessThanEqual (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x <= u.x;\r
- b.y = v.y <= u.y;\r
- b.z = v.z <= u.z;\r
- b.w = v.w <= u.w;\r
- return b;
+ return bvec4 (v.x <= u.x, v.y <= u.y, v.z <= u.z, v.w <= u.w);
}
bvec2 greaterThan (vec2 v, vec2 u) {
- bvec2 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- return b;
+ return bvec2 (v.x > u.x, v.y > u.y);
}\r
bvec3 greaterThan (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- b.z = v.z > u.z;\r
- return b;
+ return bvec3 (v.x > u.x, v.y > u.y, v.z > u.z);
}\r
bvec4 greaterThan (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- b.z = v.z > u.z;\r
- b.w = v.w > u.w;\r
- return b;
+ return bvec4 (v.x > u.x, v.y > u.y, v.z > u.z, v.w > u.w);
}\r
bvec2 greaterThan (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- return b;
+ return bvec2 (v.x > u.x, v.y > u.y);
}\r
bvec3 greaterThan (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- b.z = v.z > u.z;\r
- return b;
+ return bvec3 (v.x > u.x, v.y > u.y, v.z > u.z);
}\r
bvec4 greaterThan (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x > u.x;\r
- b.y = v.y > u.y;\r
- b.z = v.z > u.z;\r
- b.w = v.w > u.w;\r
- return b;
+ return bvec4 (v.x > u.x, v.y > u.y, v.z > u.z, v.w > u.w);
}
bvec2 greaterThanEqual (vec2 v, vec2 u) {
- bvec2 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- return b;
+ return bvec2 (v.x >= u.x, v.y >= u.y);
}\r
bvec3 greaterThanEqual (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- b.z = v.z >= u.z;\r
- return b;
+ return bvec3 (v.x >= u.x, v.y >= u.y, v.z >= u.z);
}\r
bvec4 greaterThanEqual (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- b.z = v.z >= u.z;\r
- b.w = v.w >= u.w;\r
- return b;
+ return bvec4 (v.x >= u.x, v.y >= u.y, v.z >= u.z, v.w >= u.w);
}\r
bvec2 greaterThanEqual (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- return b;
+ return bvec2 (v.x >= u.x, v.y >= u.y);
}\r
bvec3 greaterThanEqual (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- b.z = v.z >= u.z;\r
- return b;
+ return bvec3 (v.x >= u.x, v.y >= u.y, v.z >= u.z);
}\r
bvec4 greaterThanEqual (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x >= u.x;\r
- b.y = v.y >= u.y;\r
- b.z = v.z >= u.z;\r
- b.w = v.w >= u.w;\r
- return b;
+ return bvec4 (v.x >= u.x, v.y >= u.y, v.z >= u.z, v.w >= u.w);
}
bvec2 equal (vec2 v, vec2 u) {
- bvec2 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- return b;
+ return bvec2 (v.x == u.x, v.y == u.y);
}\r
bvec3 equal (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- b.z = v.z == u.z;\r
- return b;
+ return bvec3 (v.x == u.x, v.y == u.y, v.z == u.z);
}\r
bvec4 equal (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- b.z = v.z == u.z;\r
- b.w = v.w == u.w;\r
- return b;
+ return bvec4 (v.x == u.x, v.y == u.y, v.z == u.z, v.w == u.w);
}\r
bvec2 equal (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- return b;
+ return bvec2 (v.x == u.x, v.y == u.y);
}\r
bvec3 equal (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- b.z = v.z == u.z;\r
- return b;
+ return bvec3 (v.x == u.x, v.y == u.y, v.z == u.z);
}\r
bvec4 equal (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x == u.x;\r
- b.y = v.y == u.y;\r
- b.z = v.z == u.z;\r
- b.w = v.w == u.w;\r
- return b;
+ return bvec4 (v.x == u.x, v.y == u.y, v.z == u.z, v.w == u.w);
}
bvec2 notEqual (vec2 v, vec2 u) {
- bvec2 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- return b;
+ return bvec2 (v.x != u.x, v.y != u.y);
}\r
bvec3 notEqual (vec3 v, vec3 u) {
- bvec3 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- b.z = v.z != u.z;\r
- return b;
+ return bvec3 (v.x != u.x, v.y != u.y, v.z != u.z);
}\r
bvec4 notEqual (vec4 v, vec4 u) {
- bvec4 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- b.z = v.z != u.z;\r
- b.w = v.w != u.w;\r
- return b;
+ return bvec4 (v.x != u.x, v.y != u.y, v.z != u.z, v.w != u.w);
}\r
bvec2 notEqual (ivec2 v, ivec2 u) {
- bvec2 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- return b;
+ return bvec2 (v.x != u.x, v.y != u.y);
}\r
bvec3 notEqual (ivec3 v, ivec3 u) {
- bvec3 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- b.z = v.z != u.z;\r
- return b;
+ return bvec3 (v.x != u.x, v.y != u.y, v.z != u.z);
}\r
bvec4 notEqual (ivec4 v, ivec4 u) {
- bvec4 b;\r
- b.x = v.x != u.x;\r
- b.y = v.y != u.y;\r
- b.z = v.z != u.z;\r
- b.w = v.w != u.w;\r
- return b;
+ return bvec4 (v.x != u.x, v.y != u.y, v.z != u.z, v.w != u.w);\r
}
bool any (bvec2 v) {
}
bvec2 not (bvec2 v) {\r
- bvec2 u;\r
- u.x = !v.x;\r
- u.y = !v.y;
- return u;
+ return bvec2 (!v.x, !v.y);\r
}\r
bvec3 not (bvec3 v) {
- bvec3 u;\r
- u.x = !v.x;\r
- u.y = !v.y;\r
- u.z = !v.z;\r
- return u;
+ return bvec3 (!v.x, !v.y, !v.z);
}\r
bvec4 not (bvec4 v) {
- bvec4 u;\r
- u.x = !v.x;\r
- u.y = !v.y;\r
- u.z = !v.z;\r
- u.w = !v.w;\r
- return u;
+ return bvec4 (!v.x, !v.y, !v.z, !v.w);\r
}
//
}
vec4 texture2D (sampler2D sampler, vec2 coord) {\r
- // XXX:
- return vec4 (0.0);
+ vec4 texel;\r
+ __asm vec4_tex2d texel, sampler, coord;\r
+ return texel;
}\r
vec4 texture2DProj (sampler2D sampler, vec3 coord) {\r
- vec2 u;\r
- u.s = coord.s / coord.p;\r
- u.t = coord.t / coord.p;
- return texture2D (sampler, u);
+ return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p));
}\r
vec4 texture2DProj (sampler2D sampler, vec4 coord) {\r
- vec2 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;
- return texture2D (sampler, u);
+ return texture2D (sampler, vec2 (coord.s / coord.q, coord.t / coord.q));
}
vec4 texture3D (sampler3D sampler, vec3 coord) {\r
}\r
vec4 texture3DProj (sampler3D sampler, vec4 coord) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return texture3D (sampler, u);
+ return texture3D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
}
vec4 textureCube (samplerCube sampler, vec3 coord) {\r
}\r
vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = 0.0;\r
- u.p = coord.p / coord.q;
- return shadow1D (sampler, u);
+ return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q));
}\r
vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return shadow2D (sampler, u);
+ return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
}
//
}
vec2 noise2 (float x) {\r
- vec2 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + 19.34);\r
- return u;
+ return vec2 (\r
+ noise1 (x),\r
+ noise1 (x + 19.34)\r
+ );
}
vec2 noise2 (vec2 x) {\r
- vec2 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec2 (19.34, 7.66));\r
- return u;
+ return vec2 (\r
+ noise1 (x),\r
+ noise1 (x + vec2 (19.34, 7.66))\r
+ );
}
vec2 noise2 (vec3 x) {\r
- vec2 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec3 (19.34, 7.66, 3.23));\r
- return u;
+ return vec2 (\r
+ noise1 (x),\r
+ noise1 (x + vec3 (19.34, 7.66, 3.23))\r
+ );
}
vec2 noise2 (vec4 x) {\r
- vec2 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77));\r
- return u;
+ return vec2 (\r
+ noise1 (x),\r
+ noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77))\r
+ );
}
vec3 noise3 (float x) {\r
- vec3 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + 19.34);\r
- u.z = noise1 (x + 5.47);\r
- return u;
+ return vec3 (\r
+ noise1 (x),\r
+ noise1 (x + 19.34),\r
+ noise1 (x + 5.47)\r
+ );\r
}
vec3 noise3 (vec2 x) {\r
- vec3 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec2 (19.34, 7.66));\r
- u.z = noise1 (x + vec2 (5.47, 17.85));\r
- return u;
+ return vec3 (\r
+ noise1 (x),\r
+ noise1 (x + vec2 (19.34, 7.66)),\r
+ noise1 (x + vec2 (5.47, 17.85))\r
+ );\r
}
vec3 noise3 (vec3 x) {\r
- vec3 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec3 (19.34, 7.66, 3.23));\r
- u.z = noise1 (x + vec3 (5.47, 17.85, 11.04));\r
- return u;
+ return vec3 (\r
+ noise1 (x),\r
+ noise1 (x + vec3 (19.34, 7.66, 3.23)),\r
+ noise1 (x + vec3 (5.47, 17.85, 11.04))\r
+ );
}
vec3 noise3 (vec4 x) {\r
- vec3 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77));\r
- u.z = noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19));\r
- return u;
+ return vec3 (\r
+ noise1 (x),\r
+ noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),\r
+ noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19))\r
+ );
}
vec4 noise4 (float x) {\r
- vec4 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + 19.34);\r
- u.z = noise1 (x + 5.47);\r
- u.w = noise1 (x + 23.54);\r
- return u;
+ return vec4 (\r
+ noise1 (x),\r
+ noise1 (x + 19.34),\r
+ noise1 (x + 5.47),\r
+ noise1 (x + 23.54)\r
+ );\r
}
vec4 noise4 (vec2 x) {\r
- vec4 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec2 (19.34, 7.66));\r
- u.z = noise1 (x + vec2 (5.47, 17.85));\r
- u.w = noise1 (x + vec2 (23.54, 29.11));\r
- return u;
+ return vec4 (\r
+ noise1 (x),\r
+ noise1 (x + vec2 (19.34, 7.66)),\r
+ noise1 (x + vec2 (5.47, 17.85)),\r
+ noise1 (x + vec2 (23.54, 29.11))\r
+ );\r
}
vec4 noise4 (vec3 x) {\r
- vec4 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec3 (19.34, 7.66, 3.23));\r
- u.z = noise1 (x + vec3 (5.47, 17.85, 11.04));\r
- u.w = noise1 (x + vec3 (23.54, 29.11, 31.91));\r
- return u;
+ return vec4 (\r
+ noise1 (x),\r
+ noise1 (x + vec3 (19.34, 7.66, 3.23)),\r
+ noise1 (x + vec3 (5.47, 17.85, 11.04)),\r
+ noise1 (x + vec3 (23.54, 29.11, 31.91))\r
+ );\r
}
vec4 noise4 (vec4 x) {\r
- vec4 u;\r
- u.x = noise1 (x);\r
- u.y = noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77));\r
- u.z = noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19));\r
- u.w = noise1 (x + vec4 (23.54, 29.11, 31.91, 37.48));\r
- return u;
+ return vec4 (\r
+ noise1 (x),\r
+ noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),\r
+ noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19)),\r
+ noise1 (x + vec4 (23.54, 29.11, 31.91, 37.48))\r
+ );\r
}
\r
97,100,0,0,0,1,8,58,118,101,99,52,0,17,49,56,48,0,48,0,0,0,0,18,114,97,100,0,48,58,118,101,99,52,0,\r
17,51,0,49,52,49,53,57,51,0,0,0,0,49,0,0,1,0,9,0,115,105,110,0,1,0,0,9,97,110,103,108,101,0,0,0,1,\r
3,2,0,9,1,120,0,0,0,4,102,108,111,97,116,95,115,105,110,101,0,18,120,0,0,18,97,110,103,108,101,0,0,\r
-0,8,18,120,0,0,0,1,0,10,0,115,105,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,3,2,0,10,1,117,0,0,0,9,\r
-18,117,0,59,120,0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,\r
-58,115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,105,110,0,1,\r
-0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,110,0,18,97,\r
-110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
-59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,105,110,0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,8,\r
-18,117,0,0,0,1,0,12,0,115,105,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,\r
-117,0,59,120,0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,\r
-115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,105,110,0,18,97,\r
-110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
-59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,99,111,115,0,1,0,0,9,97,110,103,108,101,0,0,0,1,8,58,115,\r
-105,110,0,18,97,110,103,108,101,0,17,49,0,53,55,48,56,0,0,46,0,0,0,0,1,0,10,0,99,111,115,0,1,0,0,\r
-10,97,110,103,108,101,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,\r
-103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,\r
-0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,99,111,115,0,1,0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,\r
-0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
-121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,99,111,115,\r
-0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,99,111,115,0,1,0,0,12,97,110,\r
-103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,103,108,101,\r
-0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,\r
-9,18,117,0,59,122,0,58,99,111,115,0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,\r
-58,99,111,115,0,18,97,110,103,108,101,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,116,97,110,0,1,0,\r
-0,9,97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,0,0,58,99,111,115,0,18,\r
-97,110,103,108,101,0,0,0,49,0,0,1,0,10,0,116,97,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,3,2,0,10,\r
-1,117,0,0,0,9,18,117,0,59,120,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,\r
-0,59,121,0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,116,\r
-97,110,0,1,0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,116,97,\r
-110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,116,97,110,0,18,97,110,103,\r
-108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,116,97,110,0,18,97,110,103,108,101,0,59,122,0,0,\r
-0,20,0,8,18,117,0,0,0,1,0,12,0,116,97,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,\r
-0,9,18,117,0,59,120,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,\r
-0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,116,97,110,0,18,\r
-97,110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,116,97,110,0,18,97,110,103,108,101,0,\r
-59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,97,115,105,110,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,\r
-4,102,108,111,97,116,95,97,114,99,115,105,110,101,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,\r
-0,97,115,105,110,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,115,105,110,\r
-0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,59,121,0,0,0,20,0,8,\r
-18,117,0,0,0,1,0,11,0,97,115,105,110,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,\r
-0,58,97,115,105,110,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,\r
-59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,\r
-0,1,0,12,0,97,115,105,110,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,\r
-115,105,110,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,59,121,0,\r
-0,0,20,0,9,18,117,0,59,122,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,\r
-97,115,105,110,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,97,99,111,115,0,1,0,0,9,120,0,0,\r
-0,1,8,17,49,0,53,55,48,56,0,0,58,97,115,105,110,0,18,120,0,0,0,47,0,0,1,0,10,0,97,99,111,115,0,1,0,\r
-0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,118,0,59,120,0,0,0,\r
-20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,97,\r
-99,111,115,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,\r
-118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,\r
-0,59,122,0,58,97,99,111,115,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,97,99,111,115,0,1,\r
-0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,118,0,59,120,0,0,\r
-0,20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,\r
-99,111,115,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,97,99,111,115,0,18,118,0,59,119,0,0,\r
-0,20,0,8,18,117,0,0,0,1,0,9,0,97,116,97,110,0,1,0,0,9,121,95,111,118,101,114,95,120,0,0,0,1,3,2,0,\r
-9,1,122,0,0,0,4,102,108,111,97,116,95,97,114,99,116,97,110,0,18,122,0,0,18,121,95,111,118,101,114,\r
-95,120,0,0,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,121,95,111,118,101,114,95,120,0,0,0,\r
-1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,\r
-59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,\r
-0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,121,95,111,118,101,114,95,120,0,0,0,1,\r
-3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,\r
-120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,\r
-0,0,20,0,9,18,117,0,59,122,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,20,\r
-0,8,18,117,0,0,0,1,0,12,0,97,116,97,110,0,1,0,0,12,121,95,111,118,101,114,95,120,0,0,0,1,3,2,0,12,\r
-1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,120,0,0,0,\r
-20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,0,0,20,0,9,\r
-18,117,0,59,122,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,20,0,9,18,117,\r
-0,59,119,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,119,0,0,0,20,0,8,18,117,0,0,0,\r
-1,0,9,0,97,116,97,110,0,1,0,0,9,121,0,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,122,0,0,0,9,18,122,0,58,97,\r
-116,97,110,0,18,121,0,18,120,0,49,0,0,20,0,10,18,120,0,17,48,0,48,0,0,40,0,2,10,18,121,0,17,48,0,\r
-48,0,0,40,0,8,18,122,0,17,51,0,49,52,49,53,57,51,0,0,47,0,9,14,0,8,18,122,0,17,51,0,49,52,49,53,57,\r
-51,0,0,46,0,0,9,14,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,117,0,0,1,0,0,10,118,0,0,0,1,\r
-3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,\r
-0,0,20,0,9,18,116,0,59,121,0,58,97,116,97,110,0,18,117,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,8,\r
-18,116,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,117,0,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
-18,116,0,59,120,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,116,0,59,\r
-121,0,58,97,116,97,110,0,18,117,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,97,\r
-116,97,110,0,18,117,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,97,116,97,110,\r
-0,1,0,0,12,117,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,97,116,97,110,\r
-0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,97,116,97,110,0,18,117,0,\r
-59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,97,116,97,110,0,18,117,0,59,122,0,0,\r
-18,118,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,58,97,116,97,110,0,18,117,0,59,119,0,0,18,118,0,59,\r
-119,0,0,0,20,0,8,18,116,0,0,0,1,0,9,0,112,111,119,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,3,2,0,9,1,\r
-112,0,0,0,4,102,108,111,97,116,95,112,111,119,101,114,0,18,112,0,0,18,120,0,0,18,121,0,0,0,8,18,\r
-112,0,0,0,1,0,10,0,112,111,119,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,\r
-116,0,59,120,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,\r
-58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,8,18,116,0,0,0,1,0,11,0,112,111,\r
-119,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,58,112,111,\r
-119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,112,111,119,0,18,118,0,\r
-59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,112,111,119,0,18,118,0,59,122,0,0,18,\r
-117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,112,111,119,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,\r
-1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,\r
-0,0,20,0,9,18,116,0,59,121,0,58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,\r
-116,0,59,122,0,58,112,111,119,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,\r
-58,112,111,119,0,18,118,0,59,119,0,0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,1,0,9,0,101,120,112,\r
+0,8,18,120,0,0,0,1,0,10,0,115,105,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,8,58,118,101,99,50,0,\r
+58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
+59,121,0,0,0,0,0,0,0,1,0,11,0,115,105,110,0,1,0,0,11,97,110,103,108,101,0,0,0,1,8,58,118,101,99,51,\r
+0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
+59,121,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,105,110,\r
+0,1,0,0,12,97,110,103,108,101,0,0,0,1,8,58,118,101,99,52,0,58,115,105,110,0,18,97,110,103,108,101,\r
+0,59,120,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,115,105,110,0,18,97,\r
+110,103,108,101,0,59,122,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,119,0,0,0,0,0,0,0,1,0,\r
+9,0,99,111,115,0,1,0,0,9,97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,17,\r
+49,0,53,55,48,56,0,0,46,0,0,0,0,1,0,10,0,99,111,115,0,1,0,0,10,97,110,103,108,101,0,0,0,1,8,58,118,\r
+101,99,50,0,58,99,111,115,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,99,111,115,0,18,97,110,103,\r
+108,101,0,59,121,0,0,0,0,0,0,0,1,0,11,0,99,111,115,0,1,0,0,11,97,110,103,108,101,0,0,0,1,8,58,118,\r
+101,99,50,0,58,99,111,115,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,99,111,115,0,18,97,110,103,\r
+108,101,0,59,121,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,122,0,0,0,0,0,0,0,1,0,12,0,99,\r
+111,115,0,1,0,0,12,97,110,103,108,101,0,0,0,1,8,58,118,101,99,52,0,58,99,111,115,0,18,97,110,103,\r
+108,101,0,59,120,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,99,111,115,0,18,\r
+97,110,103,108,101,0,59,122,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,119,0,0,0,0,0,0,0,1,\r
+0,9,0,116,97,110,0,1,0,0,9,97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,0,\r
+0,58,99,111,115,0,18,97,110,103,108,101,0,0,0,49,0,0,1,0,10,0,116,97,110,0,1,0,0,10,97,110,103,108,\r
+101,0,0,0,1,8,58,118,101,99,50,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,116,97,\r
+110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,0,0,0,1,0,11,0,116,97,110,0,1,0,0,11,97,110,103,108,\r
+101,0,0,0,1,8,58,118,101,99,51,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,116,97,\r
+110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,59,122,0,0,0,\r
+0,0,0,0,1,0,12,0,116,97,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,8,58,118,101,99,52,0,58,116,97,\r
+110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,\r
+0,58,116,97,110,0,18,97,110,103,108,101,0,59,122,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,\r
+59,119,0,0,0,0,0,0,0,1,0,9,0,97,115,105,110,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,102,108,\r
+111,97,116,95,97,114,99,115,105,110,101,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,97,115,\r
+105,110,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,97,115,105,110,0,18,118,0,59,120,0,0,0,0,58,\r
+97,115,105,110,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,115,105,110,0,1,0,0,11,118,0,0,0,1,8,58,\r
+118,101,99,51,0,58,97,115,105,110,0,18,118,0,59,120,0,0,0,0,58,97,115,105,110,0,18,118,0,59,121,0,\r
+0,0,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,115,105,110,0,1,0,0,12,118,0,0,\r
+0,1,8,58,118,101,99,52,0,58,97,115,105,110,0,18,118,0,59,120,0,0,0,0,58,97,115,105,110,0,18,118,0,\r
+59,121,0,0,0,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,0,58,97,115,105,110,0,18,118,0,59,119,0,0,\r
+0,0,0,0,0,1,0,9,0,97,99,111,115,0,1,0,0,9,120,0,0,0,1,8,17,49,0,53,55,48,56,0,0,58,97,115,105,110,\r
+0,18,120,0,0,0,47,0,0,1,0,10,0,97,99,111,115,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,97,99,\r
+111,115,0,18,118,0,59,120,0,0,0,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,99,\r
+111,115,0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,58,97,99,111,115,0,18,118,0,59,120,0,0,0,0,58,\r
+97,99,111,115,0,18,118,0,59,121,0,0,0,0,58,97,99,111,115,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,\r
+97,99,111,115,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,97,99,111,115,0,18,118,0,59,120,0,0,0,\r
+0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,0,58,97,99,111,115,0,18,118,0,59,122,0,0,0,0,58,97,99,\r
+111,115,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,9,0,97,116,97,110,0,1,0,0,9,121,95,111,118,101,114,95,\r
+120,0,0,0,1,3,2,0,9,1,122,0,0,0,4,102,108,111,97,116,95,97,114,99,116,97,110,0,18,122,0,0,18,121,\r
+95,111,118,101,114,95,120,0,0,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,121,95,111,118,\r
+101,114,95,120,0,0,0,1,8,58,118,101,99,50,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,\r
+59,120,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,\r
+97,116,97,110,0,1,0,0,11,121,95,111,118,101,114,95,120,0,0,0,1,8,58,118,101,99,51,0,58,97,116,97,\r
+110,0,18,121,95,111,118,101,114,95,120,0,59,120,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,\r
+114,95,120,0,59,121,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,0,0,\r
+0,0,1,0,12,0,97,116,97,110,0,1,0,0,12,121,95,111,118,101,114,95,120,0,0,0,1,8,58,118,101,99,52,0,\r
+58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,120,0,0,0,0,58,97,116,97,110,0,18,121,95,\r
+111,118,101,114,95,120,0,59,121,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,\r
+122,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,97,\r
+116,97,110,0,1,0,0,9,121,0,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,122,0,0,0,9,18,122,0,58,97,116,97,110,0,\r
+18,121,0,18,120,0,49,0,0,20,0,10,18,120,0,17,48,0,48,0,0,40,0,2,10,18,121,0,17,48,0,48,0,0,40,0,8,\r
+18,122,0,17,51,0,49,52,49,53,57,51,0,0,47,0,9,14,0,8,18,122,0,17,51,0,49,52,49,53,57,51,0,0,46,0,0,\r
+9,14,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,117,0,0,1,0,0,10,118,0,0,0,1,8,58,118,101,\r
+99,50,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,97,116,97,110,0,18,117,0,\r
+59,121,0,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,117,0,0,1,0,0,11,118,0,\r
+0,0,1,8,58,118,101,99,51,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,97,\r
+116,97,110,0,18,117,0,59,121,0,0,18,118,0,59,121,0,0,0,0,58,97,116,97,110,0,18,117,0,59,122,0,0,18,\r
+118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,116,97,110,0,1,0,0,12,117,0,0,1,0,0,12,118,0,0,0,1,8,58,118,\r
+101,99,52,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,97,116,97,110,0,18,\r
+117,0,59,121,0,0,18,118,0,59,121,0,0,0,0,58,97,116,97,110,0,18,117,0,59,122,0,0,18,118,0,59,122,0,\r
+0,0,0,58,97,116,97,110,0,18,117,0,59,119,0,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,9,0,112,111,119,0,1,\r
+0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,3,2,0,9,1,112,0,0,0,4,102,108,111,97,116,95,112,111,119,101,114,\r
+0,18,112,0,0,18,120,0,0,18,121,0,0,0,8,18,112,0,0,0,1,0,10,0,112,111,119,0,1,0,0,10,118,0,0,1,0,0,\r
+10,117,0,0,0,1,8,58,118,101,99,50,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,\r
+58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,0,0,0,0,1,0,11,0,112,111,119,0,1,0,0,11,\r
+118,0,0,1,0,0,11,117,0,0,0,1,8,58,118,101,99,51,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,\r
+120,0,0,0,0,58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,0,58,112,111,119,0,18,118,0,\r
+59,122,0,0,18,117,0,59,122,0,0,0,0,0,0,0,1,0,12,0,112,111,119,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,\r
+0,1,8,58,118,101,99,52,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,58,112,111,\r
+119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,0,58,112,111,119,0,18,118,0,59,122,0,0,18,117,0,59,\r
+122,0,0,0,0,58,112,111,119,0,18,118,0,59,119,0,0,18,117,0,59,119,0,0,0,0,0,0,0,1,0,9,0,101,120,112,\r
0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,18,120,0,0,0,0,0,1,\r
0,10,0,101,120,112,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,50,0,17,50,0,55,49,56,\r
50,56,49,56,51,0,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,101,120,112,0,1,0,0,11,118,0,0,0,1,8,58,112,111,\r
120,112,0,1,0,0,12,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,52,0,17,50,0,55,49,56,50,56,49,56,\r
51,0,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,108,111,103,50,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,\r
102,108,111,97,116,95,108,111,103,50,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,108,111,103,\r
-50,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,103,50,0,18,118,0,59,\r
-120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,\r
-0,11,0,108,111,103,50,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,\r
-103,50,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,\r
-20,0,9,18,117,0,59,122,0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,\r
-108,111,103,50,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,103,50,0,\r
-18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,20,0,9,18,\r
-117,0,59,122,0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,108,111,103,\r
-50,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,108,111,103,0,1,0,0,9,120,0,0,0,1,8,58,108,\r
-111,103,50,0,18,120,0,0,0,58,108,111,103,50,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,49,0,0,1,0,\r
-10,0,108,111,103,0,1,0,0,10,118,0,0,0,1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,\r
-118,101,99,50,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,0,1,0,11,0,108,111,103,0,1,0,0,11,\r
-118,0,0,0,1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,118,101,99,51,0,17,50,0,55,\r
-49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,0,1,0,12,0,108,111,103,0,1,0,0,12,118,0,0,0,1,8,58,108,111,\r
-103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,118,101,99,52,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,\r
-0,0,0,49,0,0,1,0,9,0,101,120,112,50,0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,48,0,0,0,18,\r
-120,0,0,0,0,0,1,0,10,0,101,120,112,50,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,50,0,\r
-17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,101,120,112,50,0,1,0,0,11,118,0,0,0,1,8,58,112,111,\r
-119,0,58,118,101,99,51,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,12,0,101,120,112,50,0,1,0,0,12,\r
-118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,52,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,\r
-115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,18,120,0,0,17,48,0,53,0,0,0,0,0,0,1,0,10,\r
-0,115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,58,118,101,99,50,0,17,48,0,\r
-53,0,0,0,0,0,0,0,0,1,0,11,0,115,113,114,116,0,1,0,0,11,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,\r
-58,118,101,99,51,0,17,48,0,53,0,0,0,0,0,0,0,0,1,0,12,0,115,113,114,116,0,1,0,0,12,118,0,0,0,1,8,58,\r
-112,111,119,0,18,118,0,0,58,118,101,99,52,0,17,48,0,53,0,0,0,0,0,0,0,0,1,0,9,0,105,110,118,101,114,\r
-115,101,115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,17,49,0,48,0,0,58,115,113,114,116,0,18,120,0,0,0,\r
-49,0,0,1,0,10,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,\r
-50,0,17,49,0,48,0,0,0,0,58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,11,0,105,110,118,101,114,115,\r
-101,115,113,114,116,0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,17,49,0,48,0,0,0,0,58,115,113,114,\r
-116,0,18,118,0,0,0,49,0,0,1,0,12,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,12,118,0,0,\r
-0,1,8,58,118,101,99,52,0,17,49,0,48,0,0,0,0,58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,9,0,97,98,\r
-115,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,43,18,120,0,18,120,0,54,31,0,0,1,0,10,0,97,98,\r
-115,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,59,120,\r
-0,0,0,20,0,9,18,117,0,59,121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,\r
-97,98,115,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,\r
-59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,\r
-0,58,97,98,115,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,97,98,115,0,1,0,0,12,118,0,0,0,\r
-1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
-121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,98,115,0,18,118,0,59,122,\r
-0,0,0,20,0,9,18,117,0,59,119,0,58,97,98,115,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,\r
-115,105,103,110,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,41,17,49,0,48,0,0,18,120,0,17,48,0,\r
-48,0,0,40,17,49,0,48,0,0,54,17,48,0,48,0,0,31,31,0,0,1,0,10,0,115,105,103,110,0,1,0,0,10,118,0,0,0,\r
-1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,59,120,0,0,0,20,0,9,18,\r
-117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,105,103,\r
-110,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,\r
-59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,\r
-59,122,0,58,115,105,103,110,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,105,103,110,0,\r
-1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,59,120,\r
-0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,\r
-58,115,105,103,110,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,105,103,110,0,18,118,0,\r
-59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,102,108,111,111,114,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,\r
-0,0,4,102,108,111,97,116,95,102,108,111,111,114,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,\r
-102,108,111,111,114,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,102,108,111,\r
-111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,102,108,111,111,114,0,18,118,0,59,121,\r
-0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,102,108,111,111,114,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,\r
-9,18,117,0,59,120,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,102,\r
-108,111,111,114,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,102,108,111,111,114,0,18,118,0,\r
-59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,102,108,111,111,114,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,\r
-117,0,0,0,9,18,117,0,59,120,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
-121,0,58,102,108,111,111,114,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,102,108,111,111,\r
-114,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,102,108,111,111,114,0,18,118,0,59,119,0,0,\r
-0,20,0,8,18,117,0,0,0,1,0,9,0,99,101,105,108,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,102,108,\r
-111,97,116,95,99,101,105,108,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,99,101,105,108,0,1,\r
-0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,0,18,118,0,59,120,0,\r
-0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,\r
-0,99,101,105,108,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,\r
-0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,9,\r
-18,117,0,59,122,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,99,101,\r
-105,108,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,0,18,118,\r
-0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,\r
-59,122,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,99,101,105,108,0,18,\r
-118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,102,114,97,99,116,0,1,0,0,9,120,0,0,0,1,8,18,120,0,\r
-58,102,108,111,111,114,0,18,120,0,0,0,47,0,0,1,0,10,0,102,114,97,99,116,0,1,0,0,10,118,0,0,0,1,8,\r
-18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,11,0,102,114,97,99,116,0,1,0,0,11,118,0,\r
-0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,12,0,102,114,97,99,116,0,1,0,0,\r
-12,118,0,0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,9,0,109,111,100,0,1,0,0,\r
-9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,58,102,108,111,111,114,0,18,120,0,18,121,0,49,0,\r
-0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,\r
-108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,109,111,100,0,1,0,0,11,118,0,0,1,0,0,\r
-9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,\r
-12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,\r
-0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,\r
-8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,109,111,\r
-100,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,\r
-18,117,0,49,0,0,48,47,0,0,1,0,12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,18,118,0,\r
-18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,9,0,109,105,110,0,1,0,0,9,\r
-120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,40,18,120,0,18,121,0,31,0,0,1,0,10,0,109,105,110,0,\r
-1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,109,105,110,0,18,\r
-118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,105,110,0,18,118,0,59,121,0,\r
-0,18,117,0,59,121,0,0,0,20,0,8,18,116,0,0,0,1,0,11,0,109,105,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,\r
-0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,58,109,105,110,0,18,118,0,59,120,0,0,18,117,0,59,\r
-120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,\r
-9,18,116,0,59,122,0,58,109,105,110,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,\r
-1,0,12,0,109,105,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,\r
-120,0,58,109,105,110,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,\r
-105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,105,110,0,18,\r
-118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,58,109,105,110,0,18,118,0,59,119,0,\r
-0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,1,0,10,0,109,105,110,0,1,0,0,10,118,0,0,1,0,0,9,121,0,\r
-0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,105,110,0,\r
-1,0,0,11,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,\r
-0,0,0,0,1,0,12,0,109,105,110,0,1,0,0,12,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,0,0,\r
-58,118,101,99,52,0,18,121,0,0,0,0,0,0,0,1,0,9,0,109,97,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,\r
-18,120,0,18,121,0,40,18,121,0,18,120,0,31,0,0,1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,10,117,\r
-0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,\r
-120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,\r
-8,18,116,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
-18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,\r
-0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,97,120,\r
-0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,109,97,120,0,1,0,0,12,118,\r
-0,0,1,0,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,\r
-0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,\r
-121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,97,120,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,\r
-9,18,116,0,59,119,0,58,109,97,120,0,18,118,0,59,119,0,0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,\r
-1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,\r
-99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,\r
-97,120,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,0,0,0,0,1,0,12,0,109,97,120,0,1,0,0,12,118,0,0,\r
-1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,99,52,0,18,121,0,0,0,0,0,0,0,1,0,9,0,\r
-99,108,97,109,112,0,1,0,0,9,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,\r
-0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,\r
-120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,9,109,105,110,86,97,\r
+50,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,108,111,103,50,0,18,118,0,59,120,0,0,0,0,58,108,\r
+111,103,50,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,108,111,103,50,0,1,0,0,11,118,0,0,0,1,8,58,118,\r
+101,99,51,0,58,108,111,103,50,0,18,118,0,59,120,0,0,0,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,\r
+0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,108,111,103,50,0,1,0,0,12,118,0,0,0,1,\r
+8,58,118,101,99,52,0,58,108,111,103,50,0,18,118,0,59,120,0,0,0,0,58,108,111,103,50,0,18,118,0,59,\r
+121,0,0,0,0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,0,58,108,111,103,50,0,18,118,0,59,119,0,0,0,\r
+0,0,0,0,1,0,9,0,108,111,103,0,1,0,0,9,120,0,0,0,1,8,58,108,111,103,50,0,18,120,0,0,0,58,108,111,\r
+103,50,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,49,0,0,1,0,10,0,108,111,103,0,1,0,0,10,118,0,0,0,\r
+1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,118,101,99,50,0,17,50,0,55,49,56,50,56,\r
+49,56,51,0,0,0,0,0,0,49,0,0,1,0,11,0,108,111,103,0,1,0,0,11,118,0,0,0,1,8,58,108,111,103,50,0,18,\r
+118,0,0,0,58,108,111,103,50,0,58,118,101,99,51,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,\r
+0,1,0,12,0,108,111,103,0,1,0,0,12,118,0,0,0,1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,\r
+0,58,118,101,99,52,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,0,1,0,9,0,101,120,112,50,0,1,\r
+0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,48,0,0,0,18,120,0,0,0,0,0,1,0,10,0,101,120,112,50,0,1,\r
+0,0,10,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,50,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,\r
+11,0,101,120,112,50,0,1,0,0,11,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,51,0,17,50,0,48,0,0,0,\r
+0,0,18,118,0,0,0,0,0,1,0,12,0,101,120,112,50,0,1,0,0,12,118,0,0,0,1,8,58,112,111,119,0,58,118,101,\r
+99,52,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,58,\r
+112,111,119,0,18,120,0,0,17,48,0,53,0,0,0,0,0,0,1,0,10,0,115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,\r
+58,112,111,119,0,18,118,0,0,58,118,101,99,50,0,17,48,0,53,0,0,0,0,0,0,0,0,1,0,11,0,115,113,114,116,\r
+0,1,0,0,11,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,58,118,101,99,51,0,17,48,0,53,0,0,0,0,0,0,0,0,\r
+1,0,12,0,115,113,114,116,0,1,0,0,12,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,58,118,101,99,52,0,\r
+17,48,0,53,0,0,0,0,0,0,0,0,1,0,9,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,9,120,0,0,0,\r
+1,8,17,49,0,48,0,0,58,115,113,114,116,0,18,120,0,0,0,49,0,0,1,0,10,0,105,110,118,101,114,115,101,\r
+115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,17,49,0,48,0,0,0,0,58,115,113,114,116,\r
+0,18,118,0,0,0,49,0,0,1,0,11,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,11,118,0,0,0,1,\r
+8,58,118,101,99,51,0,17,49,0,48,0,0,0,0,58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,12,0,105,110,\r
+118,101,114,115,101,115,113,114,116,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,17,49,0,48,0,0,0,0,\r
+58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,9,0,97,98,115,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,\r
+0,48,0,0,43,18,120,0,18,120,0,54,31,0,0,1,0,10,0,97,98,115,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,\r
+50,0,58,97,98,115,0,18,118,0,59,120,0,0,0,0,58,97,98,115,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,\r
+97,98,115,0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,58,97,98,115,0,18,118,0,59,120,0,0,0,0,58,97,\r
+98,115,0,18,118,0,59,121,0,0,0,0,58,97,98,115,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,98,115,0,\r
+1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,97,98,115,0,18,118,0,59,120,0,0,0,0,58,97,98,115,0,18,\r
+118,0,59,121,0,0,0,0,58,97,98,115,0,18,118,0,59,122,0,0,0,0,58,97,98,115,0,18,118,0,59,119,0,0,0,0,\r
+0,0,0,1,0,9,0,115,105,103,110,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,41,17,49,0,48,0,0,18,\r
+120,0,17,48,0,48,0,0,40,17,49,0,48,0,0,54,17,48,0,48,0,0,31,31,0,0,1,0,10,0,115,105,103,110,0,1,0,\r
+0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,115,105,103,110,0,18,118,0,59,120,0,0,0,0,58,115,105,103,\r
+110,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,105,103,110,0,1,0,0,11,118,0,0,0,1,8,58,118,101,\r
+99,51,0,58,115,105,103,110,0,18,118,0,59,120,0,0,0,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,0,\r
+58,115,105,103,110,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,105,103,110,0,1,0,0,12,118,0,0,0,1,\r
+8,58,118,101,99,52,0,58,115,105,103,110,0,18,118,0,59,120,0,0,0,0,58,115,105,103,110,0,18,118,0,59,\r
+121,0,0,0,0,58,115,105,103,110,0,18,118,0,59,122,0,0,0,0,58,115,105,103,110,0,18,118,0,59,119,0,0,\r
+0,0,0,0,0,1,0,9,0,102,108,111,111,114,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,102,108,111,97,\r
+116,95,102,108,111,111,114,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,102,108,111,111,114,0,\r
+1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,0,58,102,\r
+108,111,111,114,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,102,108,111,111,114,0,1,0,0,11,118,0,0,0,\r
+1,8,58,118,101,99,51,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,0,58,102,108,111,111,114,0,\r
+18,118,0,59,121,0,0,0,0,58,102,108,111,111,114,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,102,108,\r
+111,111,114,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,102,108,111,111,114,0,18,118,0,59,120,0,\r
+0,0,0,58,102,108,111,111,114,0,18,118,0,59,121,0,0,0,0,58,102,108,111,111,114,0,18,118,0,59,122,0,\r
+0,0,0,58,102,108,111,111,114,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,9,0,99,101,105,108,0,1,0,0,9,120,\r
+0,0,0,1,3,2,0,9,1,121,0,0,0,4,102,108,111,97,116,95,99,101,105,108,0,18,121,0,0,18,120,0,0,0,8,18,\r
+121,0,0,0,1,0,10,0,99,101,105,108,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,99,101,105,108,0,\r
+18,118,0,59,120,0,0,0,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,99,101,105,108,\r
+0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,58,99,101,105,108,0,18,118,0,59,120,0,0,0,0,58,99,101,\r
+105,108,0,18,118,0,59,121,0,0,0,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,99,\r
+101,105,108,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,99,101,105,108,0,18,118,0,59,120,0,0,0,\r
+0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,0,58,99,\r
+101,105,108,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,9,0,102,114,97,99,116,0,1,0,0,9,120,0,0,0,1,8,18,\r
+120,0,58,102,108,111,111,114,0,18,120,0,0,0,47,0,0,1,0,10,0,102,114,97,99,116,0,1,0,0,10,118,0,0,0,\r
+1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,11,0,102,114,97,99,116,0,1,0,0,11,\r
+118,0,0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,12,0,102,114,97,99,116,0,1,\r
+0,0,12,118,0,0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,9,0,109,111,100,0,1,\r
+0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,58,102,108,111,111,114,0,18,120,0,18,121,0,\r
+49,0,0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,\r
+58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,109,111,100,0,1,0,0,11,118,0,\r
+0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,\r
+0,0,1,0,12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,\r
+111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,10,117,\r
+0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,\r
+109,111,100,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,\r
+18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,\r
+18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,9,0,109,105,110,\r
+0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,40,18,120,0,18,121,0,31,0,0,1,0,10,0,109,\r
+105,110,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,118,101,99,50,0,58,109,105,110,0,18,118,0,59,\r
+120,0,0,18,117,0,59,120,0,0,0,0,58,109,105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,0,0,0,0,\r
+1,0,11,0,109,105,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,118,101,99,50,0,58,109,105,110,0,\r
+18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,58,109,105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,\r
+0,0,0,58,109,105,110,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,0,0,0,0,1,0,12,0,109,105,110,0,1,\r
+0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,118,101,99,52,0,58,109,105,110,0,18,118,0,59,120,0,0,18,\r
+117,0,59,120,0,0,0,0,58,109,105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,0,58,109,105,110,0,\r
+18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,0,58,109,105,110,0,18,118,0,59,119,0,0,18,117,0,59,119,0,\r
+0,0,0,0,0,0,1,0,10,0,109,105,110,0,1,0,0,10,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,\r
+0,0,58,118,101,99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,105,110,0,1,0,0,11,118,0,0,1,0,0,9,121,0,\r
+0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,0,0,0,0,1,0,12,0,109,105,110,0,\r
+1,0,0,12,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,52,0,18,121,0,0,0,\r
+0,0,0,0,1,0,9,0,109,97,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,40,18,121,0,\r
+18,120,0,31,0,0,1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,118,101,99,50,0,\r
+58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,58,109,97,120,0,18,118,0,59,121,0,0,18,\r
+117,0,59,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,118,\r
+101,99,51,0,58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,58,109,97,120,0,18,118,0,\r
+59,121,0,0,18,117,0,59,121,0,0,0,0,58,109,97,120,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,0,0,0,\r
+0,1,0,12,0,109,97,120,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,118,101,99,52,0,58,109,97,120,0,\r
+18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,121,0,\r
+0,0,0,58,109,97,120,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,0,58,109,97,120,0,18,118,0,59,119,\r
+0,0,18,117,0,59,119,0,0,0,0,0,0,0,1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,9,121,0,0,0,1,8,58,\r
+109,97,120,0,18,118,0,0,58,118,101,99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,\r
+0,0,1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,0,0,0,0,1,0,\r
+12,0,109,97,120,0,1,0,0,12,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,99,\r
+52,0,18,121,0,0,0,0,0,0,0,1,0,9,0,99,108,97,109,112,0,1,0,0,9,120,0,0,1,0,0,9,109,105,110,86,97,\r
108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,\r
-105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,11,0,99,108,97,109,112,0,1,0,0,11,\r
+105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,\r
120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,\r
58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,\r
-12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,\r
+11,0,99,108,97,109,112,0,1,0,0,11,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,\r
97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,\r
-109,97,120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,10,109,105,110,\r
-86,97,108,0,0,1,0,0,10,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,\r
-18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,11,0,99,108,97,109,112,0,1,\r
-0,0,11,120,0,0,1,0,0,11,109,105,110,86,97,108,0,0,1,0,0,11,109,97,120,86,97,108,0,0,0,1,8,58,109,\r
+109,97,120,86,97,108,0,0,0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,9,109,105,110,\r
+86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,\r
+18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,\r
+0,0,10,120,0,0,1,0,0,10,109,105,110,86,97,108,0,0,1,0,0,10,109,97,120,86,97,108,0,0,0,1,8,58,109,\r
105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,\r
-0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,12,109,105,110,86,97,108,0,0,1,0,0,12,\r
+0,0,0,1,0,11,0,99,108,97,109,112,0,1,0,0,11,120,0,0,1,0,0,11,109,105,110,86,97,108,0,0,1,0,0,11,\r
109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,\r
-108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,9,0,109,105,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,\r
-0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,10,0,\r
-109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,\r
-0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,\r
-9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,12,0,109,105,\r
-120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,\r
-18,121,0,18,97,0,48,46,0,0,1,0,10,0,109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,10,97,0,\r
-0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,1,\r
-0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,11,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,\r
-0,18,97,0,48,46,0,0,1,0,12,0,109,105,120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,12,97,0,0,0,1,8,\r
-18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,9,0,115,116,101,112,0,1,0,0,9,\r
-101,100,103,101,0,0,1,0,0,9,120,0,0,0,1,8,18,120,0,18,101,100,103,101,0,40,17,48,0,48,0,0,17,49,0,\r
-48,0,0,31,0,0,1,0,10,0,115,116,101,112,0,1,0,0,10,101,100,103,101,0,0,1,0,0,10,118,0,0,0,1,3,2,0,\r
-10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,18,101,100,103,101,0,59,120,0,0,18,118,0,\r
-59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,118,\r
-0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,11,101,100,103,101,0,0,1,0,0,\r
-11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,18,101,100,103,101,0,\r
-59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,0,18,101,100,103,101,\r
-0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,116,101,112,0,18,101,100,103,\r
-101,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,116,101,112,0,1,0,0,12,101,\r
-100,103,101,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,\r
-18,101,100,103,101,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,\r
-0,18,101,100,103,101,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,116,101,\r
-112,0,18,101,100,103,101,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,116,\r
-101,112,0,18,101,100,103,101,0,59,119,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,10,0,115,\r
+108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,\r
+12,109,105,110,86,97,108,0,0,1,0,0,12,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,\r
+120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,9,0,109,\r
+105,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,\r
+48,18,121,0,18,97,0,48,46,0,0,1,0,10,0,109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,9,97,\r
+0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,\r
+1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,\r
+121,0,18,97,0,48,46,0,0,1,0,12,0,109,105,120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,9,97,0,0,0,\r
+1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,10,0,109,105,120,0,1,0,0,\r
+10,120,0,0,1,0,0,10,121,0,0,1,0,0,10,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,\r
+18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,11,97,0,0,0,1,8,\r
+18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,12,0,109,105,120,0,1,0,0,12,\r
+120,0,0,1,0,0,12,121,0,0,1,0,0,12,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,\r
+97,0,48,46,0,0,1,0,9,0,115,116,101,112,0,1,0,0,9,101,100,103,101,0,0,1,0,0,9,120,0,0,0,1,8,18,120,\r
+0,18,101,100,103,101,0,40,17,48,0,48,0,0,17,49,0,48,0,0,31,0,0,1,0,10,0,115,116,101,112,0,1,0,0,10,\r
+101,100,103,101,0,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,115,116,101,112,0,18,101,100,103,\r
+101,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,\r
+118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,11,101,100,103,101,0,0,1,0,0,11,118,0,\r
+0,0,1,8,58,118,101,99,51,0,58,115,116,101,112,0,18,101,100,103,101,0,59,120,0,0,18,118,0,59,120,0,\r
+0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,118,0,59,121,0,0,0,0,58,115,116,101,\r
+112,0,18,101,100,103,101,0,59,122,0,0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,116,101,112,0,1,0,\r
+0,12,101,100,103,101,0,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,115,116,101,112,0,18,101,100,\r
+103,101,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,\r
+18,118,0,59,121,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,122,0,0,18,118,0,59,122,0,0,0,\r
+0,58,115,116,101,112,0,18,101,100,103,101,0,59,119,0,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,10,0,115,\r
116,101,112,0,1,0,0,9,101,100,103,101,0,0,1,0,0,10,118,0,0,0,1,8,58,115,116,101,112,0,58,118,101,\r
99,50,0,18,101,100,103,101,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,9,101,100,103,\r
101,0,0,1,0,0,11,118,0,0,0,1,8,58,115,116,101,112,0,58,118,101,99,51,0,18,101,100,103,101,0,0,0,0,\r
101,48,0,47,18,101,100,103,101,49,0,18,101,100,103,101,48,0,47,49,0,17,48,0,48,0,0,0,17,49,0,48,0,\r
0,0,0,20,0,8,18,116,0,18,116,0,48,17,51,0,48,0,0,17,50,0,48,0,0,18,116,0,48,47,48,0,0,1,0,10,0,115,\r
109,111,111,116,104,115,116,101,112,0,1,0,0,10,101,100,103,101,48,0,0,1,0,0,10,101,100,103,101,49,\r
-0,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,\r
-116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,118,0,59,\r
-120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,\r
-48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,\r
-11,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,11,101,100,103,101,48,0,0,1,0,0,11,101,100,\r
-103,101,49,0,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,\r
-116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,\r
-118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
-100,103,101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,\r
-0,59,122,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,\r
-100,103,101,49,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,109,111,111,116,\r
-104,115,116,101,112,0,1,0,0,12,101,100,103,101,48,0,0,1,0,0,12,101,100,103,101,49,0,0,1,0,0,12,118,\r
-0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,116,101,112,0,18,\r
-101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,\r
-117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,121,0,0,18,\r
-101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,\r
+0,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,50,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
+100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,115,109,\r
+111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,\r
+121,0,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,11,\r
+101,100,103,101,48,0,0,1,0,0,11,101,100,103,101,49,0,0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,\r
+58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,\r
+49,0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,\r
+103,101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,0,58,115,109,111,\r
+111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,100,103,101,49,0,59,122,0,\r
+0,18,118,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,12,101,\r
+100,103,101,48,0,0,1,0,0,12,101,100,103,101,49,0,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,\r
+115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,\r
+0,59,120,0,0,18,118,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,\r
+101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,0,58,115,109,111,111,\r
116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,100,103,101,49,0,59,122,0,0,18,\r
-118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
-100,103,101,48,0,59,119,0,0,18,101,100,103,101,49,0,59,119,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,\r
-0,0,0,1,0,10,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,\r
-101,100,103,101,49,0,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,\r
-111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,\r
-120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,\r
-48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,109,111,\r
-111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,\r
-11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,116,101,112,\r
-0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,\r
-0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,\r
-18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
-100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,\r
-115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,\r
-49,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,\r
-115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,20,0,9,\r
-18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,\r
-100,103,101,49,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,116,104,115,\r
-116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,122,0,0,0,20,0,9,18,\r
-117,0,59,119,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,\r
-103,101,49,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,100,111,116,0,1,0,0,9,120,0,0,1,0,\r
-0,9,121,0,0,0,1,8,18,120,0,18,121,0,48,0,0,1,0,9,0,100,111,116,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,\r
-0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,118,0,59,121,0,18,117,0,59,121,0,48,46,0,0,1,0,9,0,\r
-100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,\r
-118,0,59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,48,46,0,0,1,0,9,0,100,\r
-111,116,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,118,0,\r
-59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,48,46,18,118,0,59,119,0,18,\r
-117,0,59,119,0,48,46,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,9,120,0,0,0,1,8,58,115,113,114,\r
-116,0,58,100,111,116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,10,\r
-118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,108,\r
-101,110,103,116,104,0,1,0,0,11,118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,\r
-118,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,12,118,0,0,0,1,8,58,115,113,114,116,0,58,\r
-100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,9,120,\r
-0,0,1,0,0,9,121,0,0,0,1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,0,9,0,100,\r
-105,115,116,97,110,99,101,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,108,101,110,103,116,104,0,\r
-18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,11,118,0,0,1,0,0,11,117,\r
-0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,\r
-99,101,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,18,117,0,47,\r
-0,0,0,0,1,0,11,0,99,114,111,115,115,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
-18,116,0,59,120,0,18,118,0,59,121,0,18,117,0,59,122,0,48,18,117,0,59,121,0,18,118,0,59,122,0,48,47,\r
-20,0,9,18,116,0,59,121,0,18,118,0,59,122,0,18,117,0,59,120,0,48,18,117,0,59,122,0,18,118,0,59,120,\r
-0,48,47,20,0,9,18,116,0,59,122,0,18,118,0,59,120,0,18,117,0,59,121,0,48,18,117,0,59,120,0,18,118,0,\r
-59,121,0,48,47,20,0,8,18,116,0,0,0,1,0,9,0,110,111,114,109,97,108,105,122,101,0,1,0,0,9,120,0,0,0,\r
-1,8,17,49,0,48,0,0,0,0,1,0,10,0,110,111,114,109,97,108,105,122,101,0,1,0,0,10,118,0,0,0,1,8,18,118,\r
-0,58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,11,0,110,111,114,109,97,108,105,122,101,0,1,\r
-0,0,11,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,12,0,110,111,\r
-114,109,97,108,105,122,101,0,1,0,0,12,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,18,118,0,\r
-0,0,49,0,0,1,0,9,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,9,78,0,0,1,0,0,9,73,0,0,1,0,0,\r
-9,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,\r
-78,0,18,78,0,54,31,0,0,1,0,10,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,10,78,0,0,1,0,0,\r
-10,73,0,0,1,0,0,10,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,\r
-48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,11,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,\r
-11,78,0,0,1,0,0,11,73,0,0,1,0,0,11,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,\r
-18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,12,0,102,97,99,101,102,111,114,119,97,\r
-114,100,0,1,0,0,12,78,0,0,1,0,0,12,73,0,0,1,0,0,12,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,\r
-114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,9,0,114,101,102,108,\r
-101,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,\r
-18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,10,0,114,101,102,108,101,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,\r
-0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,\r
-11,0,114,101,102,108,101,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,\r
-100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,12,0,114,101,102,108,101,99,116,0,1,0,\r
-0,12,73,0,0,1,0,0,12,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,\r
-18,78,0,48,47,0,0,1,0,9,0,114,101,102,114,97,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,1,0,0,9,101,\r
-116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,\r
-49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,\r
-47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,\r
-101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,\r
-0,48,47,0,0,1,0,10,0,114,101,102,114,97,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,0,0,1,0,0,9,101,116,\r
-97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,\r
-0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,\r
-20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,\r
-116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,\r
-47,0,0,1,0,11,0,114,101,102,114,97,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,1,0,0,9,101,116,97,0,0,\r
-0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,\r
-0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,\r
-10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,\r
-97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,\r
-0,0,1,0,12,0,114,101,102,114,97,99,116,0,1,0,0,12,73,0,0,1,0,0,12,78,0,0,1,0,0,9,101,116,97,0,0,0,\r
-1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,\r
-58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,\r
-18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,97,\r
-0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,\r
-1,0,13,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,13,109,0,0,1,0,0,13,110,0,0,\r
-0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,\r
-0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,8,18,111,0,0,0,1,\r
-0,14,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,14,109,0,0,1,0,0,14,110,0,0,0,\r
-1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,0,\r
-9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,\r
-0,57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,48,20,0,8,18,111,0,0,0,1,0,15,0,109,97,116,114,\r
-105,120,67,111,109,112,77,117,108,116,0,1,0,0,15,109,0,0,1,0,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,\r
-9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,\r
-57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,\r
-50,0,57,18,110,0,16,10,50,0,57,48,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,110,0,16,\r
-10,51,0,57,48,20,0,8,18,111,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,10,118,0,0,1,0,0,\r
-10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,\r
-18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,0,8,18,98,0,0,0,1,0,3,0,108,101,115,115,\r
-84,104,97,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,\r
-0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,\r
-0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,8,18,98,0,0,0,1,0,4,0,108,101,115,\r
-115,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,\r
-118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,\r
-20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,9,18,98,0,59,119,0,18,118,0,59,\r
-119,0,18,117,0,59,119,0,40,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,6,118,\r
-0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,\r
-40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,0,8,18,98,0,0,0,1,0,3,0,108,\r
-101,115,115,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,\r
-120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,\r
-121,0,40,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,8,18,98,0,0,0,1,0,4,0,\r
-108,101,115,115,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
-59,121,0,40,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,9,18,98,0,59,119,0,\r
-18,118,0,59,119,0,18,117,0,59,119,0,40,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,\r
-113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,\r
-118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,\r
-20,0,8,18,98,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,\r
-0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,\r
-9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,\r
-0,18,117,0,59,122,0,42,20,0,8,18,98,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,\r
-0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,\r
-117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,\r
-122,0,18,118,0,59,122,0,18,117,0,59,122,0,42,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,\r
-119,0,42,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,6,118,\r
-0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,\r
-42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,8,18,98,0,0,0,1,0,3,0,108,\r
-101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,\r
-0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,\r
-121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,42,20,0,8,\r
-18,98,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,\r
-0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,\r
-0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,\r
-0,59,122,0,42,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,42,20,0,8,18,98,0,0,0,1,\r
-0,2,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,\r
-98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,\r
-0,59,121,0,18,117,0,59,121,0,41,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,\r
-110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,\r
-0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,\r
-0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,20,0,8,18,98,0,0,0,1,0,4,0,103,114,101,97,116,\r
-101,114,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,\r
-0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,\r
-0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,20,0,9,18,98,0,59,119,0,18,118,\r
-0,59,119,0,18,117,0,59,119,0,41,20,0,8,18,98,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,\r
-110,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,\r
-18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,8,18,98,0,\r
-0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,\r
-1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,\r
-118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,\r
-20,0,8,18,98,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,117,\r
-0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,\r
-0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,\r
-0,59,122,0,41,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,41,20,0,8,18,98,0,0,0,1,\r
-0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,\r
-0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,\r
-59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,101,\r
-114,84,104,97,110,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
-18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
-18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,43,20,0,8,18,98,0,\r
-0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,\r
-117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,\r
-98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,\r
-117,0,59,122,0,43,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,43,20,0,8,18,98,0,0,\r
-0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,\r
-0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,\r
-0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,\r
-101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
-18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
-18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,43,20,0,8,18,98,0,\r
-0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,\r
-117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,\r
-98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,\r
-117,0,59,122,0,43,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,43,20,0,8,18,98,0,0,\r
-0,1,0,2,0,101,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
-59,121,0,38,20,0,8,18,98,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,\r
-3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,\r
-0,18,118,0,59,121,0,18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,\r
-0,38,20,0,8,18,98,0,0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,\r
-1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,\r
-118,0,59,121,0,18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,\r
-20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,38,20,0,8,18,98,0,0,0,1,0,2,0,101,113,\r
-117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,\r
-120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,38,20,0,8,\r
-18,98,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
-18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
-18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,20,0,8,18,98,0,\r
-0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
-59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,20,0,9,18,98,0,59,119,0,\r
-18,118,0,59,119,0,18,117,0,59,119,0,38,20,0,8,18,98,0,0,0,1,0,2,0,110,111,116,69,113,117,97,108,0,\r
-1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,\r
-117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,39,20,0,8,18,98,0,0,\r
-0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,\r
-9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,\r
-0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,20,0,8,18,98,\r
-0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,\r
-0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,\r
-121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,20,0,9,\r
-18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,39,20,0,8,18,98,0,0,0,1,0,2,0,110,111,116,69,\r
-113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,\r
-0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,39,20,\r
-0,8,18,98,0,0,0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,\r
-3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,\r
-118,0,59,121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,\r
-20,0,8,18,98,0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,\r
-0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,\r
-18,118,0,59,121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,\r
-39,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,39,20,0,8,18,98,0,0,0,1,0,1,0,97,\r
-110,121,0,1,0,0,2,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,0,0,1,0,1,0,97,110,121,0,1,\r
-0,0,3,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,18,118,0,59,122,0,32,0,0,1,0,1,0,97,110,\r
-121,0,1,0,0,4,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,18,118,0,59,122,0,32,18,118,0,\r
-59,119,0,32,0,0,1,0,1,0,97,108,108,0,1,0,0,2,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,\r
-0,0,1,0,1,0,97,108,108,0,1,0,0,3,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,118,0,59,\r
-122,0,34,0,0,1,0,1,0,97,108,108,0,1,0,0,4,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,\r
-118,0,59,122,0,34,18,118,0,59,119,0,34,0,0,1,0,2,0,110,111,116,0,1,0,0,2,118,0,0,0,1,3,2,0,2,1,117,\r
-0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,\r
-8,18,117,0,0,0,1,0,3,0,110,111,116,0,1,0,0,3,118,0,0,0,1,3,2,0,3,1,117,0,0,0,9,18,117,0,59,120,0,\r
-18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,9,18,117,0,59,122,0,18,118,\r
-0,59,122,0,56,20,0,8,18,117,0,0,0,1,0,4,0,110,111,116,0,1,0,0,4,118,0,0,0,1,3,2,0,4,1,117,0,0,0,9,\r
-18,117,0,59,120,0,18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,9,18,117,\r
-0,59,122,0,18,118,0,59,122,0,56,20,0,9,18,117,0,59,119,0,18,118,0,59,119,0,56,20,0,8,18,117,0,0,0,\r
-1,0,12,0,116,101,120,116,117,114,101,49,68,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,9,99,\r
-111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,\r
-114,101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,\r
-0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,\r
-114,100,0,59,115,0,18,99,111,111,114,100,0,59,116,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,\r
-101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,\r
-0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,114,\r
-100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,\r
-68,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,0,1,8,58,118,101,99,\r
-52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,\r
-115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,\r
-59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,0,49,20,0,9,18,117,0,59,\r
-116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,20,0,8,58,116,101,120,\r
-116,117,114,101,50,68,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,\r
-116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,\r
-114,100,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,\r
-111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,\r
-111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,108,101,\r
-114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,0,1,0,0,18,115,97,109,112,108,\r
+118,0,59,122,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,119,0,\r
+0,18,101,100,103,101,49,0,59,119,0,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,10,0,115,109,111,111,116,\r
+104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,10,118,0,\r
+0,0,1,8,58,118,101,99,50,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,\r
+18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,\r
+101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,109,\r
+111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,\r
+0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,\r
+103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,\r
+116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,121,0,0,0,0,58,115,\r
+109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,\r
+59,122,0,0,0,0,0,0,0,1,0,12,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,\r
+0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,12,118,0,0,0,1,8,58,118,101,99,52,0,58,115,109,111,111,\r
+116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,\r
+0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,\r
+0,18,118,0,59,121,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,\r
+18,101,100,103,101,49,0,0,18,118,0,59,122,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,\r
+101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,119,0,0,0,0,0,0,0,1,0,9,0,100,111,116,\r
+0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,48,0,0,1,0,9,0,100,111,116,0,1,0,0,10,\r
+118,0,0,1,0,0,10,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,118,0,59,121,0,18,117,0,\r
+59,121,0,48,46,0,0,1,0,9,0,100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,59,120,0,\r
+18,117,0,59,120,0,48,18,118,0,59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,\r
+48,46,0,0,1,0,9,0,100,111,116,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,\r
+59,120,0,48,18,118,0,59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,48,46,18,\r
+118,0,59,119,0,18,117,0,59,119,0,48,46,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,9,120,0,0,0,1,8,\r
+58,115,113,114,116,0,58,100,111,116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,\r
+104,0,1,0,0,10,118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,\r
+1,0,9,0,108,101,110,103,116,104,0,1,0,0,11,118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,\r
+118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,12,118,0,0,0,1,8,58,115,113,\r
+114,116,0,58,100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,\r
+1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,\r
+0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,108,101,110,103,\r
+116,104,0,18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,11,118,0,0,1,\r
+0,0,11,117,0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,\r
+116,97,110,99,101,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,\r
+18,117,0,47,0,0,0,0,1,0,11,0,99,114,111,115,115,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,118,\r
+101,99,51,0,18,118,0,59,121,0,18,117,0,59,122,0,48,18,117,0,59,121,0,18,118,0,59,122,0,48,47,0,18,\r
+118,0,59,122,0,18,117,0,59,120,0,48,18,117,0,59,122,0,18,118,0,59,120,0,48,47,0,18,118,0,59,120,0,\r
+18,117,0,59,121,0,48,18,117,0,59,120,0,18,118,0,59,121,0,48,47,0,0,0,0,1,0,9,0,110,111,114,109,97,\r
+108,105,122,101,0,1,0,0,9,120,0,0,0,1,8,17,49,0,48,0,0,0,0,1,0,10,0,110,111,114,109,97,108,105,122,\r
+101,0,1,0,0,10,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,11,0,\r
+110,111,114,109,97,108,105,122,101,0,1,0,0,11,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,\r
+18,118,0,0,0,49,0,0,1,0,12,0,110,111,114,109,97,108,105,122,101,0,1,0,0,12,118,0,0,0,1,8,18,118,0,\r
+58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,9,0,102,97,99,101,102,111,114,119,97,114,100,\r
+0,1,0,0,9,78,0,0,1,0,0,9,73,0,0,1,0,0,9,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,\r
+102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,10,0,102,97,99,101,102,111,114,\r
+119,97,114,100,0,1,0,0,10,78,0,0,1,0,0,10,73,0,0,1,0,0,10,78,114,101,102,0,0,0,1,8,58,100,111,116,\r
+0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,11,0,102,97,99,\r
+101,102,111,114,119,97,114,100,0,1,0,0,11,78,0,0,1,0,0,11,73,0,0,1,0,0,11,78,114,101,102,0,0,0,1,8,\r
+58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,\r
+12,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,12,78,0,0,1,0,0,12,73,0,0,1,0,0,12,78,114,\r
+101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,\r
+78,0,54,31,0,0,1,0,9,0,114,101,102,108,101,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,0,1,8,18,73,0,17,\r
+50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,10,0,114,101,102,108,\r
+101,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,\r
+0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,11,0,114,101,102,108,101,99,116,0,1,0,0,11,73,0,0,1,0,0,11,\r
+78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,\r
+0,12,0,114,101,102,108,101,99,116,0,1,0,0,12,73,0,0,1,0,0,12,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,\r
+58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,9,0,114,101,102,114,97,99,116,0,1,\r
+0,0,9,73,0,0,1,0,0,9,78,0,0,1,0,0,9,101,116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,\r
+0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,\r
+111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,\r
+0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,\r
+115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,1,0,10,0,114,101,102,114,97,99,116,0,1,0,0,10,\r
+73,0,0,1,0,0,10,78,0,0,1,0,0,9,101,116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,\r
+101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,\r
+116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,\r
+14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,\r
+113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,1,0,11,0,114,101,102,114,97,99,116,0,1,0,0,11,73,0,\r
+0,1,0,0,11,78,0,0,1,0,0,9,101,116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,\r
+116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,\r
+18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,\r
+18,101,116,97,0,18,73,0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,\r
+114,116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,1,0,12,0,114,101,102,114,97,99,116,0,1,0,0,12,73,0,0,1,\r
+0,0,12,78,0,0,1,0,0,9,101,116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,\r
+97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,\r
+78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,\r
+101,116,97,0,18,73,0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,\r
+116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,1,0,13,0,109,97,116,114,105,120,67,111,109,112,77,117,108,\r
+116,0,1,0,0,13,109,0,0,1,0,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,110,0,16,\r
+8,48,0,57,48,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,0,0,0,0,1,0,14,0,109,97,116,114,\r
+105,120,67,111,109,112,77,117,108,116,0,1,0,0,14,109,0,0,1,0,0,14,110,0,0,0,1,8,58,109,97,116,51,0,\r
+18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,\r
+0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,48,0,0,0,0,1,0,15,0,109,97,116,114,105,120,67,111,\r
+109,112,77,117,108,116,0,1,0,0,15,109,0,0,1,0,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,\r
+48,0,57,18,110,0,16,8,48,0,57,48,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,0,18,109,0,16,\r
+10,50,0,57,18,110,0,16,10,50,0,57,48,0,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,48,0,0,0,0,1,\r
+0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,98,118,101,99,50,\r
+0,18,118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,0,59,121,0,40,0,0,0,0,1,0,3,0,\r
+108,101,115,115,84,104,97,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,98,118,101,99,51,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,0,59,121,0,40,0,18,118,0,59,122,0,\r
+18,117,0,59,122,0,40,0,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,\r
+0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,\r
+0,59,121,0,40,0,18,118,0,59,122,0,18,117,0,59,122,0,40,0,18,118,0,59,119,0,18,117,0,59,119,0,40,0,\r
+0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,8,58,98,118,101,\r
+99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,0,59,121,0,40,0,0,0,0,1,\r
+0,3,0,108,101,115,115,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,8,58,98,118,101,99,51,0,\r
+18,118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,0,59,121,0,40,0,18,118,0,59,122,\r
+0,18,117,0,59,122,0,40,0,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,117,\r
+0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,40,0,18,118,0,59,121,0,18,117,\r
+0,59,121,0,40,0,18,118,0,59,122,0,18,117,0,59,122,0,40,0,18,118,0,59,119,0,18,117,0,59,119,0,40,0,\r
+0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,\r
+0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,42,0,18,118,0,59,121,0,18,117,0,59,\r
+121,0,42,0,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,\r
+11,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,42,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,42,0,18,118,0,59,122,0,18,117,0,59,122,0,42,0,0,0,0,1,0,4,0,108,101,115,115,84,\r
+104,97,110,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,98,118,101,99,52,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,42,0,18,118,0,59,121,0,18,117,0,59,121,0,42,0,18,118,0,59,122,0,\r
+18,117,0,59,122,0,42,0,18,118,0,59,119,0,18,117,0,59,119,0,42,0,0,0,0,1,0,2,0,108,101,115,115,84,\r
+104,97,110,69,113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,\r
+0,59,120,0,18,117,0,59,120,0,42,0,18,118,0,59,121,0,18,117,0,59,121,0,42,0,0,0,0,1,0,3,0,108,101,\r
+115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,8,58,98,118,101,99,\r
+51,0,18,118,0,59,120,0,18,117,0,59,120,0,42,0,18,118,0,59,121,0,18,117,0,59,121,0,42,0,18,118,0,59,\r
+122,0,18,117,0,59,122,0,42,0,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,\r
+8,118,0,0,1,0,0,8,117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,42,0,18,\r
+118,0,59,121,0,18,117,0,59,121,0,42,0,18,118,0,59,122,0,18,117,0,59,122,0,42,0,18,118,0,59,119,0,\r
+18,117,0,59,119,0,42,0,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,10,118,0,0,1,\r
+0,0,10,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,41,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,41,0,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,11,118,\r
+0,0,1,0,0,11,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,41,0,18,118,0,\r
+59,121,0,18,117,0,59,121,0,41,0,18,118,0,59,122,0,18,117,0,59,122,0,41,0,0,0,0,1,0,4,0,103,114,101,\r
+97,116,101,114,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,98,118,101,99,52,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,41,0,18,118,0,59,121,0,18,117,0,59,121,0,41,0,18,118,0,59,122,0,\r
+18,117,0,59,122,0,41,0,18,118,0,59,119,0,18,117,0,59,119,0,41,0,0,0,0,1,0,2,0,103,114,101,97,116,\r
+101,114,84,104,97,110,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,\r
+120,0,18,117,0,59,120,0,41,0,18,118,0,59,121,0,18,117,0,59,121,0,41,0,0,0,0,1,0,3,0,103,114,101,97,\r
+116,101,114,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,\r
+59,120,0,18,117,0,59,120,0,41,0,18,118,0,59,121,0,18,117,0,59,121,0,41,0,18,118,0,59,122,0,18,117,\r
+0,59,122,0,41,0,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,\r
+117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,41,0,18,118,0,59,121,0,18,\r
+117,0,59,121,0,41,0,18,118,0,59,122,0,18,117,0,59,122,0,41,0,18,118,0,59,119,0,18,117,0,59,119,0,\r
+41,0,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,10,118,0,0,1,\r
+0,0,10,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,43,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,43,0,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,\r
+108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,\r
+120,0,43,0,18,118,0,59,121,0,18,117,0,59,121,0,43,0,18,118,0,59,122,0,18,117,0,59,122,0,43,0,0,0,0,\r
+1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,\r
+0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,43,0,18,118,0,59,121,0,18,117,\r
+0,59,121,0,43,0,18,118,0,59,122,0,18,117,0,59,122,0,43,0,18,118,0,59,119,0,18,117,0,59,119,0,43,0,\r
+0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,\r
+117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,43,0,18,118,0,59,121,0,18,\r
+117,0,59,121,0,43,0,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,\r
+0,7,118,0,0,1,0,0,7,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,43,0,\r
+18,118,0,59,121,0,18,117,0,59,121,0,43,0,18,118,0,59,122,0,18,117,0,59,122,0,43,0,0,0,0,1,0,4,0,\r
+103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,8,\r
+58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,43,0,18,118,0,59,121,0,18,117,0,59,121,0,\r
+43,0,18,118,0,59,122,0,18,117,0,59,122,0,43,0,18,118,0,59,119,0,18,117,0,59,119,0,43,0,0,0,0,1,0,2,\r
+0,101,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,\r
+120,0,18,117,0,59,120,0,38,0,18,118,0,59,121,0,18,117,0,59,121,0,38,0,0,0,0,1,0,3,0,101,113,117,97,\r
+108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,\r
+120,0,38,0,18,118,0,59,121,0,18,117,0,59,121,0,38,0,18,118,0,59,122,0,18,117,0,59,122,0,38,0,0,0,0,\r
+1,0,4,0,101,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,\r
+0,59,120,0,18,117,0,59,120,0,38,0,18,118,0,59,121,0,18,117,0,59,121,0,38,0,18,118,0,59,122,0,18,\r
+117,0,59,122,0,38,0,18,118,0,59,119,0,18,117,0,59,119,0,38,0,0,0,0,1,0,2,0,101,113,117,97,108,0,1,\r
+0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,38,0,\r
+18,118,0,59,121,0,18,117,0,59,121,0,38,0,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,\r
+7,117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,38,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,38,0,18,118,0,59,122,0,18,117,0,59,122,0,38,0,0,0,0,1,0,4,0,101,113,117,97,108,0,\r
+1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,38,\r
+0,18,118,0,59,121,0,18,117,0,59,121,0,38,0,18,118,0,59,122,0,18,117,0,59,122,0,38,0,18,118,0,59,\r
+119,0,18,117,0,59,119,0,38,0,0,0,0,1,0,2,0,110,111,116,69,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,\r
+10,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,39,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,39,0,0,0,0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,\r
+0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,39,0,18,118,0,59,121,0,18,117,\r
+0,59,121,0,39,0,18,118,0,59,122,0,18,117,0,59,122,0,39,0,0,0,0,1,0,4,0,110,111,116,69,113,117,97,\r
+108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,\r
+120,0,39,0,18,118,0,59,121,0,18,117,0,59,121,0,39,0,18,118,0,59,122,0,18,117,0,59,122,0,39,0,18,\r
+118,0,59,119,0,18,117,0,59,119,0,39,0,0,0,0,1,0,2,0,110,111,116,69,113,117,97,108,0,1,0,0,6,118,0,\r
+0,1,0,0,6,117,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,39,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,39,0,0,0,0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,\r
+117,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,39,0,18,118,0,59,121,0,18,\r
+117,0,59,121,0,39,0,18,118,0,59,122,0,18,117,0,59,122,0,39,0,0,0,0,1,0,4,0,110,111,116,69,113,117,\r
+97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,\r
+120,0,39,0,18,118,0,59,121,0,18,117,0,59,121,0,39,0,18,118,0,59,122,0,18,117,0,59,122,0,39,0,18,\r
+118,0,59,119,0,18,117,0,59,119,0,39,0,0,0,0,1,0,1,0,97,110,121,0,1,0,0,2,118,0,0,0,1,8,18,118,0,59,\r
+120,0,18,118,0,59,121,0,32,0,0,1,0,1,0,97,110,121,0,1,0,0,3,118,0,0,0,1,8,18,118,0,59,120,0,18,118,\r
+0,59,121,0,32,18,118,0,59,122,0,32,0,0,1,0,1,0,97,110,121,0,1,0,0,4,118,0,0,0,1,8,18,118,0,59,120,\r
+0,18,118,0,59,121,0,32,18,118,0,59,122,0,32,18,118,0,59,119,0,32,0,0,1,0,1,0,97,108,108,0,1,0,0,2,\r
+118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,0,0,1,0,1,0,97,108,108,0,1,0,0,3,118,0,0,0,1,\r
+8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,118,0,59,122,0,34,0,0,1,0,1,0,97,108,108,0,1,0,0,4,118,\r
+0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,118,0,59,122,0,34,18,118,0,59,119,0,34,0,0,1,0,\r
+2,0,110,111,116,0,1,0,0,2,118,0,0,0,1,8,58,98,118,101,99,50,0,18,118,0,59,120,0,56,0,18,118,0,59,\r
+121,0,56,0,0,0,0,1,0,3,0,110,111,116,0,1,0,0,3,118,0,0,0,1,8,58,98,118,101,99,51,0,18,118,0,59,120,\r
+0,56,0,18,118,0,59,121,0,56,0,18,118,0,59,122,0,56,0,0,0,0,1,0,4,0,110,111,116,0,1,0,0,4,118,0,0,0,\r
+1,8,58,98,118,101,99,52,0,18,118,0,59,120,0,56,0,18,118,0,59,121,0,56,0,18,118,0,59,122,0,56,0,18,\r
+118,0,59,119,0,56,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,49,68,0,1,0,0,16,115,97,109,112,108,\r
+101,114,0,0,1,0,0,9,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,\r
+0,116,101,120,116,117,114,101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,\r
+10,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,\r
+114,0,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,116,0,49,0,0,0,0,1,0,12,0,116,\r
+101,120,116,117,114,101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,12,99,\r
+111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,\r
+18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,1,0,12,0,116,101,120,\r
+116,117,114,101,50,68,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,0,\r
+1,3,2,0,12,1,116,101,120,101,108,0,0,0,4,118,101,99,52,95,116,101,120,50,100,0,18,116,101,120,101,\r
+108,0,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,114,100,0,0,0,8,18,116,101,120,101,108,0,0,\r
+0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,\r
+0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,\r
+108,101,114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,\r
+0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,0,0,0,0,0,0,1,0,12,0,\r
+116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,\r
+12,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,108,101,\r
+114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,\r
+18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,0,0,1,0,12,0,116,101,\r
+120,116,117,114,101,51,68,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,\r
+0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,80,\r
+114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,116,\r
+101,120,116,117,114,101,51,68,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,\r
+114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,\r
+111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,\r
+49,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,67,117,98,101,0,1,0,0,19,115,97,109,112,108,\r
101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,\r
-0,116,101,120,116,117,114,101,51,68,80,114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,\r
-12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,\r
-115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,\r
-0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,\r
-99,111,111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,51,68,0,18,115,97,109,112,\r
-108,101,114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,67,117,98,101,0,1,0,0,19,115,\r
-97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,\r
-0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,\r
-99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,\r
-119,50,68,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,\r
-101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,80,114,111,106,0,1,0,0,20,\r
-115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,\r
-59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,\r
-116,0,17,48,0,48,0,0,20,0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,\r
-100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,119,49,68,0,18,115,97,109,112,108,101,114,0,0,18,\r
-117,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,\r
-101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,\r
-111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,\r
-114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,\r
-100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,119,50,68,0,18,115,\r
-97,109,112,108,101,114,0,0,18,117,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,9,120,0,0,0,1,3,\r
-2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,105,115,101,49,0,18,97,0,0,18,120,0,0,0,8,18,97,0,\r
-0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,10,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,\r
-95,110,111,105,115,101,50,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,\r
-1,0,0,11,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,105,115,101,51,0,18,97,0,0,\r
-18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,12,120,0,0,0,1,3,2,0,9,1,97,0,0,\r
-0,4,102,108,111,97,116,95,110,111,105,115,101,52,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,10,0,\r
-110,111,105,115,101,50,0,1,0,0,9,120,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,\r
-105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,\r
-57,0,51,52,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,10,120,0,0,0,1,3,\r
-2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,\r
-121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,\r
-0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,11,120,0,0,0,1,3,2,0,10,\r
-1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,\r
-58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,\r
-17,51,0,50,51,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,12,120,0,\r
-0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,\r
-117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,\r
-55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,11,0,110,\r
-111,105,115,101,51,0,1,0,0,9,120,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,\r
-115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,\r
-51,52,0,0,46,0,0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,\r
-46,0,0,20,0,8,18,117,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,10,120,0,0,0,1,3,2,0,11,1,117,0,\r
-0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,\r
-111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,\r
-0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,53,0,52,55,0,\r
-0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,11,\r
-120,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,\r
-9,18,117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,0,0,\r
-17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,\r
-49,0,18,120,0,58,118,101,99,51,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,\r
-0,46,0,0,20,0,8,18,117,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,12,120,0,0,0,1,3,2,0,11,1,117,\r
-0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,\r
-111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,\r
-0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,49,0,18,\r
-120,0,58,118,101,99,52,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,\r
-51,0,49,57,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,9,120,0,0,0,\r
-1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,117,\r
-0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,20,0,9,18,117,0,59,122,\r
-0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,46,0,0,20,0,9,18,117,0,59,119,0,58,110,\r
-111,105,115,101,49,0,18,120,0,17,50,51,0,53,52,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,12,0,110,111,105,\r
-115,101,52,0,1,0,0,10,120,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,\r
-49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,\r
-17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,\r
-101,49,0,18,120,0,58,118,101,99,50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,20,0,9,18,\r
-117,0,59,119,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,50,51,0,53,52,0,0,0,17,\r
-50,57,0,49,49,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,11,120,0,\r
-0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,\r
-117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,0,0,17,\r
-55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,49,0,\r
-18,120,0,58,118,101,99,51,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,\r
-0,0,20,0,9,18,117,0,59,119,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,50,51,0,53,\r
-52,0,0,0,17,50,57,0,49,49,0,0,0,17,51,49,0,57,49,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,1,0,12,0,110,\r
-111,105,115,101,52,0,1,0,0,12,120,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,110,111,105,\r
-115,101,49,0,18,120,0,0,0,20,0,9,18,117,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,\r
-99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,\r
-0,20,0,9,18,117,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,53,0,52,55,0,\r
-0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,51,0,49,57,0,0,0,0,46,0,0,20,0,9,18,117,0,\r
-59,119,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,50,51,0,53,52,0,0,0,17,50,57,0,\r
-49,49,0,0,0,17,51,49,0,57,49,0,0,0,17,51,55,0,52,56,0,0,0,0,46,0,0,20,0,8,18,117,0,0,0,0\r
+0,115,104,97,100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,\r
+100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,0,1,\r
+0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,\r
+48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,80,114,111,106,0,1,0,0,20,115,97,109,112,\r
+108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,115,104,97,100,111,119,49,68,0,18,115,97,\r
+109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,\r
+0,59,113,0,49,0,17,48,0,48,0,0,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,\r
+49,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,\r
+101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,115,104,97,100,111,119,50,68,0,18,115,97,109,\r
+112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,\r
+113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,\r
+114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,\r
+0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,105,115,101,49,0,18,97,0,\r
+0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,10,120,0,0,0,1,3,2,0,9,1,97,0,\r
+0,0,4,102,108,111,97,116,95,110,111,105,115,101,50,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,\r
+110,111,105,115,101,49,0,1,0,0,11,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,\r
+105,115,101,51,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,12,\r
+120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,105,115,101,52,0,18,97,0,0,18,120,0,\r
+0,0,8,18,97,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,50,0,58,\r
+110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,\r
+46,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,110,\r
+111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,\r
+57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,11,\r
+120,0,0,0,1,8,58,118,101,99,50,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,\r
+49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,\r
+46,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,50,0,58,110,\r
+111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,\r
+57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,0,0,0,0,1,0,\r
+11,0,110,111,105,115,101,51,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,101,49,0,\r
+18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,0,58,110,111,105,\r
+115,101,49,0,18,120,0,17,53,0,52,55,0,0,46,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,10,\r
+120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,\r
+49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,0,58,110,111,\r
+105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,0,\r
+0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,\r
+115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,\r
+52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,\r
+58,118,101,99,51,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,0,0,0,0,\r
+0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,\r
+101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,\r
+0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,0,58,110,111,105,115,101,\r
+49,0,18,120,0,58,118,101,99,52,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,\r
+17,49,51,0,49,57,0,0,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,9,120,0,0,0,1,8,58,\r
+118,101,99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,\r
+49,57,0,51,52,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,46,0,0,0,58,110,\r
+111,105,115,101,49,0,18,120,0,17,50,51,0,53,52,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,\r
+0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,\r
+105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,0,\r
+58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,\r
+0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,50,51,0,53,52,0,0,0,17,50,57,\r
+0,49,49,0,0,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,11,120,0,0,0,1,8,58,118,101,\r
+99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,\r
+99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,0,58,110,111,105,\r
+115,101,49,0,18,120,0,58,118,101,99,51,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,\r
+52,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,50,51,0,53,52,0,0,0,\r
+17,50,57,0,49,49,0,0,0,17,51,49,0,57,49,0,0,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,\r
+0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,\r
+115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,\r
+0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,53,\r
+0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,51,0,49,57,0,0,0,0,46,0,0,0,58,\r
+110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,\r
+17,51,49,0,57,49,0,0,0,17,51,55,0,52,56,0,0,0,0,46,0,0,0,0,0,0,0\r
}\r
\r
vec2 __constructor (const float f) {\r
- vec2 u;\r
- u.x = f;\r
- u.y = f;\r
- return u;\r
+ return vec2 (f, f);\r
}\r
\r
vec2 __constructor (const int i) {\r
}\r
\r
vec3 __constructor (const float f) {\r
- vec3 u;\r
- u.x = f;\r
- u.y = f;\r
- u.z = f;\r
- return u;\r
+ return vec3 (f, f, f);\r
}\r
\r
vec3 __constructor (const int i) {\r
}\r
\r
vec4 __constructor (const float f) {\r
- vec4 u;\r
- u.x = f;\r
- u.y = f;\r
- u.z = f;\r
- u.w = f;\r
- return u;\r
+ return vec4 (f, f, f, f);\r
}\r
\r
vec4 __constructor (const int i) {\r
}\r
\r
ivec2 __constructor (const int i) {\r
- ivec2 u;\r
- u.x = i;\r
- u.y = i;\r
- return u;\r
+ return ivec2 (i, i);\r
}\r
\r
ivec2 __constructor (const float f) {\r
}\r
\r
ivec3 __constructor (const int i) {\r
- ivec3 u;\r
- u.x = i;\r
- u.y = i;\r
- u.z = i;\r
- return u;\r
+ return ivec3 (i, i, i);\r
}\r
\r
ivec3 __constructor (const float f) {\r
}\r
\r
ivec4 __constructor (const int i) {\r
- ivec4 u;\r
- u.x = i;\r
- u.y = i;\r
- u.z = i;\r
- u.w = i;\r
- return u;\r
+ return ivec4 (i, i, i, i);\r
}\r
\r
ivec4 __constructor (const float f) {\r
}\r
\r
bvec2 __constructor (const bool b) {\r
- bvec2 u;\r
- u.x = b;\r
- u.y = b;\r
- return u;\r
+ return bvec2 (b, b);\r
}\r
\r
bvec2 __constructor (const float f) {\r
}\r
\r
bvec3 __constructor (const bool b) {\r
- bvec3 u;\r
- u.x = b;\r
- u.y = b;\r
- u.z = b;\r
- return u;\r
+ return bvec3 (b, b, b);\r
}\r
\r
bvec3 __constructor (const float f) {\r
}\r
\r
bvec4 __constructor (const bool b) {\r
- bvec4 u;\r
- u.x = b;\r
- u.y = b;\r
- u.z = b;\r
- u.w = b;\r
- return u;\r
+ return bvec4 (b, b, b, b);\r
}\r
\r
bvec4 __constructor (const float f) {\r
}\r
\r
mat2 __constructor (const float f) {\r
- mat2 m;\r
- m[0].x = f;\r
- m[0].y = 0.0;\r
- m[1].x = 0.0;\r
- m[1].y = f;\r
- return m;\r
+ return mat2 (f, 0.0, 0.0, f);\r
}\r
\r
mat2 __constructor (const int i) {\r
}\r
\r
mat3 __constructor (const float f) {\r
- mat3 m;\r
- m[0].x = f;\r
- m[0].y = 0.0;\r
- m[0].z = 0.0;\r
- m[1].x = 0.0;\r
- m[1].y = f;\r
- m[1].z = 0.0;\r
- m[2].x = 0.0;\r
- m[2].y = 0.0;\r
- m[2].z = f;\r
- return m;\r
+ return mat3 (f, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, f);\r
}\r
\r
mat3 __constructor (const int i) {\r
}\r
\r
mat4 __constructor (const float f) {\r
- mat4 m;\r
- m[0].x = f;\r
- m[0].y = 0.0;\r
- m[0].z = 0.0;\r
- m[0].w = 0.0;\r
- m[1].x = 0.0;\r
- m[1].y = f;\r
- m[1].z = 0.0;\r
- m[1].w = 0.0;\r
- m[2].x = 0.0;\r
- m[2].y = 0.0;\r
- m[2].z = f;\r
- m[2].w = 0.0;\r
- m[3].x = 0.0;\r
- m[3].y = 0.0;\r
- m[3].z = 0.0;\r
- m[3].w = f;\r
- return m;\r
+ return mat4 (f, 0.0, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, 0.0, f);\r
}\r
\r
mat4 __constructor (const int i) {\r
}\r
\r
vec2 __operator * (const mat2 m, const vec2 v) {\r
- vec2 u;\r
- u.x = v.x * m[0].x + v.y * m[1].x;\r
- u.y = v.x * m[0].y + v.y * m[1].y;\r
- return u;\r
+ return vec2 (\r
+ v.x * m[0].x + v.y * m[1].x,\r
+ v.x * m[0].y + v.y * m[1].y\r
+ );\r
}\r
\r
mat2 __operator * (const mat2 m, const mat2 n) {\r
- mat2 o;\r
- o[0] = m * n[0];\r
- o[1] = m * n[1];\r
- return o;\r
+ return mat2 (m * n[0], m * n[1]);\r
}\r
\r
void __operator *= (inout mat2 m, const mat2 n) {\r
}\r
\r
vec3 __operator * (const mat3 m, const vec3 v) {\r
- vec3 u;\r
- u.x = v.x * m[0].x + v.y * m[1].x + v.z * m[2].x;\r
- u.y = v.x * m[0].y + v.y * m[1].y + v.z * m[2].y;\r
- u.z = v.x * m[0].z + v.y * m[1].z + v.z * m[2].z;\r
- return u;\r
+ return vec3 (\r
+ v.x * m[0].x + v.y * m[1].x + v.z * m[2].x,\r
+ v.x * m[0].y + v.y * m[1].y + v.z * m[2].y,\r
+ v.x * m[0].z + v.y * m[1].z + v.z * m[2].z\r
+ );\r
}\r
\r
mat3 __operator * (const mat3 m, const mat3 n) {\r
- mat3 o;\r
- o[0] = m * n[0];\r
- o[1] = m * n[1];\r
- o[2] = m * n[2];\r
- return o;\r
+ return mat3 (m * n[0], m * n[1], m * n[2]);\r
}\r
\r
void __operator *= (inout mat3 m, const mat3 n) {\r
}\r
\r
vec4 __operator * (const mat4 m, const vec4 v) {\r
- vec4 u;\r
- u.x = v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x;\r
- u.y = v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y;\r
- u.z = v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z;\r
- u.w = v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w;\r
- return u;\r
+ return vec4 (\r
+ v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x,\r
+ v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y,\r
+ v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z,\r
+ v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w\r
+ );\r
}\r
\r
mat4 __operator * (const mat4 m, const mat4 n) {\r
- mat4 o;\r
- o[0] = m * n[0];\r
- o[1] = m * n[1];\r
- o[2] = m * n[2];\r
- o[3] = m * n[3];\r
- return o;\r
+ return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);\r
}\r
\r
void __operator *= (inout mat4 m, const mat4 n) {\r
}\r
\r
vec2 __operator * (const vec2 v, const mat2 m) {\r
- vec2 u;\r
- u.x = v.x * m[0].x + v.y * m[0].y;\r
- u.y = v.x * m[1].x + v.y * m[1].y;\r
- return u;\r
+ return vec2 (\r
+ v.x * m[0].x + v.y * m[0].y,\r
+ v.x * m[1].x + v.y * m[1].y\r
+ );\r
}\r
\r
void __operator *= (inout vec2 v, const mat2 m) {\r
}\r
\r
vec3 __operator * (const vec3 v, const mat3 m) {\r
- vec3 u;\r
- u.x = v.x * m[0].x + v.y * m[0].y + v.z * m[0].z;\r
- u.y = v.x * m[1].x + v.y * m[1].y + v.z * m[1].z;\r
- u.z = v.x * m[2].x + v.y * m[2].y + v.z * m[2].z;\r
- return u;\r
+ return vec3 (\r
+ v.x * m[0].x + v.y * m[0].y + v.z * m[0].z,\r
+ v.x * m[1].x + v.y * m[1].y + v.z * m[1].z,\r
+ v.x * m[2].x + v.y * m[2].y + v.z * m[2].z\r
+ );\r
}\r
\r
void __operator *= (inout vec3 v, const mat3 m) {\r
}\r
\r
vec4 __operator * (const vec4 v, const mat4 m) {\r
- vec4 u;\r
- u.x = v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w;\r
- u.y = v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w;\r
- u.z = v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w;\r
- u.w = v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w;\r
- return u;\r
+ return vec4 (\r
+ v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w,\r
+ v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w,\r
+ v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w,\r
+ v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w\r
+ );\r
}\r
\r
void __operator *= (inout vec4 v, const mat4 m) {\r
}\r
\r
vec2 __operator + (const vec2 v, const vec2 u) {\r
- vec2 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- return t;\r
+ return vec2 (v.x + u.x, v.y + u.y);\r
}\r
\r
vec2 __operator - (const vec2 v, const vec2 u) {\r
- vec2 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- return t;\r
+ return vec2 (v.x - u.x, v.y - u.y);\r
}\r
\r
vec2 __operator * (const vec2 v, const vec2 u) {\r
- vec2 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- return t;\r
+ return vec2 (v.x * u.x, v.y * u.y);\r
}\r
\r
vec2 __operator / (const vec2 v, const vec2 u) {\r
- vec2 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- return t;\r
+ return vec2 (v.x / u.x, v.y / u.y);\r
}\r
\r
vec3 __operator + (const vec3 v, const vec3 u) {\r
- vec3 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- t.z = v.z + u.z;\r
- return t;\r
+ return vec3 (v.x + u.x, v.y + u.y, v.z + u.z);\r
}\r
\r
vec3 __operator - (const vec3 v, const vec3 u) {\r
- vec3 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- t.z = v.z - u.z;\r
- return t;\r
+ return vec3 (v.x - u.x, v.y - u.y, v.z - u.z);\r
}\r
\r
vec3 __operator * (const vec3 v, const vec3 u) {\r
- vec3 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- t.z = v.z * u.z;\r
- return t;\r
+ return vec3 (v.x * u.x, v.y * u.y, v.z * u.z);\r
}\r
\r
vec3 __operator / (const vec3 v, const vec3 u) {\r
- vec3 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- t.z = v.z / u.z;\r
- return t;\r
+ return vec3 (v.x / u.x, v.y / u.y, v.z / u.z);\r
}\r
\r
vec4 __operator + (const vec4 v, const vec4 u) {\r
- vec4 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- t.z = v.z + u.z;\r
- t.w = v.w + u.w;\r
- return t;\r
+ return vec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\r
}\r
\r
vec4 __operator - (const vec4 v, const vec4 u) {\r
- vec4 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- t.z = v.z - u.z;\r
- t.w = v.w - u.w;\r
- return t;\r
+ return vec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\r
}\r
\r
vec4 __operator * (const vec4 v, const vec4 u) {\r
- vec4 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- t.z = v.z * u.z;\r
- t.w = v.w * u.w;\r
- return t;\r
+ return vec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\r
}\r
\r
vec4 __operator / (const vec4 v, const vec4 u) {\r
- vec4 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- t.z = v.z / u.z;\r
- t.w = v.w / u.w;\r
- return t;\r
+ return vec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\r
}\r
\r
ivec2 __operator + (const ivec2 v, const ivec2 u) {\r
- ivec2 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- return t;\r
+ return ivec2 (v.x + u.x, v.y + u.y);\r
}\r
\r
ivec2 __operator - (const ivec2 v, const ivec2 u) {\r
- ivec2 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- return t;\r
+ return ivec2 (v.x - u.x, v.y - u.y);\r
}\r
\r
ivec2 __operator * (const ivec2 v, const ivec2 u) {\r
- ivec2 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- return t;\r
+ return ivec2 (v.x * u.x, v.y * u.y);\r
}\r
\r
ivec2 __operator / (const ivec2 v, const ivec2 u) {\r
- ivec2 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- return t;\r
+ return ivec2 (v.x / u.x, v.y / u.y);\r
}\r
\r
ivec3 __operator + (const ivec3 v, const ivec3 u) {\r
- ivec3 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- t.z = v.z + u.z;\r
- return t;\r
+ return ivec3 (v.x + u.x, v.y + u.y, v.z + u.z);\r
}\r
\r
ivec3 __operator - (const ivec3 v, const ivec3 u) {\r
- ivec3 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- t.z = v.z - u.z;\r
- return t;\r
+ return ivec3 (v.x - u.x, v.y - u.y, v.z - u.z);\r
}\r
\r
ivec3 __operator * (const ivec3 v, const ivec3 u) {\r
- ivec3 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- t.z = v.z * u.z;\r
- return t;\r
+ return ivec3 (v.x * u.x, v.y * u.y, v.z * u.z);\r
}\r
\r
ivec3 __operator / (const ivec3 v, const ivec3 u) {\r
- ivec3 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- t.z = v.z / u.z;\r
- return t;\r
+ return ivec3 (v.x / u.x, v.y / u.y, v.z / u.z);\r
}\r
\r
ivec4 __operator + (const ivec4 v, const ivec4 u) {\r
- ivec4 t;\r
- t.x = v.x + u.x;\r
- t.y = v.y + u.y;\r
- t.z = v.z + u.z;\r
- t.w = v.w + u.w;\r
- return t;\r
+ return ivec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\r
}\r
\r
ivec4 __operator - (const ivec4 v, const ivec4 u) {\r
- ivec4 t;\r
- t.x = v.x - u.x;\r
- t.y = v.y - u.y;\r
- t.z = v.z - u.z;\r
- t.w = v.w - u.w;\r
- return t;\r
+ return ivec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\r
}\r
\r
ivec4 __operator * (const ivec4 v, const ivec4 u) {\r
- ivec4 t;\r
- t.x = v.x * u.x;\r
- t.y = v.y * u.y;\r
- t.z = v.z * u.z;\r
- t.w = v.w * u.w;\r
- return t;\r
+ return ivec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\r
}\r
\r
ivec4 __operator / (const ivec4 v, const ivec4 u) {\r
- ivec4 t;\r
- t.x = v.x / u.x;\r
- t.y = v.y / u.y;\r
- t.z = v.z / u.z;\r
- t.w = v.w / u.w;\r
- return t;\r
+ return ivec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\r
}\r
\r
mat2 __operator + (const mat2 m, const mat2 n) {\r
- mat2 o;\r
- o[0] = m[0] + n[0];\r
- o[1] = m[1] + n[1];\r
- return o;\r
+ return mat2 (m[0] + n[0], m[1] + n[1]);\r
}\r
\r
mat2 __operator - (const mat2 m, const mat2 n) {\r
- mat2 o;\r
- o[0] = m[0] - n[0];\r
- o[1] = m[1] - n[1];\r
- return o;\r
+ return mat2 (m[0] - n[0], m[1] - n[1]);\r
}\r
\r
mat2 __operator / (const mat2 m, const mat2 n) {\r
- mat2 o;\r
- o[0] = m[0] / n[0];\r
- o[1] = m[1] / n[1];\r
- return o;\r
+ return mat2 (m[0] / n[0], m[1] / n[1]);\r
}\r
\r
mat3 __operator + (const mat3 m, const mat3 n) {\r
- mat3 o;\r
- o[0] = m[0] + n[0];\r
- o[1] = m[1] + n[1];\r
- o[2] = m[2] + n[2];\r
- return o;\r
+ return mat3 (m[0] + n[0], m[1] + n[1], m[2] + n[2]);\r
}\r
\r
mat3 __operator - (const mat3 m, const mat3 n) {\r
- mat3 o;\r
- o[0] = m[0] - n[0];\r
- o[1] = m[1] - n[1];\r
- o[2] = m[2] - n[2];\r
- return o;\r
+ return mat3 (m[0] - n[0], m[1] - n[1], m[2] - n[2]);\r
}\r
\r
mat3 __operator / (const mat3 m, const mat3 n) {\r
- mat3 o;\r
- o[0] = m[0] / n[0];\r
- o[1] = m[1] / n[1];\r
- o[2] = m[2] / n[2];\r
- return o;\r
+ return mat3 (m[0] / n[0], m[1] / n[1], m[2] / n[2]);\r
}\r
\r
mat4 __operator + (const mat4 m, const mat4 n) {\r
- mat4 o;\r
- o[0] = m[0] + n[0];\r
- o[1] = m[1] + n[1];\r
- o[2] = m[2] + n[2];\r
- o[3] = m[3] + n[3];\r
- return o;\r
+ return mat4 (m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3]);\r
}\r
\r
mat4 __operator - (const mat4 m, const mat4 n) {\r
- mat4 o;\r
- o[0] = m[0] - n[0];\r
- o[1] = m[1] - n[1];\r
- o[2] = m[2] - n[2];\r
- o[3] = m[3] - n[3];\r
- return o;\r
+ return mat4 (m[0] - n[0], m[1] - n[1], m[2] - n[2], m[3] - n[3]);\r
}\r
\r
mat4 __operator / (const mat4 m, const mat4 n) {\r
- mat4 o;\r
- o[0] = m[0] / n[0];\r
- o[1] = m[1] / n[1];\r
- o[2] = m[2] / n[2];\r
- o[3] = m[3] / n[3];\r
- return o;\r
+ return mat4 (m[0] / n[0], m[1] / n[1], m[2] / n[2], m[3] / n[3]);\r
}\r
\r
vec2 __operator + (const float a, const vec2 u) {\r
- vec2 t;\r
- t.x = a + u.x;\r
- t.y = a + u.y;\r
- return t;\r
+ return vec2 (a + u.x, a + u.y);\r
}\r
\r
vec2 __operator + (const vec2 v, const float b) {\r
- vec2 t;\r
- t.x = v.x + b;\r
- t.y = v.y + b;\r
- return t;\r
+ return vec2 (v.x + b, v.y + b);\r
}\r
\r
vec2 __operator - (const float a, const vec2 u) {\r
- vec2 t;\r
- t.x = a - u.x;\r
- t.y = a - u.y;\r
- return t;\r
+ return vec2 (a - u.x, a - u.y);\r
}\r
\r
vec2 __operator - (const vec2 v, const float b) {\r
- vec2 t;\r
- t.x = v.x - b;\r
- t.y = v.y - b;\r
- return t;\r
+ return vec2 (v.x - b, v.y - b);\r
}\r
\r
vec2 __operator * (const float a, const vec2 u) {\r
- vec2 t;\r
- t.x = a * u.x;\r
- t.y = a * u.y;\r
- return t;\r
+ return vec2 (a * u.x, a * u.y);\r
}\r
\r
vec2 __operator * (const vec2 v, const float b) {\r
- vec2 t;\r
- t.x = v.x * b;\r
- t.y = v.y * b;\r
- return t;\r
+ return vec2 (v.x * b, v.y * b);\r
}\r
\r
vec2 __operator / (const float a, const vec2 u) {\r
- vec2 t;\r
- t.x = a / u.x;\r
- t.y = a / u.y;\r
- return t;\r
+ return vec2 (a / u.x, a / u.y);\r
}\r
\r
vec2 __operator / (const vec2 v, const float b) {\r
- vec2 t;\r
- t.x = v.x / b;\r
- t.y = v.y / b;\r
- return t;\r
+ return vec2 (v.x / b, v.y / b);\r
}\r
\r
vec3 __operator + (const float a, const vec3 u) {\r
- vec3 t;\r
- t.x = a + u.x;\r
- t.y = a + u.y;\r
- t.z = a + u.z;\r
- return t;\r
+ return vec3 (a + u.x, a + u.y, a + u.z);\r
}\r
\r
vec3 __operator + (const vec3 v, const float b) {\r
- vec3 t;\r
- t.x = v.x + b;\r
- t.y = v.y + b;\r
- t.z = v.z + b;\r
- return t;\r
+ return vec3 (v.x + b, v.y + b, v.z + b);\r
}\r
\r
vec3 __operator - (const float a, const vec3 u) {\r
- vec3 t;\r
- t.x = a - u.x;\r
- t.y = a - u.y;\r
- t.z = a - u.z;\r
- return t;\r
+ return vec3 (a - u.x, a - u.y, a - u.z);\r
}\r
\r
vec3 __operator - (const vec3 v, const float b) {\r
- vec3 t;\r
- t.x = v.x - b;\r
- t.y = v.y - b;\r
- t.z = v.z - b;\r
- return t;\r
+ return vec3 (v.x - b, v.y - b, v.z - b);\r
}\r
\r
vec3 __operator * (const float a, const vec3 u) {\r
- vec3 t;\r
- t.x = a * u.x;\r
- t.y = a * u.y;\r
- t.z = a * u.z;\r
- return t;\r
+ return vec3 (a * u.x, a * u.y, a * u.z);\r
}\r
\r
vec3 __operator * (const vec3 v, const float b) {\r
- vec3 t;\r
- t.x = v.x * b;\r
- t.y = v.y * b;\r
- t.z = v.z * b;\r
- return t;\r
+ return vec3 (v.x * b, v.y * b, v.z * b);\r
}\r
\r
vec3 __operator / (const float a, const vec3 u) {\r
- vec3 t;\r
- t.x = a / u.x;\r
- t.y = a / u.y;\r
- t.z = a / u.z;\r
- return t;\r
+ return vec3 (a / u.x, a / u.y, a / u.z);\r
}\r
\r
vec3 __operator / (const vec3 v, const float b) {\r
- vec3 t;\r
- t.x = v.x / b;\r
- t.y = v.y / b;\r
- t.z = v.z / b;\r
- return t;\r
+ return vec3 (v.x / b, v.y / b, v.z / b);\r
}\r
\r
vec4 __operator + (const float a, const vec4 u) {\r
- vec4 t;\r
- t.x = a + u.x;\r
- t.y = a + u.y;\r
- t.z = a + u.z;\r
- t.w = a + u.w;\r
- return t;\r
+ return vec4 (a + u.x, a + u.y, a + u.z, a + u.w);\r
}\r
\r
vec4 __operator + (const vec4 v, const float b) {\r
- vec4 t;\r
- t.x = v.x + b;\r
- t.y = v.y + b;\r
- t.z = v.z + b;\r
- t.w = v.w + b;\r
- return t;\r
+ return vec4 (v.x + b, v.y + b, v.z + b, v.w + b);\r
}\r
\r
vec4 __operator - (const float a, const vec4 u) {\r
- vec4 t;\r
- t.x = a - u.x;\r
- t.y = a - u.y;\r
- t.z = a - u.z;\r
- t.w = a - u.w;\r
- return t;\r
+ return vec4 (a - u.x, a - u.y, a - u.z, a - u.w);\r
}\r
\r
vec4 __operator - (const vec4 v, const float b) {\r
- vec4 t;\r
- t.x = v.x - b;\r
- t.y = v.y - b;\r
- t.z = v.z - b;\r
- t.w = v.w - b;\r
- return t;\r
+ return vec4 (v.x - b, v.y - b, v.z - b, v.w - b);\r
}\r
\r
vec4 __operator * (const float a, const vec4 u) {\r
- vec4 t;\r
- t.x = a * u.x;\r
- t.y = a * u.y;\r
- t.z = a * u.z;\r
- t.w = a * u.w;\r
- return t;\r
+ return vec4 (a * u.x, a * u.y, a * u.z, a * u.w);\r
}\r
\r
vec4 __operator * (const vec4 v, const float b) {\r
- vec4 t;\r
- t.x = v.x * b;\r
- t.y = v.y * b;\r
- t.z = v.z * b;\r
- t.w = v.w * b;\r
- return t;\r
+ return vec4 (v.x * b, v.y * b, v.z * b, v.w * b);\r
}\r
\r
vec4 __operator / (const float a, const vec4 u) {\r
- vec4 t;\r
- t.x = a / u.x;\r
- t.y = a / u.y;\r
- t.z = a / u.z;\r
- t.w = a / u.w;\r
- return t;\r
+ return vec4 (a / u.x, a / u.y, a / u.z, a / u.w);\r
}\r
\r
vec4 __operator / (const vec4 v, const float b) {\r
- vec4 t;\r
- t.x = v.x / b;\r
- t.y = v.y / b;\r
- t.z = v.z / b;\r
- t.w = v.w / b;\r
- return t;\r
+ return vec4 (v.x / b, v.y / b, v.z / b, v.w / b);\r
}\r
\r
mat2 __operator + (const float a, const mat2 n) {\r
- mat2 o;\r
- o[0] = a + n[0];\r
- o[1] = a + n[1];\r
- return o;\r
+ return mat2 (a + n[0], a + n[1]);\r
}\r
\r
mat2 __operator + (const mat2 m, const float b) {\r
- mat2 o;\r
- o[0] = m[0] + b;\r
- o[1] = m[1] + b;\r
- return o;\r
+ return mat2 (m[0] + b, m[1] + b);\r
}\r
\r
mat2 __operator - (const float a, const mat2 n) {\r
- mat2 o;\r
- o[0] = a - n[0];\r
- o[1] = a - n[1];\r
- return o;\r
+ return mat2 (a - n[0], a - n[1]);\r
}\r
\r
mat2 __operator - (const mat2 m, const float b) {\r
- mat2 o;\r
- o[0] = m[0] - b;\r
- o[1] = m[1] - b;\r
- return o;\r
+ return mat2 (m[0] - b, m[1] - b);\r
}\r
\r
mat2 __operator * (const float a, const mat2 n) {\r
- mat2 o;\r
- o[0] = a * n[0];\r
- o[1] = a * n[1];\r
- return o;\r
+ return mat2 (a * n[0], a * n[1]);\r
}\r
\r
mat2 __operator * (const mat2 m, const float b) {\r
- mat2 o;\r
- o[0] = m[0] * b;\r
- o[1] = m[1] * b;\r
- return o;\r
+ return mat2 (m[0] * b, m[1] * b);\r
}\r
\r
mat2 __operator / (const float a, const mat2 n) {\r
- mat2 o;\r
- o[0] = a / n[0];\r
- o[1] = a / n[1];\r
- return o;\r
+ return mat2 (a / n[0], a / n[1]);\r
}\r
\r
mat2 __operator / (const mat2 m, const float b) {\r
- mat2 o;\r
- o[0] = m[0] / b;\r
- o[1] = m[1] / b;\r
- return o;\r
+ return mat2 (m[0] / b, m[1] / b);\r
}\r
\r
mat3 __operator + (const float a, const mat3 n) {\r
- mat3 o;\r
- o[0] = a + n[0];\r
- o[1] = a + n[1];\r
- o[2] = a + n[2];\r
- return o;\r
+ return mat3 (a + n[0], a + n[1], a + n[2]);\r
}\r
\r
mat3 __operator + (const mat3 m, const float b) {\r
- mat3 o;\r
- o[0] = m[0] + b;\r
- o[1] = m[1] + b;\r
- o[2] = m[2] + b;\r
- return o;\r
+ return mat3 (m[0] + b, m[1] + b, m[2] + b);\r
}\r
\r
mat3 __operator - (const float a, const mat3 n) {\r
- mat3 o;\r
- o[0] = a - n[0];\r
- o[1] = a - n[1];\r
- o[2] = a - n[2];\r
- return o;\r
+ return mat3 (a - n[0], a - n[1], a - n[2]);\r
}\r
\r
mat3 __operator - (const mat3 m, const float b) {\r
- mat3 o;\r
- o[0] = m[0] - b;\r
- o[1] = m[1] - b;\r
- o[2] = m[2] - b;\r
- return o;\r
+ return mat3 (m[0] - b, m[1] - b, m[2] - b);\r
}\r
\r
mat3 __operator * (const float a, const mat3 n) {\r
- mat3 o;\r
- o[0] = a * n[0];\r
- o[1] = a * n[1];\r
- o[2] = a * n[2];\r
- return o;\r
+ return mat3 (a * n[0], a * n[1], a * n[2]);\r
}\r
\r
mat3 __operator * (const mat3 m, const float b) {\r
- mat3 o;\r
- o[0] = m[0] * b;\r
- o[1] = m[1] * b;\r
- o[2] = m[2] * b;\r
- return o;\r
+ return mat3 (m[0] * b, m[1] * b, m[2] * b);\r
}\r
\r
mat3 __operator / (const float a, const mat3 n) {\r
- mat3 o;\r
- o[0] = a / n[0];\r
- o[1] = a / n[1];\r
- o[2] = a / n[2];\r
- return o;\r
+ return mat3 (a / n[0], a / n[1], a / n[2]);\r
}\r
\r
mat3 __operator / (const mat3 m, const float b) {\r
- mat3 o;\r
- o[0] = m[0] / b;\r
- o[1] = m[1] / b;\r
- o[2] = m[2] / b;\r
- return o;\r
+ return mat3 (m[0] / b, m[1] / b, m[2] / b);\r
}\r
\r
mat4 __operator + (const float a, const mat4 n) {\r
- mat4 o;\r
- o[0] = a + n[0];\r
- o[1] = a + n[1];\r
- o[2] = a + n[2];\r
- o[3] = a + n[3];\r
- return o;\r
+ return mat4 (a + n[0], a + n[1], a + n[2], a + n[3]);\r
}\r
\r
mat4 __operator + (const mat4 m, const float b) {\r
- mat4 o;\r
- o[0] = m[0] + b;\r
- o[1] = m[1] + b;\r
- o[2] = m[2] + b;\r
- o[3] = m[3] + b;\r
- return o;\r
+ return mat4 (m[0] + b, m[1] + b, m[2] + b, m[3] + b);\r
}\r
\r
mat4 __operator - (const float a, const mat4 n) {\r
- mat4 o;\r
- o[0] = a - n[0];\r
- o[1] = a - n[1];\r
- o[2] = a - n[2];\r
- o[3] = a - n[3];\r
- return o;\r
+ return mat4 (a - n[0], a - n[1], a - n[2], a - n[3]);\r
}\r
\r
mat4 __operator - (const mat4 m, const float b) {\r
- mat4 o;\r
- o[0] = m[0] - b;\r
- o[1] = m[1] - b;\r
- o[2] = m[2] - b;\r
- o[3] = m[3] - b;\r
- return o;\r
+ return mat4 (m[0] - b, m[1] - b, m[2] - b, m[3] - b);\r
}\r
\r
mat4 __operator * (const float a, const mat4 n) {\r
- mat4 o;\r
- o[0] = a * n[0];\r
- o[1] = a * n[1];\r
- o[2] = a * n[2];\r
- o[3] = a * n[3];\r
- return o;\r
+ return mat4 (a * n[0], a * n[1], a * n[2], a * n[3]);\r
}\r
\r
mat4 __operator * (const mat4 m, const float b) {\r
- mat4 o;\r
- o[0] = m[0] * b;\r
- o[1] = m[1] * b;\r
- o[2] = m[2] * b;\r
- o[3] = m[3] * b;\r
- return o;\r
+ return mat4 (m[0] * b, m[1] * b, m[2] * b, m[3] * b);\r
}\r
\r
mat4 __operator / (const float a, const mat4 n) {\r
- mat4 o;\r
- o[0] = a / n[0];\r
- o[1] = a / n[1];\r
- o[2] = a / n[2];\r
- o[3] = a / n[3];\r
- return o;\r
+ return mat4 (a / n[0], a / n[1], a / n[2], a / n[3]);\r
}\r
\r
mat4 __operator / (const mat4 m, const float b) {\r
- mat4 o;\r
- o[0] = m[0] / b;\r
- o[1] = m[1] / b;\r
- o[2] = m[2] / b;\r
- o[3] = m[3] / b;\r
- return o;\r
+ return mat4 (m[0] / b, m[1] / b, m[2] / b, m[3] / b);\r
}\r
\r
ivec2 __operator + (const int a, const ivec2 u) {\r
}\r
\r
vec2 __operator - (const vec2 v) {\r
- vec2 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- return u;\r
+ return vec2 (-v.x, -v.y);\r
}\r
\r
vec3 __operator - (const vec3 v) {\r
- vec3 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- u.z = -v.z;\r
- return u;\r
+ return vec3 (-v.x, -v.y, -v.z);\r
}\r
\r
vec4 __operator - (const vec4 v) {\r
- vec4 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- u.z = -v.z;\r
- u.w = -v.w;\r
- return u;\r
+ return vec4 (-v.x, -v.y, -v.z, -v.w);\r
}\r
\r
ivec2 __operator - (const ivec2 v) {\r
- ivec2 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- return u;\r
+ return ivec2 (-v.x, -v.y);\r
}\r
\r
ivec3 __operator - (const ivec3 v) {\r
- ivec3 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- u.z = -v.z;\r
- return u;\r
+ return ivec3 (-v.x, -v.y, -v.z);\r
}\r
\r
ivec4 __operator - (const ivec4 v) {\r
- ivec4 u;\r
- u.x = -v.x;\r
- u.y = -v.y;\r
- u.z = -v.z;\r
- u.w = -v.w;\r
- return u;\r
+ return ivec4 (-v.x, -v.y, -v.z, -v.w);\r
}\r
\r
mat2 __operator - (const mat2 m) {\r
- mat2 n;\r
- n[0] = -m[0];\r
- n[1] = -m[1];\r
- return n;\r
+ return mat2 (-m[0], -m[1]);\r
}\r
\r
mat3 __operator - (const mat3 m) {\r
- mat3 n;\r
- n[0] = -m[0];\r
- n[1] = -m[1];\r
- n[2] = -m[2];\r
- return n;\r
+ return mat3 (-m[0], -m[1], -m[2]);\r
}\r
\r
mat4 __operator - (const mat4 m) {\r
- mat4 n;\r
- n[0] = -m[0];\r
- n[1] = -m[1];\r
- n[2] = -m[2];\r
- n[3] = -m[3];\r
- return n;\r
+ return mat4 (-m[0], -m[1], -m[2], -m[3]);\r
}\r
\r
void __operator -- (inout float a) {\r
}\r
\r
vec2 __operator -- (inout vec2 v, const int) {\r
- vec2 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- return u;\r
+ return vec2 (v.x--, v.y--);\r
}\r
\r
vec3 __operator -- (inout vec3 v, const int) {\r
- vec3 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- --v.z;\r
- return u;\r
+ return vec3 (v.x--, v.y--, v.z--);\r
}\r
\r
vec4 __operator -- (inout vec4 v, const int) {\r
- vec4 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- --v.z;\r
- --v.w;\r
- return u;\r
+ return vec4 (v.x--, v.y--, v.z--, v.w--);\r
}\r
\r
ivec2 __operator -- (inout ivec2 v, const int) {\r
- ivec2 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- return u;\r
+ return ivec2 (v.x--, v.y--);\r
}\r
\r
ivec3 __operator -- (inout ivec3 v, const int) {\r
- ivec3 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- --v.z;\r
- return u;\r
+ return ivec3 (v.x--, v.y--, v.z--);\r
}\r
\r
ivec4 __operator -- (inout ivec4 v, const int) {\r
- ivec4 u;\r
- u = v;\r
- --v.x;\r
- --v.y;\r
- --v.z;\r
- --v.w;\r
- return u;\r
+ return ivec4 (v.x--, v.y--, v.z--, v.w--);\r
}\r
\r
mat2 __operator -- (inout mat2 m, const int) {\r
- mat2 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- return n;\r
+ return mat2 (m[0]--, m[1]--);\r
}\r
\r
mat3 __operator -- (inout mat3 m, const int) {\r
- mat3 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- --m[2];\r
- return n;\r
+ return mat3 (m[0]--, m[1]--, m[2]--);\r
}\r
\r
mat4 __operator -- (inout mat4 m, const int) {\r
- mat4 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- --m[2];\r
- --m[3];\r
- return n;\r
+ return mat4 (m[0]--, m[1]--, m[2]--, m[3]--);\r
}\r
\r
float __operator ++ (inout float a, const int) {\r
}\r
\r
vec2 __operator ++ (inout vec2 v, const int) {\r
- vec2 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- return u;\r
+ return vec2 (v.x++, v.y++);\r
}\r
\r
vec3 __operator ++ (inout vec3 v, const int) {\r
- vec3 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- ++v.z;\r
- return u;\r
+ return vec3 (v.x++, v.y++, v.z++);\r
}\r
\r
vec4 __operator ++ (inout vec4 v, const int) {\r
- vec4 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- ++v.z;\r
- ++v.w;\r
- return u;\r
+ return vec4 (v.x++, v.y++, v.z++, v.w++);\r
}\r
\r
ivec2 __operator ++ (inout ivec2 v, const int) {\r
- ivec2 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- return u;\r
+ return ivec2 (v.x++, v.y++);\r
}\r
\r
ivec3 __operator ++ (inout ivec3 v, const int) {\r
- ivec3 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- ++v.z;\r
- return u;\r
+ return ivec3 (v.x++, v.y++, v.z++);\r
}\r
\r
ivec4 __operator ++ (inout ivec4 v, const int) {\r
- ivec4 u;\r
- u = v;\r
- ++v.x;\r
- ++v.y;\r
- ++v.z;\r
- ++v.w;\r
- return u;\r
+ return ivec4 (v.x++, v.y++, v.z++, v.w++);\r
}\r
\r
mat2 __operator ++ (inout mat2 m, const int) {\r
- mat2 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- return n;\r
+ return mat2 (m[0]++, m[1]++);\r
}\r
\r
mat3 __operator ++ (inout mat3 m, const int) {\r
- mat3 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- --m[2];\r
- return n;\r
+ return mat3 (m[0]++, m[1]++, m[2]++);\r
}\r
\r
mat4 __operator ++ (inout mat4 m, const int) {\r
- mat4 n;\r
- n = m;\r
- --m[0];\r
- --m[1];\r
- --m[2];\r
- --m[3];\r
- return n;\r
+ return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);\r
}\r
\r
bool __operator < (const float a, const float b) {\r
1,0,9,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,102,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,\r
18,102,0,0,18,105,0,0,0,8,18,102,0,0,0,1,0,1,1,1,1,0,1,98,0,0,0,1,8,18,98,0,0,0,1,0,5,1,1,1,0,5,\r
105,0,0,0,1,8,18,105,0,0,0,1,0,9,1,1,1,0,9,102,0,0,0,1,8,18,102,0,0,0,1,0,10,1,1,1,0,9,102,0,0,0,1,\r
-3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,18,102,0,20,0,9,18,117,0,59,121,0,18,102,0,20,0,8,18,117,\r
-0,0,0,1,0,10,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,\r
-116,0,18,120,0,0,18,105,0,0,0,8,58,118,101,99,50,0,18,120,0,0,0,0,0,1,0,10,1,1,1,0,1,98,0,0,0,1,8,\r
-58,118,101,99,50,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,11,1,1,1,0,9,102,0,0,0,1,3,\r
-2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,18,102,0,20,0,9,18,117,0,59,121,0,18,102,0,20,0,9,18,117,0,\r
-59,122,0,18,102,0,20,0,8,18,117,0,0,0,1,0,11,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,\r
-116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,118,101,99,51,0,18,120,0,0,0,0,\r
-0,1,0,11,1,1,1,0,1,98,0,0,0,1,8,58,118,101,99,51,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,\r
-0,1,0,12,1,1,1,0,9,102,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,18,102,0,20,0,9,18,117,0,\r
-59,121,0,18,102,0,20,0,9,18,117,0,59,122,0,18,102,0,20,0,9,18,117,0,59,119,0,18,102,0,20,0,8,18,\r
-117,0,0,0,1,0,12,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,111,\r
-97,116,0,18,120,0,0,18,105,0,0,0,8,58,118,101,99,52,0,18,120,0,0,0,0,0,1,0,12,1,1,1,0,1,98,0,0,0,1,\r
-8,58,118,101,99,52,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,6,1,1,1,0,5,105,0,0,0,1,\r
-3,2,0,6,1,117,0,0,0,9,18,117,0,59,120,0,18,105,0,20,0,9,18,117,0,59,121,0,18,105,0,20,0,8,18,117,0,\r
-0,0,1,0,6,1,1,1,0,9,102,0,0,0,1,8,58,105,118,101,99,50,0,58,105,110,116,0,18,102,0,0,0,0,0,0,0,1,0,\r
-6,1,1,1,0,1,98,0,0,0,1,8,58,105,118,101,99,50,0,58,105,110,116,0,18,98,0,0,0,0,0,0,0,1,0,7,1,1,1,0,\r
-5,105,0,0,0,1,3,2,0,7,1,117,0,0,0,9,18,117,0,59,120,0,18,105,0,20,0,9,18,117,0,59,121,0,18,105,0,\r
-20,0,9,18,117,0,59,122,0,18,105,0,20,0,8,18,117,0,0,0,1,0,7,1,1,1,0,9,102,0,0,0,1,8,58,105,118,101,\r
-99,51,0,58,105,110,116,0,18,102,0,0,0,0,0,0,0,1,0,7,1,1,1,0,1,98,0,0,0,1,8,58,105,118,101,99,51,0,\r
-58,105,110,116,0,18,98,0,0,0,0,0,0,0,1,0,8,1,1,1,0,5,105,0,0,0,1,3,2,0,8,1,117,0,0,0,9,18,117,0,59,\r
-120,0,18,105,0,20,0,9,18,117,0,59,121,0,18,105,0,20,0,9,18,117,0,59,122,0,18,105,0,20,0,9,18,117,0,\r
-59,119,0,18,105,0,20,0,8,18,117,0,0,0,1,0,8,1,1,1,0,9,102,0,0,0,1,8,58,105,118,101,99,52,0,58,105,\r
-110,116,0,18,102,0,0,0,0,0,0,0,1,0,8,1,1,1,0,1,98,0,0,0,1,8,58,105,118,101,99,52,0,58,105,110,116,\r
-0,18,98,0,0,0,0,0,0,0,1,0,2,1,1,1,0,1,98,0,0,0,1,3,2,0,2,1,117,0,0,0,9,18,117,0,59,120,0,18,98,0,\r
-20,0,9,18,117,0,59,121,0,18,98,0,20,0,8,18,117,0,0,0,1,0,2,1,1,1,0,9,102,0,0,0,1,8,58,98,118,101,\r
-99,50,0,58,98,111,111,108,0,18,102,0,0,0,0,0,0,0,1,0,2,1,1,1,0,5,105,0,0,0,1,8,58,98,118,101,99,50,\r
-0,58,98,111,111,108,0,18,105,0,0,0,0,0,0,0,1,0,3,1,1,1,0,1,98,0,0,0,1,3,2,0,3,1,117,0,0,0,9,18,117,\r
-0,59,120,0,18,98,0,20,0,9,18,117,0,59,121,0,18,98,0,20,0,9,18,117,0,59,122,0,18,98,0,20,0,8,18,117,\r
-0,0,0,1,0,3,1,1,1,0,9,102,0,0,0,1,8,58,98,118,101,99,51,0,58,98,111,111,108,0,18,102,0,0,0,0,0,0,0,\r
-1,0,3,1,1,1,0,5,105,0,0,0,1,8,58,98,118,101,99,51,0,58,98,111,111,108,0,18,105,0,0,0,0,0,0,0,1,0,4,\r
-1,1,1,0,1,98,0,0,0,1,3,2,0,4,1,117,0,0,0,9,18,117,0,59,120,0,18,98,0,20,0,9,18,117,0,59,121,0,18,\r
-98,0,20,0,9,18,117,0,59,122,0,18,98,0,20,0,9,18,117,0,59,119,0,18,98,0,20,0,8,18,117,0,0,0,1,0,4,1,\r
-1,1,0,9,102,0,0,0,1,8,58,98,118,101,99,52,0,58,98,111,111,108,0,18,102,0,0,0,0,0,0,0,1,0,4,1,1,1,0,\r
-5,105,0,0,0,1,8,58,98,118,101,99,52,0,58,98,111,111,108,0,18,105,0,0,0,0,0,0,0,1,0,13,1,1,1,0,9,\r
-102,0,0,0,1,3,2,0,13,1,109,0,0,0,9,18,109,0,16,8,48,0,57,59,120,0,18,102,0,20,0,9,18,109,0,16,8,48,\r
-0,57,59,121,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,\r
-16,10,49,0,57,59,121,0,18,102,0,20,0,8,18,109,0,0,0,1,0,13,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,\r
-0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,109,97,116,50,0,18,\r
-120,0,0,0,0,0,1,0,13,1,1,1,0,1,98,0,0,0,1,8,58,109,97,116,50,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,\r
-0,31,0,0,0,0,1,0,14,1,1,1,0,9,102,0,0,0,1,3,2,0,14,1,109,0,0,0,9,18,109,0,16,8,48,0,57,59,120,0,18,\r
-102,0,20,0,9,18,109,0,16,8,48,0,57,59,121,0,17,48,0,48,0,0,20,0,9,18,109,0,16,8,48,0,57,59,122,0,\r
-17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,\r
-59,121,0,18,102,0,20,0,9,18,109,0,16,10,49,0,57,59,122,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,50,0,\r
-57,59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,50,0,57,59,121,0,17,48,0,48,0,0,20,0,9,18,109,0,\r
-16,10,50,0,57,59,122,0,18,102,0,20,0,8,18,109,0,0,0,1,0,14,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,\r
-0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,109,97,116,51,0,18,\r
-120,0,0,0,0,0,1,0,14,1,1,1,0,1,98,0,0,0,1,8,58,109,97,116,51,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,\r
-0,31,0,0,0,0,1,0,15,1,1,1,0,9,102,0,0,0,1,3,2,0,15,1,109,0,0,0,9,18,109,0,16,8,48,0,57,59,120,0,18,\r
-102,0,20,0,9,18,109,0,16,8,48,0,57,59,121,0,17,48,0,48,0,0,20,0,9,18,109,0,16,8,48,0,57,59,122,0,\r
-17,48,0,48,0,0,20,0,9,18,109,0,16,8,48,0,57,59,119,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,\r
-59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,59,121,0,18,102,0,20,0,9,18,109,0,16,10,49,0,\r
-57,59,122,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,49,0,57,59,119,0,17,48,0,48,0,0,20,0,9,18,109,0,\r
-16,10,50,0,57,59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,50,0,57,59,121,0,17,48,0,48,0,0,20,0,9,\r
-18,109,0,16,10,50,0,57,59,122,0,18,102,0,20,0,9,18,109,0,16,10,50,0,57,59,119,0,17,48,0,48,0,0,20,\r
-0,9,18,109,0,16,10,51,0,57,59,120,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,51,0,57,59,121,0,17,48,0,\r
-48,0,0,20,0,9,18,109,0,16,10,51,0,57,59,122,0,17,48,0,48,0,0,20,0,9,18,109,0,16,10,51,0,57,59,119,\r
-0,18,102,0,20,0,8,18,109,0,0,0,1,0,15,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,116,95,\r
-116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,109,97,116,52,0,18,120,0,0,0,0,0,1,0,\r
-15,1,1,1,0,1,98,0,0,0,1,8,58,109,97,116,52,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,\r
-0,2,1,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,97,100,100,0,18,97,0,0,18,97,0,0,\r
-18,98,0,0,0,0,1,0,9,2,27,1,1,0,9,97,0,0,0,1,3,2,0,9,1,98,0,0,0,4,102,108,111,97,116,95,110,101,103,\r
-97,116,101,0,18,98,0,0,18,97,0,0,0,8,18,98,0,0,0,1,0,0,2,2,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,\r
-9,1,99,0,0,0,4,102,108,111,97,116,95,110,101,103,97,116,101,0,18,99,0,0,18,98,0,0,0,4,102,108,111,\r
-97,116,95,97,100,100,0,18,97,0,0,18,97,0,0,18,99,0,0,0,0,1,0,0,2,3,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,\r
-1,4,102,108,111,97,116,95,109,117,108,116,105,112,108,121,0,18,97,0,0,18,97,0,0,18,98,0,0,0,0,1,0,\r
-0,2,4,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,100,105,118,105,100,101,0,18,97,0,\r
-0,18,97,0,0,18,98,0,0,0,0,1,0,9,2,26,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,0,0,0,4,102,\r
-108,111,97,116,95,97,100,100,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,0,2,1,1,0,2,5,97,\r
-0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,\r
-111,97,116,0,18,98,0,0,0,46,0,0,20,0,0,1,0,5,2,27,1,1,0,5,97,0,0,0,1,3,2,0,9,1,120,0,0,0,3,2,0,5,1,\r
-98,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,102,108,111,97,\r
-116,95,110,101,103,97,116,101,0,18,120,0,0,18,120,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,\r
-116,0,18,98,0,0,18,120,0,0,0,8,18,98,0,0,0,1,0,0,2,2,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,\r
-18,98,0,54,21,0,0,1,0,9,2,21,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,0,0,0,4,102,108,111,97,\r
-116,95,109,117,108,116,105,112,108,121,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,0,2,3,1,\r
-0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0,0,58,\r
-102,108,111,97,116,0,18,98,0,0,0,48,0,0,20,0,0,1,0,9,2,22,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,\r
-9,1,99,0,0,0,4,102,108,111,97,116,95,100,105,118,105,100,101,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,\r
-18,99,0,0,0,1,0,0,2,4,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,\r
-97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,49,0,0,20,0,0,1,0,0,2,1,1,0,2,10,118,0,0,\r
-1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,\r
-121,0,21,0,0,1,0,0,2,2,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,\r
-22,0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,0,1,0,0,2,3,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,\r
-9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,0,1,0,0,2,4,\r
-1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,\r
-0,18,117,0,59,121,0,24,0,0,1,0,0,2,1,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,\r
-117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,117,0,59,122,\r
-0,21,0,0,1,0,0,2,2,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,\r
-0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,0,1,0,0,2,\r
-3,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,\r
-121,0,18,117,0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,0,1,0,0,2,4,1,0,2,11,118,0,\r
-0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,\r
-121,0,24,0,9,18,118,0,59,122,0,18,117,0,59,122,0,24,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,12,117,0,\r
-0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,\r
-118,0,59,122,0,18,117,0,59,122,0,21,0,9,18,118,0,59,119,0,18,117,0,59,119,0,21,0,0,1,0,0,2,2,1,0,2,\r
-12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,59,121,0,18,\r
-117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,9,18,118,0,59,119,0,18,117,0,59,119,\r
-0,22,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,\r
-0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,9,18,118,0,\r
-59,119,0,18,117,0,59,119,0,23,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,\r
-120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,118,0,59,122,0,18,117,\r
-0,59,122,0,24,0,9,18,118,0,59,119,0,18,117,0,59,119,0,24,0,0,1,0,0,2,1,1,0,2,6,118,0,0,1,1,0,6,117,\r
-0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,0,1,\r
-0,0,2,2,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,\r
-59,121,0,18,117,0,59,121,0,22,0,0,1,0,0,2,3,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,\r
-0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,0,1,0,0,2,4,1,0,2,6,118,0,0,1,\r
-1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,\r
-24,0,0,1,0,0,2,1,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,\r
-18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,117,0,59,122,0,21,0,0,1,0,0,2,2,1,\r
-0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,59,121,0,\r
-18,117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,0,1,0,0,2,3,1,0,2,7,118,0,0,1,1,\r
-0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,\r
-23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,0,1,0,0,2,4,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,\r
-18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,118,0,59,\r
-122,0,18,117,0,59,122,0,24,0,0,1,0,0,2,1,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,\r
-18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,117,0,59,\r
-122,0,21,0,9,18,118,0,59,119,0,18,117,0,59,119,0,21,0,0,1,0,0,2,2,1,0,2,8,118,0,0,1,1,0,8,117,0,0,\r
-0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,9,18,118,\r
-0,59,122,0,18,117,0,59,122,0,22,0,9,18,118,0,59,119,0,18,117,0,59,119,0,22,0,0,1,0,0,2,3,1,0,2,8,\r
-118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,\r
-0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,9,18,118,0,59,119,0,18,117,0,59,119,0,\r
-23,0,0,1,0,0,2,4,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,\r
-18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,118,0,59,122,0,18,117,0,59,122,0,24,0,9,18,118,0,59,\r
-119,0,18,117,0,59,119,0,24,0,0,1,0,0,2,1,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,\r
-0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,21,0,0,1,0,0,2,2,1,\r
-0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,22,0,9,18,109,0,\r
-16,10,49,0,57,18,110,0,16,10,49,0,57,22,0,0,1,0,10,2,21,1,1,0,13,109,0,0,1,1,0,10,118,0,0,0,1,3,2,\r
-0,10,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,\r
-59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,20,0,9,18,117,0,59,121,0,18,118,0,59,120,0,18,109,0,\r
-16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,20,0,8,18,117,0,0,\r
-0,1,0,13,2,21,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,\r
-18,109,0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,57,18,109,0,18,110,0,16,10,49,0,57,48,\r
-20,0,8,18,111,0,0,0,1,0,0,2,3,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,\r
-48,20,0,0,1,0,0,2,4,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,\r
-0,57,24,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,0,0,1,0,0,2,1,1,0,2,14,109,0,0,1,1,0,\r
-14,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,\r
-0,16,10,49,0,57,21,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,0,0,1,0,0,2,2,1,0,2,14,109,\r
-0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,22,0,9,18,109,0,16,10,49,0,\r
-57,18,110,0,16,10,49,0,57,22,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,22,0,0,1,0,11,2,21,\r
-1,1,0,14,109,0,0,1,1,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,\r
-18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,\r
-59,122,0,18,109,0,16,10,50,0,57,59,120,0,48,46,20,0,9,18,117,0,59,121,0,18,118,0,59,120,0,18,109,0,\r
-16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,\r
-18,109,0,16,10,50,0,57,59,121,0,48,46,20,0,9,18,117,0,59,122,0,18,118,0,59,120,0,18,109,0,16,8,48,\r
-0,57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,122,0,48,46,18,118,0,59,122,0,18,109,\r
-0,16,10,50,0,57,59,122,0,48,46,20,0,8,18,117,0,0,0,1,0,14,2,21,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,\r
-1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,\r
-16,10,49,0,57,18,109,0,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,0,57,18,109,0,18,110,0,\r
-16,10,50,0,57,48,20,0,8,18,111,0,0,0,1,0,0,2,3,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,18,\r
-109,0,18,110,0,48,20,0,0,1,0,0,2,4,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,16,8,48,0,57,\r
-18,110,0,16,8,48,0,57,24,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,0,9,18,109,0,16,10,\r
-50,0,57,18,110,0,16,10,50,0,57,24,0,0,1,0,0,2,1,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,\r
-16,8,48,0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,21,0,9,18,\r
-109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,0,9,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,21,\r
-0,0,1,0,0,2,2,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,\r
-22,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,\r
-50,0,57,22,0,9,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,22,0,0,1,0,12,2,21,1,1,0,15,109,0,0,1,\r
-1,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,18,109,0,16,8,48,0,\r
-57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,59,122,0,18,109,0,\r
-16,10,50,0,57,59,120,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,120,0,48,46,20,0,9,18,117,\r
-0,59,121,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,\r
-0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,121,0,48,46,18,118,0,59,119,0,18,\r
-109,0,16,10,51,0,57,59,121,0,48,46,20,0,9,18,117,0,59,122,0,18,118,0,59,120,0,18,109,0,16,8,48,0,\r
-57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,122,0,48,46,18,118,0,59,122,0,18,109,0,\r
-16,10,50,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,122,0,48,46,20,0,9,18,117,\r
-0,59,119,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,119,0,48,18,118,0,59,121,0,18,109,0,16,10,49,\r
-0,57,59,119,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,119,0,48,46,18,118,0,59,119,0,18,\r
-109,0,16,10,51,0,57,59,119,0,48,46,20,0,8,18,117,0,0,0,1,0,15,2,21,1,1,0,15,109,0,0,1,1,0,15,110,0,\r
-0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,\r
-0,16,10,49,0,57,18,109,0,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,0,57,18,109,0,18,110,0,\r
-16,10,50,0,57,48,20,0,9,18,111,0,16,10,51,0,57,18,109,0,18,110,0,16,10,51,0,57,48,20,0,8,18,111,0,\r
-0,0,1,0,0,2,3,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,\r
-4,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,24,0,9,18,\r
-109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,24,\r
-0,9,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,24,0,0,1,0,0,2,1,1,0,2,10,118,0,0,1,1,0,9,97,0,0,\r
-0,1,9,18,118,0,59,120,0,18,97,0,21,0,9,18,118,0,59,121,0,18,97,0,21,0,0,1,0,0,2,2,1,0,2,10,118,0,0,\r
-1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,121,0,18,97,0,22,0,0,1,0,0,2,3,1,\r
-0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,0,9,18,118,0,59,121,0,18,97,0,23,\r
-0,0,1,0,0,2,4,1,0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,\r
-121,0,18,97,0,24,0,0,1,0,0,2,1,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,\r
-0,9,18,118,0,59,121,0,18,97,0,21,0,9,18,118,0,59,122,0,18,97,0,21,0,0,1,0,0,2,2,1,0,2,11,118,0,0,1,\r
-1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,121,0,18,97,0,22,0,9,18,118,0,59,\r
-122,0,18,97,0,22,0,0,1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,\r
-0,9,18,118,0,59,121,0,18,97,0,23,0,9,18,118,0,59,122,0,18,97,0,23,0,0,1,0,0,2,4,1,0,2,11,118,0,0,1,\r
-1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,121,0,18,97,0,24,0,9,18,118,0,59,\r
-122,0,18,97,0,24,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,\r
-0,9,18,118,0,59,121,0,18,97,0,21,0,9,18,118,0,59,122,0,18,97,0,21,0,9,18,118,0,59,119,0,18,97,0,21,\r
-0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,\r
-121,0,18,97,0,22,0,9,18,118,0,59,122,0,18,97,0,22,0,9,18,118,0,59,119,0,18,97,0,22,0,0,1,0,0,2,3,1,\r
-0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,0,9,18,118,0,59,121,0,18,97,0,23,\r
-0,9,18,118,0,59,122,0,18,97,0,23,0,9,18,118,0,59,119,0,18,97,0,23,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,\r
-1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,121,0,18,97,0,24,0,9,18,118,0,59,\r
-122,0,18,97,0,24,0,9,18,118,0,59,119,0,18,97,0,24,0,0,1,0,0,2,1,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,\r
-1,9,18,109,0,16,8,48,0,57,18,97,0,21,0,9,18,109,0,16,10,49,0,57,18,97,0,21,0,0,1,0,0,2,2,1,0,2,13,\r
-109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,0,9,18,109,0,16,10,49,0,57,18,97,0,\r
-22,0,0,1,0,0,2,3,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,0,9,18,109,\r
-0,16,10,49,0,57,18,97,0,23,0,0,1,0,0,2,4,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,\r
-57,18,97,0,24,0,9,18,109,0,16,10,49,0,57,18,97,0,24,0,0,1,0,0,2,1,1,0,2,14,109,0,0,1,1,0,9,97,0,0,\r
-0,1,9,18,109,0,16,8,48,0,57,18,97,0,21,0,9,18,109,0,16,10,49,0,57,18,97,0,21,0,9,18,109,0,16,10,50,\r
-0,57,18,97,0,21,0,0,1,0,0,2,2,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,\r
-22,0,9,18,109,0,16,10,49,0,57,18,97,0,22,0,9,18,109,0,16,10,50,0,57,18,97,0,22,0,0,1,0,0,2,3,1,0,2,\r
-14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,0,9,18,109,0,16,10,49,0,57,18,97,\r
-0,23,0,9,18,109,0,16,10,50,0,57,18,97,0,23,0,0,1,0,0,2,4,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,\r
-109,0,16,8,48,0,57,18,97,0,24,0,9,18,109,0,16,10,49,0,57,18,97,0,24,0,9,18,109,0,16,10,50,0,57,18,\r
-97,0,24,0,0,1,0,0,2,1,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,21,0,9,\r
-18,109,0,16,10,49,0,57,18,97,0,21,0,9,18,109,0,16,10,50,0,57,18,97,0,21,0,9,18,109,0,16,10,51,0,57,\r
-18,97,0,21,0,0,1,0,0,2,2,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,0,\r
-9,18,109,0,16,10,49,0,57,18,97,0,22,0,9,18,109,0,16,10,50,0,57,18,97,0,22,0,9,18,109,0,16,10,51,0,\r
-57,18,97,0,22,0,0,1,0,0,2,3,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,\r
-0,9,18,109,0,16,10,49,0,57,18,97,0,23,0,9,18,109,0,16,10,50,0,57,18,97,0,23,0,9,18,109,0,16,10,51,\r
-0,57,18,97,0,23,0,0,1,0,0,2,4,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,\r
-24,0,9,18,109,0,16,10,49,0,57,18,97,0,24,0,9,18,109,0,16,10,50,0,57,18,97,0,24,0,9,18,109,0,16,10,\r
-51,0,57,18,97,0,24,0,0,1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,13,109,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,\r
-117,0,59,120,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,\r
-48,0,57,59,121,0,48,46,20,0,9,18,117,0,59,121,0,18,118,0,59,120,0,18,109,0,16,10,49,0,57,59,120,0,\r
-48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,20,0,8,18,117,0,0,0,1,0,0,2,3,1,0,2,10,\r
-118,0,0,1,1,0,13,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,0,0,1,0,11,2,21,1,1,0,11,118,0,0,1,\r
-1,0,14,109,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,18,109,0,16,8,48,0,\r
-57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,\r
-16,8,48,0,57,59,122,0,48,46,20,0,9,18,117,0,59,121,0,18,118,0,59,120,0,18,109,0,16,10,49,0,57,59,\r
-120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,\r
-49,0,57,59,122,0,48,46,20,0,9,18,117,0,59,122,0,18,118,0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,\r
-48,18,118,0,59,121,0,18,109,0,16,10,50,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,\r
-57,59,122,0,48,46,20,0,8,18,117,0,0,0,1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,14,109,0,0,0,1,9,18,118,0,\r
-18,118,0,18,109,0,48,20,0,0,1,0,12,2,21,1,1,0,12,118,0,0,1,1,0,15,109,0,0,0,1,3,2,0,12,1,117,0,0,0,\r
-9,18,117,0,59,120,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,\r
-16,8,48,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,8,48,0,57,59,122,0,48,46,18,118,0,59,119,\r
-0,18,109,0,16,8,48,0,57,59,119,0,48,46,20,0,9,18,117,0,59,121,0,18,118,0,59,120,0,18,109,0,16,10,\r
-49,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,\r
-109,0,16,10,49,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,49,0,57,59,119,0,48,46,20,0,9,\r
-18,117,0,59,122,0,18,118,0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,\r
-16,10,50,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,18,118,0,59,\r
-119,0,18,109,0,16,10,50,0,57,59,119,0,48,46,20,0,9,18,117,0,59,119,0,18,118,0,59,120,0,18,109,0,16,\r
-10,51,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,51,0,57,59,121,0,48,46,18,118,0,59,122,0,\r
-18,109,0,16,10,51,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,119,0,48,46,20,0,\r
-8,18,117,0,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,15,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,\r
-0,0,1,0,9,2,27,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,0,0,0,4,102,108,111,97,116,95,110,\r
-101,103,97,116,101,0,18,99,0,0,18,98,0,0,0,4,102,108,111,97,116,95,97,100,100,0,18,99,0,0,18,97,0,\r
-0,18,99,0,0,0,8,18,99,0,0,0,1,0,5,2,26,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,\r
-0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,\r
-105,110,116,95,116,111,95,102,108,111,97,116,0,18,121,0,0,18,98,0,0,0,4,102,108,111,97,116,95,97,\r
-100,100,0,18,120,0,0,18,120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,116,0,18,\r
-99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,5,2,27,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,\r
-1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,\r
-0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,121,0,0,18,98,0,0,0,4,102,108,111,97,116,\r
-95,110,101,103,97,116,101,0,18,121,0,0,18,121,0,0,0,4,102,108,111,97,116,95,97,100,100,0,18,120,0,\r
-0,18,120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,\r
-8,18,99,0,0,0,1,0,5,2,21,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,0,0,0,3,2,0,5,\r
-1,99,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,105,110,116,\r
-95,116,111,95,102,108,111,97,116,0,18,121,0,0,18,98,0,0,0,4,102,108,111,97,116,95,109,117,108,116,\r
-105,112,108,121,0,18,120,0,0,18,120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,\r
-116,0,18,99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,5,2,22,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,\r
-120,0,0,1,1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,\r
-0,18,97,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,121,0,0,18,98,0,0,0,4,102,108,\r
-111,97,116,95,100,105,118,105,100,101,0,18,120,0,0,18,120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,\r
-116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,10,2,26,1,1,0,10,118,0,0,1,1,0,\r
-10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,20,\r
-0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,46,20,0,8,18,116,0,0,0,1,0,10,2,27,1,1,0,\r
-10,118,0,0,1,1,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,\r
-0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,47,20,0,8,18,116,0,0,0,\r
-1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,118,\r
-0,59,120,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,48,20,\r
-0,8,18,116,0,0,0,1,0,10,2,22,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,\r
-0,59,121,0,49,20,0,8,18,116,0,0,0,1,0,11,2,26,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,\r
-0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,20,0,9,18,116,0,59,121,0,18,118,0,\r
-59,121,0,18,117,0,59,121,0,46,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,46,20,0,\r
-8,18,116,0,0,0,1,0,11,2,27,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,\r
-0,59,121,0,47,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,47,20,0,8,18,116,0,0,0,\r
-1,0,11,2,21,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,\r
-0,59,120,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,48,20,\r
-0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,48,20,0,8,18,116,0,0,0,1,0,11,2,22,1,1,0,\r
-11,118,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,\r
-0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,49,20,0,9,18,116,0,59,\r
-122,0,18,118,0,59,122,0,18,117,0,59,122,0,49,20,0,8,18,116,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,\r
-0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,\r
-20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,46,20,0,9,18,116,0,59,122,0,18,118,0,\r
-59,122,0,18,117,0,59,122,0,46,20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,46,20,0,\r
-8,18,116,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,\r
-0,59,121,0,47,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,47,20,0,9,18,116,0,59,\r
-119,0,18,118,0,59,119,0,18,117,0,59,119,0,47,20,0,8,18,116,0,0,0,1,0,12,2,21,1,1,0,12,118,0,0,1,1,\r
-0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,48,\r
-20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,48,20,0,9,18,116,0,59,122,0,18,118,0,\r
-59,122,0,18,117,0,59,122,0,48,20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,48,20,0,\r
-8,18,116,0,0,0,1,0,12,2,22,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,\r
-59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,\r
-0,59,121,0,49,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,49,20,0,9,18,116,0,59,\r
-119,0,18,118,0,59,119,0,18,117,0,59,119,0,49,20,0,8,18,116,0,0,0,1,0,6,2,26,1,1,0,6,118,0,0,1,1,0,\r
-6,117,0,0,0,1,3,2,0,6,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,20,0,\r
-9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,46,20,0,8,18,116,0,0,0,1,0,6,2,27,1,1,0,6,\r
-118,0,0,1,1,0,6,117,0,0,0,1,3,2,0,6,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,\r
-120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,47,20,0,8,18,116,0,0,0,1,0,6,\r
-2,21,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,3,2,0,6,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,\r
-18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,48,20,0,8,18,116,\r
-0,0,0,1,0,6,2,22,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,3,2,0,6,1,116,0,0,0,9,18,116,0,59,120,0,18,\r
-118,0,59,120,0,18,117,0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,\r
-49,20,0,8,18,116,0,0,0,1,0,7,2,26,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,3,2,0,7,1,116,0,0,0,9,18,116,\r
-0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,\r
-117,0,59,121,0,46,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,46,20,0,8,18,116,0,\r
-0,0,1,0,7,2,27,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,3,2,0,7,1,116,0,0,0,9,18,116,0,59,120,0,18,118,\r
-0,59,120,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,47,20,\r
-0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,47,20,0,8,18,116,0,0,0,1,0,7,2,21,1,1,0,\r
-7,118,0,0,1,1,0,7,117,0,0,0,1,3,2,0,7,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,\r
-59,120,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,48,20,0,9,18,116,0,59,122,\r
-0,18,118,0,59,122,0,18,117,0,59,122,0,48,20,0,8,18,116,0,0,0,1,0,7,2,22,1,1,0,7,118,0,0,1,1,0,7,\r
-117,0,0,0,1,3,2,0,7,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,49,20,0,9,\r
-18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,49,20,0,9,18,116,0,59,122,0,18,118,0,59,122,\r
-0,18,117,0,59,122,0,49,20,0,8,18,116,0,0,0,1,0,8,2,26,1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,3,2,0,8,\r
-1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,46,20,0,9,18,116,0,59,121,0,18,\r
-118,0,59,121,0,18,117,0,59,121,0,46,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,\r
-46,20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,46,20,0,8,18,116,0,0,0,1,0,8,2,27,\r
-1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,3,2,0,8,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,\r
-117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,47,20,0,9,18,116,0,\r
-59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,47,20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,117,\r
-0,59,119,0,47,20,0,8,18,116,0,0,0,1,0,8,2,21,1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,3,2,0,8,1,116,0,0,\r
-0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,\r
-121,0,18,117,0,59,121,0,48,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,48,20,0,9,\r
-18,116,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,48,20,0,8,18,116,0,0,0,1,0,8,2,22,1,1,0,8,\r
-118,0,0,1,1,0,8,117,0,0,0,1,3,2,0,8,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,117,0,59,\r
-120,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,49,20,0,9,18,116,0,59,122,0,\r
-18,118,0,59,122,0,18,117,0,59,122,0,49,20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,\r
-0,49,20,0,8,18,116,0,0,0,1,0,13,2,26,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,\r
-18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,20,0,9,18,111,0,16,10,49,0,57,\r
-18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,20,0,8,18,111,0,0,0,1,0,13,2,27,1,1,0,13,109,0,0,\r
-1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,\r
-16,8,48,0,57,47,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,20,\r
-0,8,18,111,0,0,0,1,0,13,2,22,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,\r
-16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,20,0,9,18,111,0,16,10,49,0,57,18,109,0,\r
-16,10,49,0,57,18,110,0,16,10,49,0,57,49,20,0,8,18,111,0,0,0,1,0,14,2,26,1,1,0,14,109,0,0,1,1,0,14,\r
-110,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,\r
-57,46,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,20,0,9,18,111,\r
-0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,20,0,8,18,111,0,0,0,1,0,14,2,27,1,\r
-1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,\r
-0,57,18,110,0,16,8,48,0,57,47,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,\r
-49,0,57,47,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,47,20,0,8,\r
-18,111,0,0,0,1,0,14,2,22,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,\r
-8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,\r
-10,49,0,57,18,110,0,16,10,49,0,57,49,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,110,0,\r
-16,10,50,0,57,49,20,0,8,18,111,0,0,0,1,0,15,2,26,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,3,2,0,15,1,\r
-111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,20,0,9,18,111,0,\r
-16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,20,0,9,18,111,0,16,10,50,0,57,18,\r
-109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,\r
-18,110,0,16,10,51,0,57,46,20,0,8,18,111,0,0,0,1,0,15,2,27,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,3,\r
-2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,47,20,0,9,\r
-18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,20,0,9,18,111,0,16,10,50,0,\r
-57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,47,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,\r
-51,0,57,18,110,0,16,10,51,0,57,47,20,0,8,18,111,0,0,0,1,0,15,2,22,1,1,0,15,109,0,0,1,1,0,15,110,0,\r
-0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,\r
-20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,49,20,0,9,18,111,0,16,\r
-10,50,0,57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,49,20,0,9,18,111,0,16,10,51,0,57,18,109,0,\r
-16,10,51,0,57,18,110,0,16,10,51,0,57,49,20,0,8,18,111,0,0,0,1,0,10,2,26,1,1,0,9,97,0,0,1,1,0,10,\r
-117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,46,20,0,9,18,116,0,\r
-59,121,0,18,97,0,18,117,0,59,121,0,46,20,0,8,18,116,0,0,0,1,0,10,2,26,1,1,0,10,118,0,0,1,1,0,9,98,\r
-0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,46,20,0,9,18,116,0,59,\r
-121,0,18,118,0,59,121,0,18,98,0,46,20,0,8,18,116,0,0,0,1,0,10,2,27,1,1,0,9,97,0,0,1,1,0,10,117,0,0,\r
-0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,\r
-18,97,0,18,117,0,59,121,0,47,20,0,8,18,116,0,0,0,1,0,10,2,27,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,3,\r
-2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,47,20,0,9,18,116,0,59,121,0,18,\r
-118,0,59,121,0,18,98,0,47,20,0,8,18,116,0,0,0,1,0,10,2,21,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,3,2,\r
-0,10,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,97,0,\r
-18,117,0,59,121,0,48,20,0,8,18,116,0,0,0,1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,10,\r
-1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,48,20,0,9,18,116,0,59,121,0,18,118,0,59,\r
-121,0,18,98,0,48,20,0,8,18,116,0,0,0,1,0,10,2,22,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,3,2,0,10,1,\r
-116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,97,0,18,117,\r
-0,59,121,0,49,20,0,8,18,116,0,0,0,1,0,10,2,22,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,10,1,116,0,\r
-0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,\r
-98,0,49,20,0,8,18,116,0,0,0,1,0,11,2,26,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
-18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,46,20,0,9,18,116,0,59,121,0,18,97,0,18,117,0,59,121,0,\r
-46,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,46,20,0,8,18,116,0,0,0,1,0,11,2,26,1,1,0,11,\r
-118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,46,\r
-20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,98,0,46,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,\r
-18,98,0,46,20,0,8,18,116,0,0,0,1,0,11,2,27,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,\r
-0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,97,0,18,117,0,59,\r
-121,0,47,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,47,20,0,8,18,116,0,0,0,1,0,11,2,27,1,1,\r
-0,11,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,\r
-47,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,98,0,47,20,0,9,18,116,0,59,122,0,18,118,0,59,122,\r
-0,18,98,0,47,20,0,8,18,116,0,0,0,1,0,11,2,21,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,\r
-0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,18,97,0,18,117,0,59,\r
-121,0,48,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,48,20,0,8,18,116,0,0,0,1,0,11,2,21,1,1,\r
-0,11,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,\r
-48,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,98,0,48,20,0,9,18,116,0,59,122,0,18,118,0,59,122,\r
-0,18,98,0,48,20,0,8,18,116,0,0,0,1,0,11,2,22,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,3,2,0,11,1,116,0,\r
-0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,49,20,0,9,18,116,0,59,121,0,18,97,0,18,117,0,59,\r
-121,0,49,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,49,20,0,8,18,116,0,0,0,1,0,11,2,22,1,1,\r
-0,11,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,\r
-49,20,0,9,18,116,0,59,121,0,18,118,0,59,121,0,18,98,0,49,20,0,9,18,116,0,59,122,0,18,118,0,59,122,\r
-0,18,98,0,49,20,0,8,18,116,0,0,0,1,0,12,2,26,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,116,0,\r
-0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,46,20,0,9,18,116,0,59,121,0,18,97,0,18,117,0,59,\r
-121,0,46,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,46,20,0,9,18,116,0,59,119,0,18,97,0,18,\r
-117,0,59,119,0,46,20,0,8,18,116,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,\r
-116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,46,20,0,9,18,116,0,59,121,0,18,118,0,59,\r
-121,0,18,98,0,46,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,98,0,46,20,0,9,18,116,0,59,119,0,18,\r
-118,0,59,119,0,18,98,0,46,20,0,8,18,116,0,0,0,1,0,12,2,27,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,\r
-0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,47,20,0,9,18,116,0,59,121,0,18,97,0,\r
-18,117,0,59,121,0,47,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,47,20,0,9,18,116,0,59,119,\r
-0,18,97,0,18,117,0,59,119,0,47,20,0,8,18,116,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,\r
-3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,47,20,0,9,18,116,0,59,121,0,18,\r
-118,0,59,121,0,18,98,0,47,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,98,0,47,20,0,9,18,116,0,59,\r
-119,0,18,118,0,59,119,0,18,98,0,47,20,0,8,18,116,0,0,0,1,0,12,2,21,1,1,0,9,97,0,0,1,1,0,12,117,0,0,\r
-0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,48,20,0,9,18,116,0,59,121,0,\r
-18,97,0,18,117,0,59,121,0,48,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,48,20,0,9,18,116,0,\r
-59,119,0,18,97,0,18,117,0,59,119,0,48,20,0,8,18,116,0,0,0,1,0,12,2,21,1,1,0,12,118,0,0,1,1,0,9,98,\r
-0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,48,20,0,9,18,116,0,59,\r
-121,0,18,118,0,59,121,0,18,98,0,48,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,98,0,48,20,0,9,18,\r
-116,0,59,119,0,18,118,0,59,119,0,18,98,0,48,20,0,8,18,116,0,0,0,1,0,12,2,22,1,1,0,9,97,0,0,1,1,0,\r
-12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,97,0,18,117,0,59,120,0,49,20,0,9,18,116,\r
-0,59,121,0,18,97,0,18,117,0,59,121,0,49,20,0,9,18,116,0,59,122,0,18,97,0,18,117,0,59,122,0,49,20,0,\r
-9,18,116,0,59,119,0,18,97,0,18,117,0,59,119,0,49,20,0,8,18,116,0,0,0,1,0,12,2,22,1,1,0,12,118,0,0,\r
-1,1,0,9,98,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,18,118,0,59,120,0,18,98,0,49,20,0,9,18,\r
-116,0,59,121,0,18,118,0,59,121,0,18,98,0,49,20,0,9,18,116,0,59,122,0,18,118,0,59,122,0,18,98,0,49,\r
-20,0,9,18,116,0,59,119,0,18,118,0,59,119,0,18,98,0,49,20,0,8,18,116,0,0,0,1,0,13,2,26,1,1,0,9,97,0,\r
-0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,\r
-46,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,46,20,0,8,18,111,0,0,0,1,0,13,2,26,\r
-1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,\r
-0,57,18,98,0,46,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,46,20,0,8,18,111,0,0,\r
-0,1,0,13,2,27,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,\r
-97,0,18,110,0,16,8,48,0,57,47,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,47,20,0,\r
-8,18,111,0,0,0,1,0,13,2,27,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,\r
-8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,47,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,\r
-98,0,47,20,0,8,18,111,0,0,0,1,0,13,2,21,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,3,2,0,13,1,111,0,0,0,9,\r
-18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,\r
-110,0,16,10,49,0,57,48,20,0,8,18,111,0,0,0,1,0,13,2,21,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,\r
-13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,48,20,0,9,18,111,0,16,10,49,0,\r
-57,18,109,0,16,10,49,0,57,18,98,0,48,20,0,8,18,111,0,0,0,1,0,13,2,22,1,1,0,9,97,0,0,1,1,0,13,110,0,\r
-0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,49,20,0,9,18,111,\r
-0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,49,20,0,8,18,111,0,0,0,1,0,13,2,22,1,1,0,13,109,0,0,\r
-1,1,0,9,98,0,0,0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,49,\r
-20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,49,20,0,8,18,111,0,0,0,1,0,14,2,26,1,\r
-1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,\r
-8,48,0,57,46,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,46,20,0,9,18,111,0,16,10,\r
-50,0,57,18,97,0,18,110,0,16,10,50,0,57,46,20,0,8,18,111,0,0,0,1,0,14,2,26,1,1,0,14,109,0,0,1,1,0,9,\r
-98,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,46,20,0,9,18,\r
-111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,46,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,\r
-50,0,57,18,98,0,46,20,0,8,18,111,0,0,0,1,0,14,2,27,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,3,2,0,14,1,\r
-111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,47,20,0,9,18,111,0,16,10,49,0,57,\r
-18,97,0,18,110,0,16,10,49,0,57,47,20,0,9,18,111,0,16,10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,47,\r
-20,0,8,18,111,0,0,0,1,0,14,2,27,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,\r
-0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,47,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,\r
-57,18,98,0,47,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,98,0,47,20,0,8,18,111,0,0,0,\r
-1,0,14,2,21,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,\r
-0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,48,20,0,9,\r
-18,111,0,16,10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,48,20,0,8,18,111,0,0,0,1,0,14,2,21,1,1,0,14,\r
-109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,\r
-98,0,48,20,0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,48,20,0,9,18,111,0,16,10,50,0,\r
-57,18,109,0,16,10,50,0,57,18,98,0,48,20,0,8,18,111,0,0,0,1,0,14,2,22,1,1,0,9,97,0,0,1,1,0,14,110,0,\r
-0,0,1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,49,20,0,9,18,111,\r
-0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,49,20,0,9,18,111,0,16,10,50,0,57,18,97,0,18,110,0,\r
-16,10,50,0,57,49,20,0,8,18,111,0,0,0,1,0,14,2,22,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,14,1,\r
-111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,49,20,0,9,18,111,0,16,10,49,0,57,\r
-18,109,0,16,10,49,0,57,18,98,0,49,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,98,0,49,\r
-20,0,8,18,111,0,0,0,1,0,15,2,26,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,\r
-0,16,8,48,0,57,18,97,0,18,110,0,16,8,48,0,57,46,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,\r
-10,49,0,57,46,20,0,9,18,111,0,16,10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,46,20,0,9,18,111,0,16,\r
-10,51,0,57,18,97,0,18,110,0,16,10,51,0,57,46,20,0,8,18,111,0,0,0,1,0,15,2,26,1,1,0,15,109,0,0,1,1,\r
-0,9,98,0,0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,46,20,0,\r
-9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,46,20,0,9,18,111,0,16,10,50,0,57,18,109,0,\r
-16,10,50,0,57,18,98,0,46,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,98,0,46,20,0,8,18,\r
-111,0,0,0,1,0,15,2,27,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,\r
-0,57,18,97,0,18,110,0,16,8,48,0,57,47,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,\r
-47,20,0,9,18,111,0,16,10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,47,20,0,9,18,111,0,16,10,51,0,57,\r
-18,97,0,18,110,0,16,10,51,0,57,47,20,0,8,18,111,0,0,0,1,0,15,2,27,1,1,0,15,109,0,0,1,1,0,9,98,0,0,\r
-0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,47,20,0,9,18,111,0,\r
-16,10,49,0,57,18,109,0,16,10,49,0,57,18,98,0,47,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,\r
-57,18,98,0,47,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,98,0,47,20,0,8,18,111,0,0,0,\r
-1,0,15,2,21,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,\r
-0,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,48,20,0,9,\r
-18,111,0,16,10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,48,20,0,9,18,111,0,16,10,51,0,57,18,97,0,18,\r
-110,0,16,10,51,0,57,48,20,0,8,18,111,0,0,0,1,0,15,2,21,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,\r
-15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,48,20,0,9,18,111,0,16,10,49,0,\r
-57,18,109,0,16,10,49,0,57,18,98,0,48,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,98,0,\r
-48,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,98,0,48,20,0,8,18,111,0,0,0,1,0,15,2,22,\r
-1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,97,0,18,110,0,\r
-16,8,48,0,57,49,20,0,9,18,111,0,16,10,49,0,57,18,97,0,18,110,0,16,10,49,0,57,49,20,0,9,18,111,0,16,\r
-10,50,0,57,18,97,0,18,110,0,16,10,50,0,57,49,20,0,9,18,111,0,16,10,51,0,57,18,97,0,18,110,0,16,10,\r
-51,0,57,49,20,0,8,18,111,0,0,0,1,0,15,2,22,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,3,2,0,15,1,111,0,0,\r
-0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,98,0,49,20,0,9,18,111,0,16,10,49,0,57,18,109,0,\r
-16,10,49,0,57,18,98,0,49,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,50,0,57,18,98,0,49,20,0,9,18,\r
-111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,98,0,49,20,0,8,18,111,0,0,0,1,0,6,2,26,1,1,0,5,97,0,\r
-0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,46,0,0,1,0,6,2,26,1,1,0,6,118,\r
-0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,46,0,0,1,0,6,2,27,1,1,0,5,97,\r
-0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,47,0,0,1,0,6,2,27,1,1,0,6,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,47,0,0,1,0,6,2,21,1,1,0,5,\r
-97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,48,0,0,1,0,6,2,21,1,1,0,6,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,48,0,0,1,0,6,2,22,1,1,0,5,\r
-97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,49,0,0,1,0,6,2,22,1,1,0,6,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,49,0,0,1,0,7,2,26,1,1,0,5,\r
-97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,46,0,0,1,0,7,2,26,1,1,0,7,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,46,0,0,1,0,7,2,27,1,1,0,5,\r
-97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,47,0,0,1,0,7,2,27,1,1,0,7,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,47,0,0,1,0,7,2,21,1,1,0,5,\r
-97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,48,0,0,1,0,7,2,21,1,1,0,7,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,48,0,0,1,0,7,2,22,1,1,0,5,\r
-97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,49,0,0,1,0,7,2,22,1,1,0,7,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,49,0,0,1,0,8,2,26,1,1,0,5,\r
-97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,46,0,0,1,0,8,2,26,1,1,0,8,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,46,0,0,1,0,8,2,27,1,1,0,5,\r
-97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,47,0,0,1,0,8,2,27,1,1,0,8,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,47,0,0,1,0,8,2,21,1,1,0,5,\r
-97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,48,0,0,1,0,8,2,21,1,1,0,8,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,48,0,0,1,0,8,2,22,1,1,0,5,\r
-97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,49,0,0,1,0,8,2,22,1,1,0,8,\r
-118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,49,0,0,1,0,10,2,27,1,1,0,\r
-10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,54,20,0,9,18,117,0,59,\r
-121,0,18,118,0,59,121,0,54,20,0,8,18,117,0,0,0,1,0,11,2,27,1,1,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,\r
-0,9,18,117,0,59,120,0,18,118,0,59,120,0,54,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,54,20,0,9,18,\r
-117,0,59,122,0,18,118,0,59,122,0,54,20,0,8,18,117,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,0,1,3,2,0,12,\r
-1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,54,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,54,\r
-20,0,9,18,117,0,59,122,0,18,118,0,59,122,0,54,20,0,9,18,117,0,59,119,0,18,118,0,59,119,0,54,20,0,8,\r
-18,117,0,0,0,1,0,6,2,27,1,1,0,6,118,0,0,0,1,3,2,0,6,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,\r
-120,0,54,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,54,20,0,8,18,117,0,0,0,1,0,7,2,27,1,1,0,7,118,\r
-0,0,0,1,3,2,0,7,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,54,20,0,9,18,117,0,59,121,0,18,\r
-118,0,59,121,0,54,20,0,9,18,117,0,59,122,0,18,118,0,59,122,0,54,20,0,8,18,117,0,0,0,1,0,8,2,27,1,1,\r
-0,8,118,0,0,0,1,3,2,0,8,1,117,0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,54,20,0,9,18,117,0,59,\r
-121,0,18,118,0,59,121,0,54,20,0,9,18,117,0,59,122,0,18,118,0,59,122,0,54,20,0,9,18,117,0,59,119,0,\r
-18,118,0,59,119,0,54,20,0,8,18,117,0,0,0,1,0,13,2,27,1,1,0,13,109,0,0,0,1,3,2,0,13,1,110,0,0,0,9,\r
-18,110,0,16,8,48,0,57,18,109,0,16,8,48,0,57,54,20,0,9,18,110,0,16,10,49,0,57,18,109,0,16,10,49,0,\r
-57,54,20,0,8,18,110,0,0,0,1,0,14,2,27,1,1,0,14,109,0,0,0,1,3,2,0,14,1,110,0,0,0,9,18,110,0,16,8,48,\r
-0,57,18,109,0,16,8,48,0,57,54,20,0,9,18,110,0,16,10,49,0,57,18,109,0,16,10,49,0,57,54,20,0,9,18,\r
-110,0,16,10,50,0,57,18,109,0,16,10,50,0,57,54,20,0,8,18,110,0,0,0,1,0,15,2,27,1,1,0,15,109,0,0,0,1,\r
-3,2,0,15,1,110,0,0,0,9,18,110,0,16,8,48,0,57,18,109,0,16,8,48,0,57,54,20,0,9,18,110,0,16,10,49,0,\r
-57,18,109,0,16,10,49,0,57,54,20,0,9,18,110,0,16,10,50,0,57,18,109,0,16,10,50,0,57,54,20,0,9,18,110,\r
-0,16,10,51,0,57,18,109,0,16,10,51,0,57,54,20,0,8,18,110,0,0,0,1,0,0,2,25,1,0,2,9,97,0,0,0,1,9,18,\r
-97,0,17,49,0,48,0,0,22,0,0,1,0,0,2,25,1,0,2,5,97,0,0,0,1,9,18,97,0,16,10,49,0,22,0,0,1,0,0,2,25,1,\r
-0,2,10,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,0,1,0,0,2,25,1,0,2,11,118,0,0,\r
+8,58,118,101,99,50,0,18,102,0,0,18,102,0,0,0,0,0,1,0,10,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,\r
+4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,118,101,99,50,0,18,\r
+120,0,0,0,0,0,1,0,10,1,1,1,0,1,98,0,0,0,1,8,58,118,101,99,50,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,\r
+0,31,0,0,0,0,1,0,11,1,1,1,0,9,102,0,0,0,1,8,58,118,101,99,51,0,18,102,0,0,18,102,0,0,18,102,0,0,0,\r
+0,0,1,0,11,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,\r
+116,0,18,120,0,0,18,105,0,0,0,8,58,118,101,99,51,0,18,120,0,0,0,0,0,1,0,11,1,1,1,0,1,98,0,0,0,1,8,\r
+58,118,101,99,51,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,12,1,1,1,0,9,102,0,0,0,1,8,\r
+58,118,101,99,52,0,18,102,0,0,18,102,0,0,18,102,0,0,18,102,0,0,0,0,0,1,0,12,1,1,1,0,5,105,0,0,0,1,\r
+3,2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,\r
+118,101,99,52,0,18,120,0,0,0,0,0,1,0,12,1,1,1,0,1,98,0,0,0,1,8,58,118,101,99,52,0,18,98,0,17,49,0,\r
+48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,6,1,1,1,0,5,105,0,0,0,1,8,58,105,118,101,99,50,0,18,105,0,0,\r
+18,105,0,0,0,0,0,1,0,6,1,1,1,0,9,102,0,0,0,1,8,58,105,118,101,99,50,0,58,105,110,116,0,18,102,0,0,\r
+0,0,0,0,0,1,0,6,1,1,1,0,1,98,0,0,0,1,8,58,105,118,101,99,50,0,58,105,110,116,0,18,98,0,0,0,0,0,0,0,\r
+1,0,7,1,1,1,0,5,105,0,0,0,1,8,58,105,118,101,99,51,0,18,105,0,0,18,105,0,0,18,105,0,0,0,0,0,1,0,7,\r
+1,1,1,0,9,102,0,0,0,1,8,58,105,118,101,99,51,0,58,105,110,116,0,18,102,0,0,0,0,0,0,0,1,0,7,1,1,1,0,\r
+1,98,0,0,0,1,8,58,105,118,101,99,51,0,58,105,110,116,0,18,98,0,0,0,0,0,0,0,1,0,8,1,1,1,0,5,105,0,0,\r
+0,1,8,58,105,118,101,99,52,0,18,105,0,0,18,105,0,0,18,105,0,0,18,105,0,0,0,0,0,1,0,8,1,1,1,0,9,102,\r
+0,0,0,1,8,58,105,118,101,99,52,0,58,105,110,116,0,18,102,0,0,0,0,0,0,0,1,0,8,1,1,1,0,1,98,0,0,0,1,\r
+8,58,105,118,101,99,52,0,58,105,110,116,0,18,98,0,0,0,0,0,0,0,1,0,2,1,1,1,0,1,98,0,0,0,1,8,58,98,\r
+118,101,99,50,0,18,98,0,0,18,98,0,0,0,0,0,1,0,2,1,1,1,0,9,102,0,0,0,1,8,58,98,118,101,99,50,0,58,\r
+98,111,111,108,0,18,102,0,0,0,0,0,0,0,1,0,2,1,1,1,0,5,105,0,0,0,1,8,58,98,118,101,99,50,0,58,98,\r
+111,111,108,0,18,105,0,0,0,0,0,0,0,1,0,3,1,1,1,0,1,98,0,0,0,1,8,58,98,118,101,99,51,0,18,98,0,0,18,\r
+98,0,0,18,98,0,0,0,0,0,1,0,3,1,1,1,0,9,102,0,0,0,1,8,58,98,118,101,99,51,0,58,98,111,111,108,0,18,\r
+102,0,0,0,0,0,0,0,1,0,3,1,1,1,0,5,105,0,0,0,1,8,58,98,118,101,99,51,0,58,98,111,111,108,0,18,105,0,\r
+0,0,0,0,0,0,1,0,4,1,1,1,0,1,98,0,0,0,1,8,58,98,118,101,99,52,0,18,98,0,0,18,98,0,0,18,98,0,0,18,98,\r
+0,0,0,0,0,1,0,4,1,1,1,0,9,102,0,0,0,1,8,58,98,118,101,99,52,0,58,98,111,111,108,0,18,102,0,0,0,0,0,\r
+0,0,1,0,4,1,1,1,0,5,105,0,0,0,1,8,58,98,118,101,99,52,0,58,98,111,111,108,0,18,105,0,0,0,0,0,0,0,1,\r
+0,13,1,1,1,0,9,102,0,0,0,1,8,58,109,97,116,50,0,18,102,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,18,\r
+102,0,0,0,0,0,1,0,13,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,\r
+111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,109,97,116,50,0,18,120,0,0,0,0,0,1,0,13,1,1,1,0,1,98,0,0,\r
+0,1,8,58,109,97,116,50,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,14,1,1,1,0,9,102,0,0,\r
+0,1,8,58,109,97,116,51,0,18,102,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,18,102,0,0,\r
+17,48,0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,18,102,0,0,0,0,0,1,0,14,1,1,1,0,5,105,0,0,0,1,3,\r
+2,0,9,1,120,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,\r
+109,97,116,51,0,18,120,0,0,0,0,0,1,0,14,1,1,1,0,1,98,0,0,0,1,8,58,109,97,116,51,0,18,98,0,17,49,0,\r
+48,0,0,17,48,0,48,0,0,31,0,0,0,0,1,0,15,1,1,1,0,9,102,0,0,0,1,8,58,109,97,116,52,0,18,102,0,0,17,\r
+48,0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,18,102,0,0,17,48,0,48,0,0,0,17,48,\r
+0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,18,102,0,0,17,48,0,48,0,0,0,17,48,0,48,0,0,0,17,48,0,\r
+48,0,0,0,17,48,0,48,0,0,0,18,102,0,0,0,0,0,1,0,15,1,1,1,0,5,105,0,0,0,1,3,2,0,9,1,120,0,0,0,4,105,\r
+110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,105,0,0,0,8,58,109,97,116,52,0,18,120,0,0,\r
+0,0,0,1,0,15,1,1,1,0,1,98,0,0,0,1,8,58,109,97,116,52,0,18,98,0,17,49,0,48,0,0,17,48,0,48,0,0,31,0,\r
+0,0,0,1,0,0,2,1,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,97,100,100,0,18,97,0,0,\r
+18,97,0,0,18,98,0,0,0,0,1,0,9,2,27,1,1,0,9,97,0,0,0,1,3,2,0,9,1,98,0,0,0,4,102,108,111,97,116,95,\r
+110,101,103,97,116,101,0,18,98,0,0,18,97,0,0,0,8,18,98,0,0,0,1,0,0,2,2,1,0,2,9,97,0,0,1,1,0,9,98,0,\r
+0,0,1,3,2,0,9,1,99,0,0,0,4,102,108,111,97,116,95,110,101,103,97,116,101,0,18,99,0,0,18,98,0,0,0,4,\r
+102,108,111,97,116,95,97,100,100,0,18,97,0,0,18,97,0,0,18,99,0,0,0,0,1,0,0,2,3,1,0,2,9,97,0,0,1,1,\r
+0,9,98,0,0,0,1,4,102,108,111,97,116,95,109,117,108,116,105,112,108,121,0,18,97,0,0,18,97,0,0,18,98,\r
+0,0,0,0,1,0,0,2,4,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,100,105,118,105,100,\r
+101,0,18,97,0,0,18,97,0,0,18,98,0,0,0,0,1,0,9,2,26,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,\r
+0,0,0,4,102,108,111,97,116,95,97,100,100,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,0,2,1,\r
+1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0,0,\r
+58,102,108,111,97,116,0,18,98,0,0,0,46,0,0,20,0,0,1,0,5,2,27,1,1,0,5,97,0,0,0,1,3,2,0,9,1,120,0,0,\r
+0,3,2,0,5,1,98,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,102,\r
+108,111,97,116,95,110,101,103,97,116,101,0,18,120,0,0,18,120,0,0,0,4,102,108,111,97,116,95,116,111,\r
+95,105,110,116,0,18,98,0,0,18,120,0,0,0,8,18,98,0,0,0,1,0,0,2,2,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,\r
+9,18,97,0,18,98,0,54,21,0,0,1,0,9,2,21,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,0,0,0,4,102,\r
+108,111,97,116,95,109,117,108,116,105,112,108,121,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,\r
+1,0,0,2,3,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,\r
+97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,48,0,0,20,0,0,1,0,9,2,22,1,1,0,9,97,0,0,1,1,0,9,98,0,\r
+0,0,1,3,2,0,9,1,99,0,0,0,4,102,108,111,97,116,95,100,105,118,105,100,101,0,18,99,0,0,18,97,0,0,18,\r
+98,0,0,0,8,18,99,0,0,0,1,0,0,2,4,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,\r
+102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,49,0,0,20,0,0,1,0,0,2,1,1,0,2,\r
+10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,\r
+117,0,59,121,0,21,0,0,1,0,0,2,2,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,\r
+59,120,0,22,0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,0,1,0,0,2,3,1,0,2,10,118,0,0,1,1,0,10,117,\r
+0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,0,1,\r
+0,0,2,4,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,\r
+0,59,121,0,18,117,0,59,121,0,24,0,0,1,0,0,2,1,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,\r
+120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,117,\r
+0,59,122,0,21,0,0,1,0,0,2,2,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,\r
+120,0,22,0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,0,\r
+1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,\r
+118,0,59,121,0,18,117,0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,0,1,0,0,2,4,1,0,2,\r
+11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,\r
+117,0,59,121,0,24,0,9,18,118,0,59,122,0,18,117,0,59,122,0,24,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,\r
+12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,\r
+0,9,18,118,0,59,122,0,18,117,0,59,122,0,21,0,9,18,118,0,59,119,0,18,117,0,59,119,0,21,0,0,1,0,0,2,\r
+2,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,59,\r
+121,0,18,117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,9,18,118,0,59,119,0,18,117,\r
+0,59,119,0,22,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,\r
+120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,9,\r
+18,118,0,59,119,0,18,117,0,59,119,0,23,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,\r
+118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,118,0,59,122,\r
+0,18,117,0,59,122,0,24,0,9,18,118,0,59,119,0,18,117,0,59,119,0,24,0,0,1,0,0,2,1,1,0,2,6,118,0,0,1,\r
+1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,\r
+21,0,0,1,0,0,2,2,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,\r
+18,118,0,59,121,0,18,117,0,59,121,0,22,0,0,1,0,0,2,3,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,\r
+0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,0,59,121,0,23,0,0,1,0,0,2,4,1,0,2,6,\r
+118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,\r
+0,59,121,0,24,0,0,1,0,0,2,1,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,\r
+120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,117,0,59,122,0,21,0,0,\r
+1,0,0,2,2,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,\r
+0,59,121,0,18,117,0,59,121,0,22,0,9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,0,1,0,0,2,3,1,0,2,7,\r
+118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,18,117,\r
+0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,0,1,0,0,2,4,1,0,2,7,118,0,0,1,1,0,7,117,\r
+0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,\r
+118,0,59,122,0,18,117,0,59,122,0,24,0,0,1,0,0,2,1,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,\r
+59,120,0,18,117,0,59,120,0,21,0,9,18,118,0,59,121,0,18,117,0,59,121,0,21,0,9,18,118,0,59,122,0,18,\r
+117,0,59,122,0,21,0,9,18,118,0,59,119,0,18,117,0,59,119,0,21,0,0,1,0,0,2,2,1,0,2,8,118,0,0,1,1,0,8,\r
+117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,0,9,18,118,0,59,121,0,18,117,0,59,121,0,22,0,\r
+9,18,118,0,59,122,0,18,117,0,59,122,0,22,0,9,18,118,0,59,119,0,18,117,0,59,119,0,22,0,0,1,0,0,2,3,\r
+1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,0,9,18,118,0,59,121,0,\r
+18,117,0,59,121,0,23,0,9,18,118,0,59,122,0,18,117,0,59,122,0,23,0,9,18,118,0,59,119,0,18,117,0,59,\r
+119,0,23,0,0,1,0,0,2,4,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,\r
+24,0,9,18,118,0,59,121,0,18,117,0,59,121,0,24,0,9,18,118,0,59,122,0,18,117,0,59,122,0,24,0,9,18,\r
+118,0,59,119,0,18,117,0,59,119,0,24,0,0,1,0,0,2,1,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,\r
+16,8,48,0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,21,0,0,1,0,\r
+0,2,2,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,22,0,9,\r
+18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,0,0,1,0,10,2,21,1,1,0,13,109,0,0,1,1,0,10,118,0,0,\r
+0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,\r
+109,0,16,10,49,0,57,59,120,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,121,0,48,18,118,0,\r
+59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,0,0,0,0,1,0,13,2,21,1,1,0,13,109,0,0,1,1,0,13,110,0,\r
+0,0,1,8,58,109,97,116,50,0,18,109,0,18,110,0,16,8,48,0,57,48,0,18,109,0,18,110,0,16,10,49,0,57,48,\r
+0,0,0,0,1,0,0,2,3,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,\r
+0,2,4,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,24,0,9,\r
+18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,0,0,1,0,0,2,1,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,\r
+1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,\r
+57,21,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,0,0,1,0,0,2,2,1,0,2,14,109,0,0,1,1,0,14,\r
+110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,22,0,9,18,109,0,16,10,49,0,57,18,110,0,\r
+16,10,49,0,57,22,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,22,0,0,1,0,11,2,21,1,1,0,14,109,\r
+0,0,1,1,0,11,118,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,\r
+18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,\r
+59,120,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,\r
+10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,121,0,48,46,0,18,118,0,59,\r
+120,0,18,109,0,16,8,48,0,57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,122,0,48,46,18,\r
+118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,0,0,0,0,1,0,14,2,21,1,1,0,14,109,0,0,1,1,0,14,\r
+110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,18,110,0,16,8,48,0,57,48,0,18,109,0,18,110,0,16,10,49,0,\r
+57,48,0,18,109,0,18,110,0,16,10,50,0,57,48,0,0,0,0,1,0,0,2,3,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,\r
+9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,4,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,\r
+16,8,48,0,57,18,110,0,16,8,48,0,57,24,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,0,9,18,\r
+109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,24,0,0,1,0,0,2,1,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,\r
+9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,\r
+21,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,0,9,18,109,0,16,10,51,0,57,18,110,0,16,10,\r
+51,0,57,21,0,0,1,0,0,2,2,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,\r
+8,48,0,57,22,0,9,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,0,9,18,109,0,16,10,50,0,57,18,\r
+110,0,16,10,50,0,57,22,0,9,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,22,0,0,1,0,12,2,21,1,1,0,\r
+15,109,0,0,1,1,0,12,118,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,\r
+120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,59,122,0,18,109,0,16,10,\r
+50,0,57,59,120,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,120,0,48,46,0,18,118,0,59,120,0,\r
+18,109,0,16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,\r
+59,122,0,18,109,0,16,10,50,0,57,59,121,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,121,0,\r
+48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,\r
+57,59,122,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,\r
+0,16,10,51,0,57,59,122,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,119,0,48,18,118,0,59,\r
+121,0,18,109,0,16,10,49,0,57,59,119,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,119,0,48,\r
+46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,119,0,48,46,0,0,0,0,1,0,15,2,21,1,1,0,15,109,0,0,1,\r
+1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,109,0,18,110,0,16,8,48,0,57,48,0,18,109,0,18,110,0,16,\r
+10,49,0,57,48,0,18,109,0,18,110,0,16,10,50,0,57,48,0,18,109,0,18,110,0,16,10,51,0,57,48,0,0,0,0,1,\r
+0,0,2,3,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,4,1,0,\r
+2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,24,0,9,18,109,0,16,\r
+10,49,0,57,18,110,0,16,10,49,0,57,24,0,9,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,24,0,9,18,\r
+109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,24,0,0,1,0,0,2,1,1,0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,\r
+18,118,0,59,120,0,18,97,0,21,0,9,18,118,0,59,121,0,18,97,0,21,0,0,1,0,0,2,2,1,0,2,10,118,0,0,1,1,0,\r
+9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,121,0,18,97,0,22,0,0,1,0,0,2,3,1,0,2,\r
+10,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,0,9,18,118,0,59,121,0,18,97,0,23,0,0,\r
+1,0,0,2,4,1,0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,121,0,\r
+18,97,0,24,0,0,1,0,0,2,1,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,0,9,18,\r
+118,0,59,121,0,18,97,0,21,0,9,18,118,0,59,122,0,18,97,0,21,0,0,1,0,0,2,2,1,0,2,11,118,0,0,1,1,0,9,\r
+97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,121,0,18,97,0,22,0,9,18,118,0,59,122,0,\r
+18,97,0,22,0,0,1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,0,9,18,\r
+118,0,59,121,0,18,97,0,23,0,9,18,118,0,59,122,0,18,97,0,23,0,0,1,0,0,2,4,1,0,2,11,118,0,0,1,1,0,9,\r
+97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,121,0,18,97,0,24,0,9,18,118,0,59,122,0,\r
+18,97,0,24,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,0,9,18,\r
+118,0,59,121,0,18,97,0,21,0,9,18,118,0,59,122,0,18,97,0,21,0,9,18,118,0,59,119,0,18,97,0,21,0,0,1,\r
+0,0,2,2,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,22,0,9,18,118,0,59,121,0,\r
+18,97,0,22,0,9,18,118,0,59,122,0,18,97,0,22,0,9,18,118,0,59,119,0,18,97,0,22,0,0,1,0,0,2,3,1,0,2,\r
+12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,0,9,18,118,0,59,121,0,18,97,0,23,0,9,\r
+18,118,0,59,122,0,18,97,0,23,0,9,18,118,0,59,119,0,18,97,0,23,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,\r
+9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,0,9,18,118,0,59,121,0,18,97,0,24,0,9,18,118,0,59,122,0,\r
+18,97,0,24,0,9,18,118,0,59,119,0,18,97,0,24,0,0,1,0,0,2,1,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,\r
+109,0,16,8,48,0,57,18,97,0,21,0,9,18,109,0,16,10,49,0,57,18,97,0,21,0,0,1,0,0,2,2,1,0,2,13,109,0,0,\r
+1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,0,9,18,109,0,16,10,49,0,57,18,97,0,22,0,0,1,\r
+0,0,2,3,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,0,9,18,109,0,16,10,\r
+49,0,57,18,97,0,23,0,0,1,0,0,2,4,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,\r
+0,24,0,9,18,109,0,16,10,49,0,57,18,97,0,24,0,0,1,0,0,2,1,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,\r
+109,0,16,8,48,0,57,18,97,0,21,0,9,18,109,0,16,10,49,0,57,18,97,0,21,0,9,18,109,0,16,10,50,0,57,18,\r
+97,0,21,0,0,1,0,0,2,2,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,0,9,\r
+18,109,0,16,10,49,0,57,18,97,0,22,0,9,18,109,0,16,10,50,0,57,18,97,0,22,0,0,1,0,0,2,3,1,0,2,14,109,\r
+0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,0,9,18,109,0,16,10,49,0,57,18,97,0,23,0,\r
+9,18,109,0,16,10,50,0,57,18,97,0,23,0,0,1,0,0,2,4,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,\r
+16,8,48,0,57,18,97,0,24,0,9,18,109,0,16,10,49,0,57,18,97,0,24,0,9,18,109,0,16,10,50,0,57,18,97,0,\r
+24,0,0,1,0,0,2,1,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,21,0,9,18,109,\r
+0,16,10,49,0,57,18,97,0,21,0,9,18,109,0,16,10,50,0,57,18,97,0,21,0,9,18,109,0,16,10,51,0,57,18,97,\r
+0,21,0,0,1,0,0,2,2,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,0,9,18,\r
+109,0,16,10,49,0,57,18,97,0,22,0,9,18,109,0,16,10,50,0,57,18,97,0,22,0,9,18,109,0,16,10,51,0,57,18,\r
+97,0,22,0,0,1,0,0,2,3,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,0,9,\r
+18,109,0,16,10,49,0,57,18,97,0,23,0,9,18,109,0,16,10,50,0,57,18,97,0,23,0,9,18,109,0,16,10,51,0,57,\r
+18,97,0,23,0,0,1,0,0,2,4,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,24,0,\r
+9,18,109,0,16,10,49,0,57,18,97,0,24,0,9,18,109,0,16,10,50,0,57,18,97,0,24,0,9,18,109,0,16,10,51,0,\r
+57,18,97,0,24,0,0,1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,13,109,0,0,0,1,8,58,118,101,99,50,0,18,118,0,\r
+59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,\r
+0,18,118,0,59,120,0,18,109,0,16,10,49,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,\r
+121,0,48,46,0,0,0,0,1,0,0,2,3,1,0,2,10,118,0,0,1,1,0,13,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,\r
+48,20,0,0,1,0,11,2,21,1,1,0,11,118,0,0,1,1,0,14,109,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,\r
+18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,18,118,0,\r
+59,122,0,18,109,0,16,8,48,0,57,59,122,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10,49,0,57,59,120,0,\r
+48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,49,0,\r
+57,59,122,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,48,18,118,0,59,121,0,18,109,\r
+0,16,10,50,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,0,0,0,0,1,0,\r
+0,2,3,1,0,2,11,118,0,0,1,1,0,14,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,0,0,1,0,12,2,21,1,1,\r
+0,12,118,0,0,1,1,0,15,109,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,\r
+120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,8,48,\r
+0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,8,48,0,57,59,119,0,48,46,0,18,118,0,59,120,0,18,\r
+109,0,16,10,49,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,\r
+59,122,0,18,109,0,16,10,49,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,49,0,57,59,119,0,\r
+48,46,0,18,118,0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,50,0,\r
+57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,\r
+0,16,10,50,0,57,59,119,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10,51,0,57,59,120,0,48,18,118,0,59,\r
+121,0,18,109,0,16,10,51,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,51,0,57,59,122,0,48,\r
+46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,119,0,48,46,0,0,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,\r
+0,15,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,0,0,1,0,9,2,27,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,\r
+1,3,2,0,9,1,99,0,0,0,4,102,108,111,97,116,95,110,101,103,97,116,101,0,18,99,0,0,18,98,0,0,0,4,102,\r
+108,111,97,116,95,97,100,100,0,18,99,0,0,18,97,0,0,18,99,0,0,0,8,18,99,0,0,0,1,0,5,2,26,1,1,0,5,97,\r
+0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,111,\r
+95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,\r
+121,0,0,18,98,0,0,0,4,102,108,111,97,116,95,97,100,100,0,18,120,0,0,18,120,0,0,18,121,0,0,0,4,102,\r
+108,111,97,116,95,116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,5,2,27,1,1,0,5,\r
+97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,\r
+111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,\r
+0,18,121,0,0,18,98,0,0,0,4,102,108,111,97,116,95,110,101,103,97,116,101,0,18,121,0,0,18,121,0,0,0,\r
+4,102,108,111,97,116,95,97,100,100,0,18,120,0,0,18,120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,\r
+116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,5,2,21,1,1,0,5,97,0,0,1,1,0,5,98,\r
+0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,95,116,111,95,102,108,111,\r
+97,116,0,18,120,0,0,18,97,0,0,0,4,105,110,116,95,116,111,95,102,108,111,97,116,0,18,121,0,0,18,98,\r
+0,0,0,4,102,108,111,97,116,95,109,117,108,116,105,112,108,121,0,18,120,0,0,18,120,0,0,18,121,0,0,0,\r
+4,102,108,111,97,116,95,116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,8,18,99,0,0,0,1,0,5,2,22,1,\r
+1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,9,1,120,0,0,1,1,121,0,0,0,3,2,0,5,1,99,0,0,0,4,105,110,116,\r
+95,116,111,95,102,108,111,97,116,0,18,120,0,0,18,97,0,0,0,4,105,110,116,95,116,111,95,102,108,111,\r
+97,116,0,18,121,0,0,18,98,0,0,0,4,102,108,111,97,116,95,100,105,118,105,100,101,0,18,120,0,0,18,\r
+120,0,0,18,121,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,116,0,18,99,0,0,18,120,0,0,0,8,18,\r
+99,0,0,0,1,0,10,2,26,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,\r
+18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,0,0,0,1,0,10,2,27,1,1,0,10,118,0,0,\r
+1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,\r
+0,18,117,0,59,121,0,47,0,0,0,0,1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,\r
+50,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59,121,0,48,0,0,0,0,1,0,\r
+10,2,22,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,\r
+120,0,49,0,18,118,0,59,121,0,18,117,0,59,121,0,49,0,0,0,0,1,0,11,2,26,1,1,0,11,118,0,0,1,1,0,11,\r
+117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,\r
+0,59,121,0,46,0,18,118,0,59,122,0,18,117,0,59,122,0,46,0,0,0,0,1,0,11,2,27,1,1,0,11,118,0,0,1,1,0,\r
+11,117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,\r
+117,0,59,121,0,47,0,18,118,0,59,122,0,18,117,0,59,122,0,47,0,0,0,0,1,0,11,2,21,1,1,0,11,118,0,0,1,\r
+1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,48,0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,0,0,0,1,0,11,2,22,1,1,0,11,118,0,0,\r
+1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,\r
+0,18,117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,0,0,0,1,0,12,2,26,1,1,0,12,118,0,\r
+0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,46,0,18,118,0,59,122,0,18,117,0,59,122,0,46,0,18,118,0,59,119,0,18,117,0,\r
+59,119,0,46,0,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,\r
+0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0,18,\r
+117,0,59,122,0,47,0,18,118,0,59,119,0,18,117,0,59,119,0,47,0,0,0,0,1,0,12,2,21,1,1,0,12,118,0,0,1,\r
+1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,48,0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,18,118,0,59,119,0,18,117,0,59,119,\r
+0,48,0,0,0,0,1,0,12,2,22,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,\r
+120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,0,18,117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,\r
+59,122,0,49,0,18,118,0,59,119,0,18,117,0,59,119,0,49,0,0,0,0,1,0,6,2,26,1,1,0,6,118,0,0,1,1,0,6,\r
+117,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,\r
+117,0,59,121,0,46,0,0,0,0,1,0,6,2,27,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,\r
+18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,0,0,0,1,0,6,2,21,\r
+1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,\r
+48,0,18,118,0,59,121,0,18,117,0,59,121,0,48,0,0,0,0,1,0,6,2,22,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,\r
+8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,0,18,117,0,59,\r
+121,0,49,0,0,0,0,1,0,7,2,26,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,\r
+59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,118,0,59,122,0,18,117,\r
+0,59,122,0,46,0,0,0,0,1,0,7,2,27,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0,\r
+18,117,0,59,122,0,47,0,0,0,0,1,0,7,2,21,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,\r
+0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59,121,0,48,0,18,118,0,59,\r
+122,0,18,117,0,59,122,0,48,0,0,0,0,1,0,7,2,22,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,\r
+99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,0,18,117,0,59,121,0,49,0,18,118,0,\r
+59,122,0,18,117,0,59,122,0,49,0,0,0,0,1,0,8,2,26,1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,\r
+101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,\r
+118,0,59,122,0,18,117,0,59,122,0,46,0,18,118,0,59,119,0,18,117,0,59,119,0,46,0,0,0,0,1,0,8,2,27,1,\r
+1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,47,\r
+0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0,18,117,0,59,122,0,47,0,18,118,0,59,\r
+119,0,18,117,0,59,119,0,47,0,0,0,0,1,0,8,2,21,1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,\r
+99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59,121,0,48,0,18,118,0,\r
+59,122,0,18,117,0,59,122,0,48,0,18,118,0,59,119,0,18,117,0,59,119,0,48,0,0,0,0,1,0,8,2,22,1,1,0,8,\r
+118,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,\r
+118,0,59,121,0,18,117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,18,118,0,59,119,0,\r
+18,117,0,59,119,0,49,0,0,0,0,1,0,13,2,26,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,\r
+0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,\r
+46,0,0,0,0,1,0,13,2,27,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,\r
+0,57,18,110,0,16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,0,0,0,0,1,0,13,2,\r
+22,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,110,0,16,8,\r
+48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,49,0,0,0,0,1,0,14,2,26,1,1,0,14,109,0,0,\r
+1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,0,18,109,\r
+0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,0,0,0,\r
+0,1,0,14,2,27,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,\r
+110,0,16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,0,18,109,0,16,10,50,0,57,\r
+18,110,0,16,10,50,0,57,47,0,0,0,0,1,0,14,2,22,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,\r
+116,51,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,\r
+0,57,49,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,49,0,0,0,0,1,0,15,2,26,1,1,0,15,109,0,0,1,\r
+1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,0,18,109,0,\r
+16,10,49,0,57,18,110,0,16,10,49,0,57,46,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,0,18,\r
+109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,46,0,0,0,0,1,0,15,2,27,1,1,0,15,109,0,0,1,1,0,15,110,0,\r
+0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,\r
+18,110,0,16,10,49,0,57,47,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,47,0,18,109,0,16,10,51,0,\r
+57,18,110,0,16,10,51,0,57,47,0,0,0,0,1,0,15,2,22,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,\r
+116,52,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,\r
+0,57,49,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,49,0,18,109,0,16,10,51,0,57,18,110,0,16,10,\r
+51,0,57,49,0,0,0,0,1,0,10,2,26,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,97,0,18,\r
+117,0,59,120,0,46,0,18,97,0,18,117,0,59,121,0,46,0,0,0,0,1,0,10,2,26,1,1,0,10,118,0,0,1,1,0,9,98,0,\r
+0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98,0,46,0,0,0,0,1,0,\r
+10,2,27,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,47,0,18,\r
+97,0,18,117,0,59,121,0,47,0,0,0,0,1,0,10,2,27,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,\r
+50,0,18,118,0,59,120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,0,0,0,1,0,10,2,21,1,1,0,9,97,0,\r
+0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,\r
+0,48,0,0,0,0,1,0,10,2,21,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,\r
+0,18,98,0,48,0,18,118,0,59,121,0,18,98,0,48,0,0,0,0,1,0,10,2,22,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,\r
+1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,0,0,0,1,0,10,\r
+2,22,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,98,0,49,0,18,\r
+118,0,59,121,0,18,98,0,49,0,0,0,0,1,0,11,2,26,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,\r
+51,0,18,97,0,18,117,0,59,120,0,46,0,18,97,0,18,117,0,59,121,0,46,0,18,97,0,18,117,0,59,122,0,46,0,\r
+0,0,0,1,0,11,2,26,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,98,\r
+0,46,0,18,118,0,59,121,0,18,98,0,46,0,18,118,0,59,122,0,18,98,0,46,0,0,0,0,1,0,11,2,27,1,1,0,9,97,\r
+0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,\r
+121,0,47,0,18,97,0,18,117,0,59,122,0,47,0,0,0,0,1,0,11,2,27,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,\r
+58,118,101,99,51,0,18,118,0,59,120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,18,118,0,59,122,0,\r
+18,98,0,47,0,0,0,0,1,0,11,2,21,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,97,0,18,\r
+117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,0,48,0,18,97,0,18,117,0,59,122,0,48,0,0,0,0,1,0,11,2,\r
+21,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,98,0,48,0,18,118,\r
+0,59,121,0,18,98,0,48,0,18,118,0,59,122,0,18,98,0,48,0,0,0,0,1,0,11,2,22,1,1,0,9,97,0,0,1,1,0,11,\r
+117,0,0,0,1,8,58,118,101,99,51,0,18,97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,18,\r
+97,0,18,117,0,59,122,0,49,0,0,0,0,1,0,11,2,22,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,\r
+51,0,18,118,0,59,120,0,18,98,0,49,0,18,118,0,59,121,0,18,98,0,49,0,18,118,0,59,122,0,18,98,0,49,0,\r
+0,0,0,1,0,12,2,26,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,59,120,\r
+0,46,0,18,97,0,18,117,0,59,121,0,46,0,18,97,0,18,117,0,59,122,0,46,0,18,97,0,18,117,0,59,119,0,46,\r
+0,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,\r
+98,0,46,0,18,118,0,59,121,0,18,98,0,46,0,18,118,0,59,122,0,18,98,0,46,0,18,118,0,59,119,0,18,98,0,\r
+46,0,0,0,0,1,0,12,2,27,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,\r
+59,120,0,47,0,18,97,0,18,117,0,59,121,0,47,0,18,97,0,18,117,0,59,122,0,47,0,18,97,0,18,117,0,59,\r
+119,0,47,0,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,\r
+120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,18,118,0,59,122,0,18,98,0,47,0,18,118,0,59,119,0,\r
+18,98,0,47,0,0,0,0,1,0,12,2,21,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,\r
+117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,0,48,0,18,97,0,18,117,0,59,122,0,48,0,18,97,0,18,117,0,\r
+59,119,0,48,0,0,0,0,1,0,12,2,21,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,\r
+59,120,0,18,98,0,48,0,18,118,0,59,121,0,18,98,0,48,0,18,118,0,59,122,0,18,98,0,48,0,18,118,0,59,\r
+119,0,18,98,0,48,0,0,0,0,1,0,12,2,22,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,\r
+97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,18,97,0,18,117,0,59,122,0,49,0,18,97,0,\r
+18,117,0,59,119,0,49,0,0,0,0,1,0,12,2,22,1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,\r
+18,118,0,59,120,0,18,98,0,49,0,18,118,0,59,121,0,18,98,0,49,0,18,118,0,59,122,0,18,98,0,49,0,18,\r
+118,0,59,119,0,18,98,0,49,0,0,0,0,1,0,13,2,26,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,\r
+50,0,18,97,0,18,110,0,16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49,0,57,46,0,0,0,0,1,0,13,2,26,1,1,\r
+0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,98,0,46,0,18,109,0,\r
+16,10,49,0,57,18,98,0,46,0,0,0,0,1,0,13,2,27,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,\r
+50,0,18,97,0,18,110,0,16,8,48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57,47,0,0,0,0,1,0,13,2,27,1,1,\r
+0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,98,0,47,0,18,109,0,\r
+16,10,49,0,57,18,98,0,47,0,0,0,0,1,0,13,2,21,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,\r
+50,0,18,97,0,18,110,0,16,8,48,0,57,48,0,18,97,0,18,110,0,16,10,49,0,57,48,0,0,0,0,1,0,13,2,21,1,1,\r
+0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,98,0,48,0,18,109,0,\r
+16,10,49,0,57,18,98,0,48,0,0,0,0,1,0,13,2,22,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,\r
+50,0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,0,0,0,1,0,13,2,22,1,1,\r
+0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,98,0,49,0,18,109,0,\r
+16,10,49,0,57,18,98,0,49,0,0,0,0,1,0,14,2,26,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,\r
+51,0,18,97,0,18,110,0,16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49,0,57,46,0,18,97,0,18,110,0,16,10,\r
+50,0,57,46,0,0,0,0,1,0,14,2,26,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,51,0,18,109,0,\r
+16,8,48,0,57,18,98,0,46,0,18,109,0,16,10,49,0,57,18,98,0,46,0,18,109,0,16,10,50,0,57,18,98,0,46,0,\r
+0,0,0,1,0,14,2,27,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,97,0,18,110,0,16,8,\r
+48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57,47,0,18,97,0,18,110,0,16,10,50,0,57,47,0,0,0,0,1,0,14,\r
+2,27,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,98,0,47,0,\r
+18,109,0,16,10,49,0,57,18,98,0,47,0,18,109,0,16,10,50,0,57,18,98,0,47,0,0,0,0,1,0,14,2,21,1,1,0,9,\r
+97,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,97,0,18,110,0,16,8,48,0,57,48,0,18,97,0,18,110,\r
+0,16,10,49,0,57,48,0,18,97,0,18,110,0,16,10,50,0,57,48,0,0,0,0,1,0,14,2,21,1,1,0,14,109,0,0,1,1,0,\r
+9,98,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,98,0,48,0,18,109,0,16,10,49,0,57,18,98,\r
+0,48,0,18,109,0,16,10,50,0,57,18,98,0,48,0,0,0,0,1,0,14,2,22,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,\r
+58,109,97,116,51,0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,18,97,0,\r
+18,110,0,16,10,50,0,57,49,0,0,0,0,1,0,14,2,22,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,\r
+51,0,18,109,0,16,8,48,0,57,18,98,0,49,0,18,109,0,16,10,49,0,57,18,98,0,49,0,18,109,0,16,10,50,0,57,\r
+18,98,0,49,0,0,0,0,1,0,15,2,26,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,97,0,18,\r
+110,0,16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49,0,57,46,0,18,97,0,18,110,0,16,10,50,0,57,46,0,18,\r
+97,0,18,110,0,16,10,51,0,57,46,0,0,0,0,1,0,15,2,26,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,\r
+116,52,0,18,109,0,16,8,48,0,57,18,98,0,46,0,18,109,0,16,10,49,0,57,18,98,0,46,0,18,109,0,16,10,50,\r
+0,57,18,98,0,46,0,18,109,0,16,10,51,0,57,18,98,0,46,0,0,0,0,1,0,15,2,27,1,1,0,9,97,0,0,1,1,0,15,\r
+110,0,0,0,1,8,58,109,97,116,52,0,18,97,0,18,110,0,16,8,48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57,\r
+47,0,18,97,0,18,110,0,16,10,50,0,57,47,0,18,97,0,18,110,0,16,10,51,0,57,47,0,0,0,0,1,0,15,2,27,1,1,\r
+0,15,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,98,0,47,0,18,109,0,\r
+16,10,49,0,57,18,98,0,47,0,18,109,0,16,10,50,0,57,18,98,0,47,0,18,109,0,16,10,51,0,57,18,98,0,47,0,\r
+0,0,0,1,0,15,2,21,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,97,0,18,110,0,16,8,\r
+48,0,57,48,0,18,97,0,18,110,0,16,10,49,0,57,48,0,18,97,0,18,110,0,16,10,50,0,57,48,0,18,97,0,18,\r
+110,0,16,10,51,0,57,48,0,0,0,0,1,0,15,2,21,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,52,\r
+0,18,109,0,16,8,48,0,57,18,98,0,48,0,18,109,0,16,10,49,0,57,18,98,0,48,0,18,109,0,16,10,50,0,57,18,\r
+98,0,48,0,18,109,0,16,10,51,0,57,18,98,0,48,0,0,0,0,1,0,15,2,22,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,\r
+1,8,58,109,97,116,52,0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,18,\r
+97,0,18,110,0,16,10,50,0,57,49,0,18,97,0,18,110,0,16,10,51,0,57,49,0,0,0,0,1,0,15,2,22,1,1,0,15,\r
+109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,98,0,49,0,18,109,0,16,10,\r
+49,0,57,18,98,0,49,0,18,109,0,16,10,50,0,57,18,98,0,49,0,18,109,0,16,10,51,0,57,18,98,0,49,0,0,0,0,\r
+1,0,6,2,26,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,46,0,0,\r
+1,0,6,2,26,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,46,0,0,\r
+1,0,6,2,27,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,47,0,0,\r
+1,0,6,2,27,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,47,0,0,\r
+1,0,6,2,21,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,48,0,0,\r
+1,0,6,2,21,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,48,0,0,\r
+1,0,6,2,22,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,0,0,18,117,0,49,0,0,\r
+1,0,6,2,22,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,50,0,18,98,0,0,0,49,0,0,\r
+1,0,7,2,26,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,46,0,0,\r
+1,0,7,2,26,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,46,0,0,\r
+1,0,7,2,27,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,47,0,0,\r
+1,0,7,2,27,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,47,0,0,\r
+1,0,7,2,21,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,48,0,0,\r
+1,0,7,2,21,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,48,0,0,\r
+1,0,7,2,22,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,0,0,18,117,0,49,0,0,\r
+1,0,7,2,22,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,51,0,18,98,0,0,0,49,0,0,\r
+1,0,8,2,26,1,1,0,5,97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,46,0,0,\r
+1,0,8,2,26,1,1,0,8,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,46,0,0,\r
+1,0,8,2,27,1,1,0,5,97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,47,0,0,\r
+1,0,8,2,27,1,1,0,8,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,47,0,0,\r
+1,0,8,2,21,1,1,0,5,97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,48,0,0,\r
+1,0,8,2,21,1,1,0,8,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,48,0,0,\r
+1,0,8,2,22,1,1,0,5,97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,0,0,18,117,0,49,0,0,\r
+1,0,8,2,22,1,1,0,8,118,0,0,1,1,0,5,98,0,0,0,1,8,18,118,0,58,105,118,101,99,52,0,18,98,0,0,0,49,0,0,\r
+1,0,10,2,27,1,1,0,10,118,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,54,0,18,118,0,59,121,0,54,\r
+0,0,0,0,1,0,11,2,27,1,1,0,11,118,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,54,0,18,118,0,59,\r
+121,0,54,0,18,118,0,59,122,0,54,0,0,0,0,1,0,12,2,27,1,1,0,12,118,0,0,0,1,8,58,118,101,99,52,0,18,\r
+118,0,59,120,0,54,0,18,118,0,59,121,0,54,0,18,118,0,59,122,0,54,0,18,118,0,59,119,0,54,0,0,0,0,1,0,\r
+6,2,27,1,1,0,6,118,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,54,0,18,118,0,59,121,0,54,0,\r
+0,0,0,1,0,7,2,27,1,1,0,7,118,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,54,0,18,118,0,59,\r
+121,0,54,0,18,118,0,59,122,0,54,0,0,0,0,1,0,8,2,27,1,1,0,8,118,0,0,0,1,8,58,105,118,101,99,52,0,18,\r
+118,0,59,120,0,54,0,18,118,0,59,121,0,54,0,18,118,0,59,122,0,54,0,18,118,0,59,119,0,54,0,0,0,0,1,0,\r
+13,2,27,1,1,0,13,109,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,54,0,18,109,0,16,10,49,0,\r
+57,54,0,0,0,0,1,0,14,2,27,1,1,0,14,109,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,54,0,18,\r
+109,0,16,10,49,0,57,54,0,18,109,0,16,10,50,0,57,54,0,0,0,0,1,0,15,2,27,1,1,0,15,109,0,0,0,1,8,58,\r
+109,97,116,52,0,18,109,0,16,8,48,0,57,54,0,18,109,0,16,10,49,0,57,54,0,18,109,0,16,10,50,0,57,54,0,\r
+18,109,0,16,10,51,0,57,54,0,0,0,0,1,0,0,2,25,1,0,2,9,97,0,0,0,1,9,18,97,0,17,49,0,48,0,0,22,0,0,1,\r
+0,0,2,25,1,0,2,5,97,0,0,0,1,9,18,97,0,16,10,49,0,22,0,0,1,0,0,2,25,1,0,2,10,118,0,0,0,1,9,18,118,0,\r
+59,120,0,52,0,9,18,118,0,59,121,0,52,0,0,1,0,0,2,25,1,0,2,11,118,0,0,0,1,9,18,118,0,59,120,0,52,0,\r
+9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,0,1,0,0,2,25,1,0,2,12,118,0,0,0,1,9,18,118,0,59,\r
+120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,9,18,118,0,59,119,0,52,0,0,1,0,0,2,25,\r
+1,0,2,6,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,0,1,0,0,2,25,1,0,2,7,118,0,0,\r
0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,0,1,0,0,2,25,1,0,2,\r
-12,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,9,18,118,\r
-0,59,119,0,52,0,0,1,0,0,2,25,1,0,2,6,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,\r
-0,1,0,0,2,25,1,0,2,7,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,\r
-122,0,52,0,0,1,0,0,2,25,1,0,2,8,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,\r
-118,0,59,122,0,52,0,9,18,118,0,59,119,0,52,0,0,1,0,0,2,25,1,0,2,13,109,0,0,0,1,9,18,109,0,16,8,48,\r
-0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,0,1,0,0,2,25,1,0,2,14,109,0,0,0,1,9,18,109,0,16,8,48,0,57,\r
-52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,0,1,0,0,2,25,1,0,2,15,109,0,0,0,1,\r
-9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,9,18,109,\r
-0,16,10,51,0,57,52,0,0,1,0,0,2,24,1,0,2,9,97,0,0,0,1,9,18,97,0,17,49,0,48,0,0,21,0,0,1,0,0,2,24,1,\r
-0,2,5,97,0,0,0,1,9,18,97,0,16,10,49,0,21,0,0,1,0,0,2,24,1,0,2,10,118,0,0,0,1,9,18,118,0,59,120,0,\r
-51,0,9,18,118,0,59,121,0,51,0,0,1,0,0,2,24,1,0,2,11,118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,\r
-0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,0,1,0,0,2,24,1,0,2,12,118,0,0,0,1,9,18,118,0,59,120,0,51,\r
-0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,9,18,118,0,59,119,0,51,0,0,1,0,0,2,24,1,0,2,6,\r
-118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,0,1,0,0,2,24,1,0,2,7,118,0,0,0,1,9,\r
-18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,0,1,0,0,2,24,1,0,2,8,118,\r
-0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,9,18,118,0,59,\r
-119,0,51,0,0,1,0,0,2,24,1,0,2,13,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,109,0,16,10,49,0,57,\r
-51,0,0,1,0,0,2,24,1,0,2,14,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,109,0,16,10,49,0,57,51,0,\r
-9,18,109,0,16,10,50,0,57,51,0,0,1,0,0,2,24,1,0,2,15,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,\r
-109,0,16,10,49,0,57,51,0,9,18,109,0,16,10,50,0,57,51,0,9,18,109,0,16,10,51,0,57,51,0,0,1,0,9,2,25,\r
-1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3,2,0,9,1,98,0,0,0,9,18,98,0,18,97,0,20,0,9,18,97,0,52,0,8,18,98,0,\r
-0,0,1,0,5,2,25,1,0,2,5,97,0,0,1,1,0,5,0,0,0,1,3,2,0,5,1,98,0,0,0,9,18,98,0,18,97,0,20,0,9,18,97,0,\r
-52,0,8,18,98,0,0,0,1,0,10,2,25,1,0,2,10,118,0,0,1,1,0,5,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,18,\r
-118,0,20,0,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,8,18,117,0,0,0,1,0,11,2,25,1,0,2,11,\r
-118,0,0,1,1,0,5,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,52,0,9,\r
-18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,8,18,117,0,0,0,1,0,12,2,25,1,0,2,12,118,0,0,1,1,0,\r
-5,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,\r
-0,52,0,9,18,118,0,59,122,0,52,0,9,18,118,0,59,119,0,52,0,8,18,117,0,0,0,1,0,6,2,25,1,0,2,6,118,0,0,\r
-1,1,0,5,0,0,0,1,3,2,0,6,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,52,0,9,18,118,0,\r
-59,121,0,52,0,8,18,117,0,0,0,1,0,7,2,25,1,0,2,7,118,0,0,1,1,0,5,0,0,0,1,3,2,0,7,1,117,0,0,0,9,18,\r
-117,0,18,118,0,20,0,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,8,\r
-18,117,0,0,0,1,0,8,2,25,1,0,2,8,118,0,0,1,1,0,5,0,0,0,1,3,2,0,8,1,117,0,0,0,9,18,117,0,18,118,0,20,\r
-0,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,9,18,118,0,59,119,0,\r
-52,0,8,18,117,0,0,0,1,0,13,2,25,1,0,2,13,109,0,0,1,1,0,5,0,0,0,1,3,2,0,13,1,110,0,0,0,9,18,110,0,\r
-18,109,0,20,0,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,8,18,110,0,0,0,1,0,14,2,\r
-25,1,0,2,14,109,0,0,1,1,0,5,0,0,0,1,3,2,0,14,1,110,0,0,0,9,18,110,0,18,109,0,20,0,9,18,109,0,16,8,\r
-48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,8,18,110,0,0,0,1,0,15,2,\r
-25,1,0,2,15,109,0,0,1,1,0,5,0,0,0,1,3,2,0,15,1,110,0,0,0,9,18,110,0,18,109,0,20,0,9,18,109,0,16,8,\r
-48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,9,18,109,0,16,10,51,0,57,\r
-52,0,8,18,110,0,0,0,1,0,9,2,24,1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3,2,0,9,1,98,0,0,0,9,18,98,0,18,97,0,\r
-20,0,9,18,97,0,51,0,8,18,98,0,0,0,1,0,5,2,24,1,0,2,5,97,0,0,1,1,0,5,0,0,0,1,3,2,0,5,1,98,0,0,0,9,\r
-18,98,0,18,97,0,20,0,9,18,97,0,51,0,8,18,98,0,0,0,1,0,10,2,24,1,0,2,10,118,0,0,1,1,0,5,0,0,0,1,3,2,\r
-0,10,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,8,18,\r
-117,0,0,0,1,0,11,2,24,1,0,2,11,118,0,0,1,1,0,5,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,18,118,0,20,\r
-0,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,8,18,117,0,0,0,1,0,12,\r
-2,24,1,0,2,12,118,0,0,1,1,0,5,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,\r
-120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,9,18,118,0,59,119,0,51,0,8,18,117,0,0,\r
-0,1,0,6,2,24,1,0,2,6,118,0,0,1,1,0,5,0,0,0,1,3,2,0,6,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,\r
-0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,8,18,117,0,0,0,1,0,7,2,24,1,0,2,7,118,0,0,1,1,0,5,0,0,0,1,\r
-3,2,0,7,1,117,0,0,0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,\r
-18,118,0,59,122,0,51,0,8,18,117,0,0,0,1,0,8,2,24,1,0,2,8,118,0,0,1,1,0,5,0,0,0,1,3,2,0,8,1,117,0,0,\r
-0,9,18,117,0,18,118,0,20,0,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,\r
-51,0,9,18,118,0,59,119,0,51,0,8,18,117,0,0,0,1,0,13,2,24,1,0,2,13,109,0,0,1,1,0,5,0,0,0,1,3,2,0,13,\r
-1,110,0,0,0,9,18,110,0,18,109,0,20,0,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,8,\r
-18,110,0,0,0,1,0,14,2,24,1,0,2,14,109,0,0,1,1,0,5,0,0,0,1,3,2,0,14,1,110,0,0,0,9,18,110,0,18,109,0,\r
-20,0,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,8,18,\r
-110,0,0,0,1,0,15,2,24,1,0,2,15,109,0,0,1,1,0,5,0,0,0,1,3,2,0,15,1,110,0,0,0,9,18,110,0,18,109,0,20,\r
-0,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,9,18,\r
-109,0,16,10,51,0,57,52,0,8,18,110,0,0,0,1,0,1,2,15,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,99,\r
-0,0,0,4,102,108,111,97,116,95,108,101,115,115,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,\r
-1,2,15,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,\r
-116,0,18,98,0,0,0,40,0,0,1,0,1,2,16,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,99,0,0,0,4,102,108,\r
-111,97,116,95,108,101,115,115,0,18,99,0,0,18,98,0,0,18,97,0,0,0,8,18,99,0,0,0,1,0,1,2,16,1,1,0,5,\r
-97,0,0,1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,\r
-0,41,0,0,1,0,1,2,18,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,103,0,0,1,1,101,0,0,0,4,102,108,\r
-111,97,116,95,108,101,115,115,0,18,103,0,0,18,98,0,0,18,97,0,0,0,4,102,108,111,97,116,95,101,113,\r
-117,97,108,0,18,101,0,0,18,97,0,0,18,98,0,0,0,8,18,103,0,18,101,0,32,0,0,1,0,1,2,18,1,1,0,5,97,0,0,\r
-1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,43,0,\r
-0,1,0,1,2,17,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,103,0,0,1,1,101,0,0,0,4,102,108,111,97,\r
-116,95,108,101,115,115,0,18,103,0,0,18,97,0,0,18,98,0,0,0,4,102,108,111,97,116,95,101,113,117,97,\r
-108,0,18,101,0,0,18,97,0,0,18,98,0,0,0,8,18,103,0,18,101,0,32,0,0,1,0,1,2,17,1,1,0,5,97,0,0,1,1,0,\r
-5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,42,0,0,1,0,\r
-1,2,11,1,1,0,1,97,0,0,1,1,0,1,98,0,0,0,1,8,18,97,0,18,98,0,39,0,0,1,0,1,2,29,1,1,0,1,97,0,0,0,1,8,\r
-18,97,0,15,2,48,0,38,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,9,102,0,0,0,1,4,102,108,111,97,116,95,\r
-112,114,105,110,116,0,18,102,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,5,105,0,0,0,1,4,105,110,\r
-116,95,112,114,105,110,116,0,18,105,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,1,98,0,0,0,1,4,98,\r
-111,111,108,95,112,114,105,110,116,0,18,98,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,10,118,0,0,\r
-0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,\r
-0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,11,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,\r
-59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,\r
-118,0,59,122,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,12,118,0,0,0,1,9,58,112,114,105,110,116,\r
-0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,\r
-116,0,18,118,0,59,122,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,119,0,0,0,0,0,1,0,0,0,112,114,\r
-105,110,116,0,1,1,0,6,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,\r
-105,110,116,0,18,118,0,59,121,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,7,118,0,0,0,1,9,58,112,\r
-114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,\r
-112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,8,118,0,0,0,1,\r
-9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,\r
-0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,119,\r
-0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,2,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,\r
-120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,\r
-0,3,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,\r
-118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,0,1,0,0,0,112,114,105,110,\r
-116,0,1,1,0,4,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,\r
-116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,9,58,112,114,105,\r
-110,116,0,18,118,0,59,119,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,13,109,0,0,0,1,9,58,112,\r
-114,105,110,116,0,18,109,0,16,8,48,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,49,0,57,0,\r
-0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,14,109,0,0,0,1,9,58,112,114,105,110,116,0,18,109,0,16,8,\r
-48,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,49,0,57,0,0,0,9,58,112,114,105,110,116,0,\r
-18,109,0,16,10,50,0,57,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,15,109,0,0,0,1,9,58,112,114,105,\r
-110,116,0,18,109,0,16,8,48,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,49,0,57,0,0,0,9,58,\r
-112,114,105,110,116,0,18,109,0,16,10,50,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,51,0,\r
-57,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,16,101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,\r
-0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,17,101,0,0,0,1,4,105,110,116,95,112,114,105,\r
-110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,18,101,0,0,0,1,4,105,110,116,95,112,\r
-114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,19,101,0,0,0,1,4,105,110,116,\r
-95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,20,101,0,0,0,1,4,105,\r
-110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,21,101,0,0,0,1,\r
-4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,0\r
+8,118,0,0,0,1,9,18,118,0,59,120,0,52,0,9,18,118,0,59,121,0,52,0,9,18,118,0,59,122,0,52,0,9,18,118,\r
+0,59,119,0,52,0,0,1,0,0,2,25,1,0,2,13,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,\r
+0,57,52,0,0,1,0,0,2,25,1,0,2,14,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,0,9,18,109,0,16,10,49,0,57,\r
+52,0,9,18,109,0,16,10,50,0,57,52,0,0,1,0,0,2,25,1,0,2,15,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,0,\r
+9,18,109,0,16,10,49,0,57,52,0,9,18,109,0,16,10,50,0,57,52,0,9,18,109,0,16,10,51,0,57,52,0,0,1,0,0,\r
+2,24,1,0,2,9,97,0,0,0,1,9,18,97,0,17,49,0,48,0,0,21,0,0,1,0,0,2,24,1,0,2,5,97,0,0,0,1,9,18,97,0,16,\r
+10,49,0,21,0,0,1,0,0,2,24,1,0,2,10,118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,0,\r
+1,0,0,2,24,1,0,2,11,118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,18,118,0,59,\r
+122,0,51,0,0,1,0,0,2,24,1,0,2,12,118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,0,59,121,0,51,0,9,\r
+18,118,0,59,122,0,51,0,9,18,118,0,59,119,0,51,0,0,1,0,0,2,24,1,0,2,6,118,0,0,0,1,9,18,118,0,59,120,\r
+0,51,0,9,18,118,0,59,121,0,51,0,0,1,0,0,2,24,1,0,2,7,118,0,0,0,1,9,18,118,0,59,120,0,51,0,9,18,118,\r
+0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,0,1,0,0,2,24,1,0,2,8,118,0,0,0,1,9,18,118,0,59,120,0,51,0,\r
+9,18,118,0,59,121,0,51,0,9,18,118,0,59,122,0,51,0,9,18,118,0,59,119,0,51,0,0,1,0,0,2,24,1,0,2,13,\r
+109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,109,0,16,10,49,0,57,51,0,0,1,0,0,2,24,1,0,2,14,109,0,\r
+0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,109,0,16,10,49,0,57,51,0,9,18,109,0,16,10,50,0,57,51,0,0,1,\r
+0,0,2,24,1,0,2,15,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,0,9,18,109,0,16,10,49,0,57,51,0,9,18,109,\r
+0,16,10,50,0,57,51,0,9,18,109,0,16,10,51,0,57,51,0,0,1,0,9,2,25,1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3,2,\r
+0,9,1,98,0,0,0,9,18,98,0,18,97,0,20,0,9,18,97,0,52,0,8,18,98,0,0,0,1,0,5,2,25,1,0,2,5,97,0,0,1,1,0,\r
+5,0,0,0,1,3,2,0,5,1,98,0,0,0,9,18,98,0,18,97,0,20,0,9,18,97,0,52,0,8,18,98,0,0,0,1,0,10,2,25,1,0,2,\r
+10,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,0,0,\r
+0,1,0,11,2,25,1,0,2,11,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,61,0,18,118,\r
+0,59,121,0,61,0,18,118,0,59,122,0,61,0,0,0,0,1,0,12,2,25,1,0,2,12,118,0,0,1,1,0,5,0,0,0,1,8,58,118,\r
+101,99,52,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,18,118,0,59,122,0,61,0,18,118,0,59,119,0,\r
+61,0,0,0,0,1,0,6,2,25,1,0,2,6,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,\r
+61,0,18,118,0,59,121,0,61,0,0,0,0,1,0,7,2,25,1,0,2,7,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,\r
+51,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,18,118,0,59,122,0,61,0,0,0,0,1,0,8,2,25,1,0,2,8,\r
+118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,18,\r
+118,0,59,122,0,61,0,18,118,0,59,119,0,61,0,0,0,0,1,0,13,2,25,1,0,2,13,109,0,0,1,1,0,5,0,0,0,1,8,58,\r
+109,97,116,50,0,18,109,0,16,8,48,0,57,61,0,18,109,0,16,10,49,0,57,61,0,0,0,0,1,0,14,2,25,1,0,2,14,\r
+109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,61,0,18,109,0,16,10,49,0,57,61,\r
+0,18,109,0,16,10,50,0,57,61,0,0,0,0,1,0,15,2,25,1,0,2,15,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,\r
+52,0,18,109,0,16,8,48,0,57,61,0,18,109,0,16,10,49,0,57,61,0,18,109,0,16,10,50,0,57,61,0,18,109,0,\r
+16,10,51,0,57,61,0,0,0,0,1,0,9,2,24,1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3,2,0,9,1,98,0,0,0,9,18,98,0,18,\r
+97,0,20,0,9,18,97,0,51,0,8,18,98,0,0,0,1,0,5,2,24,1,0,2,5,97,0,0,1,1,0,5,0,0,0,1,3,2,0,5,1,98,0,0,\r
+0,9,18,98,0,18,97,0,20,0,9,18,97,0,51,0,8,18,98,0,0,0,1,0,10,2,24,1,0,2,10,118,0,0,1,1,0,5,0,0,0,1,\r
+8,58,118,101,99,50,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,0,0,0,1,0,11,2,24,1,0,2,11,118,\r
+0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,18,118,0,59,\r
+122,0,60,0,0,0,0,1,0,12,2,24,1,0,2,12,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,\r
+0,60,0,18,118,0,59,121,0,60,0,18,118,0,59,122,0,60,0,18,118,0,59,119,0,60,0,0,0,0,1,0,6,2,24,1,0,2,\r
+6,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,0,\r
+0,0,1,0,7,2,24,1,0,2,7,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,60,0,18,\r
+118,0,59,121,0,60,0,18,118,0,59,122,0,60,0,0,0,0,1,0,8,2,24,1,0,2,8,118,0,0,1,1,0,5,0,0,0,1,8,58,\r
+105,118,101,99,52,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,18,118,0,59,122,0,60,0,18,118,0,\r
+59,119,0,60,0,0,0,0,1,0,13,2,24,1,0,2,13,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,\r
+8,48,0,57,60,0,18,109,0,16,10,49,0,57,60,0,0,0,0,1,0,14,2,24,1,0,2,14,109,0,0,1,1,0,5,0,0,0,1,8,58,\r
+109,97,116,51,0,18,109,0,16,8,48,0,57,60,0,18,109,0,16,10,49,0,57,60,0,18,109,0,16,10,50,0,57,60,0,\r
+0,0,0,1,0,15,2,24,1,0,2,15,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,60,0,\r
+18,109,0,16,10,49,0,57,60,0,18,109,0,16,10,50,0,57,60,0,18,109,0,16,10,51,0,57,60,0,0,0,0,1,0,1,2,\r
+15,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,99,0,0,0,4,102,108,111,97,116,95,108,101,115,115,0,\r
+18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,1,2,15,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,58,\r
+102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,40,0,0,1,0,1,2,16,1,1,0,9,97,\r
+0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,99,0,0,0,4,102,108,111,97,116,95,108,101,115,115,0,18,99,0,0,18,\r
+98,0,0,18,97,0,0,0,8,18,99,0,0,0,1,0,1,2,16,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,\r
+116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,41,0,0,1,0,1,2,18,1,1,0,9,97,0,0,1,1,0,9,98,\r
+0,0,0,1,3,2,0,1,1,103,0,0,1,1,101,0,0,0,4,102,108,111,97,116,95,108,101,115,115,0,18,103,0,0,18,98,\r
+0,0,18,97,0,0,0,4,102,108,111,97,116,95,101,113,117,97,108,0,18,101,0,0,18,97,0,0,18,98,0,0,0,8,18,\r
+103,0,18,101,0,32,0,0,1,0,1,2,18,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,\r
+0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,43,0,0,1,0,1,2,17,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,\r
+0,1,1,103,0,0,1,1,101,0,0,0,4,102,108,111,97,116,95,108,101,115,115,0,18,103,0,0,18,97,0,0,18,98,0,\r
+0,0,4,102,108,111,97,116,95,101,113,117,97,108,0,18,101,0,0,18,97,0,0,18,98,0,0,0,8,18,103,0,18,\r
+101,0,32,0,0,1,0,1,2,17,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,\r
+102,108,111,97,116,0,18,98,0,0,0,42,0,0,1,0,1,2,11,1,1,0,1,97,0,0,1,1,0,1,98,0,0,0,1,8,18,97,0,18,\r
+98,0,39,0,0,1,0,1,2,29,1,1,0,1,97,0,0,0,1,8,18,97,0,15,2,48,0,38,0,0,1,0,0,0,112,114,105,110,116,0,\r
+1,1,0,9,102,0,0,0,1,4,102,108,111,97,116,95,112,114,105,110,116,0,18,102,0,0,0,0,1,0,0,0,112,114,\r
+105,110,116,0,1,1,0,5,105,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,105,0,0,0,0,1,0,0,0,\r
+112,114,105,110,116,0,1,1,0,1,98,0,0,0,1,4,98,111,111,108,95,112,114,105,110,116,0,18,98,0,0,0,0,1,\r
+0,0,0,112,114,105,110,116,0,1,1,0,10,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,\r
+0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,11,118,\r
+0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,\r
+121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,\r
+0,12,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,\r
+118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,9,58,112,114,105,110,116,0,\r
+18,118,0,59,119,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,6,118,0,0,0,1,9,58,112,114,105,110,\r
+116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,0,1,0,0,0,112,114,\r
+105,110,116,0,1,1,0,7,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,\r
+105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,0,1,0,0,0,\r
+112,114,105,110,116,0,1,1,0,8,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,\r
+112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,122,0,0,0,0,9,\r
+58,112,114,105,110,116,0,18,118,0,59,119,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,2,118,0,0,0,\r
+1,9,58,112,114,105,110,116,0,18,118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,\r
+0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,3,118,0,0,0,1,9,58,112,114,105,110,116,0,18,118,0,59,\r
+120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,\r
+59,122,0,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,4,118,0,0,0,1,9,58,112,114,105,110,116,0,18,\r
+118,0,59,120,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,121,0,0,0,0,9,58,112,114,105,110,116,0,\r
+18,118,0,59,122,0,0,0,0,9,58,112,114,105,110,116,0,18,118,0,59,119,0,0,0,0,0,1,0,0,0,112,114,105,\r
+110,116,0,1,1,0,13,109,0,0,0,1,9,58,112,114,105,110,116,0,18,109,0,16,8,48,0,57,0,0,0,9,58,112,114,\r
+105,110,116,0,18,109,0,16,10,49,0,57,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,14,109,0,0,0,1,9,\r
+58,112,114,105,110,116,0,18,109,0,16,8,48,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,49,\r
+0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,50,0,57,0,0,0,0,1,0,0,0,112,114,105,110,116,0,\r
+1,1,0,15,109,0,0,0,1,9,58,112,114,105,110,116,0,18,109,0,16,8,48,0,57,0,0,0,9,58,112,114,105,110,\r
+116,0,18,109,0,16,10,49,0,57,0,0,0,9,58,112,114,105,110,116,0,18,109,0,16,10,50,0,57,0,0,0,9,58,\r
+112,114,105,110,116,0,18,109,0,16,10,51,0,57,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,16,101,0,\r
+0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,1,0,17,\r
+101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,116,0,1,\r
+1,0,18,101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,105,110,\r
+116,0,1,1,0,19,101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,112,114,\r
+105,110,116,0,1,1,0,20,101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,1,0,0,0,\r
+112,114,105,110,116,0,1,1,0,21,101,0,0,0,1,4,105,110,116,95,112,114,105,110,116,0,18,101,0,0,0,0,0\r
//
vec4 texture1D (sampler1D sampler, float coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
}
vec4 texture2D (sampler2D sampler, vec2 coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias) {\r
- vec2 u;\r
- u.s = coord.s / coord.p;\r
- u.t = coord.t / coord.p;
- return texture2D (sampler, u, bias);
+ return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p), bias);
}\r
vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias) {\r
- vec2 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;
- return texture2D (sampler, u, bias);
+ return texture2D (sampler, vec2 (coord.s / coord.q, coord.t / coord.q), bias);
}
vec4 texture3D (sampler3D sampler, vec3 coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return texture3D (sampler, u, bias);
+ return texture3D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), bias);
}
vec4 textureCube (samplerCube sampler, vec3 coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = 0.0;\r
- u.p = coord.p / coord.q;
- return shadow1D (sampler, u, bias);
+ return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q), bias);
}\r
vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return shadow2D (sampler, u, bias);
+ return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), bias);
}
//
//
float dFdx (float p) {\r
- // XXX:
+ // XXX:
return 0.0;
}
vec2 dFdx (vec2 p) {\r
- // XXX:
+ // XXX:
return vec2 (0.0);
}
vec3 dFdx (vec3 p) {\r
- // XXX:
+ // XXX:
return vec3 (0.0);
}
vec4 dFdx (vec4 p) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
float dFdy (float p) {\r
- // XXX:
+ // XXX:
return 0.0;
}
vec2 dFdy (vec2 p) {\r
- // XXX:
+ // XXX:
return vec2 (0.0);
}
vec3 dFdy (vec3 p) {\r
- // XXX:
+ // XXX:
return vec3 (0.0);
}
vec4 dFdy (vec4 p) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
0,1,0,12,0,116,101,120,116,117,114,101,50,68,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,10,99,\r
111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,\r
12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,\r
-0,0,11,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,115,\r
-0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,0,49,20,0,9,18,117,0,59,116,0,18,\r
-99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,20,0,8,58,116,101,120,116,117,\r
-114,101,50,68,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,\r
-116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,\r
-12,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,115,0,\r
-18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,\r
-99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,\r
-114,101,50,68,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,\r
-116,101,120,116,117,114,101,51,68,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,\r
-114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,\r
-101,120,116,117,114,101,51,68,80,114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,\r
-111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,\r
-111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,\r
-111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,\r
-114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,51,68,\r
-0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,116,101,120,116,\r
-117,114,101,67,117,98,101,0,1,0,0,19,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,\r
-0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,\r
-100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,\r
-9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,\r
+0,0,11,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,\r
+0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,\r
+111,114,100,0,59,112,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,0,\r
+0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,\r
+17,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,\r
+58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,50,0,18,99,\r
+111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,116,0,\r
+18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,116,101,120,116,117,\r
+114,101,51,68,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,98,\r
+105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,\r
+101,51,68,80,114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,\r
+1,0,0,9,98,105,97,115,0,0,0,1,8,58,116,101,120,116,117,114,101,51,68,0,18,115,97,109,112,108,101,\r
+114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,\r
+18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,\r
+112,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,116,101,120,\r
+116,117,114,101,67,117,98,101,0,1,0,0,19,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,\r
+100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,\r
+97,100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,\r
+0,9,98,105,97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,\r
119,50,68,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,98,105,\r
97,115,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,\r
80,114,111,106,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,\r
-98,105,97,115,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,\r
-99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,17,48,0,48,0,0,20,0,9,18,117,0,59,112,0,\r
-18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,\r
-119,49,68,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,98,105,97,115,0,0,0,0,0,1,0,12,0,115,\r
-104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,\r
-111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,\r
-111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,\r
-114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,\r
-100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,119,50,68,0,18,115,\r
-97,109,112,108,101,114,0,0,18,117,0,0,18,98,105,97,115,0,0,0,0,0,1,0,9,0,100,70,100,120,0,1,0,0,9,\r
-112,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,100,70,100,120,0,1,0,0,10,112,0,0,0,1,8,58,118,101,99,50,\r
-0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,100,70,100,120,0,1,0,0,11,112,0,0,0,1,8,58,118,101,99,51,0,17,48,\r
-0,48,0,0,0,0,0,0,1,0,12,0,100,70,100,120,0,1,0,0,12,112,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,\r
-0,0,0,0,0,1,0,9,0,100,70,100,121,0,1,0,0,9,112,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,100,70,100,\r
-121,0,1,0,0,10,112,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,100,70,100,121,0,1,\r
-0,0,11,112,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,100,70,100,121,0,1,0,0,12,\r
-112,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,9,0,102,119,105,100,116,104,0,1,0,0,9,\r
-112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,\r
-0,18,112,0,0,0,0,0,46,0,0,1,0,10,0,102,119,105,100,116,104,0,1,0,0,10,112,0,0,0,1,8,58,97,98,115,0,\r
-58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,1,\r
-0,11,0,102,119,105,100,116,104,0,1,0,0,11,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0,18,112,\r
-0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,1,0,12,0,102,119,105,100,116,\r
-104,0,1,0,0,12,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0,58,\r
-100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,0\r
+98,105,97,115,0,0,0,1,8,58,115,104,97,100,111,119,49,68,0,18,115,97,109,112,108,101,114,0,0,58,118,\r
+101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,17,48,0,48,0,0,\r
+0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,98,105,97,115,0,0,\r
+0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,101,114,0,\r
+0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,0,0,0,1,8,58,115,104,97,100,111,119,50,68,\r
+0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,\r
+111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,\r
+18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,98,105,97,115,0,0,0,\r
+0,0,1,0,9,0,100,70,100,120,0,1,0,0,9,112,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,100,70,100,120,0,1,\r
+0,0,10,112,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,100,70,100,120,0,1,0,0,11,\r
+112,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,100,70,100,120,0,1,0,0,12,112,0,0,\r
+0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,9,0,100,70,100,121,0,1,0,0,9,112,0,0,0,1,8,17,\r
+48,0,48,0,0,0,0,1,0,10,0,100,70,100,121,0,1,0,0,10,112,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,\r
+0,0,0,0,1,0,11,0,100,70,100,121,0,1,0,0,11,112,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,\r
+1,0,12,0,100,70,100,121,0,1,0,0,12,112,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,9,0,\r
+102,119,105,100,116,104,0,1,0,0,9,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,\r
+0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,1,0,10,0,102,119,105,100,116,104,0,1,\r
+0,0,10,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,\r
+100,121,0,18,112,0,0,0,0,0,46,0,0,1,0,11,0,102,119,105,100,116,104,0,1,0,0,11,112,0,0,0,1,8,58,97,\r
+98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0,0,\r
+46,0,0,1,0,12,0,102,119,105,100,116,104,0,1,0,0,12,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,\r
+0,18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,0\r
//
vec4 texture1DLod (sampler1D sampler, float coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
}
vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 texture2DProjLod (sampler2D sampler, vec3 coord, float lod) {\r
- vec2 u;\r
- u.s = coord.s / coord.p;\r
- u.t = coord.t / coord.p;
- return texture2DLod (sampler, u, lod);
+ return texture2DLod (sampler, vec2 (coord.s / coord.p, coord.t / coord.p), lod);
}\r
vec4 texture2DProjLod (sampler2D sampler, vec4 coord, float lod) {\r
- vec2 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;
- return texture2DLod (sampler, u, lod);
+ return texture2DLod (sampler, vec2 (coord.s / coord.q, coord.t / coord.q), lod);
}
vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return texture3DLod (sampler, u, lod);
+ return texture3DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), lod);
}
vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}
vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod) {\r
- // XXX:
+ // XXX:
return vec4 (0.0);
}\r
vec4 shadow1DProjLod (sampler1DShadow sampler, vec4 coord, float lod) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = 0.0;\r
- u.p = coord.p / coord.q;
- return shadow1DLod (sampler, u, lod);
+ return shadow1DLod (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q), lod);
}\r
vec4 shadow2DProjLod (sampler2DShadow sampler, vec4 coord, float lod) {\r
- vec3 u;\r
- u.s = coord.s / coord.q;\r
- u.t = coord.t / coord.q;\r
- u.p = coord.p / coord.q;
- return shadow2DLod (sampler, u, lod);
+ return shadow2DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), lod);
}
111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,76,111,100,0,1,0,0,17,115,97,109,112,\r
108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,\r
17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,76,111,100,0,1,0,\r
-0,17,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,3,\r
-2,0,10,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,\r
-112,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,\r
-0,49,20,0,8,58,116,101,120,116,117,114,101,50,68,76,111,100,0,18,115,97,109,112,108,101,114,0,0,18,\r
-117,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,76,111,\r
-100,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,108,111,100,\r
-0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,\r
-114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,\r
-100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,50,68,76,111,100,0,18,115,97,109,112,108,\r
-101,114,0,0,18,117,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,76,111,\r
-100,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,108,111,100,\r
-0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,80,\r
-114,111,106,76,111,100,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,\r
-0,0,9,108,111,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,\r
-0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,\r
-99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,99,\r
-111,111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,51,68,76,111,100,0,18,115,97,\r
-109,112,108,101,114,0,0,18,117,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,\r
-67,117,98,101,76,111,100,0,1,0,0,19,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,\r
-1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,\r
-111,119,49,68,76,111,100,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,\r
-1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,\r
-111,119,50,68,76,111,100,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,\r
-1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,\r
-111,119,49,68,80,114,111,106,76,111,100,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,\r
-111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,\r
-114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,17,48,0,48,0,0,20,\r
-0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,\r
-58,115,104,97,100,111,119,49,68,76,111,100,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,108,\r
-111,100,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,76,111,100,0,1,0,0,21,115,\r
-97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,3,2,0,11,1,\r
-117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,\r
-20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,\r
-9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,\r
-115,104,97,100,111,119,50,68,76,111,100,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,18,108,111,\r
-100,0,0,0,0,0,0\r
+0,17,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,\r
+58,116,101,120,116,117,114,101,50,68,76,111,100,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,\r
+50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,0,49,0,18,99,111,111,114,100,\r
+0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,0,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,\r
+116,117,114,101,50,68,80,114,111,106,76,111,100,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,12,\r
+99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,76,111,\r
+100,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,\r
+111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,\r
+49,0,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,76,111,100,0,1,0,0,18,\r
+115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,\r
+118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,80,114,111,106,\r
+76,111,100,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,108,\r
+111,100,0,0,0,1,8,58,116,101,120,116,117,114,101,51,68,76,111,100,0,18,115,97,109,112,108,101,114,\r
+0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,\r
+99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,112,\r
+0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,\r
+114,101,67,117,98,101,76,111,100,0,1,0,0,19,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,\r
+100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,\r
+97,100,111,119,49,68,76,111,100,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,\r
+100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,\r
+97,100,111,119,50,68,76,111,100,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,\r
+100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,\r
+97,100,111,119,49,68,80,114,111,106,76,111,100,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,12,\r
+99,111,111,114,100,0,0,1,0,0,9,108,111,100,0,0,0,1,8,58,115,104,97,100,111,119,49,68,76,111,100,0,\r
+18,115,97,109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,\r
+111,114,100,0,59,113,0,49,0,17,48,0,48,0,0,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,\r
+100,0,59,113,0,49,0,0,0,18,108,111,100,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,\r
+106,76,111,100,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,1,0,0,9,\r
+108,111,100,0,0,0,1,8,58,115,104,97,100,111,119,50,68,76,111,100,0,18,115,97,109,112,108,101,114,0,\r
+0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,\r
+111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,112,0,\r
+18,99,111,111,114,100,0,59,113,0,49,0,0,0,18,108,111,100,0,0,0,0,0,0\r
/* utility functions */\r
\r
static GLboolean sizeof_variable (slang_assemble_ctx *A, slang_type_specifier *spec,\r
- slang_type_qualifier qual, slang_operation *array_size, GLuint *size)\r
+ slang_type_qualifier qual, GLuint array_len, GLuint *size)\r
{\r
slang_storage_aggregate agg;\r
\r
/* calculate the size of the variable's aggregate */\r
if (!slang_storage_aggregate_construct (&agg))\r
return GL_FALSE;\r
- if (!_slang_aggregate_variable (&agg, spec, array_size, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, spec, array_len, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
{\r
slang_storage_aggregate_destruct (&agg);\r
var->address = *size;\r
if (var->type.qualifier == slang_qual_out || var->type.qualifier == slang_qual_inout)\r
var->address += 4;\r
- return sizeof_variable (A, &var->type.specifier, var->type.qualifier, var->array_size, size);\r
+ return sizeof_variable (A, &var->type.specifier, var->type.qualifier, var->array_len, size);\r
}\r
\r
static GLboolean sizeof_variables (slang_assemble_ctx *A, slang_variable_scope *vars, GLuint start,\r
\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return NULL;\r
- if (!_slang_typeof_operation (¶ms[j], space, &ti, atoms))\r
+ if (!_slang_typeof_operation_ (¶ms[j], space, &ti, atoms))\r
{\r
slang_assembly_typeinfo_destruct (&ti);\r
return NULL;\r
/* calculate return value size */\r
param_size = 0;\r
if (fun->header.type.specifier.type != slang_spec_void)\r
- if (!sizeof_variable (A, &fun->header.type.specifier, slang_qual_none, NULL, ¶m_size))\r
+ if (!sizeof_variable (A, &fun->header.type.specifier, slang_qual_none, 0, ¶m_size))\r
return GL_FALSE;\r
A->local.ret_size = param_size;\r
\r
\r
/* execute the function body */\r
A->file->code[skip].param[0] = A->file->count;\r
- if (!_slang_assemble_operation_ (A, fun->body, /*slang_ref_freelance*/slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, fun->body, /*slang_ref_freelance*/slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* this is the end of the function - restore the old function frame */\r
return GL_TRUE;\r
}\r
\r
-GLboolean _slang_cleanup_stack_ (slang_assemble_ctx *A, slang_operation *op)\r
+GLboolean _slang_cleanup_stack (slang_assemble_ctx *A, slang_operation *op)\r
{\r
slang_assembly_typeinfo ti;\r
GLuint size = 0;\r
/* get type info of the operation and calculate its size */\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
{\r
slang_assembly_typeinfo_destruct (&ti);\r
return GL_FALSE;\r
if (ti.spec.type != slang_spec_void)\r
if (A->ref == slang_ref_force)\r
size = 4;\r
- else if (!sizeof_variable (A, &ti.spec, slang_qual_none, NULL, &size))\r
+ else if (!sizeof_variable (A, &ti.spec, slang_qual_none, 0, &size))\r
{\r
slang_assembly_typeinfo_destruct (&ti);\r
return GL_FALSE;\r
/* get type information of the given operation */\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
goto end1;\r
\r
/* construct aggregate from the type info */\r
if (!slang_storage_aggregate_construct (&agg))\r
goto end1;\r
- if (!_slang_aggregate_variable (&agg, &ti.spec, ti.array_size, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, &ti.spec, ti.array_len, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
goto end;\r
\r
{\r
GLuint ret_size = 0;\r
\r
- if (!sizeof_variable (A, &fun->header.type.specifier, slang_qual_none, NULL, &ret_size))\r
+ if (!sizeof_variable (A, &fun->header.type.specifier, slang_qual_none, 0, &ret_size))\r
return GL_FALSE;\r
if (!PLAB (A->file, slang_asm_local_alloc, ret_size))\r
return GL_FALSE;\r
if (!PLAB2 (A->file, slang_asm_local_addr, A->local.addr_tmp, 4))\r
return GL_FALSE;\r
/* TODO: optimize the "out" parameter case */\r
- if (!_slang_assemble_operation_ (A, ¶ms[i], slang_ref_force))\r
+ if (!_slang_assemble_operation (A, ¶ms[i], slang_ref_force))\r
return GL_FALSE;\r
p_swz[i] = A->swz;\r
p_ref[i] = A->ref;\r
}\r
else\r
{\r
- if (!_slang_assemble_operation_ (A, ¶ms[i], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, ¶ms[i], slang_ref_forbid))\r
return GL_FALSE;\r
p_swz[i] = A->swz;\r
p_ref[i] = A->ref;\r
else\r
{\r
/* pop the value of the parameter */\r
- if (!_slang_cleanup_stack_ (A, ¶ms[j]))\r
+ if (!_slang_cleanup_stack (A, ¶ms[j]))\r
return GL_FALSE;\r
}\r
}\r
{ "float_noise3", slang_asm_float_noise3, slang_asm_float_copy },\r
{ "float_noise4", slang_asm_float_noise4, slang_asm_float_copy },\r
{ "int_to_float", slang_asm_int_to_float, slang_asm_float_copy },\r
+ { "vec4_tex2d", slang_asm_vec4_tex2d, slang_asm_none },\r
/* mesa-specific extensions */\r
{ "float_print", slang_asm_float_deref, slang_asm_float_print },\r
{ "int_print", slang_asm_int_deref, slang_asm_int_print },\r
/* get type of operation */\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
goto end1;\r
\r
/* convert it to an aggregate */\r
if (!slang_storage_aggregate_construct (&agg))\r
goto end1;\r
- if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, &ti.spec, 0, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
goto end;\r
\r
GLuint asize = 0, esize = 0;\r
\r
/* get type info of the master expression (matrix, vector or an array */\r
- if (!_slang_typeof_operation (&op->children[0], &A->space, tia, A->atoms))\r
+ if (!_slang_typeof_operation (A, &op->children[0], tia))\r
return GL_FALSE;\r
- if (!sizeof_variable (A, &tia->spec, slang_qual_none, tia->array_size, &asize))\r
+ if (!sizeof_variable (A, &tia->spec, slang_qual_none, tia->array_len, &asize))\r
return GL_FALSE;\r
\r
/* get type info of the result (matrix column, vector row or array element) */\r
- if (!_slang_typeof_operation (op, &A->space, tie, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, tie))\r
return GL_FALSE;\r
- if (!sizeof_variable (A, &tie->spec, slang_qual_none, NULL, &esize))\r
+ if (!sizeof_variable (A, &tie->spec, slang_qual_none, 0, &esize))\r
return GL_FALSE;\r
\r
/* assemble the master expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], ref))\r
+ if (!_slang_assemble_operation (A, &op->children[0], ref))\r
return GL_FALSE;\r
\r
/* when indexing an l-value swizzle, push the swizzle_tmp */\r
return GL_FALSE;\r
\r
/* assemble the subscript expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
if (ref == slang_ref_force && tia->is_swizzled)\r
slang_assembly_typeinfo *tib, slang_operation *op, slang_ref_type ref)\r
{\r
/* get type info of the result (field or swizzle) */\r
- if (!_slang_typeof_operation (op, &A->space, tia, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, tia))\r
return GL_FALSE;\r
\r
/* get type info of the master expression being accessed (struct or vector) */\r
- if (!_slang_typeof_operation (&op->children[0], &A->space, tib, A->atoms))\r
+ if (!_slang_typeof_operation (A, &op->children[0], tib))\r
return GL_FALSE;\r
\r
/* if swizzling a vector in-place, the swizzle temporary is needed */\r
return GL_FALSE;\r
\r
/* assemble the master expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], ref))\r
+ if (!_slang_assemble_operation (A, &op->children[0], ref))\r
return GL_FALSE;\r
\r
/* assemble the field expression */\r
field = &tib->spec._struct->fields->variables[i];\r
if (!slang_storage_aggregate_construct (&agg))\r
return GL_FALSE;\r
- if (!_slang_aggregate_variable (&agg, &field->type.specifier, field->array_size,\r
+ if (!_slang_aggregate_variable (&agg, &field->type.specifier, field->array_len,\r
A->space.funcs, A->space.structs, A->space.vars, A->mach, A->file, A->atoms))\r
{\r
slang_storage_aggregate_destruct (&agg);\r
return GL_TRUE;\r
}\r
\r
-GLboolean _slang_assemble_operation_ (slang_assemble_ctx *A, slang_operation *op, slang_ref_type ref)\r
+GLboolean _slang_assemble_operation (slang_assemble_ctx *A, slang_operation *op, slang_ref_type ref)\r
{\r
- GLuint assem;\r
-\r
- assem = A->file->count;\r
- if (!push_new (A->file))\r
- return GL_FALSE;\r
-\r
/* set default results */\r
A->ref = /*(ref == slang_ref_freelance) ? slang_ref_force : */ref;\r
A->swz.num_components = 0;\r
\r
for (i = 0; i < op->num_children; i++)\r
{\r
- if (!_slang_assemble_operation_ (A, &op->children[i], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[i], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[i]))\r
+ if (!_slang_cleanup_stack (A, &op->children[i]))\r
return GL_FALSE;\r
}\r
}\r
{\r
GLuint i;\r
\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_force))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_force))\r
return GL_FALSE;\r
for (i = 1; i < op->num_children; i++)\r
- if (!_slang_assemble_operation_ (A, &op->children[i], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[i], slang_ref_forbid))\r
return GL_FALSE;\r
if (!call_asm_instruction (A, op->a_id))\r
return GL_FALSE;\r
}\r
break;\r
case slang_oper_break:\r
- A->file->code[assem].type = slang_asm_jump;\r
- A->file->code[assem].param[0] = A->flow.loop_end;\r
+ if (!PLAB (A->file, slang_asm_jump, A->flow.loop_end))\r
+ return GL_FALSE;\r
break;\r
case slang_oper_continue:\r
- A->file->code[assem].type = slang_asm_jump;\r
- A->file->code[assem].param[0] = A->flow.loop_start;\r
+ if (!PLAB (A->file, slang_asm_jump, A->flow.loop_start))\r
+ return GL_FALSE;\r
break;\r
case slang_oper_discard:\r
- A->file->code[assem].type = slang_asm_discard;\r
+ if (!PUSH (A->file, slang_asm_discard))\r
+ return GL_FALSE;\r
if (!PUSH (A->file, slang_asm_exit))\r
return GL_FALSE;\r
break;\r
/* push the result's address */\r
if (!PLAB2 (A->file, slang_asm_local_addr, 0, A->local.ret_size))\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
A->swz.num_components = 0;\r
case slang_oper_expression:\r
if (ref == slang_ref_force)\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[0], ref))\r
+ if (!_slang_assemble_operation (A, &op->children[0], ref))\r
return GL_FALSE;\r
break;\r
case slang_oper_if:\r
case slang_oper_literal_bool:\r
if (ref == slang_ref_force)\r
return GL_FALSE;\r
- A->file->code[assem].type = slang_asm_bool_push;\r
- A->file->code[assem].literal = op->literal;\r
+ if (!PLIT (A->file, slang_asm_bool_push, op->literal))\r
+ return GL_FALSE;\r
A->ref = slang_ref_forbid;\r
break;\r
case slang_oper_literal_int:\r
if (ref == slang_ref_force)\r
return GL_FALSE;\r
- A->file->code[assem].type = slang_asm_int_push;\r
- A->file->code[assem].literal = op->literal;\r
+ if (!PLIT (A->file, slang_asm_int_push, op->literal))\r
+ return GL_FALSE;\r
A->ref = slang_ref_forbid;\r
break;\r
case slang_oper_literal_float:\r
if (ref == slang_ref_force)\r
return GL_FALSE;\r
- A->file->code[assem].type = slang_asm_float_push;\r
- A->file->code[assem].literal = op->literal;\r
+ if (!PLIT (A->file, slang_asm_float_push, op->literal))\r
+ return GL_FALSE;\r
A->ref = slang_ref_forbid;\r
break;\r
case slang_oper_identifier:\r
if (var == NULL)\r
return GL_FALSE;\r
size = 0;\r
- if (!sizeof_variable (A, &var->type.specifier, slang_qual_none, var->array_size, &size))\r
+ if (!sizeof_variable (A, &var->type.specifier, slang_qual_none, var->array_len, &size))\r
return GL_FALSE;\r
\r
/* prepare stack for dereferencing */\r
case slang_oper_sequence:\r
if (ref == slang_ref_force)\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[0]))\r
+ if (!_slang_cleanup_stack (A, &op->children[0]))\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
A->ref = slang_ref_forbid;\r
break;\r
A->ref = slang_ref_forbid;\r
break;\r
case slang_oper_equal:\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
if (!equality (A, op->children, GL_TRUE))\r
return GL_FALSE;\r
A->ref = slang_ref_forbid;\r
break;\r
case slang_oper_notequal:\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
if (!equality (A, op->children, GL_FALSE))\r
return GL_FALSE;\r
slang_asm_addr_deref,\r
slang_asm_addr_add,\r
slang_asm_addr_multiply,\r
+ slang_asm_vec4_tex2d,\r
slang_asm_jump,\r
slang_asm_jump_if_zero,\r
slang_asm_enter,\r
\r
GLboolean _slang_assemble_function (slang_assemble_ctx *, struct slang_function_ *);\r
\r
-GLboolean _slang_cleanup_stack_ (slang_assemble_ctx *, slang_operation *);\r
+GLboolean _slang_cleanup_stack (slang_assemble_ctx *, slang_operation *);\r
\r
GLboolean _slang_dereference (slang_assemble_ctx *, slang_operation *);\r
\r
GLboolean _slang_assemble_function_call_name (slang_assemble_ctx *, const char *, slang_operation *,\r
GLuint, GLboolean);\r
\r
-GLboolean _slang_assemble_operation_ (slang_assemble_ctx *, struct slang_operation_ *, slang_ref_type);\r
+GLboolean _slang_assemble_operation (slang_assemble_ctx *, struct slang_operation_ *, slang_ref_type);\r
\r
#ifdef __cplusplus\r
}\r
\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
goto end1;\r
\r
if (!slang_storage_aggregate_construct (&agg))\r
goto end1;\r
- if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, &ti.spec, 0, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
goto end;\r
\r
\r
if (slang_string_compare ("=", oper) == 0)\r
{\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_force))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_force))\r
return GL_FALSE;\r
swz = A->swz;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
A->swz = swz;\r
if (!_slang_assemble_assignment (A, op->children))\r
GLuint zero_jump, end_jump;\r
\r
/* evaluate left expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to pushing 0 if not true */\r
return GL_FALSE;\r
\r
/* evaluate right expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to the end of the expression */\r
GLuint right_jump, end_jump;\r
\r
/* evaluate left expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to evaluation of right expression if not true */\r
\r
/* evaluate right expression */\r
A->file->code[right_jump].param[0] = A->file->count;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* the end of the expression */\r
GLuint cond_jump, end_jump;\r
\r
/* execute condition expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to false expression if not true */\r
return GL_FALSE;\r
\r
/* execute true expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to the end of the expression */\r
A->file->code[cond_jump].param[0] = A->file->count;\r
\r
/* execute false expression */\r
- if (!_slang_assemble_operation_ (A, &op->children[2], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[2], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* resolve the end of the expression */\r
slang_assembly_flow_control save_flow = A->flow;\r
\r
/* execute initialization statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[0]))\r
+ if (!_slang_cleanup_stack (A, &op->children[0]))\r
return GL_FALSE;\r
\r
/* skip the "go to the end of the loop" and loop-increment statements */\r
cont_label = A->file->count;\r
\r
/* execute loop-increment statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[2], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[2], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[2]))\r
+ if (!_slang_cleanup_stack (A, &op->children[2]))\r
return GL_FALSE;\r
\r
/* resolve the condition point */\r
A->file->code[start_jump].param[0] = A->file->count;\r
\r
/* execute condition statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to the end of the loop if not true */\r
/* execute loop body */\r
A->flow.loop_start = cont_label;\r
A->flow.loop_end = break_label;\r
- if (!_slang_assemble_operation_ (A, &op->children[3], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[3], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[3]))\r
+ if (!_slang_cleanup_stack (A, &op->children[3]))\r
return GL_FALSE;\r
A->flow = save_flow;\r
\r
/* execute loop body */\r
A->flow.loop_start = cont_label;\r
A->flow.loop_end = break_label;\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[0]))\r
+ if (!_slang_cleanup_stack (A, &op->children[0]))\r
return GL_FALSE;\r
A->flow = save_flow;\r
\r
A->file->code[cont_jump].param[0] = A->file->count;\r
\r
/* execute condition statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to the end of the loop if not true */\r
A->file->code[skip_jump].param[0] = A->file->count;\r
\r
/* execute condition statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to the end of the loop if not true */\r
/* execute loop body */\r
A->flow.loop_start = A->file->code[skip_jump].param[0];\r
A->flow.loop_end = break_label;\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[1]))\r
+ if (!_slang_cleanup_stack (A, &op->children[1]))\r
return GL_FALSE;\r
A->flow = save_flow;\r
\r
GLuint cond_jump, else_jump;\r
\r
/* execute condition statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[0], slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, &op->children[0], slang_ref_forbid))\r
return GL_FALSE;\r
\r
/* jump to false-statement if not true */\r
return GL_FALSE;\r
\r
/* execute true-statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[1], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[1], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[1]))\r
+ if (!_slang_cleanup_stack (A, &op->children[1]))\r
return GL_FALSE;\r
\r
/* skip if-false statement */\r
A->file->code[cond_jump].param[0] = A->file->count;\r
\r
/* execute false-statement */\r
- if (!_slang_assemble_operation_ (A, &op->children[2], slang_ref_forbid/*slang_ref_freelance*/))\r
+ if (!_slang_assemble_operation (A, &op->children[2], slang_ref_forbid/*slang_ref_freelance*/))\r
return GL_FALSE;\r
- if (!_slang_cleanup_stack_ (A, &op->children[2]))\r
+ if (!_slang_cleanup_stack (A, &op->children[2]))\r
return GL_FALSE;\r
\r
/* resolve end of if-false statement */\r
\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
goto end1;\r
\r
if (!slang_storage_aggregate_construct (&agg))\r
goto end1;\r
- if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, &ti.spec, 0, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
goto end2;\r
\r
if (!_slang_flatten_aggregate (&flat_agg, &agg))\r
goto end;\r
\r
- if (!_slang_assemble_operation_ (A, op, slang_ref_forbid))\r
+ if (!_slang_assemble_operation (A, op, slang_ref_forbid))\r
goto end;\r
\r
for (i = 0; i < flat_agg.count; i++)\r
/* get typeinfo of the constructor (the result of constructor expression) */\r
if (!slang_assembly_typeinfo_construct (&ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op, &A->space, &ti, A->atoms))\r
+ if (!_slang_typeof_operation (A, op, &ti))\r
goto end1;\r
\r
/* create an aggregate of the constructor */\r
if (!slang_storage_aggregate_construct (&agg))\r
goto end1;\r
- if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, A->space.funcs, A->space.structs,\r
+ if (!_slang_aggregate_variable (&agg, &ti.spec, 0, A->space.funcs, A->space.structs,\r
A->space.vars, A->mach, A->file, A->atoms))\r
goto end2;\r
\r
{\r
if (!slang_type_specifier_construct (&ti->spec))\r
return GL_FALSE;\r
- ti->array_size = NULL;\r
+ ti->array_len = 0;\r
return GL_TRUE;\r
}\r
\r
GLvoid slang_assembly_typeinfo_destruct (slang_assembly_typeinfo *ti)\r
{\r
slang_type_specifier_destruct (&ti->spec);\r
- /* do not free ti->array_size */\r
}\r
\r
/* _slang_typeof_operation() */\r
return exists;\r
}\r
\r
-GLboolean _slang_typeof_operation (slang_operation *op, slang_assembly_name_space *space,\r
+GLboolean _slang_typeof_operation (slang_assemble_ctx *A, slang_operation *op,\r
+ slang_assembly_typeinfo *ti)\r
+{\r
+ return _slang_typeof_operation_ (op, &A->space, ti, A->atoms);\r
+}\r
+\r
+GLboolean _slang_typeof_operation_ (slang_operation *op, slang_assembly_name_space *space,\r
slang_assembly_typeinfo *ti, slang_atom_pool *atoms)\r
{\r
ti->can_be_referenced = GL_FALSE;\r
case slang_oper_divassign:\r
case slang_oper_preincrement:\r
case slang_oper_predecrement:\r
- if (!_slang_typeof_operation (op->children, space, ti, atoms))\r
+ if (!_slang_typeof_operation_ (op->children, space, ti, atoms))\r
return 0;\r
break;\r
case slang_oper_literal_bool:\r
if (!slang_type_specifier_copy (&ti->spec, &var->type.specifier))\r
return GL_FALSE;\r
ti->can_be_referenced = GL_TRUE;\r
- ti->array_size = var->array_size;\r
+ ti->array_len = var->array_len;\r
}\r
break;\r
case slang_oper_sequence:\r
/* TODO: check [0] and [1] if they match */\r
- if (!_slang_typeof_operation (&op->children[1], space, ti, atoms))\r
+ if (!_slang_typeof_operation_ (&op->children[1], space, ti, atoms))\r
return GL_FALSE;\r
ti->can_be_referenced = GL_FALSE;\r
ti->is_swizzled = GL_FALSE;\r
/*case slang_oper_andassign:*/\r
case slang_oper_select:\r
/* TODO: check [1] and [2] if they match */\r
- if (!_slang_typeof_operation (&op->children[1], space, ti, atoms))\r
+ if (!_slang_typeof_operation_ (&op->children[1], space, ti, atoms))\r
return GL_FALSE;\r
ti->can_be_referenced = GL_FALSE;\r
ti->is_swizzled = GL_FALSE;\r
break;\r
/*case slang_oper_modulus:*/\r
case slang_oper_plus:\r
- if (!_slang_typeof_operation (op->children, space, ti, atoms))\r
+ if (!_slang_typeof_operation_ (op->children, space, ti, atoms))\r
return GL_FALSE;\r
ti->can_be_referenced = GL_FALSE;\r
ti->is_swizzled = GL_FALSE;\r
\r
if (!slang_assembly_typeinfo_construct (&_ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op->children, space, &_ti, atoms))\r
+ if (!_slang_typeof_operation_ (op->children, space, &_ti, atoms))\r
{\r
slang_assembly_typeinfo_destruct (&_ti);\r
return GL_FALSE;\r
\r
if (!slang_assembly_typeinfo_construct (&_ti))\r
return GL_FALSE;\r
- if (!_slang_typeof_operation (op->children, space, &_ti, atoms))\r
+ if (!_slang_typeof_operation_ (op->children, space, &_ti, atoms))\r
{\r
slang_assembly_typeinfo_destruct (&_ti);\r
return GL_FALSE;\r
break;\r
case slang_oper_postincrement:\r
case slang_oper_postdecrement:\r
- if (!_slang_typeof_operation (op->children, space, ti, atoms))\r
+ if (!_slang_typeof_operation_ (op->children, space, ti, atoms))\r
return GL_FALSE;\r
ti->can_be_referenced = GL_FALSE;\r
ti->is_swizzled = GL_FALSE;\r
GLboolean is_swizzled;\r
slang_swizzle swz;\r
slang_type_specifier spec;\r
- slang_operation *array_size;\r
+ GLuint array_len;\r
} slang_assembly_typeinfo;\r
\r
GLboolean slang_assembly_typeinfo_construct (slang_assembly_typeinfo *);\r
* Returns GL_TRUE on success.\r
* Returns GL_FALSE otherwise.\r
*/\r
-GLboolean _slang_typeof_operation (slang_operation *, slang_assembly_name_space *,\r
+GLboolean _slang_typeof_operation (slang_assemble_ctx *, slang_operation *, slang_assembly_typeinfo *);\r
+GLboolean _slang_typeof_operation_ (slang_operation *, slang_assembly_name_space *,\r
slang_assembly_typeinfo *, slang_atom_pool *);\r
\r
/*\r
unit->machine = mach;
unit->free_machine = 0;
unit->atom_pool = atoms;
- unit->free_atom_pool = 0;
+ unit->free_atom_pool = 0;\r
+ slang_export_data_table_ctr (&unit->exp_data);\r
+ slang_active_uniforms_ctr (&unit->uniforms);
return 1;
}
{
slang_atom_pool_destruct (unit->atom_pool);
slang_alloc_free (unit->atom_pool);
- }
+ }\r
+ slang_active_uniforms_dtr (&unit->uniforms);\r
+ slang_export_data_table_dtr (&unit->exp_data);
}
/* slang_info_log */
static int parse_statement (slang_parse_ctx *, slang_output_ctx *, slang_operation *);
static int parse_expression (slang_parse_ctx *, slang_output_ctx *, slang_operation *);
-static int parse_type_specifier (slang_parse_ctx *, slang_output_ctx *, slang_type_specifier *);
+static int parse_type_specifier (slang_parse_ctx *, slang_output_ctx *, slang_type_specifier *);\r
+\r
+static GLboolean parse_array_len (slang_parse_ctx *C, slang_output_ctx *O, GLuint *len)\r
+{\r
+ slang_operation array_size;\r
+ slang_assembly_name_space space;\r
+ GLboolean result;\r
+\r
+ if (!slang_operation_construct (&array_size))\r
+ return GL_FALSE;\r
+ if (!parse_expression (C, O, &array_size))\r
+ {\r
+ slang_operation_destruct (&array_size);\r
+ return GL_FALSE;\r
+ }\r
+\r
+ space.funcs = O->funs;\r
+ space.structs = O->structs;\r
+ space.vars = O->vars;\r
+ result = _slang_evaluate_int (O->assembly, O->machine, &space, &array_size, len, C->atoms);\r
+ slang_operation_destruct (&array_size);\r
+ return result;\r
+}\r
+\r
+static GLboolean calculate_var_size (slang_parse_ctx *C, slang_output_ctx *O, slang_variable *var)\r
+{\r
+ slang_storage_aggregate agg;\r
+\r
+ if (!slang_storage_aggregate_construct (&agg))\r
+ return GL_FALSE;\r
+ if (!_slang_aggregate_variable (&agg, &var->type.specifier, var->array_len, O->funs, O->structs,\r
+ O->vars, O->machine, O->assembly, C->atoms))\r
+ {\r
+ slang_storage_aggregate_destruct (&agg);\r
+ return GL_FALSE;\r
+ }\r
+ var->size = _slang_sizeof_aggregate (&agg);\r
+ slang_storage_aggregate_destruct (&agg);\r
+ return GL_TRUE;\r
+}\r
+\r
+static GLboolean convert_to_array (slang_parse_ctx *C, slang_variable *var,\r
+ const slang_type_specifier *sp)\r
+{\r
+ /* sized array - mark it as array, copy the specifier to the array element and\r
+ * parse the expression */\r
+ var->type.specifier.type = slang_spec_array;\r
+ var->type.specifier._array = (slang_type_specifier *) slang_alloc_malloc (sizeof (\r
+ slang_type_specifier));\r
+ if (var->type.specifier._array == NULL)\r
+ {\r
+ slang_info_log_memory (C->L);\r
+ return GL_FALSE;\r
+ }\r
+ if (!slang_type_specifier_construct (var->type.specifier._array))\r
+ {\r
+ slang_alloc_free (var->type.specifier._array);\r
+ var->type.specifier._array = NULL;\r
+ slang_info_log_memory (C->L);\r
+ return GL_FALSE;\r
+ }\r
+ return slang_type_specifier_copy (var->type.specifier._array, sp);\r
+}
/* structure field */
#define FIELD_NONE 0
#define FIELD_NEXT 1
#define FIELD_ARRAY 2
-static int parse_struct_field_var (slang_parse_ctx *C, slang_output_ctx *O, slang_variable *var)
-{
+static GLboolean parse_struct_field_var (slang_parse_ctx *C, slang_output_ctx *O, slang_variable *var,\r
+ const slang_type_specifier *sp)
+{\r
var->a_name = parse_identifier (C);
if (var->a_name == SLANG_ATOM_NULL)
- return 0;
+ return GL_FALSE;
switch (*C->I++)
{
- case FIELD_NONE:
+ case FIELD_NONE:\r
+ if (!slang_type_specifier_copy (&var->type.specifier, sp))\r
+ return GL_FALSE;
break;
- case FIELD_ARRAY:
- var->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation));
- if (var->array_size == NULL)
- {
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!slang_operation_construct (var->array_size))
- {
- slang_alloc_free (var->array_size);
- var->array_size = NULL;
- return 0;
- }
- if (!parse_expression (C, O, var->array_size))
- return 0;
+ case FIELD_ARRAY:\r
+ if (!convert_to_array (C, var, sp))\r
+ return GL_FALSE;
+ if (!parse_array_len (C, O, &var->array_len))\r
+ return GL_FALSE;\r
break;
default:
- return 0;
+ return GL_FALSE;
}
- return 1;
+ return calculate_var_size (C, O, var);
}
static int parse_struct_field (slang_parse_ctx *C, slang_output_ctx *O, slang_struct *st,
if (!slang_variable_construct (var))
return 0;
st->fields->num_variables++;
- if (!slang_type_specifier_copy (&var->type.specifier, sp))
- return 0;
- if (!parse_struct_field_var (C, &o, var))
+ if (!parse_struct_field_var (C, &o, var, sp))
return 0;
}
while (*C->I++ != FIELD_NONE);
{
slang_type_specifier_destruct (&sp);
return 0;
- }
+ }\r
+ slang_type_specifier_destruct (&sp);
}
while (*C->I++ != FIELD_NONE);
static int parse_parameter_declaration (slang_parse_ctx *C, slang_output_ctx *O,
slang_variable *param)
{
- slang_storage_aggregate agg;
-
/* parse and validate the parameter's type qualifiers (there can be two at most) because
* not all combinations are valid */
if (!parse_type_qualifier (C, ¶m->type.qualifier))
/* if the parameter is an array, parse its size (the size must be explicitly defined */
if (*C->I++ == PARAMETER_ARRAY_PRESENT)
- {
- param->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation));
- if (param->array_size == NULL)
- {
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!slang_operation_construct (param->array_size))
- {
- slang_alloc_free (param->array_size);
- param->array_size = NULL;
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!parse_expression (C, O, param->array_size))
- return 0;
- /* TODO: execute the array_size */
+ {\r
+ slang_type_specifier p;\r
+\r
+ if (!slang_type_specifier_construct (&p))\r
+ return GL_FALSE;\r
+ if (!slang_type_specifier_copy (&p, ¶m->type.specifier))\r
+ {\r
+ slang_type_specifier_destruct (&p);\r
+ return GL_FALSE;\r
+ }\r
+ if (!convert_to_array (C, param, &p))\r
+ {\r
+ slang_type_specifier_destruct (&p);\r
+ return GL_FALSE;\r
+ }\r
+ slang_type_specifier_destruct (&p);\r
+ if (!parse_array_len (C, O, ¶m->array_len))\r
+ return GL_FALSE;
}
/* calculate the parameter size */
- if (!slang_storage_aggregate_construct (&agg))
- return 0;
- if (!_slang_aggregate_variable (&agg, ¶m->type.specifier, param->array_size, O->funs,
- O->structs, O->vars, O->machine, O->assembly, C->atoms))
- {
- slang_storage_aggregate_destruct (&agg);
- return 0;
- }
- param->size = _slang_sizeof_aggregate (&agg);
- slang_storage_aggregate_destruct (&agg);
+ if (!calculate_var_size (C, O, param))
+ return GL_FALSE;\r
+
/* TODO: allocate the local address here? */
return 1;
}
op_assign.children[1] = *var->initializer;
/* insert the actual expression */
- result = _slang_assemble_operation_ (A, &op_assign, slang_ref_forbid);
+ result = _slang_assemble_operation (A, &op_assign, slang_ref_forbid);
/* carefully destroy the operations */
op_assign.num_children = 0;
}
if (!parse_expression (C, O, var->initializer))
return 0;
- /* TODO: execute the initializer */
break;
#if 0
case VARIABLE_ARRAY_UNKNOWN:
/* unsized array - mark it as array and copy the specifier to the array element */
- var->type.specifier.type = slang_spec_array;
- var->type.specifier._array = (slang_type_specifier *) slang_alloc_malloc (sizeof (
- slang_type_specifier));
- if (var->type.specifier._array == NULL)
- {
- slang_info_log_memory (C->L);
- return 0;
- }
- slang_type_specifier_construct (var->type.specifier._array);
- if (!slang_type_specifier_copy (var->type.specifier._array, &type->specifier))
- return 0;
+ if (!convert_to_array (C, var, &type->specifier))\r
+ return GL_FALSE;
break;
#endif
case VARIABLE_ARRAY_EXPLICIT:
- /* sized array - mark it as array, copy the specifier to the array element and
- * parse the expression */
- var->type.specifier.type = slang_spec_array;
- var->type.specifier._array = (slang_type_specifier *) slang_alloc_malloc (sizeof (
- slang_type_specifier));
- if (var->type.specifier._array == NULL)
- {
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!slang_type_specifier_construct (var->type.specifier._array))
- {
- slang_alloc_free (var->type.specifier._array);
- var->type.specifier._array = NULL;
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!slang_type_specifier_copy (var->type.specifier._array, &type->specifier))
- return 0;
- var->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation));
- if (var->array_size == NULL)
- {
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!slang_operation_construct (var->array_size))
- {
- slang_alloc_free (var->array_size);
- var->array_size = NULL;
- slang_info_log_memory (C->L);
- return 0;
- }
- if (!parse_expression (C, O, var->array_size))
- return 0;
+ if (!convert_to_array (C, var, &type->specifier))\r
+ return GL_FALSE;\r
+ if (!parse_array_len (C, O, &var->array_len))\r
+ return GL_FALSE;
break;
default:
return 0;
}
/* allocate global address space for a variable with a known size */
- if (C->global_scope && !(var->type.specifier.type == slang_spec_array && var->array_size == NULL))
+ if (C->global_scope && !(var->type.specifier.type == slang_spec_array && var->array_len == 0))
{
- slang_storage_aggregate agg;
-
- if (!slang_storage_aggregate_construct (&agg))
- return 0;
- if (!_slang_aggregate_variable (&agg, &var->type.specifier, var->array_size, O->funs,
- O->structs, O->vars, O->machine, O->assembly, C->atoms))
- {
- slang_storage_aggregate_destruct (&agg);
- return 0;
- }
- var->size = _slang_sizeof_aggregate (&agg);
- slang_storage_aggregate_destruct (&agg);
+ if (!calculate_var_size (C, O, var))\r
+ return GL_FALSE;
var->address = slang_var_pool_alloc (O->global_pool, var->size);
}
slang_translation_unit_destruct (&builtin_units[i]);
}*/
if (id != 0)
- grammar_destroy (id);
+ grammar_destroy (id);\r
+\r
+ if (!success)\r
+ return 0;\r
+ unit->exp_data.atoms = unit->atom_pool;\r
+ if (!_slang_build_export_data_table (&unit->exp_data, &unit->globals))\r
+ return 0;\r
+ if (!_slang_gather_active_uniforms (&unit->uniforms, &unit->exp_data))\r
+ return 0;
- return success;
+ return 1;
}
struct slang_machine_ *machine;\r
int free_machine;\r
slang_atom_pool *atom_pool;\r
- int free_atom_pool;
+ int free_atom_pool;\r
+ slang_export_data_table exp_data;\r
+ slang_active_uniforms uniforms;
} slang_translation_unit;
int slang_translation_unit_construct (slang_translation_unit *);\r
if (!slang_type_specifier_equal (&varx->type.specifier, &vary->type.specifier))\r
return 0;\r
if (varx->type.specifier.type == slang_spec_array)\r
- {\r
- /* TODO: compare array sizes */\r
- }\r
+ if (varx->array_len != vary->array_len)\r
+ return GL_FALSE;\r
}\r
return 1;\r
}\r
if (!slang_fully_specified_type_construct (&var->type))\r
return 0;\r
var->a_name = SLANG_ATOM_NULL;\r
- var->array_size = NULL;\r
+ var->array_len = 0;\r
var->initializer = NULL;\r
var->address = ~0;\r
var->size = 0;\r
void slang_variable_destruct (slang_variable *var)\r
{\r
slang_fully_specified_type_destruct (&var->type);\r
- if (var->array_size != NULL)\r
- {\r
- slang_operation_destruct (var->array_size);\r
- slang_alloc_free (var->array_size);\r
- }\r
if (var->initializer != NULL)\r
{\r
slang_operation_destruct (var->initializer);\r
return 0;\r
}\r
z.a_name = y->a_name;\r
- if (y->array_size != NULL)\r
- {\r
- z.array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation));\r
- if (z.array_size == NULL)\r
- {\r
- slang_variable_destruct (&z);\r
- return 0;\r
- }\r
- if (!slang_operation_construct (z.array_size))\r
- {\r
- slang_alloc_free (z.array_size);\r
- slang_variable_destruct (&z);\r
- return 0;\r
- }\r
- if (!slang_operation_copy (z.array_size, y->array_size))\r
- {\r
- slang_variable_destruct (&z);\r
- return 0;\r
- }\r
- }\r
+ z.array_len = y->array_len;\r
if (y->initializer != NULL)\r
{\r
z.initializer = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation));\r
return NULL;\r
}\r
\r
+/*\r
+ * slang_active_uniforms\r
+ */\r
+\r
+GLvoid slang_active_uniforms_ctr (slang_active_uniforms *self)\r
+{\r
+ self->table = NULL;\r
+ self->count = 0;\r
+}\r
+\r
+GLvoid slang_active_uniforms_dtr (slang_active_uniforms *self)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < self->count; i++)\r
+ slang_alloc_free (self->table[i].name);\r
+ slang_alloc_free (self->table);\r
+}\r
+\r
+GLboolean slang_active_uniforms_add (slang_active_uniforms *self, slang_export_data_quant *q,\r
+ const char *name)\r
+{\r
+ const GLuint n = self->count;\r
+\r
+ self->table = (slang_active_uniform *) slang_alloc_realloc (self->table,\r
+ n * sizeof (slang_active_uniform), (n + 1) * sizeof (slang_active_uniform));\r
+ if (self->table == NULL)\r
+ return GL_FALSE;\r
+ self->table[n].quant = q;\r
+ self->table[n].name = slang_string_duplicate (name);\r
+ if (self->table[n].name == NULL)\r
+ return GL_FALSE;\r
+ self->count++;\r
+ return GL_TRUE;\r
+}\r
+\r
+static GLenum gl_type_from_specifier (const slang_type_specifier *type)\r
+{\r
+ switch (type->type)\r
+ {\r
+ case slang_spec_bool:\r
+ return GL_BOOL_ARB;\r
+ case slang_spec_bvec2:\r
+ return GL_BOOL_VEC2_ARB;\r
+ case slang_spec_bvec3:\r
+ return GL_BOOL_VEC3_ARB;\r
+ case slang_spec_bvec4:\r
+ return GL_BOOL_VEC4_ARB;\r
+ case slang_spec_int:\r
+ return GL_INT;\r
+ case slang_spec_ivec2:\r
+ return GL_INT_VEC2_ARB;\r
+ case slang_spec_ivec3:\r
+ return GL_INT_VEC3_ARB;\r
+ case slang_spec_ivec4:\r
+ return GL_INT_VEC4_ARB;\r
+ case slang_spec_float:\r
+ return GL_FLOAT;\r
+ case slang_spec_vec2:\r
+ return GL_FLOAT_VEC2_ARB;\r
+ case slang_spec_vec3:\r
+ return GL_FLOAT_VEC3_ARB;\r
+ case slang_spec_vec4:\r
+ return GL_FLOAT_VEC4_ARB;\r
+ case slang_spec_mat2:\r
+ return GL_FLOAT_MAT2_ARB;\r
+ case slang_spec_mat3:\r
+ return GL_FLOAT_MAT3_ARB;\r
+ case slang_spec_mat4:\r
+ return GL_FLOAT_MAT4_ARB;\r
+ case slang_spec_sampler1D:\r
+ return GL_SAMPLER_1D_ARB;\r
+ case slang_spec_sampler2D:\r
+ return GL_SAMPLER_2D_ARB;\r
+ case slang_spec_sampler3D:\r
+ return GL_SAMPLER_3D_ARB;\r
+ case slang_spec_samplerCube:\r
+ return GL_SAMPLER_CUBE_ARB;\r
+ case slang_spec_sampler1DShadow:\r
+ return GL_SAMPLER_1D_SHADOW_ARB;\r
+ case slang_spec_sampler2DShadow:\r
+ return GL_SAMPLER_2D_SHADOW_ARB;\r
+ case slang_spec_array:\r
+ return gl_type_from_specifier (type->_array);\r
+ default:\r
+ return GL_FLOAT;\r
+ }\r
+}\r
+\r
+static GLboolean build_quant (slang_export_data_quant *q, slang_variable *var)\r
+{\r
+ slang_type_specifier *spec = &var->type.specifier;\r
+\r
+ q->name = var->a_name;\r
+ q->size = var->size;\r
+ if (spec->type == slang_spec_array)\r
+ {\r
+ q->array_len = var->array_len;\r
+ q->size /= var->array_len;\r
+ spec = spec->_array;\r
+ }\r
+ if (spec->type == slang_spec_struct)\r
+ {\r
+ GLuint i;\r
+\r
+ q->u.field_count = spec->_struct->fields->num_variables;\r
+ q->structure = (slang_export_data_quant *) slang_alloc_malloc (\r
+ q->u.field_count * sizeof (slang_export_data_quant));\r
+ if (q->structure == NULL)\r
+ return GL_FALSE;\r
+\r
+ for (i = 0; i < q->u.field_count; i++)\r
+ slang_export_data_quant_ctr (&q->structure[i]);\r
+ for (i = 0; i < q->u.field_count; i++)\r
+ if (!build_quant (&q->structure[i], &spec->_struct->fields->variables[i]))\r
+ return GL_FALSE;\r
+ }\r
+ else\r
+ q->u.basic_type = gl_type_from_specifier (spec);\r
+ return GL_TRUE;\r
+}\r
+\r
+GLboolean _slang_build_export_data_table (slang_export_data_table *tbl, slang_variable_scope *vars)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < vars->num_variables; i++)\r
+ {\r
+ slang_variable *var = &vars->variables[i];\r
+\r
+ if (var->type.qualifier == slang_qual_uniform)\r
+ {\r
+ slang_export_data_entry *e = slang_export_data_table_add (tbl);\r
+ if (e == NULL)\r
+ return GL_FALSE;\r
+ if (!build_quant (&e->quant, var))\r
+ return GL_FALSE;\r
+ e->access = slang_exp_uniform;\r
+ e->address = var->address;\r
+ }\r
+ }\r
+\r
+ if (vars->outer_scope != NULL)\r
+ return _slang_build_export_data_table (tbl, vars->outer_scope);\r
+ return GL_TRUE;\r
+}\r
+\r
+static GLboolean insert_uniform (slang_active_uniforms *u, slang_export_data_quant *q, char *name,\r
+ slang_atom_pool *atoms)\r
+{\r
+ slang_string_concat (name, slang_atom_pool_id (atoms, q->name));\r
+ if (q->array_len != 0)\r
+ slang_string_concat (name, "[0]");\r
+\r
+ if (q->structure != NULL)\r
+ {\r
+ GLuint save, i;\r
+\r
+ slang_string_concat (name, ".");\r
+ save = slang_string_length (name);\r
+\r
+ for (i = 0; i < q->u.field_count; i++)\r
+ {\r
+ if (!insert_uniform (u, &q->structure[i], name, atoms))\r
+ return GL_FALSE;\r
+ name[save] = '\0';\r
+ }\r
+\r
+ return GL_TRUE;\r
+ }\r
+\r
+ return slang_active_uniforms_add (u, q, name);\r
+}\r
+\r
+GLboolean _slang_gather_active_uniforms (slang_active_uniforms *u, slang_export_data_table *tbl)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < tbl->count; i++)\r
+ {\r
+ char name[1024] = "";\r
+\r
+ if (!insert_uniform (u, &tbl->entries[i].quant, name, tbl->atoms))\r
+ return GL_FALSE;\r
+ }\r
+\r
+ return GL_TRUE;\r
+}\r
+\r
#if !defined SLANG_COMPILE_VARIABLE_H\r
#define SLANG_COMPILE_VARIABLE_H\r
\r
+#include "slang_export.h"\r
+\r
#if defined __cplusplus\r
extern "C" {\r
#endif\r
{\r
slang_fully_specified_type type;\r
slang_atom a_name;\r
- struct slang_operation_ *array_size; /* type: spec_array */\r
+ GLuint array_len; /* type: spec_array */\r
struct slang_operation_ *initializer;\r
unsigned int address;\r
unsigned int size;\r
\r
slang_variable *_slang_locate_variable (slang_variable_scope *, slang_atom a_name, GLboolean all);\r
\r
+typedef struct\r
+{\r
+ slang_export_data_quant *quant;\r
+ char *name;\r
+} slang_active_uniform;\r
+\r
+typedef struct\r
+{\r
+ slang_active_uniform *table;\r
+ GLuint count;\r
+} slang_active_uniforms;\r
+\r
+GLvoid slang_active_uniforms_ctr (slang_active_uniforms *);\r
+GLvoid slang_active_uniforms_dtr (slang_active_uniforms *);\r
+GLboolean slang_active_uniforms_add (slang_active_uniforms *, slang_export_data_quant *,\r
+ const char *);\r
+\r
+GLboolean _slang_build_export_data_table (slang_export_data_table *, slang_variable_scope *);\r
+\r
+GLboolean _slang_gather_active_uniforms (slang_active_uniforms *, slang_export_data_table *);\r
+\r
#ifdef __cplusplus\r
}\r
#endif\r
*/\r
\r
#include "imports.h"\r
+#include "context.h"\r
+#include "swrast/s_context.h"\r
+#include "colormac.h"\r
#include "slang_utility.h"\r
#include "slang_assemble.h"\r
#include "slang_storage.h"\r
case slang_asm_addr_multiply:\r
fprintf (f, "addr_multiply");\r
break;\r
+ case slang_vec4_tex2d:\r
+ fprintf (f, "vec4_tex2d");\r
+ break;\r
case slang_asm_jump:\r
fprintf (f, "jump\t%u", a->param[0]);\r
break;\r
\r
#endif\r
\r
+static void fetch_texel (GLuint sampler, const GLfloat texcoord[4], GLfloat lambda, GLfloat color[4])\r
+{\r
+ GET_CURRENT_CONTEXT(ctx);\r
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);\r
+ GLchan rgba[4];\r
+\r
+ /* XXX: the function pointer is NULL! */\r
+ swrast->TextureSample[sampler] (ctx, ctx->Texture.Unit[sampler]._Current, 1,\r
+ (const GLfloat (*)[4]) texcoord, &lambda, &rgba);\r
+ color[0] = CHAN_TO_FLOAT(rgba[0]);\r
+ color[1] = CHAN_TO_FLOAT(rgba[1]);\r
+ color[2] = CHAN_TO_FLOAT(rgba[2]);\r
+ color[3] = CHAN_TO_FLOAT(rgba[3]);\r
+}\r
+\r
int _slang_execute2 (const slang_assembly_file *file, slang_machine *mach)\r
{\r
slang_machine_slot *stack;\r
stack[mach->sp + 1]._addr *= stack[mach->sp]._addr;\r
mach->sp++;\r
break;\r
+ case slang_asm_vec4_tex2d:\r
+ {\r
+ GLfloat st[4] = { stack[mach->sp]._float, stack[mach->sp + 1]._float, 0.0f, 1.0f };\r
+ GLuint sampler = (GLuint) stack[mach->sp + 2]._float;\r
+ GLfloat *rgba = &mach->mem[stack[mach->sp + 3]._addr / 4]._float;\r
+\r
+ fetch_texel (sampler, st, 0.0f, rgba);\r
+ }\r
+ mach->sp += 3;\r
+ break;\r
case slang_asm_jump:\r
mach->ip = a->param[0];\r
break;\r
--- /dev/null
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version: 6.5\r
+ *\r
+ * Copyright (C) 2006 Brian Paul All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+/**\r
+ * \file slang_export.c\r
+ * interface between assembly code and the application\r
+ * \author Michal Krol\r
+ */\r
+\r
+#include "imports.h"\r
+#include "slang_utility.h"\r
+#include "slang_export.h"\r
+\r
+/*\r
+ * slang_export_data_quant\r
+ */\r
+\r
+GLvoid slang_export_data_quant_ctr (slang_export_data_quant *self)\r
+{\r
+ self->name = SLANG_ATOM_NULL;\r
+ self->size = 0;\r
+ self->array_len = 0;\r
+ self->structure = NULL;\r
+ self->u.basic_type = GL_FLOAT;\r
+}\r
+\r
+GLvoid slang_export_data_quant_dtr (slang_export_data_quant *self)\r
+{\r
+ if (self->structure != NULL)\r
+ {\r
+ GLuint i;\r
+\r
+ for (i = 0; i < self->u.field_count; i++)\r
+ slang_export_data_quant_dtr (&self->structure[i]);\r
+ slang_alloc_free (self->structure);\r
+ }\r
+}\r
+\r
+slang_export_data_quant *slang_export_data_quant_add_field (slang_export_data_quant *self)\r
+{\r
+ const GLuint n = self->u.field_count;\r
+\r
+ self->structure = (slang_export_data_quant *) slang_alloc_realloc (self->structure,\r
+ n * sizeof (slang_export_data_quant), (n + 1) * sizeof (slang_export_data_quant));\r
+ if (self->structure == NULL)\r
+ return NULL;\r
+ slang_export_data_quant_ctr (&self->structure[n]);\r
+ self->u.field_count++;\r
+ return &self->structure[n];\r
+}\r
+\r
+/*\r
+ * slang_export_data_entry\r
+ */\r
+\r
+GLvoid slang_export_data_entry_ctr (slang_export_data_entry *self)\r
+{\r
+ slang_export_data_quant_ctr (&self->quant);\r
+ self->access = slang_exp_uniform;\r
+ self->address = ~0;\r
+}\r
+\r
+GLvoid slang_export_data_entry_dtr (slang_export_data_entry *self)\r
+{\r
+ slang_export_data_quant_dtr (&self->quant);\r
+}\r
+\r
+/*\r
+ * slang_export_data_table\r
+ */\r
+\r
+GLvoid slang_export_data_table_ctr (slang_export_data_table *self)\r
+{\r
+ self->entries = NULL;\r
+ self->count = 0;\r
+ self->atoms = NULL;\r
+}\r
+\r
+GLvoid slang_export_data_table_dtr (slang_export_data_table *self)\r
+{\r
+ if (self->entries != NULL)\r
+ {\r
+ GLuint i;\r
+\r
+ for (i = 0; i < self->count; i++)\r
+ slang_export_data_entry_dtr (&self->entries[i]);\r
+ slang_alloc_free (self->entries);\r
+ }\r
+}\r
+\r
+slang_export_data_entry *slang_export_data_table_add (slang_export_data_table *self)\r
+{\r
+ const GLuint n = self->count;\r
+\r
+ self->entries = (slang_export_data_entry *) slang_alloc_realloc (self->entries,\r
+ n * sizeof (slang_export_data_entry), (n + 1) * sizeof (slang_export_data_entry));\r
+ if (self->entries == NULL)\r
+ return NULL;\r
+ slang_export_data_entry_ctr (&self->entries[n]);\r
+ self->count++;\r
+ return &self->entries[n];\r
+}\r
+\r
+/*\r
+ * _slang_find_exported_data()\r
+ */\r
+\r
+#define EXTRACT_ERROR 0\r
+#define EXTRACT_BASIC 1\r
+#define EXTRACT_ARRAY 2\r
+#define EXTRACT_STRUCT 3\r
+#define EXTRACT_STRUCT_ARRAY 4\r
+\r
+#define EXTRACT_MAXLEN 255\r
+\r
+static GLuint extract_name (const char *name, char *parsed, GLuint *element, const char **end)\r
+{\r
+ GLuint i;\r
+\r
+ if (name[0] >= 'a' && name[0] <= 'z' || name[0] >= 'A' && name[0] <= 'Z' || name[0] == '_')\r
+ {\r
+ parsed[0] = name[0];\r
+\r
+ for (i = 1; i < EXTRACT_MAXLEN; i++)\r
+ {\r
+ if (name[i] >= 'a' && name[i] <= 'z' || name[i] >= 'A' && name[i] <= 'Z' ||\r
+ name[i] >= '0' && name[i] <= '9' || name[0] == '_')\r
+ {\r
+ parsed[i] = name[i];\r
+ }\r
+ else\r
+ {\r
+ if (name[i] == '\0')\r
+ {\r
+ parsed[i] = '\0';\r
+ return EXTRACT_BASIC;\r
+ }\r
+ if (name[i] == '.')\r
+ {\r
+ parsed[i] = '\0';\r
+ *end = &name[i + 1];\r
+ return EXTRACT_STRUCT;\r
+ }\r
+ if (name[i] == '[')\r
+ {\r
+ parsed[i] = '\0';\r
+ i++;\r
+ if (name[i] >= '0' && name[i] <= '9')\r
+ {\r
+ *element = name[i] - '0';\r
+ for (i++; ; i++)\r
+ {\r
+ if (name[i] >= '0' && name[i] <= '9')\r
+ *element = *element * 10 + (name[i] - '0');\r
+ else\r
+ {\r
+ if (name[i] == ']')\r
+ {\r
+ i++;\r
+ if (name[i] == '.')\r
+ {\r
+ *end = &name[i + 1];\r
+ return EXTRACT_STRUCT_ARRAY;\r
+ }\r
+ *end = &name[i];\r
+ return EXTRACT_ARRAY;\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return EXTRACT_ERROR;\r
+}\r
+\r
+static GLboolean validate_extracted (slang_export_data_quant *q, GLuint element, GLuint extr)\r
+{\r
+ switch (extr)\r
+ {\r
+ case EXTRACT_BASIC:\r
+ return GL_TRUE;\r
+ case EXTRACT_ARRAY:\r
+ return element < q->array_len;\r
+ case EXTRACT_STRUCT:\r
+ return q->structure != NULL;\r
+ case EXTRACT_STRUCT_ARRAY:\r
+ return q->structure != NULL && element < q->array_len;\r
+ }\r
+ return GL_FALSE;\r
+}\r
+\r
+static GLuint calculate_offset (slang_export_data_quant *q, GLuint element)\r
+{\r
+ if (q->array_len != 0)\r
+ return element * q->size;\r
+ return 0;\r
+}\r
+\r
+static GLboolean find_exported_data (slang_export_data_quant *q, const char *name,\r
+ slang_export_data_quant **quant, GLuint *offset, slang_atom_pool *atoms)\r
+{\r
+ char parsed[EXTRACT_MAXLEN];\r
+ GLuint result, element, i;\r
+ const char *end;\r
+ slang_atom atom;\r
+\r
+ result = extract_name (name, parsed, &element, &end);\r
+ if (result == EXTRACT_ERROR)\r
+ return GL_FALSE;\r
+\r
+ atom = slang_atom_pool_atom (atoms, parsed);\r
+ if (atom == SLANG_ATOM_NULL)\r
+ return GL_FALSE;\r
+\r
+ for (i = 0; i < q->u.field_count; i++)\r
+ if (q->structure[i].name == atom)\r
+ {\r
+ if (!validate_extracted (&q->structure[i], element, result))\r
+ return GL_FALSE;\r
+ *offset += calculate_offset (&q->structure[i], element);\r
+ if (result == EXTRACT_BASIC || result == EXTRACT_ARRAY)\r
+ {\r
+ if (*end != '\0')\r
+ return GL_FALSE;\r
+ *quant = &q->structure[i];\r
+ return GL_TRUE;\r
+ }\r
+ return find_exported_data (&q->structure[i], end, quant, offset, atoms);\r
+ }\r
+ return GL_FALSE;\r
+}\r
+\r
+GLboolean _slang_find_exported_data (slang_export_data_table *table, const char *name,\r
+ slang_export_data_entry **entry, slang_export_data_quant **quant, GLuint *offset)\r
+{\r
+ char parsed[EXTRACT_MAXLEN];\r
+ GLuint result, element, i;\r
+ const char *end;\r
+ slang_atom atom;\r
+\r
+ result = extract_name (name, parsed, &element, &end);\r
+ if (result == EXTRACT_ERROR)\r
+ return GL_FALSE;\r
+\r
+ atom = slang_atom_pool_atom (table->atoms, parsed);\r
+ if (atom == SLANG_ATOM_NULL)\r
+ return GL_FALSE;\r
+\r
+ for (i = 0; i < table->count; i++)\r
+ if (table->entries[i].quant.name == atom)\r
+ {\r
+ if (!validate_extracted (&table->entries[i].quant, element, result))\r
+ return GL_FALSE;\r
+ *entry = &table->entries[i];\r
+ *offset = calculate_offset (&table->entries[i].quant, element);\r
+ if (result == EXTRACT_BASIC || result == EXTRACT_ARRAY)\r
+ {\r
+ if (*end != '\0')\r
+ return GL_FALSE;\r
+ *quant = &table->entries[i].quant;\r
+ return GL_TRUE;\r
+ }\r
+ return find_exported_data (&table->entries[i].quant, end, quant, offset, table->atoms);\r
+ }\r
+ return GL_FALSE;\r
+}\r
+\r
--- /dev/null
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version: 6.5\r
+ *\r
+ * Copyright (C) 2006 Brian Paul All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+#if !defined SLANG_EXPORT_H\r
+#define SLANG_EXPORT_H\r
+\r
+#if defined __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/*\r
+ * Basic data quantity to transfer between application and assembly.\r
+ * The <size> is the actual size of the data quantity including padding, if any. It is\r
+ * used to calculate offsets from the beginning of the data.\r
+ * The <array_len> is not 0, the data quantity is an array of <array_len> size.\r
+ * If the <structure> is not NULL, the data quantity is a struct. The <basic_type> is\r
+ * invalid and the <field_count> holds the size of the <structure> array.\r
+ * The <basic_type> values match those of <type> parameter for glGetActiveUniformARB.\r
+ */\r
+\r
+typedef struct slang_export_data_quant_\r
+{\r
+ slang_atom name;\r
+ GLuint size;\r
+ GLuint array_len;\r
+ struct slang_export_data_quant_ *structure;\r
+ union\r
+ {\r
+ GLenum basic_type;\r
+ GLuint field_count;\r
+ } u;\r
+} slang_export_data_quant;\r
+\r
+GLvoid slang_export_data_quant_ctr (slang_export_data_quant *);\r
+GLvoid slang_export_data_quant_dtr (slang_export_data_quant *);\r
+slang_export_data_quant *slang_export_data_quant_add_field (slang_export_data_quant *);\r
+\r
+/*\r
+ * Data access pattern. Specifies how data is accessed at what frequency.\r
+ */\r
+\r
+typedef enum\r
+{\r
+ slang_exp_uniform,\r
+ slang_exp_varying,\r
+ slang_exp_attribute\r
+} slang_export_data_access;\r
+\r
+/*\r
+ * Data export entry. Holds the data type information, access pattern and base address.\r
+ */\r
+\r
+typedef struct\r
+{\r
+ slang_export_data_quant quant;\r
+ slang_export_data_access access;\r
+ GLuint address;\r
+} slang_export_data_entry;\r
+\r
+GLvoid slang_export_data_entry_ctr (slang_export_data_entry *);\r
+GLvoid slang_export_data_entry_dtr (slang_export_data_entry *);\r
+\r
+/*\r
+ * Data export table. Holds <count> elements in <entries> array.\r
+ */\r
+\r
+typedef struct\r
+{\r
+ slang_export_data_entry *entries;\r
+ GLuint count;\r
+ slang_atom_pool *atoms;\r
+} slang_export_data_table;\r
+\r
+GLvoid slang_export_data_table_ctr (slang_export_data_table *);\r
+GLvoid slang_export_data_table_dtr (slang_export_data_table *);\r
+slang_export_data_entry *slang_export_data_table_add (slang_export_data_table *);\r
+\r
+/*\r
+ * _slang_find_exported_data()\r
+ *\r
+ * Parses the name string and returns corresponding data entry, data quantity and offset.\r
+ * Returns GL_TRUE if the data is found, returns GL_FALSE otherwise.\r
+ */\r
+\r
+GLboolean _slang_find_exported_data (slang_export_data_table *, const char *,\r
+ slang_export_data_entry **, slang_export_data_quant **, GLuint *);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+\r
--- /dev/null
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version: 6.5\r
+ *\r
+ * Copyright (C) 2006 Brian Paul All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+/**\r
+ * \file slang_link.c\r
+ * slang linker\r
+ * \author Michal Krol\r
+ */\r
+\r
+#include "imports.h"\r
+#include "slang_utility.h"\r
+#include "slang_compile.h"\r
+#include "slang_export.h"\r
+#include "slang_link.h"\r
+\r
+/*\r
+ * slang_uniform_bindings\r
+ */\r
+\r
+static GLvoid slang_uniform_bindings_ctr (slang_uniform_bindings *self)\r
+{\r
+ self->table = NULL;\r
+ self->count = 0;\r
+}\r
+\r
+static GLvoid slang_uniform_bindings_dtr (slang_uniform_bindings *self)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < self->count; i++)\r
+ slang_alloc_free (self->table[i].name);\r
+ slang_alloc_free (self->table);\r
+}\r
+\r
+static GLboolean slang_uniform_bindings_add (slang_uniform_bindings *self, slang_export_data_quant *q,\r
+ const char *name, GLuint index, GLuint address)\r
+{\r
+ const GLuint n = self->count;\r
+ GLuint i;\r
+\r
+ for (i = 0; i < n; i++)\r
+ if (slang_string_compare (self->table[i].name, name) == 0)\r
+ {\r
+ self->table[i].address[index] = address;\r
+ return GL_TRUE;\r
+ }\r
+\r
+ self->table = (slang_uniform_binding *) slang_alloc_realloc (self->table,\r
+ n * sizeof (slang_uniform_binding), (n + 1) * sizeof (slang_uniform_binding));\r
+ if (self->table == NULL)\r
+ return GL_FALSE;\r
+ self->table[n].quant = q;\r
+ self->table[n].name = slang_string_duplicate (name);\r
+ for (i = 0; i < SLANG_UNIFORM_BINDING_MAX; i++)\r
+ self->table[n].address[i] = ~0;\r
+ self->table[n].address[index] = address;\r
+ if (self->table[n].name == NULL)\r
+ return GL_FALSE;\r
+ self->count++;\r
+ return GL_TRUE;\r
+}\r
+\r
+static GLboolean insert_binding (slang_uniform_bindings *bind, slang_export_data_quant *q,\r
+ char *name, slang_atom_pool *atoms, GLuint index, GLuint addr)\r
+{\r
+ GLuint count, i;\r
+\r
+ slang_string_concat (name, slang_atom_pool_id (atoms, q->name));\r
+\r
+ if (q->array_len == 0)\r
+ count = 1;\r
+ else\r
+ count = q->array_len;\r
+\r
+ for (i = 0; i < count; i++)\r
+ {\r
+ GLuint save;\r
+\r
+ save = slang_string_length (name);\r
+ if (q->array_len != 0)\r
+ _mesa_sprintf (name + slang_string_length (name), "[%d]", i);\r
+\r
+ if (q->structure != NULL)\r
+ {\r
+ GLuint save, i;\r
+\r
+ slang_string_concat (name, ".");\r
+ save = slang_string_length (name);\r
+\r
+ for (i = 0; i < q->u.field_count; i++)\r
+ {\r
+ if (!insert_binding (bind, &q->structure[i], name, atoms, index, addr))\r
+ return GL_FALSE;\r
+ name[save] = '\0';\r
+ addr += q->structure[i].size;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (!slang_uniform_bindings_add (bind, q, name, index, addr))\r
+ return GL_FALSE;\r
+ addr += q->size;\r
+ }\r
+ name[save] = '\0';\r
+ }\r
+\r
+ return GL_TRUE;\r
+}\r
+\r
+static GLboolean gather_uniform_bindings (slang_uniform_bindings *bind, slang_export_data_table *tbl,\r
+ GLuint index)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < tbl->count; i++)\r
+ {\r
+ char name[1024] = "";\r
+\r
+ if (!insert_binding (bind, &tbl->entries[i].quant, name, tbl->atoms, index,\r
+ tbl->entries[i].address))\r
+ return GL_FALSE;\r
+ }\r
+\r
+ return GL_TRUE;\r
+}\r
+\r
+/*\r
+ * slang_program\r
+ */\r
+\r
+GLvoid slang_program_ctr (slang_program *self)\r
+{\r
+ slang_uniform_bindings_ctr (&self->uniforms);\r
+}\r
+\r
+GLvoid slang_program_dtr (slang_program *self)\r
+{\r
+ slang_uniform_bindings_dtr (&self->uniforms);\r
+}\r
+\r
+/*\r
+ * _slang_link()\r
+ */\r
+\r
+GLboolean _slang_link (slang_program *prog, slang_translation_unit **units, GLuint count)\r
+{\r
+ GLuint i;\r
+\r
+ for (i = 0; i < count; i++)\r
+ {\r
+ GLuint index;\r
+\r
+ if (units[i]->type == slang_unit_fragment_shader)\r
+ index = SLANG_UNIFORM_BINDING_FRAGMENT;\r
+ else\r
+ index = SLANG_UNIFORM_BINDING_VERTEX;\r
+\r
+ if (!gather_uniform_bindings (&prog->uniforms, &units[i]->exp_data, index))\r
+ return GL_FALSE;\r
+ prog->machines[index] = units[i]->machine;\r
+ }\r
+\r
+ return GL_TRUE;\r
+}\r
+\r
--- /dev/null
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version: 6.5\r
+ *\r
+ * Copyright (C) 2006 Brian Paul All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+#if !defined SLANG_LINK_H\r
+#define SLANG_LINK_H\r
+\r
+#include "slang_assemble.h"\r
+#include "slang_execute.h"\r
+\r
+#if defined __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#define SLANG_UNIFORM_BINDING_VERTEX 0\r
+#define SLANG_UNIFORM_BINDING_FRAGMENT 1\r
+#define SLANG_UNIFORM_BINDING_MAX 2\r
+\r
+typedef struct\r
+{\r
+ slang_export_data_quant *quant;\r
+ char *name;\r
+ GLuint address[SLANG_UNIFORM_BINDING_MAX];\r
+} slang_uniform_binding;\r
+\r
+typedef struct\r
+{\r
+ slang_uniform_binding *table;\r
+ GLuint count;\r
+} slang_uniform_bindings;\r
+\r
+typedef struct\r
+{\r
+ slang_uniform_bindings uniforms;\r
+ slang_machine *machines[SLANG_UNIFORM_BINDING_MAX];\r
+} slang_program;\r
+\r
+GLvoid slang_program_ctr (slang_program *);\r
+GLvoid slang_program_dtr (slang_program *);\r
+\r
+GLboolean _slang_link (slang_program *, slang_translation_unit **, GLuint);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+\r
for (i = 0; i < vars->num_variables; i++)
if (!_slang_aggregate_variable (agg, &vars->variables[i].type.specifier,
- vars->variables[i].array_size, funcs, structs, globals, mach, file, atoms))
+ vars->variables[i].array_len, funcs, structs, globals, mach, file, atoms))
return GL_FALSE;
return GL_TRUE;
}
\r
-static GLboolean eval_array_size (slang_assembly_file *file, slang_machine *pmach,\r
- slang_assembly_name_space *space, slang_operation *array_size, GLuint *plength,\r
+GLboolean _slang_evaluate_int (slang_assembly_file *file, slang_machine *pmach,\r
+ slang_assembly_name_space *space, slang_operation *array_size, GLuint *pint,\r
slang_atom_pool *atoms)\r
{\r
slang_assembly_file_restore_point point;\r
return GL_FALSE;\r
\r
/* insert the actual expression */\r
- if (!_slang_assemble_operation_ (&A, array_size, slang_ref_forbid))\r
+ if (!_slang_assemble_operation (&A, array_size, slang_ref_forbid))\r
return GL_FALSE;\r
if (!slang_assembly_file_push (file, slang_asm_exit))\r
return GL_FALSE;\r
return GL_FALSE;\r
\r
/* the evaluated expression is on top of the stack */\r
- *plength = (GLuint) mach.mem[mach.sp + SLANG_MACHINE_GLOBAL_SIZE]._float;\r
- /* TODO: check if 0 < arr->length <= 65535 */\r
+ *pint = (GLuint) mach.mem[mach.sp + SLANG_MACHINE_GLOBAL_SIZE]._float;\r
\r
/* restore the old assembly */\r
if (!slang_assembly_file_restore_point_load (file, &point))\r
}\r
GLboolean _slang_aggregate_variable (slang_storage_aggregate *agg, slang_type_specifier *spec,
- slang_operation *array_size, slang_function_scope *funcs, slang_struct_scope *structs,
+ GLuint array_len, slang_function_scope *funcs, slang_struct_scope *structs,
slang_variable_scope *vars, slang_machine *mach, slang_assembly_file *file,\r
slang_atom_pool *atoms)
{
case slang_spec_array:
{
slang_storage_array *arr;\r
- slang_assembly_name_space space;
arr = slang_storage_aggregate_push_new (agg);
if (arr == NULL)
arr->aggregate = NULL;\r
return GL_FALSE;\r
}
- if (!_slang_aggregate_variable (arr->aggregate, spec->_array, NULL, funcs, structs,\r
+ if (!_slang_aggregate_variable (arr->aggregate, spec->_array, 0, funcs, structs,\r
vars, mach, file, atoms))
return GL_FALSE;\r
- space.funcs = funcs;\r
- space.structs = structs;\r
- space.vars = vars;\r
- if (!eval_array_size (file, mach, &space, array_size, &arr->length, atoms))\r
- return GL_FALSE;
+ arr->length = array_len;\r
+ /* TODO: check if 0 < arr->length <= 65535 */
}
return GL_TRUE;
default:
GLvoid slang_storage_aggregate_destruct (slang_storage_aggregate *);
GLboolean _slang_aggregate_variable (slang_storage_aggregate *, struct slang_type_specifier_ *,
- struct slang_operation_ *, struct slang_function_scope_ *, slang_struct_scope *,
+ GLuint, struct slang_function_scope_ *, slang_struct_scope *,
slang_variable_scope *, struct slang_machine_ *, struct slang_assembly_file_ *,\r
- slang_atom_pool *);
+ slang_atom_pool *);\r
+\r
+GLboolean _slang_evaluate_int (struct slang_assembly_file_ *, struct slang_machine_ *,\r
+ struct slang_assembly_name_space_ *, struct slang_operation_ *, GLuint *, slang_atom_pool *);
/*
* Returns total size (in machine units) of the given aggregate.
shader/slang/slang_compile_struct.c \
shader/slang/slang_compile_variable.c \
shader/slang/slang_execute.c \
+ shader/slang/slang_export.c \
shader/slang/slang_library_noise.c \
+ shader/slang/slang_link.c \
shader/slang/slang_preprocess.c \
shader/slang/slang_storage.c \
shader/slang/slang_utility.c
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\..\..\src\mesa\shader\slang\slang_export.c\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\..\..\src\mesa\shader\slang\slang_library_noise.c\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\..\..\src\mesa\shader\slang\slang_link.c\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\..\..\src\mesa\shader\slang\slang_preprocess.c\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\..\..\src\mesa\shader\slang\slang_export.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\..\..\src\mesa\shader\slang\slang_library_noise.h\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\..\..\src\mesa\shader\slang\slang_link.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\..\..\src\mesa\shader\slang\slang_mesa.h\r
# End Source File\r
# Begin Source File\r