1*8e3e3a7aSWarner Losh<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2*8e3e3a7aSWarner Losh<HTML> 3*8e3e3a7aSWarner Losh<HEAD> 4*8e3e3a7aSWarner Losh<TITLE>Lua 5.3 readme</TITLE> 5*8e3e3a7aSWarner Losh<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css"> 6*8e3e3a7aSWarner Losh<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1"> 7*8e3e3a7aSWarner Losh<STYLE TYPE="text/css"> 8*8e3e3a7aSWarner Loshblockquote, .display { 9*8e3e3a7aSWarner Losh border: solid #a0a0a0 2px ; 10*8e3e3a7aSWarner Losh border-radius: 8px ; 11*8e3e3a7aSWarner Losh padding: 1em ; 12*8e3e3a7aSWarner Losh margin: 0px ; 13*8e3e3a7aSWarner Losh} 14*8e3e3a7aSWarner Losh 15*8e3e3a7aSWarner Losh.display { 16*8e3e3a7aSWarner Losh word-spacing: 0.25em ; 17*8e3e3a7aSWarner Losh} 18*8e3e3a7aSWarner Losh 19*8e3e3a7aSWarner Loshdl.display dd { 20*8e3e3a7aSWarner Losh padding-bottom: 0.2em ; 21*8e3e3a7aSWarner Losh} 22*8e3e3a7aSWarner Losh 23*8e3e3a7aSWarner Loshtt, kbd, code { 24*8e3e3a7aSWarner Losh font-size: 12pt ; 25*8e3e3a7aSWarner Losh} 26*8e3e3a7aSWarner Losh</STYLE> 27*8e3e3a7aSWarner Losh</HEAD> 28*8e3e3a7aSWarner Losh 29*8e3e3a7aSWarner Losh<BODY> 30*8e3e3a7aSWarner Losh 31*8e3e3a7aSWarner Losh<H1> 32*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/"><IMG SRC="logo.gif" ALT="Lua"></A> 33*8e3e3a7aSWarner LoshWelcome to Lua 5.3 34*8e3e3a7aSWarner Losh</H1> 35*8e3e3a7aSWarner Losh 36*8e3e3a7aSWarner Losh<DIV CLASS="menubar"> 37*8e3e3a7aSWarner Losh<A HREF="#about">about</A> 38*8e3e3a7aSWarner Losh· 39*8e3e3a7aSWarner Losh<A HREF="#install">installation</A> 40*8e3e3a7aSWarner Losh· 41*8e3e3a7aSWarner Losh<A HREF="#changes">changes</A> 42*8e3e3a7aSWarner Losh· 43*8e3e3a7aSWarner Losh<A HREF="#license">license</A> 44*8e3e3a7aSWarner Losh· 45*8e3e3a7aSWarner Losh<A HREF="contents.html">reference manual</A> 46*8e3e3a7aSWarner Losh</DIV> 47*8e3e3a7aSWarner Losh 48*8e3e3a7aSWarner Losh<H2><A NAME="about">About Lua</A></H2> 49*8e3e3a7aSWarner Losh<P> 50*8e3e3a7aSWarner LoshLua is a powerful, fast, lightweight, embeddable scripting language 51*8e3e3a7aSWarner Loshdeveloped by a 52*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/authors.html">team</A> 53*8e3e3a7aSWarner Loshat 54*8e3e3a7aSWarner Losh<A HREF="http://www.puc-rio.br/">PUC-Rio</A>, 55*8e3e3a7aSWarner Loshthe Pontifical Catholic University of Rio de Janeiro in Brazil. 56*8e3e3a7aSWarner LoshLua is 57*8e3e3a7aSWarner Losh<A HREF="#license">free software</A> 58*8e3e3a7aSWarner Loshused in many products and projects around the world. 59*8e3e3a7aSWarner Losh 60*8e3e3a7aSWarner Losh<P> 61*8e3e3a7aSWarner LoshLua's 62*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/">official web site</A> 63*8e3e3a7aSWarner Loshprovides complete information 64*8e3e3a7aSWarner Loshabout Lua, 65*8e3e3a7aSWarner Loshincluding 66*8e3e3a7aSWarner Loshan 67*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/about.html">executive summary</A> 68*8e3e3a7aSWarner Loshand 69*8e3e3a7aSWarner Loshupdated 70*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/docs.html">documentation</A>, 71*8e3e3a7aSWarner Loshespecially the 72*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/manual/5.3/">reference manual</A>, 73*8e3e3a7aSWarner Loshwhich may differ slightly from the 74*8e3e3a7aSWarner Losh<A HREF="contents.html">local copy</A> 75*8e3e3a7aSWarner Loshdistributed in this package. 76*8e3e3a7aSWarner Losh 77*8e3e3a7aSWarner Losh<H2><A NAME="install">Installing Lua</A></H2> 78*8e3e3a7aSWarner Losh<P> 79*8e3e3a7aSWarner LoshLua is distributed in 80*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/ftp/">source</A> 81*8e3e3a7aSWarner Loshform. 82*8e3e3a7aSWarner LoshYou need to build it before using it. 83*8e3e3a7aSWarner LoshBuilding Lua should be straightforward 84*8e3e3a7aSWarner Loshbecause 85*8e3e3a7aSWarner LoshLua is implemented in pure ANSI C and compiles unmodified in all known 86*8e3e3a7aSWarner Loshplatforms that have an ANSI C compiler. 87*8e3e3a7aSWarner LoshLua also compiles unmodified as C++. 88*8e3e3a7aSWarner LoshThe instructions given below for building Lua are for Unix-like platforms. 89*8e3e3a7aSWarner LoshSee also 90*8e3e3a7aSWarner Losh<A HREF="#other">instructions for other systems</A> 91*8e3e3a7aSWarner Loshand 92*8e3e3a7aSWarner Losh<A HREF="#customization">customization options</A>. 93*8e3e3a7aSWarner Losh 94*8e3e3a7aSWarner Losh<P> 95*8e3e3a7aSWarner LoshIf you don't have the time or the inclination to compile Lua yourself, 96*8e3e3a7aSWarner Loshget a binary from 97*8e3e3a7aSWarner Losh<A HREF="http://lua-users.org/wiki/LuaBinaries">LuaBinaries</A>. 98*8e3e3a7aSWarner LoshTry also 99*8e3e3a7aSWarner Losh<A HREF="http://luadist.org/">LuaDist</A>, 100*8e3e3a7aSWarner Losha multi-platform distribution of Lua that includes batteries. 101*8e3e3a7aSWarner Losh 102*8e3e3a7aSWarner Losh<H3>Building Lua</H3> 103*8e3e3a7aSWarner Losh<P> 104*8e3e3a7aSWarner LoshIn most Unix-like platforms, simply do "<KBD>make</KBD>" with a suitable target. 105*8e3e3a7aSWarner LoshHere are the details. 106*8e3e3a7aSWarner Losh 107*8e3e3a7aSWarner Losh<OL> 108*8e3e3a7aSWarner Losh<LI> 109*8e3e3a7aSWarner LoshOpen a terminal window and move to 110*8e3e3a7aSWarner Loshthe top-level directory, which is named <TT>lua-5.3.x</TT>. 111*8e3e3a7aSWarner LoshThe <TT>Makefile</TT> there controls both the build process and the installation process. 112*8e3e3a7aSWarner Losh<P> 113*8e3e3a7aSWarner Losh<LI> 114*8e3e3a7aSWarner Losh Do "<KBD>make</KBD>" and see if your platform is listed. 115*8e3e3a7aSWarner Losh The platforms currently supported are: 116*8e3e3a7aSWarner Losh<P> 117*8e3e3a7aSWarner Losh<P CLASS="display"> 118*8e3e3a7aSWarner Losh aix bsd c89 freebsd generic linux macosx mingw posix solaris 119*8e3e3a7aSWarner Losh</P> 120*8e3e3a7aSWarner Losh<P> 121*8e3e3a7aSWarner Losh If your platform is listed, just do "<KBD>make xxx</KBD>", where xxx 122*8e3e3a7aSWarner Losh is your platform name. 123*8e3e3a7aSWarner Losh<P> 124*8e3e3a7aSWarner Losh If your platform is not listed, try the closest one or posix, generic, 125*8e3e3a7aSWarner Losh c89, in this order. 126*8e3e3a7aSWarner Losh<P> 127*8e3e3a7aSWarner Losh<LI> 128*8e3e3a7aSWarner LoshThe compilation takes only a few moments 129*8e3e3a7aSWarner Loshand produces three files in the <TT>src</TT> directory: 130*8e3e3a7aSWarner Loshlua (the interpreter), 131*8e3e3a7aSWarner Loshluac (the compiler), 132*8e3e3a7aSWarner Loshand liblua.a (the library). 133*8e3e3a7aSWarner Losh<P> 134*8e3e3a7aSWarner Losh<LI> 135*8e3e3a7aSWarner Losh To check that Lua has been built correctly, do "<KBD>make test</KBD>" 136*8e3e3a7aSWarner Losh after building Lua. This will run the interpreter and print its version. 137*8e3e3a7aSWarner Losh</OL> 138*8e3e3a7aSWarner Losh<P> 139*8e3e3a7aSWarner LoshIf you're running Linux and get compilation errors, 140*8e3e3a7aSWarner Loshmake sure you have installed the <TT>readline</TT> development package 141*8e3e3a7aSWarner Losh(which is probably named <TT>libreadline-dev</TT> or <TT>readline-devel</TT>). 142*8e3e3a7aSWarner LoshIf you get link errors after that, 143*8e3e3a7aSWarner Loshthen try "<KBD>make linux MYLIBS=-ltermcap</KBD>". 144*8e3e3a7aSWarner Losh 145*8e3e3a7aSWarner Losh<H3>Installing Lua</H3> 146*8e3e3a7aSWarner Losh<P> 147*8e3e3a7aSWarner Losh Once you have built Lua, you may want to install it in an official 148*8e3e3a7aSWarner Losh place in your system. In this case, do "<KBD>make install</KBD>". The official 149*8e3e3a7aSWarner Losh place and the way to install files are defined in the <TT>Makefile</TT>. You'll 150*8e3e3a7aSWarner Losh probably need the right permissions to install files. 151*8e3e3a7aSWarner Losh 152*8e3e3a7aSWarner Losh<P> 153*8e3e3a7aSWarner Losh To build and install Lua in one step, do "<KBD>make xxx install</KBD>", 154*8e3e3a7aSWarner Losh where xxx is your platform name. 155*8e3e3a7aSWarner Losh 156*8e3e3a7aSWarner Losh<P> 157*8e3e3a7aSWarner Losh To install Lua locally, do "<KBD>make local</KBD>". 158*8e3e3a7aSWarner Losh This will create a directory <TT>install</TT> with subdirectories 159*8e3e3a7aSWarner Losh <TT>bin</TT>, <TT>include</TT>, <TT>lib</TT>, <TT>man</TT>, <TT>share</TT>, 160*8e3e3a7aSWarner Losh and install Lua as listed below. 161*8e3e3a7aSWarner Losh 162*8e3e3a7aSWarner Losh To install Lua locally, but in some other directory, do 163*8e3e3a7aSWarner Losh "<KBD>make install INSTALL_TOP=xxx</KBD>", where xxx is your chosen directory. 164*8e3e3a7aSWarner Losh The installation starts in the <TT>src</TT> and <TT>doc</TT> directories, 165*8e3e3a7aSWarner Losh so take care if <TT>INSTALL_TOP</TT> is not an absolute path. 166*8e3e3a7aSWarner Losh 167*8e3e3a7aSWarner Losh<DL CLASS="display"> 168*8e3e3a7aSWarner Losh<DT> 169*8e3e3a7aSWarner Losh bin: 170*8e3e3a7aSWarner Losh<DD> 171*8e3e3a7aSWarner Losh lua luac 172*8e3e3a7aSWarner Losh<DT> 173*8e3e3a7aSWarner Losh include: 174*8e3e3a7aSWarner Losh<DD> 175*8e3e3a7aSWarner Losh lua.h luaconf.h lualib.h lauxlib.h lua.hpp 176*8e3e3a7aSWarner Losh<DT> 177*8e3e3a7aSWarner Losh lib: 178*8e3e3a7aSWarner Losh<DD> 179*8e3e3a7aSWarner Losh liblua.a 180*8e3e3a7aSWarner Losh<DT> 181*8e3e3a7aSWarner Losh man/man1: 182*8e3e3a7aSWarner Losh<DD> 183*8e3e3a7aSWarner Losh lua.1 luac.1 184*8e3e3a7aSWarner Losh</DL> 185*8e3e3a7aSWarner Losh 186*8e3e3a7aSWarner Losh<P> 187*8e3e3a7aSWarner Losh These are the only directories you need for development. 188*8e3e3a7aSWarner Losh If you only want to run Lua programs, 189*8e3e3a7aSWarner Losh you only need the files in <TT>bin</TT> and <TT>man</TT>. 190*8e3e3a7aSWarner Losh The files in <TT>include</TT> and <TT>lib</TT> are needed for 191*8e3e3a7aSWarner Losh embedding Lua in C or C++ programs. 192*8e3e3a7aSWarner Losh 193*8e3e3a7aSWarner Losh<H3><A NAME="customization">Customization</A></H3> 194*8e3e3a7aSWarner Losh<P> 195*8e3e3a7aSWarner Losh Three kinds of things can be customized by editing a file: 196*8e3e3a7aSWarner Losh<UL> 197*8e3e3a7aSWarner Losh <LI> Where and how to install Lua — edit <TT>Makefile</TT>. 198*8e3e3a7aSWarner Losh <LI> How to build Lua — edit <TT>src/Makefile</TT>. 199*8e3e3a7aSWarner Losh <LI> Lua features — edit <TT>src/luaconf.h</TT>. 200*8e3e3a7aSWarner Losh</UL> 201*8e3e3a7aSWarner Losh 202*8e3e3a7aSWarner Losh<P> 203*8e3e3a7aSWarner Losh You don't actually need to edit the Makefiles because you may set the 204*8e3e3a7aSWarner Losh relevant variables in the command line when invoking make. 205*8e3e3a7aSWarner Losh Nevertheless, it's probably best to edit and save the Makefiles to 206*8e3e3a7aSWarner Losh record the changes you've made. 207*8e3e3a7aSWarner Losh 208*8e3e3a7aSWarner Losh<P> 209*8e3e3a7aSWarner Losh On the other hand, if you need to customize some Lua features, you'll need 210*8e3e3a7aSWarner Losh to edit <TT>src/luaconf.h</TT> before building and installing Lua. 211*8e3e3a7aSWarner Losh The edited file will be the one installed, and 212*8e3e3a7aSWarner Losh it will be used by any Lua clients that you build, to ensure consistency. 213*8e3e3a7aSWarner Losh Further customization is available to experts by editing the Lua sources. 214*8e3e3a7aSWarner Losh 215*8e3e3a7aSWarner Losh<H3><A NAME="other">Building Lua on other systems</A></H3> 216*8e3e3a7aSWarner Losh<P> 217*8e3e3a7aSWarner Losh If you're not using the usual Unix tools, then the instructions for 218*8e3e3a7aSWarner Losh building Lua depend on the compiler you use. You'll need to create 219*8e3e3a7aSWarner Losh projects (or whatever your compiler uses) for building the library, 220*8e3e3a7aSWarner Losh the interpreter, and the compiler, as follows: 221*8e3e3a7aSWarner Losh 222*8e3e3a7aSWarner Losh<DL CLASS="display"> 223*8e3e3a7aSWarner Losh<DT> 224*8e3e3a7aSWarner Loshlibrary: 225*8e3e3a7aSWarner Losh<DD> 226*8e3e3a7aSWarner Loshlapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c 227*8e3e3a7aSWarner Loshlmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c 228*8e3e3a7aSWarner Loshltm.c lundump.c lvm.c lzio.c 229*8e3e3a7aSWarner Loshlauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c 230*8e3e3a7aSWarner Loshlmathlib.c loslib.c lstrlib.c ltablib.c lutf8lib.c loadlib.c linit.c 231*8e3e3a7aSWarner Losh<DT> 232*8e3e3a7aSWarner Loshinterpreter: 233*8e3e3a7aSWarner Losh<DD> 234*8e3e3a7aSWarner Losh library, lua.c 235*8e3e3a7aSWarner Losh<DT> 236*8e3e3a7aSWarner Loshcompiler: 237*8e3e3a7aSWarner Losh<DD> 238*8e3e3a7aSWarner Losh library, luac.c 239*8e3e3a7aSWarner Losh</DL> 240*8e3e3a7aSWarner Losh 241*8e3e3a7aSWarner Losh<P> 242*8e3e3a7aSWarner Losh To use Lua as a library in your own programs you'll need to know how to 243*8e3e3a7aSWarner Losh create and use libraries with your compiler. Moreover, to dynamically load 244*8e3e3a7aSWarner Losh C libraries for Lua you'll need to know how to create dynamic libraries 245*8e3e3a7aSWarner Losh and you'll need to make sure that the Lua API functions are accessible to 246*8e3e3a7aSWarner Losh those dynamic libraries — but <EM>don't</EM> link the Lua library 247*8e3e3a7aSWarner Losh into each dynamic library. For Unix, we recommend that the Lua library 248*8e3e3a7aSWarner Losh be linked statically into the host program and its symbols exported for 249*8e3e3a7aSWarner Losh dynamic linking; <TT>src/Makefile</TT> does this for the Lua interpreter. 250*8e3e3a7aSWarner Losh For Windows, we recommend that the Lua library be a DLL. 251*8e3e3a7aSWarner Losh In all cases, the compiler luac should be linked statically. 252*8e3e3a7aSWarner Losh 253*8e3e3a7aSWarner Losh<P> 254*8e3e3a7aSWarner Losh As mentioned above, you may edit <TT>src/luaconf.h</TT> to customize 255*8e3e3a7aSWarner Losh some features before building Lua. 256*8e3e3a7aSWarner Losh 257*8e3e3a7aSWarner Losh<H2><A NAME="changes">Changes since Lua 5.2</A></H2> 258*8e3e3a7aSWarner Losh<P> 259*8e3e3a7aSWarner LoshHere are the main changes introduced in Lua 5.3. 260*8e3e3a7aSWarner LoshThe 261*8e3e3a7aSWarner Losh<A HREF="contents.html">reference manual</A> 262*8e3e3a7aSWarner Loshlists the 263*8e3e3a7aSWarner Losh<A HREF="manual.html#8">incompatibilities</A> that had to be introduced. 264*8e3e3a7aSWarner Losh 265*8e3e3a7aSWarner Losh<H3>Main changes</H3> 266*8e3e3a7aSWarner Losh<UL> 267*8e3e3a7aSWarner Losh<LI> integers (64-bit by default) 268*8e3e3a7aSWarner Losh<LI> official support for 32-bit numbers 269*8e3e3a7aSWarner Losh<LI> bitwise operators 270*8e3e3a7aSWarner Losh<LI> basic utf-8 support 271*8e3e3a7aSWarner Losh<LI> functions for packing and unpacking values 272*8e3e3a7aSWarner Losh 273*8e3e3a7aSWarner Losh</UL> 274*8e3e3a7aSWarner Losh 275*8e3e3a7aSWarner LoshHere are the other changes introduced in Lua 5.3: 276*8e3e3a7aSWarner Losh<H3>Language</H3> 277*8e3e3a7aSWarner Losh<UL> 278*8e3e3a7aSWarner Losh<LI> userdata can have any Lua value as uservalue 279*8e3e3a7aSWarner Losh<LI> floor division 280*8e3e3a7aSWarner Losh<LI> more flexible rules for some metamethods 281*8e3e3a7aSWarner Losh</UL> 282*8e3e3a7aSWarner Losh 283*8e3e3a7aSWarner Losh<H3>Libraries</H3> 284*8e3e3a7aSWarner Losh<UL> 285*8e3e3a7aSWarner Losh<LI> <CODE>ipairs</CODE> and the table library respect metamethods 286*8e3e3a7aSWarner Losh<LI> strip option in <CODE>string.dump</CODE> 287*8e3e3a7aSWarner Losh<LI> table library respects metamethods 288*8e3e3a7aSWarner Losh<LI> new function <CODE>table.move</CODE> 289*8e3e3a7aSWarner Losh<LI> new function <CODE>string.pack</CODE> 290*8e3e3a7aSWarner Losh<LI> new function <CODE>string.unpack</CODE> 291*8e3e3a7aSWarner Losh<LI> new function <CODE>string.packsize</CODE> 292*8e3e3a7aSWarner Losh</UL> 293*8e3e3a7aSWarner Losh 294*8e3e3a7aSWarner Losh<H3>C API</H3> 295*8e3e3a7aSWarner Losh<UL> 296*8e3e3a7aSWarner Losh<LI> simpler API for continuation functions in C 297*8e3e3a7aSWarner Losh<LI> <CODE>lua_gettable</CODE> and similar functions return type of resulted value 298*8e3e3a7aSWarner Losh<LI> strip option in <CODE>lua_dump</CODE> 299*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_geti</CODE> 300*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_seti</CODE> 301*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_isyieldable</CODE> 302*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_numbertointeger</CODE> 303*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_rotate</CODE> 304*8e3e3a7aSWarner Losh<LI> new function: <CODE>lua_stringtonumber</CODE> 305*8e3e3a7aSWarner Losh</UL> 306*8e3e3a7aSWarner Losh 307*8e3e3a7aSWarner Losh<H3>Lua standalone interpreter</H3> 308*8e3e3a7aSWarner Losh<UL> 309*8e3e3a7aSWarner Losh<LI> can be used as calculator; no need to prefix with '=' 310*8e3e3a7aSWarner Losh<LI> <CODE>arg</CODE> table available to all code 311*8e3e3a7aSWarner Losh</UL> 312*8e3e3a7aSWarner Losh 313*8e3e3a7aSWarner Losh<H2><A NAME="license">License</A></H2> 314*8e3e3a7aSWarner Losh<P> 315*8e3e3a7aSWarner Losh<A HREF="http://www.opensource.org/docs/definition.php"> 316*8e3e3a7aSWarner Losh<IMG SRC="osi-certified-72x60.png" ALIGN="right" ALT="[osi certified]" STYLE="padding-left: 30px ;"> 317*8e3e3a7aSWarner Losh</A> 318*8e3e3a7aSWarner LoshLua is free software distributed under the terms of the 319*8e3e3a7aSWarner Losh<A HREF="http://www.opensource.org/licenses/mit-license.html">MIT license</A> 320*8e3e3a7aSWarner Loshreproduced below; 321*8e3e3a7aSWarner Loshit may be used for any purpose, including commercial purposes, 322*8e3e3a7aSWarner Loshat absolutely no cost without having to ask us. 323*8e3e3a7aSWarner Losh 324*8e3e3a7aSWarner LoshThe only requirement is that if you do use Lua, 325*8e3e3a7aSWarner Loshthen you should give us credit by including the appropriate copyright notice somewhere in your product or its documentation. 326*8e3e3a7aSWarner Losh 327*8e3e3a7aSWarner LoshFor details, see 328*8e3e3a7aSWarner Losh<A HREF="http://www.lua.org/license.html">this</A>. 329*8e3e3a7aSWarner Losh 330*8e3e3a7aSWarner Losh<BLOCKQUOTE STYLE="padding-bottom: 0em"> 331*8e3e3a7aSWarner LoshCopyright © 1994–2017 Lua.org, PUC-Rio. 332*8e3e3a7aSWarner Losh 333*8e3e3a7aSWarner Losh<P> 334*8e3e3a7aSWarner LoshPermission is hereby granted, free of charge, to any person obtaining a copy 335*8e3e3a7aSWarner Loshof this software and associated documentation files (the "Software"), to deal 336*8e3e3a7aSWarner Loshin the Software without restriction, including without limitation the rights 337*8e3e3a7aSWarner Loshto use, copy, modify, merge, publish, distribute, sublicense, and/or sell 338*8e3e3a7aSWarner Loshcopies of the Software, and to permit persons to whom the Software is 339*8e3e3a7aSWarner Loshfurnished to do so, subject to the following conditions: 340*8e3e3a7aSWarner Losh 341*8e3e3a7aSWarner Losh<P> 342*8e3e3a7aSWarner LoshThe above copyright notice and this permission notice shall be included in 343*8e3e3a7aSWarner Loshall copies or substantial portions of the Software. 344*8e3e3a7aSWarner Losh 345*8e3e3a7aSWarner Losh<P> 346*8e3e3a7aSWarner LoshTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 347*8e3e3a7aSWarner LoshIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 348*8e3e3a7aSWarner LoshFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 349*8e3e3a7aSWarner LoshAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 350*8e3e3a7aSWarner LoshLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 351*8e3e3a7aSWarner LoshOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 352*8e3e3a7aSWarner LoshTHE SOFTWARE. 353*8e3e3a7aSWarner Losh</BLOCKQUOTE> 354*8e3e3a7aSWarner Losh<P> 355*8e3e3a7aSWarner Losh 356*8e3e3a7aSWarner Losh<P CLASS="footer"> 357*8e3e3a7aSWarner LoshLast update: 358*8e3e3a7aSWarner LoshThu Dec 22 18:22:57 BRST 2016 359*8e3e3a7aSWarner Losh</P> 360*8e3e3a7aSWarner Losh<!-- 361*8e3e3a7aSWarner LoshLast change: revised for Lua 5.3.4 362*8e3e3a7aSWarner Losh--> 363*8e3e3a7aSWarner Losh 364*8e3e3a7aSWarner Losh</BODY> 365*8e3e3a7aSWarner Losh</HTML> 366