Browse Source

Added resources, and changed slightly how wrappers expose functions.

rude 16 years ago
parent
commit
0c241a14fb

+ 20 - 0
.hgignore

@@ -0,0 +1,20 @@
+relre:platform/msvc2008/include/
+glob:platform/msvc2008/Debug/
+glob:platform/msvc2008/Release/
+glob:platform/msvc2008/lib/
+relre:platform/msvc2008/(.*)user
+relre:platform/msvc2008/(.*)dll
+relre:platform/msvc2008/(.*)ncb
+relre:platform/msvc2008/(.*)txt
+relre:platform/msvc2008/(.*)suo
+relre:src/scripts/(.*)exe
+relre:src/scripts/(.*)bat
+glob:extra/reshax/Release/
+glob:extra/reshax/Debug/
+relre:src/resources/(.*)bat
+relre:src/resources/(.*)exe
+relre:extra/reshax/(.*)ncb
+relre:extra/reshax/(.*)suo
+relre:extra/reshax/(.*)user
+glob:extra/reshax/resources.h
+glob:extra/reshax/resources.cpp

+ 2 - 1
extra/reshax/reshax.cpp

@@ -56,7 +56,8 @@ int main(int argc, char *argv[])
 			// use boost::filesystem to list all the files (in v2 maybe)
 			load(argv[i]);
 		}
-		resources_cpp << "}\n";
+		resources_cpp << "};\n";
+		resources_cpp << "} // love\n";
 		resources_cpp.close();
 		resources_h
 			<< "}\n\n"

+ 60 - 0
platform/msvc2008/love.vcproj

@@ -3143,6 +3143,14 @@
 				<File
 					RelativePath="..\..\src\modules\font\Font.cpp"
 					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)\font\"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\..\src\modules\font\Font.h"
@@ -3151,6 +3159,14 @@
 				<File
 					RelativePath="..\..\src\modules\font\GlyphData.cpp"
 					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)\font\"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\..\src\modules\font\GlyphData.h"
@@ -3159,6 +3175,14 @@
 				<File
 					RelativePath="..\..\src\modules\font\ImageRasterizer.cpp"
 					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)\font\"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\..\src\modules\font\ImageRasterizer.h"
@@ -3167,6 +3191,14 @@
 				<File
 					RelativePath="..\..\src\modules\font\Rasterizer.cpp"
 					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)\font\"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\..\src\modules\font\Rasterizer.h"
@@ -3175,6 +3207,14 @@
 				<File
 					RelativePath="..\..\src\modules\font\wrap_Font.cpp"
 					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)\font\"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\..\src\modules\font\wrap_Font.h"
@@ -3186,6 +3226,14 @@
 					<File
 						RelativePath="..\..\src\modules\font\freetype\FreeTypeRasterizer.cpp"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+								ObjectFile="$(IntDir)\font\freetype\"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\modules\font\freetype\FreeTypeRasterizer.h"
@@ -3794,6 +3842,18 @@
 			Name="scripts"
 			>
 		</Filter>
+		<Filter
+			Name="resources"
+			>
+			<File
+				RelativePath="..\..\src\resources\resources.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\resources\resources.h"
+				>
+			</File>
+		</Filter>
 		<File
 			RelativePath="..\..\src\love.cpp"
 			>

+ 8 - 2
src/common/runtime.cpp

@@ -155,8 +155,11 @@ namespace love
 		return 0;
 	}
 
-	int luax_register_module(lua_State * L, const luaL_Reg * fn, const lua_CFunction * types)
+	int luax_register_module(lua_State * L, const luaL_Reg * fn, const lua_CFunction * types, const char * name)
 	{
+		// Gets the love table.
+		lua_getglobal(L, "love");
+
 		// Create new table for module.
 		lua_newtable(L);
 
@@ -168,7 +171,10 @@ namespace love
 			for(const lua_CFunction * t = types; *t != 0; t++)
 				(*t)(L);
 
-		return 1;
+		lua_setfield(L, -2, name); // love.graphics = table
+		lua_pop(L, 1); // love
+
+		return 0;
 	}
 
 	int luax_preload(lua_State * L, lua_CFunction f, const char * name)

+ 1 - 1
src/common/runtime.h

@@ -49,7 +49,7 @@ namespace love
 		const char * provides, const char * desc, const char * author,
 		lua_CFunction open);
 
-	int luax_register_module(lua_State * L, const luaL_Reg * fn, const lua_CFunction * types);
+	int luax_register_module(lua_State * L, const luaL_Reg * fn, const lua_CFunction * types, const char * name);
 	int luax_preload(lua_State * L, lua_CFunction f, const char * name);
 	int luax_register_type(lua_State * L, const char * tname, const luaL_Reg * fn);
 

+ 8 - 0
src/love.cpp

@@ -27,6 +27,7 @@
 #include <common/config.h>
 #include <common/runtime.h>
 #include <common/constants.h>
+#include <common/MemoryData.h>
 
 // Modules
 #include <audio/wrap_Audio.h>
@@ -46,6 +47,9 @@
 #include "libraries/luasocket/luasocket.h"
 #include "libraries/lanes/lanes.h"
 
+// Resources
+#include "resources/resources.h"
+
 DECLSPEC int luaopen_love(lua_State * L)
 {
 	// Create the love table.
@@ -62,6 +66,10 @@ DECLSPEC int luaopen_love(lua_State * L)
 	lua_newtable(L);
 	lua_setfield(L, -2, "__fin");
 
+	// Resources.
+	love::luax_newtype(L, "Data", love::LOVE_DATA_BITS, new love::MemoryData((void*)love::Vera_ttf_data, love::Vera_ttf_size));
+	lua_setfield(L, -2, "_vera");
+
 	// Set the love table.
 	lua_setglobal(L, "love");
 

+ 1 - 1
src/modules/audio/wrap_Audio.cpp

@@ -189,7 +189,7 @@ namespace audio
 
 		luax_register_gc(L, "love.audio", instance);
 
-		return luax_register_module(L, wrap_Audio_functions, wrap_Audio_types);
+		return luax_register_module(L, wrap_Audio_functions, wrap_Audio_types, "audio");
 	}
 
 } // audio

+ 1 - 1
src/modules/event/sdl/wrap_Event.cpp

@@ -87,7 +87,7 @@ namespace sdl
 
 		luax_register_gc(L, "love.event", instance);
 
-		return luax_register_module(L, wrap_Event_functions, 0);
+		return luax_register_module(L, wrap_Event_functions, 0, "event");
 	}
 
 } // sdl

+ 1 - 1
src/modules/filesystem/physfs/wrap_Filesystem.cpp

@@ -243,7 +243,7 @@ namespace physfs
 
 		luax_register_gc(L, "love.filesystem", instance);
 
-		return luax_register_module(L, wrap_Filesystem_functions, wrap_Filesystem_types);
+		return luax_register_module(L, wrap_Filesystem_functions, wrap_Filesystem_types, "filesystem");
 	}
 
 } // physfs

+ 1 - 1
src/modules/font/wrap_Font.cpp

@@ -60,7 +60,7 @@ namespace font
 
 		luax_register_gc(L, "love.font", instance);
 
-		return luax_register_module(L, wrap_Font_functions, wrap_Font_types);
+		return luax_register_module(L, wrap_Font_functions, wrap_Font_types, "font");
 	}
 
 } // sound

+ 4 - 4
src/modules/graphics/opengl/Graphics.cpp

@@ -400,9 +400,9 @@ namespace opengl
 		return new Frame(x, y, w, h, sw, sh);
 	}
 
-	Font * Graphics::newFont(love::filesystem::File * file, int size)
+	Font * Graphics::newFont(Data * data, int size)
 	{
-		Font * font = new TrueTypeFont(file, size);
+		Font * font = new TrueTypeFont(data, size);
 
 		// Load it and check for errors.
 		if(!font->load())
@@ -482,12 +482,12 @@ namespace opengl
 			currentFont->retain();
 	}
 
-	void Graphics::setFont( love::filesystem::File * file, int size )
+	void Graphics::setFont( Data * data, int size )
 	{
 		if(currentFont != 0)
 			currentFont->release();
 
-		currentFont = new TrueTypeFont(file, size);
+		currentFont = new TrueTypeFont(data, size);
 		currentFont->load();
 	}
 

+ 3 - 3
src/modules/graphics/opengl/Graphics.h

@@ -244,7 +244,7 @@ namespace opengl
 		/**
 		* Creates a Font object.
 		**/
-		Font * newFont(love::filesystem::File * file, int size);
+		Font * newFont(Data * data, int size);
 
 		/**
 		* Creates an ImageFont object.
@@ -284,10 +284,10 @@ namespace opengl
 		* Sets a default font. The font is
 		* loaded and sent to the GPU every time this is called, 
 		* so no over-using.
-		* @param file File from which to load the font.
+		* @param data Data 
 		* @param size The size of the font.
 		**/
-		void setFont( love::filesystem::File * file, int size = 12);
+		void setFont( Data * data, int size = 12);
 
 		/**
 		* Gets the current Font, or nil if none.

+ 4 - 6
src/modules/graphics/opengl/TrueTypeFont.cpp

@@ -131,16 +131,16 @@ namespace opengl
 		FT_Done_Glyph(glyph);
 	}
 
-	TrueTypeFont::TrueTypeFont(love::filesystem::File * file, int size) 
-		: Font(size), file(file), textures(0), list(0)
+	TrueTypeFont::TrueTypeFont(Data * data, int size) 
+		: Font(size), data(data), textures(0), list(0)
 	{
-		file->retain();
+		data->retain();
 	}	
 
 	TrueTypeFont::~TrueTypeFont()
 	{
 		unload();
-		file->release();
+		data->release();
 	}
 
 	void TrueTypeFont::print(string text, float x, float y) const
@@ -200,8 +200,6 @@ namespace opengl
 
 	bool TrueTypeFont::loadVolatile()
 	{
-		Data * data = file->read();
-
 		trueHeight = size;
 
 

+ 2 - 2
src/modules/graphics/opengl/TrueTypeFont.h

@@ -53,7 +53,7 @@ namespace opengl
 	{
 	private: 
 
-		love::filesystem::File * file;
+		Data * data;
 
 	protected:
 		
@@ -93,7 +93,7 @@ namespace opengl
 		* @param file The file containing the TrueTypeFont data.
 		* @param size The size of the TrueTypeFont.
 		**/
-		TrueTypeFont(love::filesystem::File * file, int size);
+		TrueTypeFont(Data * data, int size);
 
 		/**
 		* Calls unload().

+ 31 - 9
src/modules/graphics/opengl/wrap_Graphics.cpp

@@ -174,17 +174,28 @@ namespace opengl
 
 	int _wrap_newFont(lua_State * L)
 	{
+
+		Data * d = 0;
+
 		// Convert to File, if necessary.
 		if(lua_isstring(L, 1))
 			luax_strtofile(L, 1);
 
-		// Check the value.
-		love::filesystem::File * file = luax_checktype<love::filesystem::File>(L, 1, "File", LOVE_FILESYSTEM_FILE_BITS);
+		if(luax_istype(L, 1, LOVE_FILESYSTEM_FILE_BITS))
+		{
+			// Check the value.
+			love::filesystem::File * file = luax_checktype<love::filesystem::File>(L, 1, "File", LOVE_FILESYSTEM_FILE_BITS);
+			d = file->read();
+		}
+		else if(luax_istype(L, 1, LOVE_DATA_BITS))
+		{
+			d = luax_checktype<Data>(L, 1, "Data", LOVE_DATA_BITS);
+		}
 
 		// Second optional parameter can be a number:
 		int size = luaL_optint(L, 2, 12);
 
-		Font * font = instance->newFont(file, size);
+		Font * font = instance->newFont(d, size);
 
 		if(font == 0)
 			return luaL_error(L, "Could not load the font");
@@ -284,7 +295,13 @@ namespace opengl
 		if(luax_istype(L, 1, LOVE_FILESYSTEM_FILE_BITS))
 		{
 			love::filesystem::File * file = luax_checktype<love::filesystem::File>(L, 1, "File", LOVE_FILESYSTEM_FILE_BITS);
-			instance->setFont(file, size);
+			instance->setFont(file->read(), size);
+			return 0;
+		}
+		else if(luax_istype(L, 1, LOVE_DATA_BITS))
+		{
+			Data * data = luax_checktype<Data>(L, 1, "Data", LOVE_DATA_BITS);
+			instance->setFont(data, size);
 			return 0;
 		}
 
@@ -524,7 +541,7 @@ namespace opengl
 		return 0;
 	}
 
-	int _wrap_print(lua_State * L)
+	int _wrap_print1(lua_State * L)
 	{
 		const char * str = luaL_checkstring(L, 1);
 		float x = (float)luaL_checknumber(L, 2);
@@ -553,7 +570,7 @@ namespace opengl
 		return 0;
 	}
 
-	int _wrap_printf(lua_State * L)
+	int _wrap_printf1(lua_State * L)
 	{
 		const char * str = luaL_checkstring(L, 1);
 		float x = (float)luaL_checknumber(L, 2);
@@ -693,6 +710,7 @@ namespace opengl
 		{ "getBackgroundColor", _wrap_getBackgroundColor },
 
 		{ "setFont", _wrap_setFont },
+		{ "getFont", _wrap_getFont },
 
 		{ "setBlendMode", _wrap_setBlendMode },
 		{ "setColorMode", _wrap_setColorMode },
@@ -717,8 +735,8 @@ namespace opengl
 		{ "drawf", _wrap_drawf },
 		{ "drawTest", _wrap_drawTest },
 
-		{ "print", _wrap_print },
-		{ "printf", _wrap_printf },
+		{ "print1", _wrap_print1 },
+		{ "printf1", _wrap_printf1 },
 
 		{ "setCaption", _wrap_setCaption },
 		{ "getCaption", _wrap_getCaption },
@@ -775,8 +793,12 @@ namespace opengl
 		}
 
 		luax_register_gc(L, "love.graphics", instance);
+		luax_register_module(L, wrap_Graphics_functions, wrap_Graphics_types, "graphics");		
+
+//#		include <scripts/graphics.lua.h>
+		luaL_dofile(L, "../../src/scripts/graphics.lua");
 
-		return luax_register_module(L, wrap_Graphics_functions, wrap_Graphics_types);
+		return 0;
 	}
 
 } // opengl

+ 2 - 2
src/modules/graphics/opengl/wrap_Graphics.h

@@ -78,8 +78,8 @@ namespace opengl
 	int _wrap_draw(lua_State * L);
 	int _wrap_draws(lua_State * L);
 	int _wrap_drawTest(lua_State * L);
-	int _wrap_print(lua_State * L);
-	int _wrap_printf(lua_State * L);
+	int _wrap_print1(lua_State * L);
+	int _wrap_printf1(lua_State * L);
 	int _wrap_point(lua_State * L);
 	int _wrap_line(lua_State * L);
 	int _wrap_triangle(lua_State * L);

+ 1 - 1
src/modules/image/wrap_Image.cpp

@@ -80,7 +80,7 @@ namespace image
 
 		luax_register_gc(L, "love.image", instance);
 
-		return luax_register_module(L, wrap_Image_functions, wrap_Image_types);
+		return luax_register_module(L, wrap_Image_functions, wrap_Image_types, "image");
 	}
 
 } // image

+ 1 - 1
src/modules/joystick/sdl/wrap_Joystick.cpp

@@ -162,7 +162,7 @@ namespace sdl
 
 		luax_register_gc(L, "love.joystick", instance);
 
-		return luax_register_module(L, wrap_Joystick_functions, 0);
+		return luax_register_module(L, wrap_Joystick_functions, 0, "joystick");
 	}
 
 } // sdl

+ 1 - 1
src/modules/keyboard/sdl/wrap_Keyboard.cpp

@@ -80,7 +80,7 @@ namespace sdl
 
 		luax_register_gc(L, "love.keyboard", instance);
 
-		return luax_register_module(L, wrap_Keyboard_functions, 0);
+		return luax_register_module(L, wrap_Keyboard_functions, 0, "keyboard");
 	}
 
 } // sdl

+ 1 - 1
src/modules/mouse/sdl/wrap_Mouse.cpp

@@ -120,7 +120,7 @@ namespace sdl
 
 		luax_register_gc(L, "love.mouse", instance);
 
-		return luax_register_module(L, wrap_Mouse_functions, 0);
+		return luax_register_module(L, wrap_Mouse_functions, 0, "mouse");
 	}
 
 

+ 1 - 1
src/modules/native/tcc/wrap_Native.cpp

@@ -139,7 +139,7 @@ namespace tcc
 
 		luax_register_gc(L, "love.native", instance);
 
-		return luax_register_module(L, wrap_Native_functions, 0);
+		return luax_register_module(L, wrap_Native_functions, 0, "native");
 	}
 
 } // tcc

+ 1 - 1
src/modules/physics/box2d/wrap_Physics.cpp

@@ -250,7 +250,7 @@ namespace box2d
 			}
 		}
 
-		return luax_register_module(L, wrap_Physics_functions, wrap_Physics_types);
+		return luax_register_module(L, wrap_Physics_functions, wrap_Physics_types, "physics");
 	}
 
 } // box2d

+ 1 - 1
src/modules/sound/wrap_Sound.cpp

@@ -130,7 +130,7 @@ namespace sound
 
 		luax_register_gc(L, "love.sound", instance);
 
-		return luax_register_module(L, wrap_Sound_functions, wrap_Sound_types);
+		return luax_register_module(L, wrap_Sound_functions, wrap_Sound_types, "sound");
 	}
 
 } // sound

+ 1 - 1
src/modules/timer/sdl/wrap_Timer.cpp

@@ -86,7 +86,7 @@ namespace sdl
 
 		luax_register_gc(L, "love.timer", instance);
 
-		return luax_register_module(L, wrap_Timer_functions, 0);
+		return luax_register_module(L, wrap_Timer_functions, 0, "timer");
 	}
 
 } // sdl

+ 23 - 5
src/resources/resources.cpp

@@ -1,8 +1,28 @@
+/**
+* Copyright (c) 2006-2009 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
+**/
+
 #include "resources.h"
 
 namespace love
 {
-	static char Vera_ttf_data[65932] = {0,1,0,0,0,17,1,0,0,4,0,16,79,83,47,50,-76,95,-12,99,0,0,-21,112,0,0,0,86,80,67,76,
+	const char Vera_ttf_data[] = {0,1,0,0,0,17,1,0,0,4,0,16,79,83,47,50,-76,95,-12,99,0,0,-21,112,0,0,0,86,80,67,76,
 	84,-47,-118,94,-105,0,0,-21,-56,0,0,0,54,99,109,97,112,-92,-61,-24,-96,0,0,-79,108,0,0,3,88,99,
 	118,116,32,-1,-45,29,57,0,0,30,-4,0,0,1,-4,102,112,103,109,-25,-76,-15,-60,0,0,38,96,0,0,0,
 	-117,103,97,115,112,0,7,0,7,0,1,1,72,0,0,0,12,103,108,121,102,12,116,65,-49,0,0,38,-20,0,
@@ -2199,7 +2219,5 @@ namespace love
 	18,15,19,15,9,22,17,17,17,17,18,23,23,11,11,11,27,27,27,22,18,8,18,15,20,15,20,15,18,10,
 	9,18,14,14,14,14,14,14,11,14,14,0,0,0,0,0,2,0,8,0,2,-1,-1,0,3,0,1,0,0,0,
 	2,0,0,12,80,10,-20,95,15,60,-11,0,31,8,0,0,0,0,0,-70,-71,-16,-72,0,0,0,0,-70,-62,103,
-	-111,-2,-119,-2,29,10,76,7,109,0,0,0,8,0,1,0,0,0,0,0,0};
-	pFile Vera_ttf(new MemoryFile(Vera_ttf_data, 65932, "Vera.ttf"));
-
-}
+	-111,-2,-119,-2,29,10,76,7,109,0,0,0,8,0,1,0,0,0,0,0,};
+} // love

+ 25 - 5
src/resources/resources.h

@@ -1,12 +1,32 @@
+/**
+* Copyright (c) 2006-2009 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
+**/
+
 #ifndef LOVE_RESOURCES_H
 #define LOVE_RESOURCES_H
 
-#include <vector>
-#include <love/MemoryFile.h>
-
 namespace love
 {
-	extern pFile Vera_ttf;
+	// Vera_ttf
+	const int Vera_ttf_size = 65932;
+	extern const char Vera_ttf_data[];
+
 }
 
-#endif
+#endif // LOVE_RESOURCES_H 

+ 8 - 12
src/scripts/boot.lua

@@ -93,7 +93,7 @@ function love.boot()
 	print("boot")
 
 	-- This is absolutely needed. 
-	love.filesystem = require("love.filesystem")
+	require("love.filesystem")
 
 	-- Prints the arguments passes to the app.
 	if love.__args then
@@ -144,17 +144,13 @@ function love.init()
 		love.conf(c)
 	end
 	
-	if c.modules.event then love.event = require("love.event") end
-	if c.modules.keyboard then love.keyboard = require("love.keyboard") end
-	if c.modules.mouse then love.mouse = require("love.mouse") end
-	if c.modules.timer then love.timer = require("love.timer") end
-	if c.modules.joystick then love.joystick = require("love.joystick") end
-	if c.modules.image then love.image = require("love.image") end
-	if c.modules.graphics then love.graphics = require("love.graphics") end
-	if c.modules.audio then love.audio = require("love.audio") end
-	if c.modules.physics then love.physics = require("love.physics") end
-	if c.modules.sound then love.sound = require("love.sound") end
-	if c.modules.native then love.native = require("love.native") end
+	-- Gets desired modules.
+	for k,v in pairs(c.modules) do
+		if v then
+			require("love." .. k)
+		end
+	end
+	
 	
 	-- Setup screen here.
 	if c.screen and c.modules.graphics then 

+ 126 - 158
src/scripts/boot.lua.h

@@ -110,177 +110,145 @@ static const unsigned char B1[]={
 110, 32,108,111,118,101, 46, 98,111,111,116, 40, 41, 13, 10, 13, 10,  9,112,114,
 105,110,116, 40, 34, 98,111,111,116, 34, 41, 13, 10, 13, 10,  9, 45, 45, 32, 84,
 104,105,115, 32,105,115, 32, 97, 98,115,111,108,117,116,101,108,121, 32,110,101,
-101,100,101,100, 46, 32, 13, 10,  9,108,111,118,101, 46,102,105,108,101,115,121,
-115,116,101,109, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101,
- 46,102,105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10,  9, 45, 45,
- 32, 80,114,105,110,116,115, 32,116,104,101, 32, 97,114,103,117,109,101,110,116,
-115, 32,112, 97,115,115,101,115, 32,116,111, 32,116,104,101, 32, 97,112,112, 46,
- 13, 10,  9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,116,104,
-101,110, 13, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,
-114,115, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111, 13, 10,
-  9,  9,  9,112,114,105,110,116, 40,105, 44,118, 41, 13, 10,  9,  9,101,110,100,
- 13, 10,  9,101,110,100,  9, 13, 10,  9, 13, 10,  9, 45, 45, 32, 83,101,116,115,
- 32,116,104,101, 32,115,111,117,114, 99,101, 32,102,111,114, 32,116,104,101, 32,
-103, 97,109,101, 46, 13, 10,  9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,
-103,115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,114,103,
-115, 91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10,  9,  9,108,
-111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 83,111,
-117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,
-108,108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41, 41, 13,
- 10,  9,101,110,100, 13, 10,  9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110,
- 99,116,105,111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13,
- 10,  9, 45, 45, 32, 67,114,101, 97,116,101, 32,100,101,102, 97,117,108,116, 32,
- 99,111,110,102,105,103,117,114, 97,116,105,111,110, 32,115,101,116,116,105,110,
-103,115, 46, 13, 10,  9,108,111, 99, 97,108, 32, 99, 32, 61, 32,123, 13, 10,  9,
-  9,116,105,116,108,101, 32, 61, 32, 34, 85,110,116,105,116,108,101,100, 34, 44,
- 13, 10,  9,  9, 97,117,116,104,111,114, 32, 61, 32, 34, 85,110,110, 97,109,101,
-100, 34, 44, 13, 10,  9,  9,118,101,114,115,105,111,110, 32, 61, 32, 48, 44, 13,
- 10,  9,  9,115, 99,114,101,101,110, 32, 61, 32,123, 13, 10,  9,  9,  9,119,105,
-100,116,104, 32, 61, 32, 56, 48, 48, 44, 13, 10,  9,  9,  9,104,101,105,103,104,
-116, 32, 61, 32, 54, 48, 48, 44, 13, 10,  9,  9,  9,102,117,108,108,115, 99,114,
-101,101,110, 32, 61, 32,102, 97,108,115,101, 44, 13, 10,  9,  9,  9,118,115,121,
-110, 99, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,102,115, 97, 97, 32,
- 61, 32, 48, 44, 13, 10,  9,  9,125, 44, 32, 13, 10,  9,  9,109,111,100,117,108,
-101,115, 32, 61, 32,123, 13, 10,  9,  9,  9,101,118,101,110,116, 32, 61, 32,116,
-114,117,101, 44, 13, 10,  9,  9,  9,107,101,121, 98,111, 97,114,100, 32, 61, 32,
-116,114,117,101, 44, 13, 10,  9,  9,  9,109,111,117,115,101, 32, 61, 32,116,114,
-117,101, 44, 13, 10,  9,  9,  9,116,105,109,101,114, 32, 61, 32,116,114,117,101,
- 44, 13, 10,  9,  9,  9,106,111,121,115,116,105, 99,107, 32, 61, 32,116,114,117,
-101, 44, 13, 10,  9,  9,  9,105,109, 97,103,101, 32, 61, 32,116,114,117,101, 44,
- 13, 10,  9,  9,  9,103,114, 97,112,104,105, 99,115, 32, 61, 32,116,114,117,101,
- 44, 13, 10,  9,  9,  9, 97,117,100,105,111, 32, 61, 32,116,114,117,101, 44, 13,
- 10,  9,  9,  9,112,104,121,115,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13,
- 10,  9,  9,  9,115,111,117,110,100, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,
-  9,  9,110, 97,116,105,118,101, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,
-125, 44, 13, 10,  9,125, 13, 10, 13, 10,  9, 45, 45, 32, 73,102, 32, 99,111,110,
-102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108,111, 97,
-100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32,116,111,
- 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98,108,101,
- 46, 13, 10,  9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116,
-101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117, 97, 34,
- 41, 32,116,104,101,110, 13, 10,  9,  9,114,101,113,117,105,114,101, 40, 34, 99,
-111,110,102, 46,108,117, 97, 34, 41, 13, 10,  9,  9,108,111,118,101, 46, 99,111,
-110,102, 40, 99, 41, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,  9,105,102, 32,
- 99, 46,109,111,100,117,108,101,115, 46,101,118,101,110,116, 32,116,104,101,110,
- 32,108,111,118,101, 46,101,118,101,110,116, 32, 61, 32,114,101,113,117,105,114,
-101, 40, 34,108,111,118,101, 46,101,118,101,110,116, 34, 41, 32,101,110,100, 13,
- 10,  9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,107,101,121, 98,111,
- 97,114,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121, 98,111, 97,
-114,100, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,107,
-101,121, 98,111, 97,114,100, 34, 41, 32,101,110,100, 13, 10,  9,105,102, 32, 99,
- 46,109,111,100,117,108,101,115, 46,109,111,117,115,101, 32,116,104,101,110, 32,
-108,111,118,101, 46,109,111,117,115,101, 32, 61, 32,114,101,113,117,105,114,101,
- 40, 34,108,111,118,101, 46,109,111,117,115,101, 34, 41, 32,101,110,100, 13, 10,
-  9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,116,105,109,101,114, 32,
-116,104,101,110, 32,108,111,118,101, 46,116,105,109,101,114, 32, 61, 32,114,101,
-113,117,105,114,101, 40, 34,108,111,118,101, 46,116,105,109,101,114, 34, 41, 32,
-101,110,100, 13, 10,  9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,106,
-111,121,115,116,105, 99,107, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,
-121,115,116,105, 99,107, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,
-118,101, 46,106,111,121,115,116,105, 99,107, 34, 41, 32,101,110,100, 13, 10,  9,
-105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,105,109, 97,103,101, 32,116,
-104,101,110, 32,108,111,118,101, 46,105,109, 97,103,101, 32, 61, 32,114,101,113,
-117,105,114,101, 40, 34,108,111,118,101, 46,105,109, 97,103,101, 34, 41, 32,101,
-110,100, 13, 10,  9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,103,114,
- 97,112,104,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,103,114, 97,
-112,104,105, 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,
-101, 46,103,114, 97,112,104,105, 99,115, 34, 41, 32,101,110,100, 13, 10,  9,105,
-102, 32, 99, 46,109,111,100,117,108,101,115, 46, 97,117,100,105,111, 32,116,104,
-101,110, 32,108,111,118,101, 46, 97,117,100,105,111, 32, 61, 32,114,101,113,117,
-105,114,101, 40, 34,108,111,118,101, 46, 97,117,100,105,111, 34, 41, 32,101,110,
-100, 13, 10,  9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,112,104,121,
-115,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,112,104,121,115,105,
- 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,112,
-104,121,115,105, 99,115, 34, 41, 32,101,110,100, 13, 10,  9,105,102, 32, 99, 46,
-109,111,100,117,108,101,115, 46,115,111,117,110,100, 32,116,104,101,110, 32,108,
-111,118,101, 46,115,111,117,110,100, 32, 61, 32,114,101,113,117,105,114,101, 40,
- 34,108,111,118,101, 46,115,111,117,110,100, 34, 41, 32,101,110,100, 13, 10,  9,
-105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,110, 97,116,105,118,101, 32,
-116,104,101,110, 32,108,111,118,101, 46,110, 97,116,105,118,101, 32, 61, 32,114,
-101,113,117,105,114,101, 40, 34,108,111,118,101, 46,110, 97,116,105,118,101, 34,
- 41, 32,101,110,100, 13, 10,  9, 13, 10,  9, 45, 45, 32, 83,101,116,117,112, 32,
-115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10,  9,105,102, 32, 99, 46,
-115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109,111,100,117,108,101,115,
- 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110, 32, 13, 10,  9,  9,105,
-102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,104,101, 99,
-107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,119,105,100,116,104,
- 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,104,116, 44, 32, 99,
- 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,101,101,110, 41, 32,
-116,104,101,110, 13, 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105,
- 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,
-119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,
-104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,
-101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46,118,115,121,110, 99, 44,
- 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97, 41, 13, 10,  9,  9,101,
-110,100, 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,
-115,101,116, 67, 97,112,116,105,111,110, 40, 99, 46,116,105,116,108,101, 41, 13,
- 10,  9,101,110,100, 13, 10,  9, 13, 10,  9,105,102, 32,108,111,118,101, 46,102,
-105,108,101,115,121,115,116,101,109, 46,101,120,105,115,116,115, 40, 34,109, 97,
-105,110, 46,108,117, 97, 34, 41, 32,116,104,101,110, 32,114,101,113,117,105,114,
-101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,101,110,100, 13, 10,  9,
- 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,
-118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10,  9,105,102, 32,108,111,118,101,
- 46,108,111, 97,100, 32,116,104,101,110, 32,108,111,118,101, 46,108,111, 97,100,
- 40, 41, 32,101,110,100, 13, 10, 13, 10,  9, 45, 45, 32, 77, 97,105,110, 32,108,
-111,111,112, 32,116,105,109,101, 46, 13, 10,  9,119,104,105,108,101, 32,116,114,
-117,101, 32,100,111, 13, 10,  9,  9,108,111,118,101, 46,116,105,109,101,114, 46,
-115,116,101,112, 40, 41, 13, 10,  9,  9,105,102, 32,108,111,118,101, 46,117,112,
-100, 97,116,101, 32,116,104,101,110, 32,108,111,118,101, 46,117,112,100, 97,116,
-101, 40,108,111,118,101, 46,116,105,109,101,114, 46,103,101,116, 68,101,108,116,
- 97, 40, 41, 41, 32,101,110,100, 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,
-112,104,105, 99,115, 46, 99,108,101, 97,114, 40, 41, 13, 10,  9,  9,105,102, 32,
-108,111,118,101, 46,100,114, 97,119, 32,116,104,101,110, 32,108,111,118,101, 46,
-100,114, 97,119, 40, 41, 32,101,110,100, 13, 10, 13, 10,  9,  9, 45, 45, 32, 80,
-114,111, 99,101,115,115, 32,101,118,101,110,116,115, 46, 13, 10,  9,  9,102,111,
-114, 32,101, 44, 97, 44, 98, 44, 99, 32,105,110, 32,108,111,118,101, 46,101,118,
-101,110,116, 46,112,111,108,108, 40, 41, 32,100,111, 13, 10,  9,  9,  9,105,102,
- 32,101, 32, 61, 61, 32,108,111,118,101, 46,101,118,101,110,116, 95,113,117,105,
-116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,101,110,100, 13, 10,  9,
-  9,  9,108,111,118,101, 46,104, 97,110,100,108,101,114,115, 91,101, 93, 40, 97,
- 44, 98, 44, 99, 41, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 45, 45,
-108,111,118,101, 46,116,105,109,101,114, 46,115,108,101,101,112, 40, 49, 48, 41,
- 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,
-101,115,101,110,116, 40, 41, 13, 10, 13, 10,  9,101,110,100, 13, 10, 13, 10,101,
-110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+101,100,101,100, 46, 32, 13, 10,  9,114,101,113,117,105,114,101, 40, 34,108,111,
+118,101, 46,102,105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10,  9,
+ 45, 45, 32, 80,114,105,110,116,115, 32,116,104,101, 32, 97,114,103,117,109,101,
+110,116,115, 32,112, 97,115,115,101,115, 32,116,111, 32,116,104,101, 32, 97,112,
+112, 46, 13, 10,  9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,
+116,104,101,110, 13, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,112,
+ 97,105,114,115, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111,
+ 13, 10,  9,  9,  9,112,114,105,110,116, 40,105, 44,118, 41, 13, 10,  9,  9,101,
+110,100, 13, 10,  9,101,110,100,  9, 13, 10,  9, 13, 10,  9, 45, 45, 32, 83,101,
+116,115, 32,116,104,101, 32,115,111,117,114, 99,101, 32,102,111,114, 32,116,104,
+101, 32,103, 97,109,101, 46, 13, 10,  9,105,102, 32,108,111,118,101, 46, 95, 95,
+ 97,114,103,115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,
+114,103,115, 91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10,  9,
+  9,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116,
+ 83,111,117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,
+102,117,108,108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41,
+ 41, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,101,110,100, 13, 10, 13, 10,102,
+117,110, 99,116,105,111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13,
+ 10, 13, 10,  9, 45, 45, 32, 67,114,101, 97,116,101, 32,100,101,102, 97,117,108,
+116, 32, 99,111,110,102,105,103,117,114, 97,116,105,111,110, 32,115,101,116,116,
+105,110,103,115, 46, 13, 10,  9,108,111, 99, 97,108, 32, 99, 32, 61, 32,123, 13,
+ 10,  9,  9,116,105,116,108,101, 32, 61, 32, 34, 85,110,116,105,116,108,101,100,
+ 34, 44, 13, 10,  9,  9, 97,117,116,104,111,114, 32, 61, 32, 34, 85,110,110, 97,
+109,101,100, 34, 44, 13, 10,  9,  9,118,101,114,115,105,111,110, 32, 61, 32, 48,
+ 44, 13, 10,  9,  9,115, 99,114,101,101,110, 32, 61, 32,123, 13, 10,  9,  9,  9,
+119,105,100,116,104, 32, 61, 32, 56, 48, 48, 44, 13, 10,  9,  9,  9,104,101,105,
+103,104,116, 32, 61, 32, 54, 48, 48, 44, 13, 10,  9,  9,  9,102,117,108,108,115,
+ 99,114,101,101,110, 32, 61, 32,102, 97,108,115,101, 44, 13, 10,  9,  9,  9,118,
+115,121,110, 99, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,102,115, 97,
+ 97, 32, 61, 32, 48, 44, 13, 10,  9,  9,125, 44, 32, 13, 10,  9,  9,109,111,100,
+117,108,101,115, 32, 61, 32,123, 13, 10,  9,  9,  9,101,118,101,110,116, 32, 61,
+ 32,116,114,117,101, 44, 13, 10,  9,  9,  9,107,101,121, 98,111, 97,114,100, 32,
+ 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,109,111,117,115,101, 32, 61, 32,
+116,114,117,101, 44, 13, 10,  9,  9,  9,116,105,109,101,114, 32, 61, 32,116,114,
+117,101, 44, 13, 10,  9,  9,  9,106,111,121,115,116,105, 99,107, 32, 61, 32,116,
+114,117,101, 44, 13, 10,  9,  9,  9,105,109, 97,103,101, 32, 61, 32,116,114,117,
+101, 44, 13, 10,  9,  9,  9,103,114, 97,112,104,105, 99,115, 32, 61, 32,116,114,
+117,101, 44, 13, 10,  9,  9,  9, 97,117,100,105,111, 32, 61, 32,116,114,117,101,
+ 44, 13, 10,  9,  9,  9,112,104,121,115,105, 99,115, 32, 61, 32,116,114,117,101,
+ 44, 13, 10,  9,  9,  9,115,111,117,110,100, 32, 61, 32,116,114,117,101, 44, 13,
+ 10,  9,  9,  9,110, 97,116,105,118,101, 32, 61, 32,116,114,117,101, 44, 13, 10,
+  9,  9,125, 44, 13, 10,  9,125, 13, 10, 13, 10,  9, 45, 45, 32, 73,102, 32, 99,
+111,110,102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108,
+111, 97,100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32,
+116,111, 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98,
+108,101, 46, 13, 10,  9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121,
+115,116,101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117,
+ 97, 34, 41, 32,116,104,101,110, 13, 10,  9,  9,114,101,113,117,105,114,101, 40,
+ 34, 99,111,110,102, 46,108,117, 97, 34, 41, 13, 10,  9,  9,108,111,118,101, 46,
+ 99,111,110,102, 40, 99, 41, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,  9, 45,
+ 45, 32, 71,101,116,115, 32,100,101,115,105,114,101,100, 32,109,111,100,117,108,
+101,115, 46, 13, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,112, 97,105,
+114,115, 40, 99, 46,109,111,100,117,108,101,115, 41, 32,100,111, 13, 10,  9,  9,
+105,102, 32,118, 32,116,104,101,110, 13, 10,  9,  9,  9,114,101,113,117,105,114,
+101, 40, 34,108,111,118,101, 46, 34, 32, 46, 46, 32,107, 41, 13, 10,  9,  9,101,
+110,100, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,  9, 13, 10,  9, 45, 45, 32,
+ 83,101,116,117,112, 32,115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10,
+  9,105,102, 32, 99, 46,115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109,
+111,100,117,108,101,115, 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110,
+ 32, 13, 10,  9,  9,105,102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,
+115, 46, 99,104,101, 99,107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110,
+ 46,119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,
+103,104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,
+114,101,101,110, 41, 32,116,104,101,110, 13, 10,  9,  9,  9,108,111,118,101, 46,
+103,114, 97,112,104,105, 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115,
+ 99,114,101,101,110, 46,119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,
+110, 46,104,101,105,103,104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,
+117,108,108,115, 99,114,101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46,
+118,115,121,110, 99, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97,
+ 41, 13, 10,  9,  9,101,110,100, 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,
+112,104,105, 99,115, 46,115,101,116, 67, 97,112,116,105,111,110, 40, 99, 46,116,
+105,116,108,101, 41, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,  9,105,102, 32,
+108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,101,120,105,115,
+116,115, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,116,104,101,110, 32,
+114,101,113,117,105,114,101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,
+101,110,100, 13, 10,  9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,
+105,111,110, 32,108,111,118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10,  9,105,
+102, 32,108,111,118,101, 46,108,111, 97,100, 32,116,104,101,110, 32,108,111,118,
+101, 46,108,111, 97,100, 40, 41, 32,101,110,100, 13, 10, 13, 10,  9, 45, 45, 32,
+ 77, 97,105,110, 32,108,111,111,112, 32,116,105,109,101, 46, 13, 10,  9,119,104,
+105,108,101, 32,116,114,117,101, 32,100,111, 13, 10,  9,  9,108,111,118,101, 46,
+116,105,109,101,114, 46,115,116,101,112, 40, 41, 13, 10,  9,  9,105,102, 32,108,
+111,118,101, 46,117,112,100, 97,116,101, 32,116,104,101,110, 32,108,111,118,101,
+ 46,117,112,100, 97,116,101, 40,108,111,118,101, 46,116,105,109,101,114, 46,103,
+101,116, 68,101,108,116, 97, 40, 41, 41, 32,101,110,100, 13, 10,  9,  9,108,111,
+118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,108,101, 97,114, 40, 41, 13,
+ 10,  9,  9,105,102, 32,108,111,118,101, 46,100,114, 97,119, 32,116,104,101,110,
+ 32,108,111,118,101, 46,100,114, 97,119, 40, 41, 32,101,110,100, 13, 10, 13, 10,
+  9,  9, 45, 45, 32, 80,114,111, 99,101,115,115, 32,101,118,101,110,116,115, 46,
+ 13, 10,  9,  9,102,111,114, 32,101, 44, 97, 44, 98, 44, 99, 32,105,110, 32,108,
+111,118,101, 46,101,118,101,110,116, 46,112,111,108,108, 40, 41, 32,100,111, 13,
+ 10,  9,  9,  9,105,102, 32,101, 32, 61, 61, 32,108,111,118,101, 46,101,118,101,
+110,116, 95,113,117,105,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,
+101,110,100, 13, 10,  9,  9,  9,108,111,118,101, 46,104, 97,110,100,108,101,114,
+115, 91,101, 93, 40, 97, 44, 98, 44, 99, 41, 13, 10,  9,  9,101,110,100, 13, 10,
+ 13, 10,  9,  9, 45, 45,108,111,118,101, 46,116,105,109,101,114, 46,115,108,101,
+101,112, 40, 49, 48, 41, 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,112,104,
+105, 99,115, 46,112,114,101,115,101,110,116, 40, 41, 13, 10, 13, 10,  9,101,110,
+100, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97,117,108,116, 32,115, 99,
-114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97,
+117,108,116, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,
-111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,101,101,110, 40, 41, 13,
- 10, 13, 10,  9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,
-115, 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,
+116,105,111,110, 32,108,111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,
+101,101,110, 40, 41, 13, 10, 13, 10,  9, 45, 45, 32, 77, 97,105,110, 32,108,111,
+111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100,
+ 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45,
- 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45,
+ 45, 45, 45, 13, 10, 45, 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110,
+ 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,
-102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,114,114,111,114,115,
- 99,114,101,101,110, 40, 41, 13, 10,  9, 13, 10,  9, 45, 45, 32, 77, 97,105,110,
- 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,
-101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,
+101,114,114,111,114,115, 99,114,101,101,110, 40, 41, 13, 10,  9, 13, 10,  9, 45,
+ 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,
+101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, 32,114,111,111,116, 32,
-111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101,
+ 32,114,111,111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13,
+ 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,
-110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114,
- 40,109,115,103, 41, 13, 10,  9,112,114,105,110,116, 40, 34, 98,111,111,116, 34,
- 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, 97, 99,101, 98, 97,
- 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,114,101,115,117,108,116,
- 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46, 98,111,111,116, 44,
- 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,114,101,115,
-117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,105,110,
-105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,
+ 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,
+114,105,110,116,101,114, 40,109,115,103, 41, 13, 10,  9,112,114,105,110,116, 40,
+ 34, 98,111,111,116, 34, 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,
+114, 97, 99,101, 98, 97, 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,
 114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101,
- 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41,
- 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101, 46, 34, 41,
+ 46, 98,111,111,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114,
+ 41, 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,
+111,118,101, 46,105,110,105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,
+116,101,114, 41, 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,
+108, 40,108,111,118,101, 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,
+105,110,116,101,114, 41, 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,
+101, 46, 34, 41,
 };
 
  if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0);

+ 36 - 0
src/scripts/graphics.lua

@@ -0,0 +1,36 @@
+--[[
+Copyright (c) 2006-2009 LOVE Development Team
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+--]]
+
+love.graphics.print = function (...)
+	if not love.graphics.getFont() then 
+		love.graphics.setFont(love._vera, 12)
+	end
+	love.graphics.print1(...)
+	love.graphics.print = love.graphics.print1
+end
+
+love.graphics.printf = function (...)
+	if not love.graphics.getFont() then 
+		love.graphics.setFont(love._vera, 12)
+	end
+	love.graphics.printf1(...)
+	love.graphics.printf = love.graphics.printf1
+end
+

+ 79 - 0
src/scripts/graphics.lua.h

@@ -0,0 +1,79 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+  if (luaL_loadfile(L,"graphics.lua")==0) lua_call(L, 0, 0); 
+*/
+/* graphics.lua */
+static const unsigned char B1[]={
+ 45, 45, 91, 91, 13, 10, 67,111,112,121,114,105,103,104,116, 32, 40, 99, 41, 32,
+ 50, 48, 48, 54, 45, 50, 48, 48, 57, 32, 76, 79, 86, 69, 32, 68,101,118,101,108,
+111,112,109,101,110,116, 32, 84,101, 97,109, 13, 10, 13, 10, 84,104,105,115, 32,
+115,111,102,116,119, 97,114,101, 32,105,115, 32,112,114,111,118,105,100,101,100,
+ 32, 39, 97,115, 45,105,115, 39, 44, 32,119,105,116,104,111,117,116, 32, 97,110,
+121, 32,101,120,112,114,101,115,115, 32,111,114, 32,105,109,112,108,105,101,100,
+ 13, 10,119, 97,114,114, 97,110,116,121, 46, 32, 32, 73,110, 32,110,111, 32,101,
+118,101,110,116, 32,119,105,108,108, 32,116,104,101, 32, 97,117,116,104,111,114,
+115, 32, 98,101, 32,104,101,108,100, 32,108,105, 97, 98,108,101, 32,102,111,114,
+ 32, 97,110,121, 32,100, 97,109, 97,103,101,115, 13, 10, 97,114,105,115,105,110,
+103, 32,102,114,111,109, 32,116,104,101, 32,117,115,101, 32,111,102, 32,116,104,
+105,115, 32,115,111,102,116,119, 97,114,101, 46, 13, 10, 13, 10, 80,101,114,109,
+105,115,115,105,111,110, 32,105,115, 32,103,114, 97,110,116,101,100, 32,116,111,
+ 32, 97,110,121,111,110,101, 32,116,111, 32,117,115,101, 32,116,104,105,115, 32,
+115,111,102,116,119, 97,114,101, 32,102,111,114, 32, 97,110,121, 32,112,117,114,
+112,111,115,101, 44, 13, 10,105,110, 99,108,117,100,105,110,103, 32, 99,111,109,
+109,101,114, 99,105, 97,108, 32, 97,112,112,108,105, 99, 97,116,105,111,110,115,
+ 44, 32, 97,110,100, 32,116,111, 32, 97,108,116,101,114, 32,105,116, 32, 97,110,
+100, 32,114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 13, 10,102,
+114,101,101,108,121, 44, 32,115,117, 98,106,101, 99,116, 32,116,111, 32,116,104,
+101, 32,102,111,108,108,111,119,105,110,103, 32,114,101,115,116,114,105, 99,116,
+105,111,110,115, 58, 13, 10, 13, 10, 49, 46, 32, 84,104,101, 32,111,114,105,103,
+105,110, 32,111,102, 32,116,104,105,115, 32,115,111,102,116,119, 97,114,101, 32,
+109,117,115,116, 32,110,111,116, 32, 98,101, 32,109,105,115,114,101,112,114,101,
+115,101,110,116,101,100, 59, 32,121,111,117, 32,109,117,115,116, 32,110,111,116,
+ 13, 10, 32, 32, 32, 99,108, 97,105,109, 32,116,104, 97,116, 32,121,111,117, 32,
+119,114,111,116,101, 32,116,104,101, 32,111,114,105,103,105,110, 97,108, 32,115,
+111,102,116,119, 97,114,101, 46, 32, 73,102, 32,121,111,117, 32,117,115,101, 32,
+116,104,105,115, 32,115,111,102,116,119, 97,114,101, 13, 10, 32, 32, 32,105,110,
+ 32, 97, 32,112,114,111,100,117, 99,116, 44, 32, 97,110, 32, 97, 99,107,110,111,
+119,108,101,100,103,109,101,110,116, 32,105,110, 32,116,104,101, 32,112,114,111,
+100,117, 99,116, 32,100,111, 99,117,109,101,110,116, 97,116,105,111,110, 32,119,
+111,117,108,100, 32, 98,101, 13, 10, 32, 32, 32, 97,112,112,114,101, 99,105, 97,
+116,101,100, 32, 98,117,116, 32,105,115, 32,110,111,116, 32,114,101,113,117,105,
+114,101,100, 46, 13, 10, 50, 46, 32, 65,108,116,101,114,101,100, 32,115,111,117,
+114, 99,101, 32,118,101,114,115,105,111,110,115, 32,109,117,115,116, 32, 98,101,
+ 32,112,108, 97,105,110,108,121, 32,109, 97,114,107,101,100, 32, 97,115, 32,115,
+117, 99,104, 44, 32, 97,110,100, 32,109,117,115,116, 32,110,111,116, 32, 98,101,
+ 13, 10, 32, 32, 32,109,105,115,114,101,112,114,101,115,101,110,116,101,100, 32,
+ 97,115, 32, 98,101,105,110,103, 32,116,104,101, 32,111,114,105,103,105,110, 97,
+108, 32,115,111,102,116,119, 97,114,101, 46, 13, 10, 51, 46, 32, 84,104,105,115,
+ 32,110,111,116,105, 99,101, 32,109, 97,121, 32,110,111,116, 32, 98,101, 32,114,
+101,109,111,118,101,100, 32,111,114, 32, 97,108,116,101,114,101,100, 32,102,114,
+111,109, 32, 97,110,121, 32,115,111,117,114, 99,101, 32,100,105,115,116,114,105,
+ 98,117,116,105,111,110, 46, 13, 10, 45, 45, 93, 93, 13, 10, 13, 10,108,111,118,
+101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116, 32, 61, 32,102,
+117,110, 99,116,105,111,110, 32, 40, 46, 46, 46, 41, 13, 10,  9,105,102, 32,110,
+111,116, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,103,101,116,
+ 70,111,110,116, 40, 41, 32,116,104,101,110, 32, 13, 10,  9,  9,108,111,118,101,
+ 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 70,111,110,116, 40,108,111,
+118,101, 46, 95,118,101,114, 97, 44, 32, 49, 50, 41, 13, 10,  9,101,110,100, 13,
+ 10,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,
+116, 49, 40, 46, 46, 46, 41, 13, 10,  9,108,111,118,101, 46,103,114, 97,112,104,
+105, 99,115, 46,112,114,105,110,116, 32, 61, 32,108,111,118,101, 46,103,114, 97,
+112,104,105, 99,115, 46,112,114,105,110,116, 49, 13, 10,101,110,100, 13, 10, 13,
+ 10,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116,
+102, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 46, 46, 46, 41, 13, 10,
+  9,105,102, 32,110,111,116, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,
+115, 46,103,101,116, 70,111,110,116, 40, 41, 32,116,104,101,110, 32, 13, 10,  9,
+  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 70,111,
+110,116, 40,108,111,118,101, 46, 95,118,101,114, 97, 44, 32, 49, 50, 41, 13, 10,
+  9,101,110,100, 13, 10,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115,
+ 46,112,114,105,110,116,102, 49, 40, 46, 46, 46, 41, 13, 10,  9,108,111,118,101,
+ 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116,102, 32, 61, 32,108,
+111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116,102, 49,
+ 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,
+118,101, 46,103,114, 97,112,104,105, 99,115, 46,102,105,115,116, 40,100, 41, 13,
+ 10,  9,112,114,105,110,116, 40,100, 41, 13, 10,101,110,100,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"graphics.lua")==0) lua_call(L, 0, 0);
+}