[Groonga-commit] groonga/groonga at 55be3d0 [master] mrb: upgrade to the latest mruby

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Jun 8 23:33:55 JST 2014


Kouhei Sutou	2014-06-08 23:33:55 +0900 (Sun, 08 Jun 2014)

  New Revision: 55be3d01e3cbdfbb9818355e82e74e8a8153471e
  https://github.com/groonga/groonga/commit/55be3d01e3cbdfbb9818355e82e74e8a8153471e

  Message:
    mrb: upgrade to the latest mruby
    
    You need to get mruby source by `git submodule update --init`.

  Added files:
    .gitmodules
    vendor/mruby-source
    vendor/mruby/build_config.rb
    vendor/mruby/update.rb
  Removed files:
    lib/mrb/mrb_kernel.c
    lib/mrb/mrb_kernel.h
    lib/mrb/scripts/kernel.rb
    mruby_version
    vendor/mruby-eeac4be/.gitignore
    vendor/mruby-eeac4be/.travis.yml
    vendor/mruby-eeac4be/AUTHORS
    vendor/mruby-eeac4be/CONTRIBUTING.md
    vendor/mruby-eeac4be/ChangeLog
    vendor/mruby-eeac4be/INSTALL
    vendor/mruby-eeac4be/LEGAL
    vendor/mruby-eeac4be/MITL
    vendor/mruby-eeac4be/NEWS
    vendor/mruby-eeac4be/README.md
    vendor/mruby-eeac4be/Rakefile
    vendor/mruby-eeac4be/TODO
    vendor/mruby-eeac4be/benchmark/ao-render.rb
    vendor/mruby-eeac4be/benchmark/bm_so_lists.rb
    vendor/mruby-eeac4be/benchmark/fib39.rb
    vendor/mruby-eeac4be/build_config.rb
    vendor/mruby-eeac4be/doc/.gitkeep
    vendor/mruby-eeac4be/doc/compile/README.md
    vendor/mruby-eeac4be/doc/mrbgems/README.md
    vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/README.md
    vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake
    vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb
    vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/src/example.c
    vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/test/example.rb
    vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/README.md
    vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/mrbgem.rake
    vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/src/example.c
    vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.c
    vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.rb
    vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/README.md
    vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrbgem.rake
    vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrblib/example.rb
    vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/test/example.rb
    vendor/mruby-eeac4be/examples/targets/ArduinoDue.rb
    vendor/mruby-eeac4be/examples/targets/chipKitMax32.rb
    vendor/mruby-eeac4be/include/mrbconf.h
    vendor/mruby-eeac4be/include/mruby.h
    vendor/mruby-eeac4be/include/mruby/array.h
    vendor/mruby-eeac4be/include/mruby/class.h
    vendor/mruby-eeac4be/include/mruby/compile.h
    vendor/mruby-eeac4be/include/mruby/data.h
    vendor/mruby-eeac4be/include/mruby/debug.h
    vendor/mruby-eeac4be/include/mruby/dump.h
    vendor/mruby-eeac4be/include/mruby/gc.h
    vendor/mruby-eeac4be/include/mruby/hash.h
    vendor/mruby-eeac4be/include/mruby/irep.h
    vendor/mruby-eeac4be/include/mruby/khash.h
    vendor/mruby-eeac4be/include/mruby/numeric.h
    vendor/mruby-eeac4be/include/mruby/proc.h
    vendor/mruby-eeac4be/include/mruby/range.h
    vendor/mruby-eeac4be/include/mruby/string.h
    vendor/mruby-eeac4be/include/mruby/value.h
    vendor/mruby-eeac4be/include/mruby/variable.h
    vendor/mruby-eeac4be/minirake
    vendor/mruby-eeac4be/mrbgems/default.gembox
    vendor/mruby-eeac4be/mrbgems/full-core.gembox
    vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrblib/array.rb
    vendor/mruby-eeac4be/mrbgems/mruby-array-ext/src/array.c
    vendor/mruby-eeac4be/mrbgems/mruby-array-ext/test/array.rb
    vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
    vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
    vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrblib/enum.rb
    vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/test/enum.rb
    vendor/mruby-eeac4be/mrbgems/mruby-eval/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-eval/src/eval.c
    vendor/mruby-eeac4be/mrbgems/mruby-exit/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-exit/src/mruby-exit.c
    vendor/mruby-eeac4be/mrbgems/mruby-fiber/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-fiber/src/fiber.c
    vendor/mruby-eeac4be/mrbgems/mruby-fiber/test/fiber.rb
    vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrblib/hash.rb
    vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/src/hash-ext.c
    vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/test/hash.rb
    vendor/mruby-eeac4be/mrbgems/mruby-math/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-math/src/math.c
    vendor/mruby-eeac4be/mrbgems/mruby-math/test/math.rb
    vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/src/numeric_ext.c
    vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/test/numeric.rb
    vendor/mruby-eeac4be/mrbgems/mruby-object-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-object-ext/src/object.c
    vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/nil.rb
    vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/object.rb
    vendor/mruby-eeac4be/mrbgems/mruby-objectspace/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-objectspace/src/mruby_objectspace.c
    vendor/mruby-eeac4be/mrbgems/mruby-objectspace/test/objectspace.rb
    vendor/mruby-eeac4be/mrbgems/mruby-print/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-print/mrblib/print.rb
    vendor/mruby-eeac4be/mrbgems/mruby-print/src/print.c
    vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrblib/proc.rb
    vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/src/proc.c
    vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/test/proc.rb
    vendor/mruby-eeac4be/mrbgems/mruby-random/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.c
    vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.h
    vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.c
    vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.h
    vendor/mruby-eeac4be/mrbgems/mruby-random/test/random.rb
    vendor/mruby-eeac4be/mrbgems/mruby-range-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-range-ext/src/range.c
    vendor/mruby-eeac4be/mrbgems/mruby-range-ext/test/range.rb
    vendor/mruby-eeac4be/mrbgems/mruby-sprintf/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/kernel.c
    vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/sprintf.c
    vendor/mruby-eeac4be/mrbgems/mruby-sprintf/test/sprintf.rb
    vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrblib/string.rb
    vendor/mruby-eeac4be/mrbgems/mruby-string-ext/src/string.c
    vendor/mruby-eeac4be/mrbgems/mruby-string-ext/test/string.rb
    vendor/mruby-eeac4be/mrbgems/mruby-struct/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-struct/mrblib/struct.rb
    vendor/mruby-eeac4be/mrbgems/mruby-struct/src/struct.c
    vendor/mruby-eeac4be/mrbgems/mruby-struct/test/struct.rb
    vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrblib/symbol.rb
    vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/src/symbol.c
    vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/test/symbol.rb
    vendor/mruby-eeac4be/mrbgems/mruby-time/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-time/src/time.c
    vendor/mruby-eeac4be/mrbgems/mruby-time/test/time.rb
    vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrbgem.rake
    vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb
    vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/test/toplevel.rb
    vendor/mruby-eeac4be/mrblib/array.rb
    vendor/mruby-eeac4be/mrblib/class.rb
    vendor/mruby-eeac4be/mrblib/compar.rb
    vendor/mruby-eeac4be/mrblib/enum.rb
    vendor/mruby-eeac4be/mrblib/error.rb
    vendor/mruby-eeac4be/mrblib/hash.rb
    vendor/mruby-eeac4be/mrblib/init_mrblib.c
    vendor/mruby-eeac4be/mrblib/kernel.rb
    vendor/mruby-eeac4be/mrblib/mrblib.rake
    vendor/mruby-eeac4be/mrblib/numeric.rb
    vendor/mruby-eeac4be/mrblib/print.rb
    vendor/mruby-eeac4be/mrblib/range.rb
    vendor/mruby-eeac4be/mrblib/string.rb
    vendor/mruby-eeac4be/src/.dirstamp
    vendor/mruby-eeac4be/src/array.c
    vendor/mruby-eeac4be/src/backtrace.c
    vendor/mruby-eeac4be/src/class.c
    vendor/mruby-eeac4be/src/codegen.c
    vendor/mruby-eeac4be/src/compar.c
    vendor/mruby-eeac4be/src/crc.c
    vendor/mruby-eeac4be/src/debug.c
    vendor/mruby-eeac4be/src/dump.c
    vendor/mruby-eeac4be/src/enum.c
    vendor/mruby-eeac4be/src/error.c
    vendor/mruby-eeac4be/src/error.h
    vendor/mruby-eeac4be/src/etc.c
    vendor/mruby-eeac4be/src/ext/.gitkeep
    vendor/mruby-eeac4be/src/gc.c
    vendor/mruby-eeac4be/src/hash.c
    vendor/mruby-eeac4be/src/init.c
    vendor/mruby-eeac4be/src/kernel.c
    vendor/mruby-eeac4be/src/keywords
    vendor/mruby-eeac4be/src/lex.def
    vendor/mruby-eeac4be/src/load.c
    vendor/mruby-eeac4be/src/mrblib.c
    vendor/mruby-eeac4be/src/mruby_core.rake
    vendor/mruby-eeac4be/src/node.h
    vendor/mruby-eeac4be/src/numeric.c
    vendor/mruby-eeac4be/src/object.c
    vendor/mruby-eeac4be/src/opcode.h
    vendor/mruby-eeac4be/src/parse.c
    vendor/mruby-eeac4be/src/parse.y
    vendor/mruby-eeac4be/src/pool.c
    vendor/mruby-eeac4be/src/print.c
    vendor/mruby-eeac4be/src/proc.c
    vendor/mruby-eeac4be/src/range.c
    vendor/mruby-eeac4be/src/re.h
    vendor/mruby-eeac4be/src/state.c
    vendor/mruby-eeac4be/src/string.c
    vendor/mruby-eeac4be/src/symbol.c
    vendor/mruby-eeac4be/src/value_array.h
    vendor/mruby-eeac4be/src/variable.c
    vendor/mruby-eeac4be/src/vm.c
    vendor/mruby-eeac4be/tasks/libmruby.rake
    vendor/mruby-eeac4be/tasks/mrbgem_spec.rake
    vendor/mruby-eeac4be/tasks/mrbgems.rake
    vendor/mruby-eeac4be/tasks/mrbgems_test.rake
    vendor/mruby-eeac4be/tasks/mruby_build.rake
    vendor/mruby-eeac4be/tasks/mruby_build_commands.rake
    vendor/mruby-eeac4be/tasks/mruby_build_gem.rake
    vendor/mruby-eeac4be/tasks/ruby_ext.rake
    vendor/mruby-eeac4be/tasks/toolchains/androideabi.rake
    vendor/mruby-eeac4be/tasks/toolchains/clang.rake
    vendor/mruby-eeac4be/tasks/toolchains/gcc.rake
    vendor/mruby-eeac4be/tasks/toolchains/vs2010.rake
    vendor/mruby-eeac4be/tasks/toolchains/vs2012.rake
    vendor/mruby-eeac4be/test/README.md
    vendor/mruby-eeac4be/test/assert.rb
    vendor/mruby-eeac4be/test/driver.c
    vendor/mruby-eeac4be/test/init_mrbtest.c
    vendor/mruby-eeac4be/test/mrbtest.rake
    vendor/mruby-eeac4be/test/report.rb
    vendor/mruby-eeac4be/test/t/argumenterror.rb
    vendor/mruby-eeac4be/test/t/array.rb
    vendor/mruby-eeac4be/test/t/basicobject.rb
    vendor/mruby-eeac4be/test/t/bs_block.rb
    vendor/mruby-eeac4be/test/t/bs_literal.rb
    vendor/mruby-eeac4be/test/t/class.rb
    vendor/mruby-eeac4be/test/t/comparable.rb
    vendor/mruby-eeac4be/test/t/enumerable.rb
    vendor/mruby-eeac4be/test/t/exception.rb
    vendor/mruby-eeac4be/test/t/false.rb
    vendor/mruby-eeac4be/test/t/float.rb
    vendor/mruby-eeac4be/test/t/gc.rb
    vendor/mruby-eeac4be/test/t/hash.rb
    vendor/mruby-eeac4be/test/t/indexerror.rb
    vendor/mruby-eeac4be/test/t/integer.rb
    vendor/mruby-eeac4be/test/t/kernel.rb
    vendor/mruby-eeac4be/test/t/literals.rb
    vendor/mruby-eeac4be/test/t/localjumperror.rb
    vendor/mruby-eeac4be/test/t/methods.rb
    vendor/mruby-eeac4be/test/t/module.rb
    vendor/mruby-eeac4be/test/t/nameerror.rb
    vendor/mruby-eeac4be/test/t/nil.rb
    vendor/mruby-eeac4be/test/t/nomethoderror.rb
    vendor/mruby-eeac4be/test/t/numeric.rb
    vendor/mruby-eeac4be/test/t/object.rb
    vendor/mruby-eeac4be/test/t/proc.rb
    vendor/mruby-eeac4be/test/t/range.rb
    vendor/mruby-eeac4be/test/t/rangeerror.rb
    vendor/mruby-eeac4be/test/t/regexperror.rb
    vendor/mruby-eeac4be/test/t/runtimeerror.rb
    vendor/mruby-eeac4be/test/t/standarderror.rb
    vendor/mruby-eeac4be/test/t/string.rb
    vendor/mruby-eeac4be/test/t/symbol.rb
    vendor/mruby-eeac4be/test/t/syntax.rb
    vendor/mruby-eeac4be/test/t/true.rb
    vendor/mruby-eeac4be/test/t/typeerror.rb
    vendor/mruby-eeac4be/tools/mrbc/mrbc.c
    vendor/mruby-eeac4be/tools/mrbc/mrbc.rake
    vendor/mruby-eeac4be/travis_config.rb
    vendor/mruby/update.sh
    vendor/mruby/update_files.sh
  Modified files:
    .gitignore
    CMakeLists.txt
    configure.ac
    lib/ctx_impl_mrb.c
    lib/mrb.c
    lib/mrb/mrb_expr.c
    lib/mrb/scripts/sources.am
    lib/mrb/sources.am
    tools/travis-before-script.sh
    vendor/mruby/Makefile.am
    vendor/mruby/sources.am

  Modified: .gitignore (+4 -0)
===================================================================
--- .gitignore    2014-06-08 19:01:14 +0900 (46736f7)
+++ .gitignore    2014-06-08 23:33:55 +0900 (1ad222c)
@@ -38,6 +38,10 @@
 /data/scripts/groonga-httpd-restart
 /vendor/nginx-*/objs
 /vendor/mruby/parse.c
+/vendor/mruby/mrblib.c
+/vendor/mruby/mrbgems_init.c
+/vendor/mruby/mruby-build.timestamp
+/vendor/mruby-build/
 /vendor/plugins/*/
 /groonga.spec
 /stamp-h1

  Added: .gitmodules (+3 -0) 100644
===================================================================
--- /dev/null
+++ .gitmodules    2014-06-08 23:33:55 +0900 (cdbf702)
@@ -0,0 +1,3 @@
+[submodule "vendor/mruby-source"]
+	path = vendor/mruby-source
+	url = https://github.com/mruby/mruby.git

  Modified: CMakeLists.txt (+1 -2)
===================================================================
--- CMakeLists.txt    2014-06-08 19:01:14 +0900 (6a6a479)
+++ CMakeLists.txt    2014-06-08 23:33:55 +0900 (b2dc96b)
@@ -442,7 +442,6 @@ else()
 endif()
 
 option(GRN_WITH_MRUBY "use mruby" OFF)
-file(READ "${CMAKE_CURRENT_SOURCE_DIR}/mruby_version" MRUBY_VERSION)
 if(GRN_WITH_MRUBY)
   if(CMAKE_VERSION VERSION_LESS "2.8.8")
     message(FATAL_ERROR
@@ -450,7 +449,7 @@ if(GRN_WITH_MRUBY)
       "CMake 2.8.8 or later is required for mruby supported build")
   endif()
   set(MRUBY_INCLUDE_DIRS
-    "${CMAKE_CURRENT_SOURCE_DIR}/vendor/mruby-${MRUBY_VERSION}/include")
+    "${CMAKE_CURRENT_SOURCE_DIR}/vendor/mruby-source/include")
   set(MRUBY_LIBS "$<TARGET_OBJECTS:mruby>")
 else()
   set(MRUBY_INCLUDE_DIRS "")

  Modified: configure.ac (+4 -5)
===================================================================
--- configure.ac    2014-06-08 19:01:14 +0900 (8735606)
+++ configure.ac    2014-06-08 23:33:55 +0900 (b02a057)
@@ -1342,13 +1342,12 @@ if test "x$enable_mruby" != "xyes"; then
 fi
 AC_MSG_RESULT($enable_mruby)
 
-m4_define([mruby_version], m4_include(mruby_version))
-MRUBY_VERSION=mruby_version
-AC_SUBST(MRUBY_VERSION)
-
 if test "$enable_mruby" = "yes"; then
+  if test "$ac_cv_ruby_available" != "yes"; then
+    AC_MSG_ERROR(--enable-ruby requires --with-ruby)
+  fi
   AC_DEFINE(GRN_WITH_MRUBY, [1], [Define to 1 if mruby is enabled.])
-  MRUBY_CFLAGS="-I\$(top_srcdir)/vendor/mruby-${MRUBY_VERSION}/include"
+  MRUBY_CFLAGS="-I\$(top_srcdir)/vendor/mruby-source/include"
   MRUBY_LIBS="\$(top_builddir)/vendor/mruby/libmruby.la"
 else
   MRUBY_CFLAGS=

  Modified: lib/ctx_impl_mrb.c (+0 -2)
===================================================================
--- lib/ctx_impl_mrb.c    2014-06-08 19:01:14 +0900 (e1445c3)
+++ lib/ctx_impl_mrb.c    2014-06-08 23:33:55 +0900 (ba7df47)
@@ -20,7 +20,6 @@
 #include "ctx_impl.h"
 
 #include "mrb.h"
-#include "mrb/mrb_kernel.h"
 #include "mrb/mrb_ctx.h"
 #include "mrb/mrb_bulk.h"
 #include "mrb/mrb_obj.h"
@@ -41,7 +40,6 @@ grn_ctx_impl_mrb_init_bindings(grn_ctx *ctx)
   mrb->ud = ctx;
   ctx->impl->mrb.module = mrb_define_module(mrb, "Groonga");
 
-  grn_mrb_kernel_init(ctx);
   grn_mrb_ctx_init(ctx);
   grn_mrb_bulk_init(ctx);
   grn_mrb_obj_init(ctx);

  Modified: lib/mrb.c (+10 -10)
===================================================================
--- lib/mrb.c    2014-06-08 19:01:14 +0900 (9d23f38)
+++ lib/mrb.c    2014-06-08 23:33:55 +0900 (11b4e1c)
@@ -110,7 +110,6 @@ grn_mrb_load(grn_ctx *ctx, const char *path)
 {
   grn_mrb_data *data = &(ctx->impl->mrb);
   mrb_state *mrb = data->state;
-  int n;
   FILE *file;
   mrb_value result;
   struct mrb_parser_state *parser;
@@ -131,10 +130,12 @@ grn_mrb_load(grn_ctx *ctx, const char *path)
   parser = mrb_parse_file(mrb, file, NULL);
   fclose(file);
 
-  n = mrb_generate_code(mrb, parser);
-  result = mrb_run(mrb,
-                   mrb_proc_new(mrb, mrb->irep[n]),
-                   mrb_top_self(mrb));
+  {
+    struct RProc *proc;
+    proc = mrb_generate_code(mrb, parser);
+    result = mrb_run(mrb, proc, mrb_top_self(mrb));
+    mrb_irep_decref(mrb, proc->body.irep);
+  }
   mrb_parser_free(parser);
 
   return result;
@@ -145,7 +146,6 @@ grn_mrb_eval(grn_ctx *ctx, const char *script, int script_length)
 {
   grn_mrb_data *data = &(ctx->impl->mrb);
   mrb_state *mrb = data->state;
-  int n;
   mrb_value result;
   struct mrb_parser_state *parser;
 
@@ -157,16 +157,16 @@ grn_mrb_eval(grn_ctx *ctx, const char *script, int script_length)
     script_length = strlen(script);
   }
   parser = mrb_parse_nstring(mrb, script, script_length, NULL);
-  n = mrb_generate_code(mrb, parser);
   {
+    struct RProc *proc;
     struct RClass *eval_context_class;
     mrb_value eval_context;
 
+    proc = mrb_generate_code(mrb, parser);
     eval_context_class = mrb_class_get_under(mrb, data->module, "EvalContext");
     eval_context = mrb_obj_new(mrb, eval_context_class, 0, NULL);
-    result = mrb_run(mrb,
-                     mrb_proc_new(mrb, mrb->irep[n]),
-                     eval_context);
+    result = mrb_run(mrb, proc, eval_context);
+    mrb_irep_decref(mrb, proc->body.irep);
   }
   mrb_parser_free(parser);
 

  Modified: lib/mrb/mrb_expr.c (+2 -4)
===================================================================
--- lib/mrb/mrb_expr.c    2014-06-08 19:01:14 +0900 (2f23c8d)
+++ lib/mrb/mrb_expr.c    2014-06-08 23:33:55 +0900 (b0d3f75)
@@ -49,8 +49,7 @@ mrb_grn_scan_info_new(mrb_state *mrb, scan_info *scan_info)
   mrb_value mrb_scan_info;
 
   mrb_scan_info = mrb_cptr_value(mrb, scan_info);
-  klass = mrb_class_ptr(mrb_const_get(mrb, mrb_obj_value(module),
-                                      mrb_intern(mrb, "ScanInfo")));
+  klass = mrb_class_get_under(mrb, module, "ScanInfo");
   return mrb_obj_new(mrb, klass, 1, &mrb_scan_info);
 }
 
@@ -63,8 +62,7 @@ mrb_grn_expr_code_new(mrb_state *mrb, grn_expr_code *code)
   mrb_value mrb_code;
 
   mrb_code = mrb_cptr_value(mrb, code);
-  klass = mrb_class_ptr(mrb_const_get(mrb, mrb_obj_value(module),
-                                      mrb_intern(mrb, "ExpressionCode")));
+  klass = mrb_class_get_under(mrb, module, "ExpressionCode");
   return mrb_obj_new(mrb, klass, 1, &mrb_code);
 }
 

  Deleted: lib/mrb/mrb_kernel.c (+0 -50) 100644
===================================================================
--- lib/mrb/mrb_kernel.c    2014-06-08 19:01:14 +0900 (b40c7f3)
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- c-basic-offset: 2 -*- */
-/*
-  Copyright(C) 2014 Brazil
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#include "../ctx_impl.h"
-
-#ifdef GRN_WITH_MRUBY
-#include <mruby.h>
-
-#include "../mrb.h"
-#include "mrb_kernel.h"
-
-static mrb_value
-kernel_print(mrb_state *mrb, mrb_value self)
-{
-  char *content;
-  int content_length;
-
-  mrb_get_args(mrb, "s", &content, &content_length);
-  printf("%.*s", content_length, content);
-
-  return mrb_nil_value();
-}
-
-void
-grn_mrb_kernel_init(grn_ctx *ctx)
-{
-  grn_mrb_data *data = &(ctx->impl->mrb);
-  mrb_state *mrb = data->state;
-
-  mrb_define_method(mrb, mrb->kernel_module,
-                    "print", kernel_print, MRB_ARGS_REQ(1));
-
-  grn_mrb_load(ctx, "kernel.rb");
-}
-#endif

  Deleted: lib/mrb/mrb_kernel.h (+0 -34) 100644
===================================================================
--- lib/mrb/mrb_kernel.h    2014-06-08 19:01:14 +0900 (268509d)
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- c-basic-offset: 2 -*- */
-/*
-  Copyright(C) 2014 Brazil
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#ifndef GRN_MRB_KERNEL_H
-#define GRN_MRB_KERNEL_H
-
-#include "../ctx.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void grn_mrb_kernel_init(grn_ctx *ctx);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GRN_MRB_KERNEL_H */

  Deleted: lib/mrb/scripts/kernel.rb (+0 -25) 100644
===================================================================
--- lib/mrb/scripts/kernel.rb    2014-06-08 19:01:14 +0900 (6626fdd)
+++ /dev/null
@@ -1,25 +0,0 @@
-module Kernel
-  def puts(*arguments)
-    arguments.each do |argument|
-      argument = argument.to_s unless argument.is_a?(String)
-      print(argument)
-      print("\n") unless argument[argument.size] == "\n"
-    end
-    nil
-  end
-
-  def p(*arguments)
-    return nil if arguments.empty?
-
-    if arguments.size == 1
-      argument = arguments.first
-      puts(argument.inspect)
-      argument
-    else
-      arguments.each do |argument|
-        puts(argument.inspect)
-      end
-      arguments
-    end
-  end
-end

  Modified: lib/mrb/scripts/sources.am (+0 -1)
===================================================================
--- lib/mrb/scripts/sources.am    2014-06-08 19:01:14 +0900 (6f0e559)
+++ lib/mrb/scripts/sources.am    2014-06-08 23:33:55 +0900 (b4f7717)
@@ -2,5 +2,4 @@ RUBY_SCRIPT_FILES =				\
 	eval_context.rb				\
 	expression.rb				\
 	index_info.rb				\
-	kernel.rb				\
 	scan_info.rb

  Modified: lib/mrb/sources.am (+0 -2)
===================================================================
--- lib/mrb/sources.am    2014-06-08 19:01:14 +0900 (96fc28b)
+++ lib/mrb/sources.am    2014-06-08 23:33:55 +0900 (9e4b1bd)
@@ -15,8 +15,6 @@ libgrnmrb_la_SOURCES =				\
 	mrb_fixed_size_column.h			\
 	mrb_index_column.c			\
 	mrb_index_column.h			\
-	mrb_kernel.c				\
-	mrb_kernel.h				\
 	mrb_obj.c				\
 	mrb_obj.h				\
 	mrb_procedure.c				\

  Deleted: mruby_version (+0 -1) 100644
===================================================================
--- mruby_version    2014-06-08 19:01:14 +0900 (464a232)
+++ /dev/null
@@ -1 +0,0 @@
-eeac4be
\ No newline at end of file

  Modified: tools/travis-before-script.sh (+3 -1)
===================================================================
--- tools/travis-before-script.sh    2014-06-08 19:01:14 +0900 (1284875)
+++ tools/travis-before-script.sh    2014-06-08 23:33:55 +0900 (943f41b)
@@ -2,6 +2,8 @@
 
 set -e
 
+git submodule update --init --depth 1
+
 case "${BUILD_TOOL}" in
     autotools)
 	./autogen.sh
@@ -11,7 +13,7 @@ case "${BUILD_TOOL}" in
 	    configure_args="${configure_args} --enable-debug"
 	#fi
 	if [ "$ENABLE_MRUBY" = "yes" ]; then
-	    configure_args="${configure_args} --enable-mruby"
+	    configure_args="${configure_args} --with-ruby --enable-mruby"
 	fi
 
 	./configure --with-ruby ${configure_args}

  Deleted: vendor/mruby-eeac4be/.gitignore (+0 -19) 100644
===================================================================
--- vendor/mruby-eeac4be/.gitignore    2014-06-08 19:01:14 +0900 (ae18ca8)
+++ /dev/null
@@ -1,19 +0,0 @@
-# /
-*.bak
-*.d
-*.o
-*.orig
-*.rej
-*.sav
-*.swp
-*.tmp
-*~
-.DS_Store
-.ccmalloc
-.svn
-/.git
-cscope.out
-/src/y.tab.c
-/bin
-/build
-/lib

  Deleted: vendor/mruby-eeac4be/.travis.yml (+0 -7) 100644
===================================================================
--- vendor/mruby-eeac4be/.travis.yml    2014-06-08 19:01:14 +0900 (b00a5db)
+++ /dev/null
@@ -1,7 +0,0 @@
-# no installation...
-
-install:
- - sudo apt-get -q install gperf
-
-env: MRUBY_CONFIG=travis_config.rb
-script: "./minirake all test"

  Deleted: vendor/mruby-eeac4be/AUTHORS (+0 -19) 100644
===================================================================
--- vendor/mruby-eeac4be/AUTHORS    2014-06-08 19:01:14 +0900 (85d117f)
+++ /dev/null
@@ -1,19 +0,0 @@
-Original Authors "mruby developers" are:
-   Yukihiro Matsumoto
-   FUKUOKA CSK CORPORATION
-   Kyushu Institute of Technology
-   Network Applied Communication Laboratory, Inc.
-   Daniel Bovensiepen
-   Jon Maken
-   Bjorn De Meyer
-   Yuichiro MASUI
-   Masamitsu MURASE
-   Masaki Muranaka
-   Internet Initiative Japan Inc.
-   Tadashi FUKUZAWA
-   MATSUMOTO Ryosuke
-   Yasuhiro Matsumoto
-   Koji Yoshioka
-   Jun Hiroe
-   Narihiro Nakamura
-   Yuichi Nishiwaki

  Deleted: vendor/mruby-eeac4be/CONTRIBUTING.md (+0 -65) 100644
===================================================================
--- vendor/mruby-eeac4be/CONTRIBUTING.md    2014-06-08 19:01:14 +0900 (b8db5a7)
+++ /dev/null
@@ -1,65 +0,0 @@
-# How to contribute
-
-mruby is an open-source project which is looking forward to each contribution.
-
-## Your Pull Request
-
-To make it easy to review and understand your change please keep the following
-things in mind before submitting your pull request:
-
-* Work on the latest possible state of **mruby/master**
-* Create a branch which is dedicated to your change
-* Test your changes before creating a pull request (```./minirake test```)
-* If possible write a test case which confirms your change
-* Don't mix several features or bug-fixes in one pull request
-* Create a meaningful commit message
-* Explain your change (i.e. with a link to the issue you are fixing)
-
-## Coding conventions
-
-How to style your C and Ruby code which you want to submit.
-
-### C code
-
-The core part (parser, bytecode-interpreter, core-lib, etc.) of mruby is
-written in the C programming language. Please note the following hints for your
-C code:
-
-#### Comply with C99 (ISO/IEC 9899:1999)
-
-mruby should be highly portable to other systems and compilers. For this it is
-recommended to keep your code as close as possible to the C99 standard
-(http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf).
-
-Although we target C99, Visual C++ is also an important target for mruby. For this
-reason a declaration of a local variable has to be at the beginning of a scope block.
-
-#### Reduce library dependencies to a minimum
-
-The dependencies to libraries should be kept to an absolute minimum. This
-increases the portability but makes it also easier to cut away parts of mruby
-on-demand.
-
-#### Don't use C++ style comments
-
-    /* This is the prefered comment style */
-
-Use C++ style comments only for temporary comment e.g. commenting out some code lines.
-
-#### Insert a break after the method return value:
-
-    int
-    main(void)
-    {
-      ...
-    }
-
-### Ruby code
-
-Parts of the standard library of mruby are written in the Ruby programming language
-itself. Please note the following hints for your Ruby code:
-
-#### Comply with the Ruby standard (ISO/IEC 30170:2012)
-
-mruby is currently targeting to execute Ruby code which complies to ISO/IEC
-30170:2012 (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

  Deleted: vendor/mruby-eeac4be/ChangeLog (+0 -15) 100644
===================================================================
--- vendor/mruby-eeac4be/ChangeLog    2014-06-08 19:01:14 +0900 (93a18f4)
+++ /dev/null
@@ -1,15 +0,0 @@
-Thu Apl 19 17:25:18 2012  Yukihiro Matsumoto  <matz �� ruby-lang.org>
-
-	* first release version 1.0.0 released.
-
-Local variables:
-add-log-time-format: (lambda ()
-  (let* ((time (current-time))
-	 (system-time-locale "C")
-	 (diff (+ (cadr time) 32400))
-	 (lo (% diff 65536))
-	 (hi (+ (car time) (/ diff 65536))))
-  (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
-indent-tabs-mode: t
-tab-width: 8
-end:

  Deleted: vendor/mruby-eeac4be/INSTALL (+0 -29) 100644
===================================================================
--- vendor/mruby-eeac4be/INSTALL    2014-06-08 19:01:14 +0900 (5bad4aa)
+++ /dev/null
@@ -1,29 +0,0 @@
-* Prerequisites
-  
-  1. Make sure you have bison (http://www.gnu.org/software/bison/) installed in your system. 
-  2. Make sure you have ruby installed in your system (required to build).
-
-* Compilation and Installation
-
-  1. Run make in the top directory.
-
-     This command will create the following directories and
-     store libraries and binaries files into them.
-
-       * bin
-       * lib
-       * include
-
-      You can directory invoke 'minirake' as the following.
-
-        $ ruby ./minirake
-
-If an error occurs when compiling mruby, it will be helpful for others if you
-send a detailed report to the developers that includes the error log, machine,
-and OS type.
-
-
-* Porting to other platforms
-
-
-That's all.

  Deleted: vendor/mruby-eeac4be/LEGAL (+0 -6) 100644
===================================================================
--- vendor/mruby-eeac4be/LEGAL    2014-06-08 19:01:14 +0900 (8492999)
+++ /dev/null
@@ -1,6 +0,0 @@
-LEGAL NOTICE INFORMATION
-------------------------
-
-All the files in this distribution are covered under the MIT license
-(see the file MITL) except some files mentioned below:
-

  Deleted: vendor/mruby-eeac4be/MITL (+0 -20) 100644
===================================================================
--- vendor/mruby-eeac4be/MITL    2014-06-08 19:01:14 +0900 (917a4e1)
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2013 mruby developers
-
-Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"), 
-to deal in the Software without restriction, including without limitation 
-the rights to use, copy, modify, merge, publish, distribute, sublicense, 
-and/or sell copies of the Software, and to permit persons to whom the 
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
-DEALINGS IN THE SOFTWARE.
-

  Deleted: vendor/mruby-eeac4be/NEWS (+0 -13) 100644
===================================================================
--- vendor/mruby-eeac4be/NEWS    2014-06-08 19:01:14 +0900 (5c25238)
+++ /dev/null
@@ -1,13 +0,0 @@
-* NEWS
-
-This document is a list of user visible feature changes made between
-releases except for bug fixes.
-
-Note that each entry is kept so brief that no reason behind or
-reference information is supplied with.  For a full list of changes
-with all sufficient information, see the ChangeLog file.
-
-
-** Information about first release v1.0.0
-
-

  Deleted: vendor/mruby-eeac4be/README.md (+0 -118) 100644
===================================================================
--- vendor/mruby-eeac4be/README.md    2014-06-08 19:01:14 +0900 (8422184)
+++ /dev/null
@@ -1,118 +0,0 @@
-# !!Notice!!
-    This is a preliminary release for internal team review.
-    The URLs and addresses described below are not available yet.
-    The official release will be announced later.
-    Any suggestions for modification are welcome.
-    Delays in replies are to be expected. Sorry in advance.
-
-[![Build Status](https://travis-ci.org/mruby/mruby.png?branch=master)](https://travis-ci.org/mruby/mruby)
-
-## What's mruby
-
-mruby is the lightweight implementation of the Ruby language complying to (part of)
-the [ISO standard](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579). 
-mruby can be linked and embedded within your application.  We provide the interpreter program "mruby" and 
-the interactive mruby shell "mirb" as examples.  You can also compile Ruby programs into compiled byte code
-using the mruby compiler "mrbc".  All those tools reside in "bin" directory.  The "mrbc" is also able to
-generate compiled byte code in a C source file.  You can check the "mrbtest" program under the "test" directory.
-
-This achievement was sponsored by the Regional Innovation Creation R&D Programs of
-the Ministry of Economy, Trade and Industry of Japan.
-
-
-## How to get mruby
-
-The mruby distribution files can be found in the following site:
-
-  https://github.com/mruby/mruby/zipball/master
-
-The trunk of the mruby source tree can be checked out with the
-following command:
-
-    $ git clone https://github.com/mruby/mruby.git
-
-There are some other branches under development. Try the following
-command and see the list of branches:
-
-    $ git branch -r
-
-
-## mruby home-page
-
-mruby's website is not launched yet but we are actively working on it.
-
-The URL of the mruby home-page will be:
-
-  http://www.mruby.org/
-
-
-## Mailing list
-
-To subscribe to the mruby mailing list....[T.B.D.]
-
-
-## How to compile and install
-
-See the INSTALL file.
-
-## Running Tests
-
-To run the tests, execute the following from the project's root directory.
-
-    $ make test
-
-Or
-
-    $ ruby ./minirake test
-
-## Customization
-
-mruby contains a package manager called *mrbgems*. To create extensions
-in C and/or Ruby you should create a *GEM*. You will find a complete
-documentation with examples under *examples/mrbgems*.
-
-## License
-
-Copyright (c) 2013 mruby developers
-
-Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"), 
-to deal in the Software without restriction, including without limitation 
-the rights to use, copy, modify, merge, publish, distribute, sublicense, 
-and/or sell copies of the Software, and to permit persons to whom the 
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
-DEALINGS IN THE SOFTWARE.
-
-## Note for License
-
-mruby has chosen a MIT License due to its permissive license allowing
-developers to target various environments such as embedded systems.
-However, the license requires the display of the copyright notice and license
-information in manuals for instance. Doing so for big projects can be 
-complicated or troublesome.
-This is why mruby has decided to display "mruby developers" as the copyright name
-to make it simple conventionally.
-In the future, mruby might ask you to distribute your new code
-(that you will commit,) under the MIT License as a member of
-"mruby developers" but contributors will keep their copyright.
-(We did not intend for contributors to transfer or waive their copyrights,
- Actual copyright holder name (contributors) will be listed in the AUTHORS file.)
-
-Please ask us if you want to distribute your code under another license.
-
-## How to Contribute
-
-See the [contribution guidelines](https://github.com/mruby/mruby/blob/master/CONTRIBUTING.md)
-then send a pull request to <http://github.com/mruby/mruby>.  We consider you have granted
-non-exclusive right to your contributed code under MIT license.  If you want to be named
-as one of mruby developers, please include an update to the AUTHORS file in your pull request.

  Deleted: vendor/mruby-eeac4be/Rakefile (+0 -114) 100644
===================================================================
--- vendor/mruby-eeac4be/Rakefile    2014-06-08 19:01:14 +0900 (c230a5f)
+++ /dev/null
@@ -1,114 +0,0 @@
-# encoding: utf-8
-# Build description.
-# basic build file for mruby
-MRUBY_ROOT = File.dirname(File.expand_path(__FILE__))
-MRUBY_BUILD_HOST_IS_CYGWIN = RUBY_PLATFORM.include?('cygwin')
-
-# load build systems
-load "#{MRUBY_ROOT}/tasks/ruby_ext.rake"
-load "#{MRUBY_ROOT}/tasks/mruby_build.rake"
-load "#{MRUBY_ROOT}/tasks/mrbgem_spec.rake"
-
-# load configuration file
-MRUBY_CONFIG = (ENV['MRUBY_CONFIG'] && ENV['MRUBY_CONFIG'] != '') ? ENV['MRUBY_CONFIG'] : "#{MRUBY_ROOT}/build_config.rb"
-load MRUBY_CONFIG
-
-# load basic rules
-MRuby.each_target do |build|
-  build.define_rules
-end
-
-# load custom rules
-load "#{MRUBY_ROOT}/src/mruby_core.rake"
-load "#{MRUBY_ROOT}/mrblib/mrblib.rake"
-load "#{MRUBY_ROOT}/tools/mrbc/mrbc.rake"
-
-load "#{MRUBY_ROOT}/tasks/mrbgems.rake"
-load "#{MRUBY_ROOT}/tasks/libmruby.rake"
-
-load "#{MRUBY_ROOT}/tasks/mrbgems_test.rake"
-load "#{MRUBY_ROOT}/test/mrbtest.rake"
-
-##############################
-# generic build targets, rules
-task :default => :all
-
-depfiles = MRuby.targets['host'].bins.map do |bin|
-  install_path = MRuby.targets['host'].exefile("#{MRUBY_ROOT}/bin/#{bin}")
-  source_path = MRuby.targets['host'].exefile("#{MRuby.targets['host'].build_dir}/bin/#{bin}")
-
-  file install_path => source_path do |t|
-    FileUtils.rm_f t.name, { :verbose => $verbose }
-    FileUtils.cp t.prerequisites.first, t.name, { :verbose => $verbose }
-  end
-
-  install_path
-end
-
-MRuby.each_target do |target|
-  gems.map do |gem|
-    current_dir = gem.dir.relative_path_from(Dir.pwd)
-    relative_from_root = gem.dir.relative_path_from(MRUBY_ROOT)
-    current_build_dir = "#{build_dir}/#{relative_from_root}"
-
-    gem.bins.each do |bin|
-      exec = exefile("#{build_dir}/bin/#{bin}")
-      objs = Dir.glob("#{current_dir}/tools/#{bin}/*.{c,cpp,cxx}").map { |f| objfile(f.pathmap("#{current_build_dir}/tools/#{bin}/%n")) }
-
-      file exec => objs + [libfile("#{build_dir}/lib/libmruby")] do |t|
-        gem_flags = gems.map { |g| g.linker.flags }
-        gem_flags_before_libraries = gems.map { |g| g.linker.flags_before_libraries }
-        gem_flags_after_libraries = gems.map { |g| g.linker.flags_after_libraries }
-        gem_libraries = gems.map { |g| g.linker.libraries }
-        gem_library_paths = gems.map { |g| g.linker.library_paths }
-        linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags, gem_flags_before_libraries
-      end
-
-      if target == MRuby.targets['host']
-        install_path = MRuby.targets['host'].exefile("#{MRUBY_ROOT}/bin/#{bin}")
-
-        file install_path => exec do |t|
-          FileUtils.rm_f t.name, { :verbose => $verbose }
-          FileUtils.cp t.prerequisites.first, t.name, { :verbose => $verbose }
-        end
-        depfiles += [ install_path ]
-      else
-        depfiles += [ exec ]
-      end
-    end
-  end
-end
-
-depfiles += MRuby.targets.map { |n, t|
-  [t.libfile("#{t.build_dir}/lib/libmruby")]
-}.flatten
-
-depfiles += MRuby.targets.reject { |n, t| n == 'host' }.map { |n, t|
-  t.bins.map { |bin| t.exefile("#{t.build_dir}/bin/#{bin}") }
-}.flatten
-
-desc "build all targets, install (locally) in-repo"
-task :all => depfiles do
-  puts
-  puts "Build summary:"
-  puts
-  MRuby.each_target do
-    print_build_summary
-  end
-end
-
-desc "run all mruby tests"
-task :test => MRuby.targets.values.map { |t| t.build_mrbtest_lib_only? ? t.libfile("#{t.build_dir}/test/mrbtest") : t.exefile("#{t.build_dir}/test/mrbtest") } do
-  MRuby.each_target do
-    run_test unless build_mrbtest_lib_only?
-  end
-end
-
-desc "clean all built and in-repo installed artifacts"
-task :clean do
-  MRuby.each_target do |t|
-    FileUtils.rm_rf t.build_dir, { :verbose => $verbose }
-  end
-  FileUtils.rm_f depfiles, { :verbose => $verbose }
-  puts "Cleaned up build folder"
-end

  Deleted: vendor/mruby-eeac4be/TODO (+0 -11) 100644
===================================================================
--- vendor/mruby-eeac4be/TODO    2014-06-08 19:01:14 +0900 (d3cb483)
+++ /dev/null
@@ -1,11 +0,0 @@
-Things to do (Things that are not done yet)
-
-* Special variables ($1,$2..)
-* super in aliased methods
-
-Things to improve (Done but things to fix)
-
-* Hash (Reduce size. Use khash or save the order)
-* stringEx (Delete encoding、delete CODERANGE、delete everything except UTF-8 or ASCII)
-* Make additions as they are noticed.
-

  Deleted: vendor/mruby-eeac4be/benchmark/ao-render.rb (+0 -315) 100644
===================================================================
--- vendor/mruby-eeac4be/benchmark/ao-render.rb    2014-06-08 19:01:14 +0900 (793804a)
+++ /dev/null
@@ -1,315 +0,0 @@
-# AO render benchmark
-# Original program (C) Syoyo Fujita in Javascript (and other languages)
-#      http://lucille.atso-net.jp/blog/?p=642
-#      http://lucille.atso-net.jp/blog/?p=711
-# Ruby(yarv2llvm) version by Hideki Miura
-# mruby version by Hideki Miura
-#
-
-IMAGE_WIDTH = 256
-IMAGE_HEIGHT = 256
-NSUBSAMPLES = 2
-NAO_SAMPLES = 8
-
-module Rand
-  # Use xorshift
-  @@x = 123456789
-  @@y = 362436069
-  @@z = 521288629
-  @@w = 88675123
-  BNUM = 1 << 29
-  BNUMF = BNUM.to_f
-  def self.rand
-    x = @@x
-    t = x ^ ((x & 0xfffff) << 11)
-    w = @@w
-    @@x, @@y, @@z = @@y, @@z, w
-    w = @@w = (w ^ (w >> 19) ^ (t ^ (t >> 8)))
-    (w % BNUM) / BNUMF
-  end
-end
-
-class Vec
-  def initialize(x, y, z)
-    @x = x
-    @y = y
-    @z = z
-  end
-
-  def x=(v); @x = v; end
-  def y=(v); @y = v; end
-  def z=(v); @z = v; end
-  def x; @x; end
-  def y; @y; end
-  def z; @z; end
-
-  def vadd(b)
-    Vec.new(@x + b.x, @y + b.y, @z + b.z)
-  end
-
-  def vsub(b)
-    Vec.new(@x - b.x, @y - b.y, @z - b.z)
-  end
-
-  def vcross(b)
-    Vec.new(@y * b.z - @z * b.y,
-            @z * b.x - @x * b.z,
-            @x * b.y - @y * b.x)
-  end
-
-  def vdot(b)
-    r = @x * b.x + @y * b.y + @z * b.z
-    r
-  end
-
-  def vlength
-    Math.sqrt(@x * @x + @y * @y + @z * @z)
-  end
-
-  def vnormalize
-    len = vlength
-    v = Vec.new(@x, @y, @z)
-    if len > 1.0e-17 then
-      v.x = v.x / len
-      v.y = v.y / len
-      v.z = v.z / len
-    end
-    v
-  end
-end
-
-
-class Sphere
-  def initialize(center, radius)
-    @center = center
-    @radius = radius
-  end
-
-  def center; @center; end
-  def radius; @radius; end
-
-  def intersect(ray, isect)
-    rs = ray.org.vsub(@center)
-    b = rs.vdot(ray.dir)
-    c = rs.vdot(rs) - (@radius * @radius)
-    d = b * b - c
-    if d > 0.0 then
-      t = - b - Math.sqrt(d)
-
-      if t > 0.0 and t < isect.t then
-        isect.t = t
-        isect.hit = true
-        isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
-                          ray.org.y + ray.dir.y * t,
-                          ray.org.z + ray.dir.z * t)
-        n = isect.pl.vsub(@center)
-        isect.n = n.vnormalize
-      end
-    end
-  end
-end
-
-class Plane
-  def initialize(p, n)
-    @p = p
-    @n = n
-  end
-
-  def intersect(ray, isect)
-    d = - �� p.vdot(@n)
-    v = ray.dir.vdot(@n)
-    v0 = v
-    if v < 0.0 then
-      v0 = -v
-    end
-    if v0 < 1.0e-17 then
-      return
-    end
-
-    t = -(ray.org.vdot(@n) + d) / v
-
-    if t > 0.0 and t < isect.t then
-      isect.hit = true
-      isect.t = t
-      isect.n = @n
-      isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
-                        ray.org.y + t * ray.dir.y,
-                        ray.org.z + t * ray.dir.z)
-    end
-  end
-end
-
-class Ray
-  def initialize(org, dir)
-    @org = org
-    @dir = dir
-  end
-
-  def org; @org; end
-  def org=(v); @org = v; end
-  def dir; @dir; end
-  def dir=(v); @dir = v; end
-end
-
-class Isect
-  def initialize
-    @t = 10000000.0
-    @hit = false
-    @pl = Vec.new(0.0, 0.0, 0.0)
-    @n = Vec.new(0.0, 0.0, 0.0)
-  end
-
-  def t; @t; end
-  def t=(v); @t = v; end
-  def hit; @hit; end
-  def hit=(v); @hit = v; end
-  def pl; @pl; end
-  def pl=(v); @pl = v; end
-  def n; @n; end
-  def n=(v); @n = v; end
-end
-
-def clamp(f)
-  i = f * 255.5
-  if i > 255.0 then
-    i = 255.0
-  end
-  if i < 0.0 then
-    i = 0.0
-  end
-  i.to_i
-end
-
-def otherBasis(basis, n)
-  basis[2] = Vec.new(n.x, n.y, n.z)
-  basis[1] = Vec.new(0.0, 0.0, 0.0)
-
-  if n.x < 0.6 and n.x > -0.6 then
-    basis[1].x = 1.0
-  elsif n.y < 0.6 and n.y > -0.6 then
-    basis[1].y = 1.0
-  elsif n.z < 0.6 and n.z > -0.6 then
-    basis[1].z = 1.0
-  else
-    basis[1].x = 1.0
-  end
-
-  basis[0] = basis[1].vcross(basis[2])
-  basis[0] = basis[0].vnormalize
-
-  basis[1] = basis[2].vcross(basis[0])
-  basis[1] = basis[1].vnormalize
-end
-
-class Scene
-  def initialize
-    @spheres = Array.new
-    @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
-    @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
-    @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
-    @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
-  end
-
-  def ambient_occlusion(isect)
-    basis = Array.new(3)
-    otherBasis(basis, isect.n)
-
-    ntheta    = NAO_SAMPLES
-    nphi      = NAO_SAMPLES
-    eps       = 0.0001
-    occlusion = 0.0
-
-    p0 = Vec.new(isect.pl.x + eps * isect.n.x,
-                isect.pl.y + eps * isect.n.y,
-                isect.pl.z + eps * isect.n.z)
-    nphi.times do |j|
-      ntheta.times do |i|
-        r = Rand::rand
-        phi = 2.0 * 3.14159265 * Rand::rand
-        x = Math.cos(phi) * Math.sqrt(1.0 - r)
-        y = Math.sin(phi) * Math.sqrt(1.0 - r)
-        z = Math.sqrt(r)
-
-        rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
-        ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
-        rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
-
-        raydir = Vec.new(rx, ry, rz)
-        ray = Ray.new(p0, raydir)
-
-        occisect = Isect.new
-        @spheres[0].intersect(ray, occisect)
-        @spheres[1].intersect(ray, occisect)
-        @spheres[2].intersect(ray, occisect)
-        @plane.intersect(ray, occisect)
-        if occisect.hit then
-          occlusion = occlusion + 1.0
-        else
-          0.0
-        end
-      end
-    end
-
-    occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
-    Vec.new(occlusion, occlusion, occlusion)
-  end
-
-  def render(w, h, nsubsamples)
-    cnt = 0
-    nsf = nsubsamples.to_f
-    h.times do |y|
-      w.times do |x|
-        rad = Vec.new(0.0, 0.0, 0.0)
-
-        # Subsmpling
-        nsubsamples.times do |v|
-          nsubsamples.times do |u|
-            cnt = cnt + 1
-            wf = w.to_f
-            hf = h.to_f
-            xf = x.to_f
-            yf = y.to_f
-            uf = u.to_f
-            vf = v.to_f
-
-            px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
-            py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
-
-            eye = Vec.new(px, py, -1.0).vnormalize
-
-            ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
-
-            isect = Isect.new
-            @spheres[0].intersect(ray, isect)
-            @spheres[1].intersect(ray, isect)
-            @spheres[2].intersect(ray, isect)
-            @plane.intersect(ray, isect)
-            if isect.hit then
-              col = ambient_occlusion(isect)
-              rad.x = rad.x + col.x
-              rad.y = rad.y + col.y
-              rad.z = rad.z + col.z
-            else
-              0.0
-            end
-          end
-        end
-
-        r = rad.x / (nsf * nsf)
-        g = rad.y / (nsf * nsf)
-        b = rad.z / (nsf * nsf)
-        printf("%c", clamp(r))
-        printf("%c", clamp(g))
-        printf("%c", clamp(b))
-      end
-    end
-  end
-end
-
-# File.open("ao.ppm", "w") do |fp|
-  printf("P6\n")
-  printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
-  printf("255\n", IMAGE_WIDTH, IMAGE_HEIGHT)
-  Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
-#  Scene.new.render(256, 256, 2)
-# end

  Deleted: vendor/mruby-eeac4be/benchmark/bm_so_lists.rb (+0 -47) 100644
===================================================================
--- vendor/mruby-eeac4be/benchmark/bm_so_lists.rb    2014-06-08 19:01:14 +0900 (f8d2679)
+++ /dev/null
@@ -1,47 +0,0 @@
-#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
-
-NUM = 300
-SIZE = 10000
-
-def test_lists()
-  # create a list of integers (Li1) from 1 to SIZE
-  li1 = (1..SIZE).to_a
-  # copy the list to li2 (not by individual items)
-  li2 = li1.dup
-  # remove each individual item from left side of li2 and
-  # append to right side of li3 (preserving order)
-  li3 = Array.new
-  while (not li2.empty?)
-    li3.push(li2.shift)
-  end
-  # li2 must now be empty
-  # remove each individual item from right side of li3 and
-  # append to right side of li2 (reversing list)
-  while (not li3.empty?)
-    li2.push(li3.pop)
-  end
-  # li3 must now be empty
-  # reverse li1 in place
-  li1.reverse!
-  # check that first item is now SIZE
-  if li1[0] != SIZE then
-    p "not SIZE"
-    0
-  else
-    # compare li1 and li2 for equality
-    if li1 != li2 then
-      return(0)
-    else
-      # return the length of the list
-      li1.length
-    end
-  end
-end
-
-i = 0
-while i<NUM
-  i+=1
-  result = test_lists()
-end
-
-result

  Deleted: vendor/mruby-eeac4be/benchmark/fib39.rb (+0 -8) 100755
===================================================================
--- vendor/mruby-eeac4be/benchmark/fib39.rb    2014-06-08 19:01:14 +0900 (d5565b7)
+++ /dev/null
@@ -1,8 +0,0 @@
-# Fib 39
-
-def fib n
-  return n if n < 2
-  fib(n-2) + fib(n-1)
-end
-
-puts fib(39)

  Deleted: vendor/mruby-eeac4be/build_config.rb (+0 -88) 100644
===================================================================
--- vendor/mruby-eeac4be/build_config.rb    2014-06-08 19:01:14 +0900 (fce4246)
+++ /dev/null
@@ -1,88 +0,0 @@
-MRuby::Build.new do |conf|
-  # load specific toolchain settings
-  toolchain :gcc
-
-  # Use mrbgems
-  # conf.gem 'examples/mrbgems/ruby_extension_example'
-  # conf.gem 'examples/mrbgems/c_extension_example' do |g|
-  #   g.cc.flags << '-g' # append cflags in this gem
-  # end
-  # conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
-  # conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master'
-  # conf.gem :git => 'git �� github.com:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v'
-
-  # include the default GEMs
-  conf.gembox 'default'
-
-  # C compiler settings
-  # conf.cc do |cc|
-  #   cc.command = ENV['CC'] || 'gcc'
-  #   cc.flags = [ENV['CFLAGS'] || %w()]
-  #   cc.include_paths = ["#{root}/include"]
-  #   cc.defines = %w(DISABLE_GEMS)
-  #   cc.option_include_path = '-I%s'
-  #   cc.option_define = '-D%s'
-  #   cc.compile_options = "%{flags} -MMD -o %{outfile} -c %{infile}"
-  # end
-
-  # mrbc settings
-  # conf.mrbc do |mrbc|
-  #   mrbc.compile_options = "-g -B%{funcname} -o-" # The -g option is required for line numbers
-  # end
-
-  # Linker settings
-  # conf.linker do |linker|
-  #   linker.command = ENV['LD'] || 'gcc'
-  #   linker.flags = [ENV['LDFLAGS'] || []]
-  #   linker.flags_before_libraries = []
-  #   linker.libraries = %w()
-  #   linker.flags_after_libraries = []
-  #   linker.library_paths = []
-  #   linker.option_library = '-l%s'
-  #   linker.option_library_path = '-L%s'
-  #   linker.link_options = "%{flags} -o %{outfile} %{objs} %{libs}"
-  # end
-
-  # Archiver settings
-  # conf.archiver do |archiver|
-  #   archiver.command = ENV['AR'] || 'ar'
-  #   archiver.archive_options = 'rs %{outfile} %{objs}'
-  # end
-
-  # Parser generator settings
-  # conf.yacc do |yacc|
-  #   yacc.command = ENV['YACC'] || 'bison'
-  #   yacc.compile_options = '-o %{outfile} %{infile}'
-  # end
-
-  # gperf settings
-  # conf.gperf do |gperf|
-  #   gperf.command = 'gperf'
-  #   gperf.compile_options = '-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" %{infile} > %{outfile}'
-  # end
-
-  # file extensions
-  # conf.exts do |exts|
-  #   exts.object = '.o'
-  #   exts.executable = '' # '.exe' if Windows
-  #   exts.library = '.a'
-  # end
-
-  # file separetor
-  # conf.file_separator = '/'
-end
-
-# Define cross build settings
-# MRuby::CrossBuild.new('32bit') do |conf|
-#   toolchain :gcc
-#
-#   conf.cc.flags << "-m32"
-#   conf.linker.flags << "-m32"
-#
-#   conf.build_mrbtest_lib_only
-#
-#   conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
-#
-#   conf.test_runner.command = 'env'
-#
-# end

  Deleted: vendor/mruby-eeac4be/doc/.gitkeep (+0 -0) 100644
===================================================================
--- vendor/mruby-eeac4be/doc/.gitkeep    2014-06-08 19:01:14 +0900 (e69de29)
+++ /dev/null

  Deleted: vendor/mruby-eeac4be/doc/compile/README.md (+0 -376) 100644
===================================================================
--- vendor/mruby-eeac4be/doc/compile/README.md    2014-06-08 19:01:14 +0900 (e7f382f)
+++ /dev/null
@@ -1,376 +0,0 @@
-# Compile
-
-mruby is using Rake to compile and cross-compile all libraries and
-binaries.
-
-## Prerequisites
-
-To compile mruby out of the source code you need the following tools:
-* C Compiler (i.e. ```gcc```)
-* Linker (i.e. ```gcc```)
-* Archive utility (i.e. ```ar```)
-* Parser generator (i.e. ```bison```)
-* Ruby 1.8 or 1.9 (i.e. ```ruby``` or ```jruby```)
-
-Optional:
-* GIT (to update mruby source and integrate mrbgems easier)
-* C++ compiler (to use GEMs which include *.cpp)
-* Assembler (to use GEMs which include *.asm)
-
-## Usage
-
-Inside of the root directory of the mruby source a file exists
-called *build_config.rb*. This file contains the build configuration
-of mruby and looks like this for example:
-
-	MRuby::Build.new do |conf|
-	  toolchain :gcc
-	end
-
-All tools necessary to compile mruby can be set or modified here. In case
-you want to maintain an additional *build_config.rb* you can define a
-customized path using the *$MRUBY_CONFIG* environment variable.
-
-To compile just call ```./minirake``` inside of the mruby source root. To
-generate and execute the test tools call ```./minirake test```. To clean
-all build files call ```./minirake clean```. To see full command line on 
-build, call ```./minirake -v```.
-
-## Build Configuration
-
-Inside of the *build_config.rb* the following options can be configured
-based on your environment.
-
-### Toolchains
-
-The mruby build system already contains a set of toolchain templates which
-configure the build environment for specific compiler infrastructures.
-
-#### GCC
-
-Toolchain configuration for the GNU C Compiler.
-
-	toolchain :gcc
-
-#### clang
-
-Toolchain configuration for the LLVM C Compiler clang. Mainly equal to the
-GCC toolchain.
-
-	toolchain :clang
-
-#### Visual Studio 2010
-
-Toolchain configuration for Visual Studio 2010 on Windows.
-
-	toolchain :vs2010
-
-#### Visual Studio 2012
-
-Toolchain configuration for Visual Studio 2012 on Windows.
-
-	toolchain :vs2012
-
-#### Android
-
-Toolchain configuration for Android.
-
-	toolchain :androideabi
-
-Requires the custom standalone Android NDK and the toolchain path
-in ```ANDROID_STANDALONE_TOOLCHAIN```.
-
-### Binaries
-
-It is possible to select which tools should be compiled during the compilation
-process. The following tools can be selected:
-* mruby (mruby interpreter)
-* mirb (mruby interactive shell)
-
-To select them declare conf.gem as follows:
-
-	conf.gem "#{root}/mrbgems/mruby-bin-mruby"
-
-	conf.gem "#{root}/mrbgems/mruby-bin-mirb"
-
-### File Separator
-
-Some environments require a different file separator character. It is possible to
-set the character via ```conf.file_separator```.
-
-	conf.file_separator = '/'
-
-### C Compiler
-
-Configuration of the C compiler binary, flags and include paths.
-
-	conf.cc do |cc|
-	  cc.command = ...
-	  cc.flags = ...
-	  cc.include_paths = ...
-	  cc.defines = ...
-	  cc.option_include_path = ...
-	  cc.option_define = ...
-	  cc.compile_options = ...
-	end
-
-### Linker
-
-Configuration of the Linker binary, flags and library paths.
-
-	conf.linker do |linker|
-	  linker.command = ...
-	  linker.flags = ...
-	  linker.flags_before_libraries = ...
-	  linker.libraries = ...
-	  linker.flags_after_libraries = ...
-	  linker.library_paths = ....
-	  linker.option_library = ...
-	  linker.option_library_path = ...
-	  linker.link_options = ...
-	end
-
-### Archiver
-
-Configuration of the Archiver binary and flags.
-
-	conf.archiver do |archiver|
-	  archiver.command = ...
-	  archiver.archive_options = ...
-	end
-
-### Parser Generator
-
-Configuration of the Parser Generator binary and flags.
-
-	conf.yacc do |yacc|
-	  yacc.command = ...
-	  yacc.compile_options = ...
-	end
-
-### GPerf
-
-Configuration of the GPerf binary and flags.
-
-	conf.gperf do |gperf|
-	  gperf.command = ...
-	  gperf.compile_options = ...
-	end
-
-### File Extensions
-
-	conf.exts do |exts
-	  exts.object = ...
-	  exts.executable = ...
-	  exts.library = ...
-	end
-
-### Mrbgems
-
-Integrate GEMs in the build process.
-
-	# Integrate GEM with additional configuration
-	conf.gem 'path/to/gem' do |g|
-	  g.cc.flags << ...
-	end
-
-	# Integrate GEM without additional configuration
-	conf.gem 'path/to/another/gem'
-
-
-See doc/mrbgems/README.md for more option about mrbgems.
-### Mrbtest
-
-Configuration Mrbtest build process.
-
-If you want mrbtest.a only, You should set ```conf.build_mrbtest_lib_only```
-
-	conf.build_mrbtest_lib_only
-
-
-## Cross-Compilation
-
-mruby can also be cross-compiled from one platform to another. To
-achieve this the *build_config.rb* needs to contain an instance of
-```MRuby::CrossBuild```. This instance defines the compilation
-tools and flags for the target platform. An example could look
-like this:
-
-	MRuby::CrossBuild.new('32bit') do |conf|
-	  toolchain :gcc
-
-	  conf.cc.flags << "-m32"
-	  conf.linker.flags << "-m32"
-	end
-
-All configuration options of ```MRuby::Build``` can also be used
-in ```MRuby::CrossBuild```.
-
-## Build process
-
-During the build process the directory *build* will be created in the
-root directory. The structure of this directory will look like this:
-
-	+- build
-	   |
-	   +-  host
-	       |
-	       +- bin          <- Binaries (mirb, mrbc and mruby)
-	       |
-	       +- lib          <- Libraries (libmruby.a and libmruby_core.a)
-	       |
-	       +- mrblib
-	       |
-	       +- src
-	       |
-	       +- test         <- mrbtest tool
-	       |
-	       +- tools
-	          |
-	          +- mirb
-	          |
-	          +- mrbc
-	          | 
-	          +- mruby
-
-The compilation workflow will look like this:
-* compile all files under *src* (object files will be stored 
-in *build/host/src*)
-* generate parser grammar out of *src/parse.y* (generated
-result will be stored in *build/host/src/y.tab.c*)
-* compile  *build/host/src/y.tab.c* to  *build/host/src/y.tab.o*
-* create *build/host/lib/libmruby_core.a* out of all object files (C only)
-* create ```build/host/bin/mrbc``` by compiling *tools/mrbc/mrbc.c* and
-linking with *build/host/lib/libmruby_core.a* 
-* create *build/host/mrblib/mrblib.c* by compiling all *.rb files
-under *mrblib* with ```build/host/bin/mrbc```
-* compile *build/host/mrblib/mrblib.c* to *build/host/mrblib/mrblib.o* 
-* create *build/host/lib/libmruby.a* out of all object files (C and Ruby)
-* create ```build/host/bin/mruby``` by compiling *mrbgems/mruby-bin-mruby/tools/mruby/mruby.c* and
-linking with *build/host/lib/libmruby.a*
-* create ```build/host/bin/mirb``` by compiling *mrbgems/mruby-bin-mirb/tools/mirb/mirb.c* and
-linking with *build/host/lib/libmruby.a*
-
-```
- _____    _____    ______    ____    ____    _____    _____    ____
-| CC  |->|GEN  |->|AR    |->|CC  |->|CC  |->|AR   |->|CC   |->|CC  |
-| *.c |  |y.tab|  |core.a|  |mrbc|  |*.rb|  |lib.a|  |mruby|  |mirb|
- -----    -----    ------    ----    ----    -----    -----    ----
-```
-
-### Cross-Compilation
-
-In case of a cross-compilation to *i386* the *build* directory structure looks
-like this:
-
-	+- build
-	   |
-	   +-  host
-	   |   |
-	   |   +- bin           <- Native Binaries
-	   |   |
-	   |   +- lib           <- Native Libraries
-	   |   |
-	   |   +- mrblib
-	   |   |
-	   |   +- src
-	   |   |
-	   |   +- test          <- Native mrbtest tool
-	   |   |
-	   |   +- tools
-	   |      |
-	   |      +- mirb
-	   |      |
-	   |      +- mrbc
-	   |      | 
-	   |      +- mruby 
-	   +- i386
-	      |
-	      +- bin            <- Cross-compiled Binaries
-	      |
-	      +- lib            <- Cross-compiled Libraries
-	      |
-	      +- mrblib
-	      |
-	      +- src
-	      |
-	      +- test           <- Cross-compiled mrbtest tool
-	      |
-	      +- tools
-	         |
-	         +- mirb
-	         |
-	         +- mrbc
-	         | 
-	         +- mruby
-
-An extra directory is created for the target platform. In case you
-compile for *i386* a directory called *i386* is created under the
-build direcotry.
-
-The cross compilation workflow starts in the same way as the normal
-compilation by compiling all *native* libraries and binaries.
-Afterwards the cross compilation process proceeds like this:
-* cross-compile all files under *src* (object files will be stored 
-in *build/i386/src*)
-* generate parser grammar out of *src/parse.y* (generated
-result will be stored in *build/i386/src/y.tab.c*)
-* cross-compile *build/i386/src/y.tab.c* to *build/i386/src/y.tab.o*
-* create *build/i386/mrblib/mrblib.c* by compiling all *.rb files
-under *mrblib* with the native ```build/host/bin/mrbc```
-* cross-compile *build/host/mrblib/mrblib.c* to *build/host/mrblib/mrblib.o*
-* create *build/i386/lib/libmruby.a* out of all object files (C and Ruby)
-* create ```build/i386/bin/mruby``` by cross-compiling *mrbgems/mruby-bin-mruby/tools/mruby/mruby.c* and
-linking with *build/i386/lib/libmruby.a*
-* create ```build/i386/bin/mirb``` by cross-compiling *mrbgems/mruby-bin-mirb/tools/mirb/mirb.c* and
-linking with *build/i386/lib/libmruby.a*
-* create *build/i386/lib/libmruby_core.a* out of all object files (C only)
-* create ```build/i386/bin/mrbc``` by cross-compiling *tools/mrbc/mrbc.c* and
-linking with *build/i386/lib/libmruby_core.a* 
-
-```
- _______________________________________________________________
-|              Native Compilation for Host System               |
-|  _____      ______      _____      ____      ____      _____  |
-| | CC  | -> |AR    | -> |GEN  | -> |CC  | -> |CC  | -> |AR   | |
-| | *.c |    |core.a|    |y.tab|    |mrbc|    |*.rb|    |lib.a| |
-|  -----      ------      -----      ----      ----      -----  |
- ---------------------------------------------------------------
-                                ||
-                               \||/
-                                \/
- ________________________________________________________________
-|             Cross Compilation for Target System                |
-|  _____      _____      _____      ____      ______      _____  |
-| | CC  | -> |AR   | -> |CC   | -> |CC  | -> |AR    | -> |CC   | |
-| | *.c |    |lib.a|    |mruby|    |mirb|    |core.a|    |mrbc | |
-|  -----      -----      -----      ----      ------      -----  |
- ----------------------------------------------------------------
-```
-
-## Build Configuration Examples
-
-### Minimal Library
-
-To build a minimal mruby library you need to use the Cross Compiling 
-feature due to the reason that there are functions (i.e. stdio) which 
-can't be disabled for the main build.
-
-	MRuby::CrossBuild.new('Minimal') do |conf|
-	  toolchain :gcc
-
-	  conf.cc.defines = %w(DISABLE_STDIO)
-	  conf.bins = []  
-	end
-
-This configuration defines a cross compile build called 'Minimal' which
-is using the GCC and compiles for the host machine. It also disables
-all usages of stdio and doesn't compile any binaries (i.e. mrbc).
-
-## Test Environment
-
-mruby's build process includes a test environment. In case you start the testing
-of mruby, a native binary called ```mrbtest``` will be generated and executed.
-This binary contains all test cases which are defined under *test/t*. In case
-of a cross-compilation an additional cross-compiled *mrbtest* binary is 
-generated. You can copy this binary and run on your target system.

  Deleted: vendor/mruby-eeac4be/doc/mrbgems/README.md (+0 -254) 100644
===================================================================
--- vendor/mruby-eeac4be/doc/mrbgems/README.md    2014-06-08 19:01:14 +0900 (65b794d)
+++ /dev/null
@@ -1,254 +0,0 @@
-# mrbgems
-
-mrbgems is a library manager to integrate C and Ruby extension in an easy and
-standardised way into mruby.
-
-## Usage
-
-By default mrbgems is currently deactivated. As soon as you add a GEM to your
-build configuration (i.e. *build_config.rb*), mrbgems will be activated and the
-extension integrated.
-
-To add a GEM into the *build_config.rb* add the following line for example:
-
-	conf.gem '/path/to/your/gem/dir'
-
-You can also use a relative path which would be relative from the mruby root:
-
-	conf.gem 'examples/mrbgems/ruby_extension_example'
-
-A remote GIT repository location for a GEM is also supported:
-
-	conf.gem :git => 'https://github.com/masuidrive/mrbgems-example.git', :branch => 'master'
-
-	conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master'
-
-	conf.gem :bitbucket => 'mruby/mrbgems-example', :branch => 'master'
-
-To pull all gems from remote GIT repository on build, call ```./minirake -p```, 
-or ```./minirake --pull-gems```.
-
-NOTE: `:bitbucket` option supports only git. Hg is unsupported in this version.
-
-## GemBox
-
-There are instances when you wish to add a collection of mrbgems into mruby at 
-once, or be able to substitute mrbgems based on configuration, without having to
-add each gem to the *build_config.rb* file.  A packaged collection of mrbgems 
-is called a GemBox.  A GemBox is a file that contains a list of mrbgems to load 
-into mruby, in the same format as if you were adding them to *build_config.rb*
-via `config.gem`, but wrapped in an `MRuby::GemBox` object.  GemBoxes are 
-loaded into mruby via `config.gembox 'boxname'`.
-
-Below we have created a GemBox containing *mruby-time* and *mrbgems-example*:
-
-    MRuby::GemBox.new do |conf|
-      conf.gem "#{root}/mrbgems/mruby-time"
-      conf.gem :github => 'masuidrive/mrbgems-example'
-    end
-
-As mentioned, the GemBox uses the same conventions as `MRuby::Build`.  The GemBox
-must be saved with a *.gembox* extension inside the *mrbgems* directory to to be
-picked up by mruby.
-
-To use this example GemBox, we save it as `custom.gembox` inside the *mrbgems* 
-directory in mruby, and add the following to our *build_config.rb* file inside 
-the build block:
-
-    conf.gembox 'custom'
-
-This will cause the *custom* GemBox to be read in during the build process,
-adding *mruby-time* and *mrbgems-example* to the build.
-
-If you want, you can put GemBox outside of mruby directory. In that case you must 
-specify absolute path like below.
-
-	conf.gembox "#{ENV["HOME"]}/mygemboxes/custom"
-
-There are two GemBoxes that ship with mruby: [default](../../mrbgems/default.gembox)
-and [full-core](../../mrbgems/full-core.gembox). The [default](../../mrbgems/default.gembox) GemBox
-contains several core components of mruby, and [full-core](../../mrbgems/full-core.gembox)
-contains every gem found in the *mrbgems* directory.
-
-## GEM Structure
-
-The maximal GEM structure looks like this:
-
-	+- GEM_NAME         <- Name of GEM
-	   |
-	   +- mrblib/       <- Source for Ruby extension
-	   |
-	   +- src/          <- Source for C extension
-	   |
-	   +- test/         <- Test code (Ruby)
-	   |
-	   +- mrbgem.rake   <- GEM Specification
-	   |
-	   +- README.md     <- Readme for GEM
-
-The folder *mrblib* contains pure Ruby files to extend mruby. The folder *src*
-contains C files to extend mruby. The folder *test* contains C and pure Ruby files
-for testing purposes which will be used by `mrbtest`. *mrbgem.rake* contains
-the specification to compile C and Ruby files. *README.md* is a short description
-of your GEM.
-
-## Build process
-
-mrbgems expects a specification file called *mrbgem.rake* inside of your
-GEM directory. A typical GEM specification could look like this for example:
-
-	MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
-	  spec.license = 'MIT'
-	  spec.author  = 'mruby developers'
-	end
-
-The mrbgems build process will use this specification to compile Object and Ruby
-files. The compilation results will be added to *lib/libmruby.a*. This file exposes
-the GEM functionality to tools like `mruby` and `mirb`.
-
-The following properties can be set inside of your `MRuby::Gem::Specification` for
-information purpose:
-
-* `spec.license` or `spec.licenses` (A single license or a list of them under which this GEM is licensed)
-* `spec.author` or `spec.authors` (Developer name or a list of them)
-* `spec.version` (Current version)
-* `spec.description` (Detailed description)
-* `spec.summary` (Short summary)
-* `spec.homepage` (Homepage)
-* `spec.requirements` (External requirements as information for user)
-
-The license and author properties are required in every GEM!
-
-In case your GEM is depending on other GEMs please use
-`spec.add_dependency(gem, *requirements)` like:
-
-	MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
-	  spec.license = 'MIT'
-	  spec.author  = 'mruby developers'
-
-	  # add GEM dependency mruby-parser.
-	  # Version has to be between 1.0.0 and 1.5.2
-	  spec.add_dependency('mruby-parser', '> 1.0.0', '< 1.5.2')
-	end
-
-The usage of versions is optional.
-
-__ATTENTION:__
-The dependency system is currently (May 2013) under development and doesn't check
-or resolve dependencies!
-
-In case your GEM has more complex build requirements you can use
-the following options additionally inside of your GEM specification:
-
-* `spec.cflags` (C compiler flags)
-* `spec.mruby_cflags` (global C compiler flags for everything)
-* `spec.mruby_ldflags` (global linker flags for everything)
-* `spec.mruby_libs` (global libraries for everything)
-* `spec.mruby_includes` (global includes for everything)
-* `spec.rbfiles` (Ruby files to compile)
-* `spec.objs` (Object files to compile)
-* `spec.test_rbfiles` (Ruby test files for integration into mrbtest)
-* `spec.test_objs` (Object test files for integration into mrbtest)
-* `spec.test_preload` (Initialization files for mrbtest)
-
-## C Extension
-
-mruby can be extended with C. This is possible by using the C API to
-integrate C libraries into mruby.
-
-### Preconditions
-
-mrbgems expects that you have implemented a C method called
-`mrb_YOURGEMNAME_gem_init(mrb_state)`. `YOURGEMNAME` will be replaced
-by the name of your GEM. If you call your GEM *c_extension_example*, your
-initialisation method could look like this:
-
-	void
-	mrb_c_extension_example_gem_init(mrb_state* mrb) {
-	  struct RClass *class_cextension = mrb_define_module(mrb, "CExtension");
-	  mrb_define_class_method(mrb, class_cextension, "c_method", mrb_c_method, MRB_ARGS_NONE());
-	}
-
-### Finalize
-
-mrbgems expects that you have implemented a C method called
-`mrb_YOURGEMNAME_gem_final(mrb_state)`. `YOURGEMNAME` will be replaced
-by the name of your GEM. If you call your GEM *c_extension_example*, your
-finalizer method could look like this:
-
-	void
-	mrb_c_extension_example_gem_final(mrb_state* mrb) {
-	  free(someone);
-	}
-
-### Example
-
-	+- c_extension_example/
-	   |
-	   +- src/
-	   |  |
-	   |  +- example.c         <- C extension source
-	   |
-	   +- test/
-	   |  |
-	   |  +- example.rb        <- Test code for C extension
-	   |
-	   +- mrbgem.rake          <- GEM specification
-	   |
-	   +- README.md
-
-## Ruby Extension
-
-mruby can be extended with pure Ruby. It is possible to override existing
-classes or add new ones in this way. Put all Ruby files into the *mrblib*
-folder.
-
-### Pre-Conditions
-
-none
-
-### Example
-
-	+- ruby_extension_example/
-	   |
-	   +- mrblib/
-	   |  |
-	   |  +- example.rb        <- Ruby extension source
-	   |
-	   +- test/
-	   |  |
-	   |  +- example.rb        <- Test code for Ruby extension
-	   |
-	   +- mrbgem.rake          <- GEM specification
-	   |
-	   +- README.md
-
-## C and Ruby Extension
-
-mruby can be extended with C and Ruby at the same time. It is possible to
-override existing classes or add new ones in this way. Put all Ruby files
-into the *mrblib* folder and all C files into the *src* folder.
-
-### Pre-Conditions
-
-See C and Ruby example.
-
-### Example
-
-	+- c_and_ruby_extension_example/
-	   |
-	   +- mrblib/
-	   |  |
-	   |  +- example.rb        <- Ruby extension source
-	   |
-	   +- src/
-	   |  |
-	   |  +- example.c         <- C extension source
-	   |
-	   +- test/
-	   |  |
-	   |  +- example.rb        <- Test code for C and Ruby extension
-	   |
-	   +- mrbgem.rake          <- GEM specification
-	   |
-	   +- README.md

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/README.md (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/README.md    2014-06-08 19:01:14 +0900 (0b428b0)
+++ /dev/null
@@ -1,4 +0,0 @@
-C and Ruby Extension Example
-=========
-
-This is an example gem which implements a C and Ruby extension.

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake (+0 -23) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake    2014-06-08 19:01:14 +0900 (a1f964b)
+++ /dev/null
@@ -1,23 +0,0 @@
-MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
- 
-  # Add compile flags
-  # spec.cc.flags << ''
-
-  # Add cflags to all
-  # spec.mruby.cc.flags << '-g'
-
-  # Add libraries
-  # spec.linker.libraries << 'external_lib'
-
-  # Default build files
-  # spec.rbfiles = Dir.glob("#{dir}/mrblib/*.rb")
-  # spec.objs = Dir.glob("#{dir}/src/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_rbfiles = Dir.glob("#{dir}/test/*.rb")
-  # spec.test_objs = Dir.glob("#{dir}/test/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_preload = 'test/assert.rb'
-
-  # Values accessible as TEST_ARGS inside test scripts
-  # spec.test_args = {'tmp_dir' => Dir::tmpdir}
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb (+0 -5) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb    2014-06-08 19:01:14 +0900 (d3899c3)
+++ /dev/null
@@ -1,5 +0,0 @@
-module CRubyExtension
-  def CRubyExtension.ruby_method
-    puts "A Ruby Extension"
-  end
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/src/example.c (+0 -20) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/src/example.c    2014-06-08 19:01:14 +0900 (5566b71)
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <mruby.h>
-#include <stdio.h>
-
-static mrb_value
-mrb_c_method(mrb_state *mrb, mrb_value self)
-{
-  puts("A C Extension");
-  return self;
-}
-
-void
-mrb_c_and_ruby_extension_example_gem_init(mrb_state* mrb) {
-  struct RClass *class_cextension = mrb_define_module(mrb, "CRubyExtension");
-  mrb_define_class_method(mrb, class_cextension, "c_method", mrb_c_method, MRB_ARGS_NONE());
-}
-
-void
-mrb_c_and_ruby_extension_example_gem_final(mrb_state* mrb) {
-  // finalizer
-}

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/test/example.rb (+0 -7) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_and_ruby_extension_example/test/example.rb    2014-06-08 19:01:14 +0900 (fffad71)
+++ /dev/null
@@ -1,7 +0,0 @@
-assert('C and Ruby Extension Example 1') do
-  CRubyExtension.respond_to? :c_method
-end
-
-assert('C and Ruby Extension Example 2') do
-  CRubyExtension.respond_to? :ruby_method
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/README.md (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/README.md    2014-06-08 19:01:14 +0900 (3803c20)
+++ /dev/null
@@ -1,4 +0,0 @@
-C Extension Example
-=========
-
-This is an example gem which implements a C extension.

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/mrbgem.rake (+0 -23) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/mrbgem.rake    2014-06-08 19:01:14 +0900 (3524e22)
+++ /dev/null
@@ -1,23 +0,0 @@
-MRuby::Gem::Specification.new('c_extension_example') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
- 
-  # Add compile flags
-  # spec.cc.flags << '-g'
-
-  # Add cflags to all
-  # spec.mruby.cc.flags << '-g'
-
-  # Add libraries
-  # spec.linker.libraries << 'external_lib'
-
-  # Default build files
-  # spec.rbfiles = Dir.glob("#{dir}/mrblib/*.rb")
-  # spec.objs = Dir.glob("#{dir}/src/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_rbfiles = Dir.glob("#{dir}/test/*.rb")
-  # spec.test_objs = Dir.glob("#{dir}/test/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_preload = 'test/assert.rb'
-
-  # Values accessible as TEST_ARGS inside test scripts
-  # spec.test_args = {'tmp_dir' => Dir::tmpdir}
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/src/example.c (+0 -20) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/src/example.c    2014-06-08 19:01:14 +0900 (63517a9)
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <mruby.h>
-#include <stdio.h>
-
-static mrb_value
-mrb_c_method(mrb_state *mrb, mrb_value self)
-{
-  puts("A C Extension");
-  return self;
-}
-
-void
-mrb_c_extension_example_gem_init(mrb_state* mrb) {
-  struct RClass *class_cextension = mrb_define_module(mrb, "CExtension");
-  mrb_define_class_method(mrb, class_cextension, "c_method", mrb_c_method, MRB_ARGS_NONE());
-}
-
-void
-mrb_c_extension_example_gem_final(mrb_state* mrb) {
-  // finalizer
-}

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.c (+0 -7) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.c    2014-06-08 19:01:14 +0900 (ab41033)
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <mruby.h>
-
-void
-mrb_c_extension_example_gem_test(mrb_state *mrb)
-{
-  /* test initializer in C */
-}

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.rb (+0 -3) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/c_extension_example/test/example.rb    2014-06-08 19:01:14 +0900 (367d180)
+++ /dev/null
@@ -1,3 +0,0 @@
-assert('C Extension Example') do
-  CExtension.respond_to? :c_method
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/README.md (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/README.md    2014-06-08 19:01:14 +0900 (906a0d8)
+++ /dev/null
@@ -1,4 +0,0 @@
-Pure Ruby Extension Example
-=========
-
-This is an example gem which implements a pure Ruby extension.

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrbgem.rake (+0 -23) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrbgem.rake    2014-06-08 19:01:14 +0900 (5624c33)
+++ /dev/null
@@ -1,23 +0,0 @@
-MRuby::Gem::Specification.new('ruby_extension_example') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
- 
-  # Add compile flags
-  # spec.cc.flags << ''
-
-  # Add cflags to all
-  # spec.mruby.cc.flags << '-g'
-
-  # Add libraries
-  # spec.linker.libraries << 'external_lib'
-
-  # Default build files
-  # spec.rbfiles = Dir.glob("#{dir}/mrblib/*.rb")
-  # spec.objs = Dir.glob("#{dir}/src/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_rbfiles = Dir.glob("#{dir}/test/*.rb")
-  # spec.test_objs = Dir.glob("#{dir}/test/*.{c,cpp,m,asm,S}").map { |f| objfile(f.relative_path_from(dir).pathmap("#{build_dir}/%X")) }
-  # spec.test_preload = 'test/assert.rb'
-
-  # Values accessible as TEST_ARGS inside test scripts
-  # spec.test_args = {'tmp_dir' => Dir::tmpdir}
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrblib/example.rb (+0 -5) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/mrblib/example.rb    2014-06-08 19:01:14 +0900 (b07a2b5)
+++ /dev/null
@@ -1,5 +0,0 @@
-class RubyExtension
-  def RubyExtension.ruby_method
-    puts "A Ruby Extension"
-  end
-end

  Deleted: vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/test/example.rb (+0 -3) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/mrbgems/ruby_extension_example/test/example.rb    2014-06-08 19:01:14 +0900 (0c1b634)
+++ /dev/null
@@ -1,3 +0,0 @@
-assert('Ruby Extension Example') do
-  RubyExtension.respond_to? :ruby_method
-end

  Deleted: vendor/mruby-eeac4be/examples/targets/ArduinoDue.rb (+0 -65) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/targets/ArduinoDue.rb    2014-06-08 19:01:14 +0900 (a4af4a9)
+++ /dev/null
@@ -1,65 +0,0 @@
-# Cross Compiling configuration for Arduino Due
-# http://arduino.cc/en/Main/ArduinoBoardDue
-#
-# Requires Arduino IDE >= 1.5
-MRuby::CrossBuild.new("Arduino Due") do |conf|
-  toolchain :gcc
-
-  # Mac OS X
-  # ARDUINO_PATH = '/Applications/Arduino.app/Contents/Resources/Java'
-  # GNU Linux
-  ARDUINO_PATH = '/opt/arduino'
-  BIN_PATH = "#{ARDUINO_PATH}/hardware/tools/g++_arm_none_eabi/bin"
-  SAM_PATH = "#{ARDUINO_PATH}/hardware/arduino/sam"
-  TARGET_PATH = "#{SAM_PATH}/variants/arduino_due_x"
-
-  conf.cc do |cc|
-    cc.command = "#{BIN_PATH}/arm-none-eabi-gcc"
-    cc.include_paths << ["#{SAM_PATH}/system/libsam", "#{SAM_PATH}/system/CMSIS/CMSIS/Include/",
-                        "#{SAM_PATH}/system/CMSIS/Device/ATMEL/",
-                        "#{SAM_PATH}/cores/arduino", "#{SAM_PATH}/libraries","#{TARGET_PATH}"]
-    cc.flags = %w(-g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 
-                -Dprintf=iprintf -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=152 -D__SAM3X8E__ -mthumb -DUSB_PID=0x003e -DUSB_VID=0x2341 -DUSBCON)
-    cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
-
-    #configuration for low memory environment
-    cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
-    cc.defines << %w(MRB_USE_IV_SEGLIST)
-    cc.defines << %w(KHASH_DEFAULT_SIZE=8)
-    cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20)
-    cc.defines << %w(MRB_GC_STRESS)
-    #cc.defines << %w(DISABLE_STDIO) #if you dont need stdio.
-    #cc.defines << %w(POOL_PAGE_SIZE=1000) #effective only for use with mruby-eval
-  end
-
-  conf.cxx do |cxx|
-    cxx.command = conf.cc.command.dup
-    cxx.include_paths = conf.cc.include_paths.dup
-    cxx.flags = conf.cc.flags.dup
-    cxx.defines = conf.cc.defines.dup
-    cxx.compile_options = conf.cc.compile_options.dup
-  end
-
-  conf.archiver do |archiver|
-    archiver.command = "#{BIN_PATH}/arm-none-eabi-ar"
-    archiver.archive_options = 'rcs %{outfile} %{objs}'
-  end
-
-  #no executables
-  conf.bins = []
-
-  #do not build executable test
-  conf.build_mrbtest_lib_only
-
-  #gems from core
-  conf.gem :core => "mruby-print" 
-  conf.gem :core => "mruby-math"
-  conf.gem :core => "mruby-enum-ext"
-
-  #light-weight regular expression
-  conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master" 
-
-  #Arduino API
-  #conf.gem :github =>"kyab/mruby-arduino", :branch => "master"
-
-end

  Deleted: vendor/mruby-eeac4be/examples/targets/chipKitMax32.rb (+0 -68) 100644
===================================================================
--- vendor/mruby-eeac4be/examples/targets/chipKitMax32.rb    2014-06-08 19:01:14 +0900 (5c3a30a)
+++ /dev/null
@@ -1,68 +0,0 @@
-# Cross Compiling configuration for Digilent chipKIT Max32
-# http://www.digilentinc.com/Products/Detail.cfm?Prod=CHIPKIT-MAX32
-#
-# Requires MPIDE (https://github.com/chipKIT32/chipKIT32-MAX)
-#
-# This configuration is based on @kyab's version
-# http://d.hatena.ne.jp/kyab/20130201
-MRuby::CrossBuild.new("chipKitMax32") do |conf|
-  toolchain :gcc
-
-  # Mac OS X
-  # MPIDE_PATH = '/Applications/Mpide.app/Contents/Resources/Java'
-  # GNU Linux
-  MPIDE_PATH = '/opt/mpide-0023-linux-20120903'
-
-  PIC32_PATH = "#{MPIDE_PATH}/hardware/pic32"  
-
-  conf.cc do |cc|
-    cc.command = "#{PIC32_PATH}/compiler/pic32-tools/bin/pic32-gcc"
-    cc.include_paths << ["#{PIC32_PATH}/cores/pic32",
-                        "#{PIC32_PATH}/variants/Max32",
-                        "#{PIC32_PATH}/libraries"]
-    cc.flags = %w(-O2 -mno-smart-io -w -ffunction-sections -fdata-sections -g -mdebugger -Wcast-align 
-                -fno-short-double -mprocessor=32MX795F512L -DF_CPU=80000000L -DARDUINO=23 -D_BOARD_MEGA_ 
-                -DMPIDEVER=0x01000202 -DMPIDE=23)
-    cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
-
-    #configuration for low memory environment
-    cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
-    cc.defines << %w(MRB_USE_IV_SEGLIST)
-    cc.defines << %w(KHASH_DEFAULT_SIZE=8)
-    cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20)
-    cc.defines << %w(MRB_GC_STRESS)
-    #cc.defines << %w(DISABLE_STDIO) #if you dont need stdio.
-    #cc.defines << %w(POOL_PAGE_SIZE=1000) #effective only for use with mruby-eval
-  end
-
-  conf.cxx do |cxx|
-    cxx.command = conf.cc.command.dup
-    cxx.include_paths = conf.cc.include_paths.dup
-    cxx.flags = conf.cc.flags.dup
-    cxx.defines = conf.cc.defines.dup
-    cxx.compile_options = conf.cc.compile_options.dup
-  end
-
-  conf.archiver do |archiver|
-    archiver.command = "#{PIC32_PATH}/compiler/pic32-tools/bin/pic32-ar"
-    archiver.archive_options = 'rcs %{outfile} %{objs}'
-  end
-
-  #no executables
-  conf.bins = []
-
-  #do not build test executable 
-  conf.build_mrbtest_lib_only
-
-  #gems from core
-  conf.gem :core => "mruby-print" 
-  conf.gem :core => "mruby-math"
-  conf.gem :core => "mruby-enum-ext"
-
-  #light-weight regular expression
-  conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master" 
-
-  #Arduino API
-  #conf.gem :github =>"kyab/mruby-arduino", :branch => "master"
-
-end

  Deleted: vendor/mruby-eeac4be/include/mrbconf.h (+0 -90) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mrbconf.h    2014-06-08 19:01:14 +0900 (a10a1d0)
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-** mrbconf.h - mruby core configuration
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBYCONF_H
-#define MRUBYCONF_H
-
-/* configuration options: */
-/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
-//#define MRB_USE_FLOAT
-
-/* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT64 */
-//#define MRB_INT16
-
-/* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 */
-//#define MRB_INT64
-
-/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */
-//#define MRB_NAN_BOXING
-
-/* define on big endian machines; used by MRB_NAN_BOXING */
-//#define MRB_ENDIAN_BIG
-
-/* represent mrb_value as a word (natural unit of data for the processor) */
-// #define MRB_WORD_BOXING
-
-/* argv max size in mrb_funcall */
-//#define MRB_FUNCALL_ARGC_MAX 16
-
-/* number of object per heap page */
-//#define MRB_HEAP_PAGE_SIZE 1024
-
-/* use segmented list for IV table */
-//#define MRB_USE_IV_SEGLIST
-
-/* initial size for IV khash; ignored when MRB_USE_IV_SEGLIST is set */
-//#define MRB_IVHASH_INIT_SIZE 8
-
-/* initial size for IREP array */
-//#define MRB_IREP_ARRAY_INIT_SIZE (256u)
-
-/* turn off generational GC by default */
-//#define MRB_GC_TURN_OFF_GENERATIONAL
-
-/* default size of khash table bucket */
-//#define KHASH_DEFAULT_SIZE 32
-
-/* allocated memory address alignment */
-//#define POOL_ALIGNMENT 4
-
-/* page size of memory pool */
-//#define POOL_PAGE_SIZE 16000
-
-/* initial minimum size for string buffer */
-//#define MRB_STR_BUF_MIN_SIZE 128
-
-/* array size for parser buffer */
-//#define MRB_PARSER_BUF_SIZE 1024
-
-/* -DDISABLE_XXXX to drop following features */
-//#define DISABLE_STDIO		/* use of stdio */
-
-/* -DENABLE_XXXX to enable following features */
-//#define ENABLE_DEBUG		/* hooks for debugger */
-
-/* end of configuration */
-
-/* define ENABLE_XXXX from DISABLE_XXX */
-#ifndef DISABLE_STDIO
-#define ENABLE_STDIO
-#endif
-#ifndef ENABLE_DEBUG
-#define DISABLE_DEBUG
-#endif
-
-#ifdef ENABLE_STDIO
-# include <stdio.h>
-#endif
-
-#ifndef FALSE
-# define FALSE 0
-#endif
-
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-#endif  /* MRUBYCONF_H */

  Deleted: vendor/mruby-eeac4be/include/mruby.h (+0 -395) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby.h    2014-06-08 19:01:14 +0900 (0541bc7)
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-** mruby - An embeddable Ruby implementation
-**
-** Copyright (c) mruby developers 2010-2013
-**
-** Permission is hereby granted, free of charge, to any person obtaining
-** a copy of this software and associated documentation files (the
-** "Software"), to deal in the Software without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Software, and to
-** permit persons to whom the Software is furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be
-** included in all copies or substantial portions of the Software.
-**
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-**
-** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
-*/
-
-#ifndef MRUBY_H
-#define MRUBY_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include <stddef.h>
-
-#include "mrbconf.h"
-#include "mruby/value.h"
-
-typedef uint32_t mrb_code;
-typedef uint32_t mrb_aspec;
-
-struct mrb_state;
-
-typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
-
-#ifndef MRB_ARENA_SIZE
-#define MRB_ARENA_SIZE 100
-#endif
-
-typedef struct {
-  mrb_sym mid;
-  struct RProc *proc;
-  int stackidx;
-  int nregs;
-  int argc;
-  mrb_code *pc;
-  int acc;
-  struct RClass *target_class;
-  int ridx;
-  int eidx;
-  struct REnv *env;
-} mrb_callinfo;
-
-enum mrb_fiber_state {
-  MRB_FIBER_CREATED = 0,
-  MRB_FIBER_RUNNING,
-  MRB_FIBER_RESUMED,
-  MRB_FIBER_TERMINATED,
-};
-
-struct mrb_context {
-  struct mrb_context *prev;
-
-  mrb_value *stack;                       /* stack of virtual machine */
-  mrb_value *stbase, *stend;
-
-  mrb_callinfo *ci;
-  mrb_callinfo *cibase, *ciend;
-
-  mrb_code **rescue;                      /* exception handler stack */
-  int rsize;
-  struct RProc **ensure;                  /* ensure handler stack */
-  int esize;
-
-  uint8_t status;
-  struct RFiber *fib;
-};
-
-enum gc_state {
-  GC_STATE_NONE = 0,
-  GC_STATE_MARK,
-  GC_STATE_SWEEP
-};
-
-typedef struct mrb_state {
-  void *jmp;
-
-  mrb_allocf allocf;                      /* memory allocation function */
-
-  struct mrb_context *c;
-  struct mrb_context *root_c;
-
-  struct RObject *exc;                    /* exception */
-  struct iv_tbl *globals;                 /* global variable table */
-  struct mrb_irep **irep;                 /* program data array */
-  size_t irep_len, irep_capa;
-
-  struct RObject *top_self;
-  struct RClass *object_class;            /* Object class */
-  struct RClass *class_class;
-  struct RClass *module_class;
-  struct RClass *proc_class;
-  struct RClass *string_class;
-  struct RClass *array_class;
-  struct RClass *hash_class;
-
-  struct RClass *float_class;
-  struct RClass *fixnum_class;
-  struct RClass *true_class;
-  struct RClass *false_class;
-  struct RClass *nil_class;
-  struct RClass *symbol_class;
-  struct RClass *kernel_module;
-
-  struct heap_page *heaps;                /* heaps for GC */
-  struct heap_page *sweeps;
-  struct heap_page *free_heaps;
-  size_t live; /* count of live objects */
-  struct RBasic *arena[MRB_ARENA_SIZE];   /* GC protection array */
-  int arena_idx;
-
-  enum gc_state gc_state; /* state of gc */
-  int current_white_part; /* make white object by white_part */
-  struct RBasic *gray_list; /* list of gray objects to be traversed incrementally */
-  struct RBasic *atomic_gray_list; /* list of objects to be traversed atomically */
-  size_t gc_live_after_mark;
-  size_t gc_threshold;
-  int gc_interval_ratio;
-  int gc_step_ratio;
-  mrb_bool gc_disabled:1;
-  mrb_bool gc_full:1;
-  mrb_bool is_generational_gc_mode:1;
-  mrb_bool out_of_memory:1;
-  size_t majorgc_old_threshold;
-  struct alloca_header *mems;
-
-  mrb_sym symidx;
-  struct kh_n2s *name2sym;      /* symbol table */
-
-#ifdef ENABLE_DEBUG
-  void (*code_fetch_hook)(struct mrb_state* mrb, struct mrb_irep *irep, mrb_code *pc, mrb_value *regs);
-#endif
-
-  struct RClass *eException_class;
-  struct RClass *eStandardError_class;
-
-  void *ud; /* auxiliary data */
-} mrb_state;
-
-typedef mrb_value (*mrb_func_t)(mrb_state *mrb, mrb_value);
-struct RClass *mrb_define_class(mrb_state *, const char*, struct RClass*);
-struct RClass *mrb_define_module(mrb_state *, const char*);
-mrb_value mrb_singleton_class(mrb_state*, mrb_value);
-void mrb_include_module(mrb_state*, struct RClass*, struct RClass*);
-
-void mrb_define_method(mrb_state*, struct RClass*, const char*, mrb_func_t, mrb_aspec);
-void mrb_define_class_method(mrb_state *, struct RClass *, const char *, mrb_func_t, mrb_aspec);
-void mrb_define_singleton_method(mrb_state*, struct RObject*, const char*, mrb_func_t, mrb_aspec);
-void mrb_define_module_function(mrb_state*, struct RClass*, const char*, mrb_func_t, mrb_aspec);
-void mrb_define_const(mrb_state*, struct RClass*, const char *name, mrb_value);
-void mrb_undef_method(mrb_state*, struct RClass*, const char*);
-void mrb_undef_class_method(mrb_state*, struct RClass*, const char*);
-mrb_value mrb_obj_new(mrb_state *mrb, struct RClass *c, int argc, mrb_value *argv);
-#define mrb_class_new_instance(mrb,argc,argv,c) mrb_obj_new(mrb,c,argc,argv)
-mrb_value mrb_instance_new(mrb_state *mrb, mrb_value cv);
-struct RClass * mrb_class_new(mrb_state *mrb, struct RClass *super);
-struct RClass * mrb_module_new(mrb_state *mrb);
-mrb_bool mrb_class_defined(mrb_state *mrb, const char *name);
-struct RClass * mrb_class_get(mrb_state *mrb, const char *name);
-struct RClass * mrb_class_get_under(mrb_state *mrb, struct RClass *outer, const char *name);
-
-mrb_value mrb_obj_dup(mrb_state *mrb, mrb_value obj);
-mrb_value mrb_check_to_integer(mrb_state *mrb, mrb_value val, const char *method);
-mrb_bool mrb_obj_respond_to(struct RClass* c, mrb_sym mid);
-struct RClass * mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super);
-struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *outer, const char *name);
-
-/* required arguments */
-#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
-/* optional arguments */
-#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
-/* mandatory and optinal arguments */
-#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
-
-/* rest argument */
-#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
-/* required arguments after rest */
-#define MRB_ARGS_POST(n)    ((mrb_aspec)((n)&0x1f) << 7)
-/* keyword arguments (n of keys, kdict) */
-#define MRB_ARGS_KEY(n1,n2) ((mrb_aspec)((((n1)&0x1f) << 2) | ((n2)?(1<<1):0)))
-/* block argument */
-#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
-
-/* accept any number of arguments */
-#define MRB_ARGS_ANY()      ARGS_REST()
-/* accept no arguments */
-#define MRB_ARGS_NONE()     ((mrb_aspec)0)
-
-/* compatibility macros; will be removed */
-#define ARGS_REQ(n)         MRB_ARGS_REQ(n)
-#define ARGS_OPT(n)         MRB_ARGS_OPT(n)
-#define ARGS_REST()         MRB_ARGS_REST()
-#define ARGS_POST(n)        MRB_ARGS_POST()
-#define ARGS_KEY(n1,n2)     MRB_ARGS_KEY(n1,n2)
-#define ARGS_BLOCK()        MRB_ARGS_BLOCK()
-#define ARGS_ANY()          MRB_ARGS_ANY()
-#define ARGS_NONE()         MRB_ARGS_NONE()
-
-int mrb_get_args(mrb_state *mrb, const char *format, ...);
-
-mrb_value mrb_funcall(mrb_state*, mrb_value, const char*, int,...);
-mrb_value mrb_funcall_argv(mrb_state*, mrb_value, mrb_sym, int, mrb_value*);
-mrb_value mrb_funcall_with_block(mrb_state*, mrb_value, mrb_sym, int, mrb_value*, mrb_value);
-mrb_sym mrb_intern_cstr(mrb_state*,const char*);
-mrb_sym mrb_intern2(mrb_state*,const char*,size_t);
-mrb_sym mrb_intern_str(mrb_state*,mrb_value);
-mrb_value mrb_check_intern_cstr(mrb_state*,const char*);
-mrb_value mrb_check_intern(mrb_state*,const char*,size_t);
-mrb_value mrb_check_intern_str(mrb_state*,mrb_value);
-const char *mrb_sym2name(mrb_state*,mrb_sym);
-const char *mrb_sym2name_len(mrb_state*,mrb_sym,size_t*);
-mrb_value mrb_sym2str(mrb_state*,mrb_sym);
-mrb_value mrb_str_format(mrb_state *, int, const mrb_value *, mrb_value);
-
-/* For backward compatibility. */
-static inline
-mrb_sym mrb_intern(mrb_state *mrb,const char *cstr)
-{
-  return mrb_intern_cstr(mrb, cstr);
-}
-
-void *mrb_malloc(mrb_state*, size_t);         /* raise RuntimeError if no mem */
-void *mrb_calloc(mrb_state*, size_t, size_t); /* ditto */
-void *mrb_realloc(mrb_state*, void*, size_t); /* ditto */
-void *mrb_realloc_simple(mrb_state*, void*, size_t); /* return NULL if no memory available */
-void *mrb_malloc_simple(mrb_state*, size_t);  /* return NULL if no memory available */
-struct RBasic *mrb_obj_alloc(mrb_state*, enum mrb_vtype, struct RClass*);
-void mrb_free(mrb_state*, void*);
-
-mrb_value mrb_str_new(mrb_state *mrb, const char *p, size_t len);
-mrb_value mrb_str_new_cstr(mrb_state*, const char*);
-mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, size_t len);
-
-mrb_state* mrb_open(void);
-mrb_state* mrb_open_allocf(mrb_allocf, void *ud);
-void mrb_irep_free(mrb_state*, struct mrb_irep*);
-void mrb_close(mrb_state*);
-
-mrb_value mrb_top_self(mrb_state *);
-mrb_value mrb_run(mrb_state*, struct RProc*, mrb_value);
-
-void mrb_p(mrb_state*, mrb_value);
-mrb_int mrb_obj_id(mrb_value obj);
-mrb_sym mrb_obj_to_sym(mrb_state *mrb, mrb_value name);
-
-mrb_bool mrb_obj_eq(mrb_state*, mrb_value, mrb_value);
-mrb_bool mrb_obj_equal(mrb_state*, mrb_value, mrb_value);
-mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
-mrb_value mrb_Integer(mrb_state *mrb, mrb_value val);
-mrb_value mrb_Float(mrb_state *mrb, mrb_value val);
-mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj);
-mrb_bool mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
-
-void mrb_garbage_collect(mrb_state*);
-void mrb_full_gc(mrb_state*);
-void mrb_incremental_gc(mrb_state *);
-int mrb_gc_arena_save(mrb_state*);
-void mrb_gc_arena_restore(mrb_state*,int);
-void mrb_gc_mark(mrb_state*,struct RBasic*);
-#define mrb_gc_mark_value(mrb,val) do {\
-  if (mrb_type(val) >= MRB_TT_HAS_BASIC) mrb_gc_mark((mrb), mrb_basic_ptr(val));\
-} while (0)
-void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*);
-#define mrb_field_write_barrier_value(mrb, obj, val) do{\
-  if ((val.tt >= MRB_TT_HAS_BASIC)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val));\
-} while (0)
-void mrb_write_barrier(mrb_state *, struct RBasic*);
-
-mrb_value mrb_check_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method);
-mrb_value mrb_any_to_s(mrb_state *mrb, mrb_value obj);
-const char * mrb_obj_classname(mrb_state *mrb, mrb_value obj);
-struct RClass* mrb_obj_class(mrb_state *mrb, mrb_value obj);
-mrb_value mrb_class_path(mrb_state *mrb, struct RClass *c);
-mrb_value mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method);
-mrb_bool mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c);
-mrb_value mrb_obj_inspect(mrb_state *mrb, mrb_value self);
-mrb_value mrb_obj_clone(mrb_state *mrb, mrb_value self);
-
-/* need to include <ctype.h> to use these macros */
-#ifndef ISPRINT
-//#define ISASCII(c) isascii((int)(unsigned char)(c))
-#define ISASCII(c) 1
-#define ISPRINT(c) (ISASCII(c) && isprint((int)(unsigned char)(c)))
-#define ISSPACE(c) (ISASCII(c) && isspace((int)(unsigned char)(c)))
-#define ISUPPER(c) (ISASCII(c) && isupper((int)(unsigned char)(c)))
-#define ISLOWER(c) (ISASCII(c) && islower((int)(unsigned char)(c)))
-#define ISALNUM(c) (ISASCII(c) && isalnum((int)(unsigned char)(c)))
-#define ISALPHA(c) (ISASCII(c) && isalpha((int)(unsigned char)(c)))
-#define ISDIGIT(c) (ISASCII(c) && isdigit((int)(unsigned char)(c)))
-#define ISXDIGIT(c) (ISASCII(c) && isxdigit((int)(unsigned char)(c)))
-#define TOUPPER(c) (ISASCII(c) ? toupper((int)(unsigned char)(c)) : (c))
-#define TOLOWER(c) (ISASCII(c) ? tolower((int)(unsigned char)(c)) : (c))
-#endif
-
-mrb_value mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, long len);
-void mrb_exc_raise(mrb_state *mrb, mrb_value exc);
-
-void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg);
-void mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...);
-void mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...);
-void mrb_warn(mrb_state *mrb, const char *fmt, ...);
-void mrb_bug(mrb_state *mrb, const char *fmt, ...);
-void mrb_print_backtrace(mrb_state *mrb);
-void mrb_print_verbose_backtrace(mrb_state *mrb);
-void mrb_print_error(mrb_state *mrb);
-
-/* macros to get typical exception objects
-   note:
-   + those E_* macros requires mrb_state* variable named mrb.
-   + exception objects obtained from those macros are local to mrb
-*/
-#define E_RUNTIME_ERROR             (mrb_class_get(mrb, "RuntimeError"))
-#define E_TYPE_ERROR                (mrb_class_get(mrb, "TypeError"))
-#define E_ARGUMENT_ERROR            (mrb_class_get(mrb, "ArgumentError"))
-#define E_INDEX_ERROR               (mrb_class_get(mrb, "IndexError"))
-#define E_RANGE_ERROR               (mrb_class_get(mrb, "RangeError"))
-#define E_NAME_ERROR                (mrb_class_get(mrb, "NameError"))
-#define E_NOMETHOD_ERROR            (mrb_class_get(mrb, "NoMethodError"))
-#define E_SCRIPT_ERROR              (mrb_class_get(mrb, "ScriptError"))
-#define E_SYNTAX_ERROR              (mrb_class_get(mrb, "SyntaxError"))
-#define E_LOCALJUMP_ERROR           (mrb_class_get(mrb, "LocalJumpError"))
-#define E_REGEXP_ERROR              (mrb_class_get(mrb, "RegexpError"))
-
-#define E_NOTIMP_ERROR              (mrb_class_get(mrb, "NotImplementedError"))
-#define E_FLOATDOMAIN_ERROR         (mrb_class_get(mrb, "FloatDomainError"))
-
-#define E_KEY_ERROR                 (mrb_class_get(mrb, "KeyError"))
-
-mrb_value mrb_yield(mrb_state *mrb, mrb_value b, mrb_value arg);
-mrb_value mrb_yield_argv(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv);
-
-void mrb_gc_protect(mrb_state *mrb, mrb_value obj);
-mrb_value mrb_to_int(mrb_state *mrb, mrb_value val);
-void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t);
-
-typedef enum call_type {
-    CALL_PUBLIC,
-    CALL_FCALL,
-    CALL_VCALL,
-    CALL_TYPE_MAX
-} call_type;
-
-void mrb_define_alias(mrb_state *mrb, struct RClass *klass, const char *name1, const char *name2);
-const char *mrb_class_name(mrb_state *mrb, struct RClass* klass);
-void mrb_define_global_const(mrb_state *mrb, const char *name, mrb_value val);
-
-mrb_value mrb_block_proc(void);
-mrb_value mrb_attr_get(mrb_state *mrb, mrb_value obj, mrb_sym id);
-
-mrb_bool mrb_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym mid);
-mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c);
-
-/* memory pool implementation */
-typedef struct mrb_pool mrb_pool;
-struct mrb_pool* mrb_pool_open(mrb_state*);
-void mrb_pool_close(struct mrb_pool*);
-void* mrb_pool_alloc(struct mrb_pool*, size_t);
-void* mrb_pool_realloc(struct mrb_pool*, void*, size_t oldlen, size_t newlen);
-mrb_bool mrb_pool_can_realloc(struct mrb_pool*, void*, size_t);
-void* mrb_alloca(mrb_state *mrb, size_t);
-
-#ifdef MRB_DEBUG
-#include <assert.h>
-#define mrb_assert(p) assert(p)
-#else
-#define mrb_assert(p) ((void)0)
-#endif
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/array.h (+0 -63) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/array.h    2014-06-08 19:01:14 +0900 (29f9be5)
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-** mruby/array.h - Array class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_ARRAY_H
-#define MRUBY_ARRAY_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct mrb_shared_array {
-  int refcnt;
-  mrb_value *ptr;
-  mrb_int len;
-} mrb_shared_array;
-
-struct RArray {
-  MRB_OBJECT_HEADER;
-  mrb_int len;
-  union {
-    mrb_int capa;
-    mrb_shared_array *shared;
-  } aux;
-  mrb_value *ptr;
-};
-
-#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
-#define mrb_ary_value(p)  mrb_obj_value((void*)(p))
-#define RARRAY(v)  ((struct RArray*)(mrb_ptr(v)))
-
-#define RARRAY_LEN(a) (RARRAY(a)->len)
-#define RARRAY_PTR(a) (RARRAY(a)->ptr)
-#define MRB_ARY_SHARED      256
-
-void mrb_ary_decref(mrb_state*, mrb_shared_array*);
-mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
-mrb_value mrb_ary_new(mrb_state *mrb);
-mrb_value mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals);
-void mrb_ary_concat(mrb_state*, mrb_value, mrb_value);
-mrb_value mrb_ary_splat(mrb_state*, mrb_value);
-void mrb_ary_push(mrb_state*, mrb_value, mrb_value);
-mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary);
-mrb_value mrb_ary_aget(mrb_state *mrb, mrb_value self);
-mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n);
-void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val);
-mrb_int mrb_ary_len(mrb_state *mrb, mrb_value ary);
-void mrb_ary_replace(mrb_state *mrb, mrb_value a, mrb_value b);
-mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self);
-mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item);
-mrb_value mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr);
-mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset);
-mrb_value mrb_ary_shift(mrb_state *mrb, mrb_value self);
-mrb_value mrb_ary_clear(mrb_state *mrb, mrb_value self);
-mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_ARRAY_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/class.h (+0 -75) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/class.h    2014-06-08 19:01:14 +0900 (28ba6b1)
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-** mruby/class.h - Class class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_CLASS_H
-#define MRUBY_CLASS_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-struct RClass {
-  MRB_OBJECT_HEADER;
-  struct iv_tbl *iv;
-  struct kh_mt *mt;
-  struct RClass *super;
-};
-
-#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
-#define RCLASS_SUPER(v)     (((struct RClass*)(mrb_ptr(v)))->super)
-#define RCLASS_IV_TBL(v)    (((struct RClass*)(mrb_ptr(v)))->iv)
-#define RCLASS_M_TBL(v)     (((struct RClass*)(mrb_ptr(v)))->mt)
-
-static inline struct RClass*
-mrb_class(mrb_state *mrb, mrb_value v)
-{
-  switch (mrb_type(v)) {
-  case MRB_TT_FALSE:
-    if (v.value.i)
-      return mrb->false_class;
-    return mrb->nil_class;
-  case MRB_TT_TRUE:
-    return mrb->true_class;
-  case MRB_TT_SYMBOL:
-    return mrb->symbol_class;
-  case MRB_TT_FIXNUM:
-    return mrb->fixnum_class;
-  case MRB_TT_FLOAT:
-    return mrb->float_class;
-  case MRB_TT_CPTR:
-    return mrb->object_class;
-  default:
-    return mrb_obj_ptr(v)->c;
-  }
-}
-
-#define MRB_SET_INSTANCE_TT(c, tt) c->flags = ((c->flags & ~0xff) | (char)tt)
-#define MRB_INSTANCE_TT(c) (enum mrb_vtype)(c->flags & 0xff)
-
-struct RClass* mrb_define_class_id(mrb_state*, mrb_sym, struct RClass*);
-struct RClass* mrb_define_module_id(mrb_state*, mrb_sym);
-struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
-struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
-void mrb_define_method_vm(mrb_state*, struct RClass*, mrb_sym, mrb_value);
-void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, struct RProc *);
-void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
-void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
-
-struct RClass *mrb_class_outer_module(mrb_state*, struct RClass *);
-struct RProc *mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
-struct RProc *mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
-
-struct RClass* mrb_class_real(struct RClass* cl);
-
-void mrb_gc_mark_mt(mrb_state*, struct RClass*);
-size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
-void mrb_gc_free_mt(mrb_state*, struct RClass*);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_CLASS_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/compile.h (+0 -184) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/compile.h    2014-06-08 19:01:14 +0900 (f8bb50e)
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
-** mruby/compile.h - mruby parser
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_COMPILE_H
-#define MRUBY_COMPILE_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#include "mruby.h"
-#include <setjmp.h>
-
-struct mrb_parser_state;
-/* load context */
-typedef struct mrbc_context {
-  mrb_sym *syms;
-  int slen;
-  char *filename;
-  short lineno;
-  int (*partial_hook)(struct mrb_parser_state*);
-  void *partial_data;
-  struct RClass *target_class;
-  mrb_bool capture_errors:1;
-  mrb_bool dump_result:1;
-  mrb_bool no_exec:1;
-} mrbc_context;
-
-mrbc_context* mrbc_context_new(mrb_state *mrb);
-void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt);
-const char *mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s);
-void mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*partial_hook)(struct mrb_parser_state*), void*data);
-
-/* AST node structure */
-typedef struct mrb_ast_node {
-  struct mrb_ast_node *car, *cdr;
-  uint16_t lineno, filename_index;
-} mrb_ast_node;
-
-/* lexer states */
-enum mrb_lex_state_enum {
-    EXPR_BEG,                   /* ignore newline, +/- is a sign. */
-    EXPR_END,                   /* newline significant, +/- is an operator. */
-    EXPR_ENDARG,                /* ditto, and unbound braces. */
-    EXPR_ENDFN,                 /* ditto, and unbound braces. */
-    EXPR_ARG,                   /* newline significant, +/- is an operator. */
-    EXPR_CMDARG,                /* newline significant, +/- is an operator. */
-    EXPR_MID,                   /* newline significant, +/- is an operator. */
-    EXPR_FNAME,                 /* ignore newline, no reserved words. */
-    EXPR_DOT,                   /* right after `.' or `::', no reserved words. */
-    EXPR_CLASS,                 /* immediate after `class', no here document. */
-    EXPR_VALUE,                 /* alike EXPR_BEG but label is disallowed. */
-    EXPR_MAX_STATE
-};
-
-/* saved error message */
-struct mrb_parser_message {
-  int lineno;
-  int column;
-  char* message;
-};
-
-#define STR_FUNC_PARSING 0x01
-#define STR_FUNC_EXPAND  0x02
-#define STR_FUNC_REGEXP  0x04
-#define STR_FUNC_WORD    0x08
-#define STR_FUNC_SYMBOL  0x10
-#define STR_FUNC_ARRAY   0x20
-#define STR_FUNC_HEREDOC 0x40
-#define STR_FUNC_XQUOTE  0x80
-
-enum mrb_string_type {
-  str_not_parsing  = (0),
-  str_squote   = (STR_FUNC_PARSING),
-  str_dquote   = (STR_FUNC_PARSING|STR_FUNC_EXPAND),
-  str_regexp   = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND),
-  str_sword    = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY),
-  str_dword    = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
-  str_ssym     = (STR_FUNC_PARSING|STR_FUNC_SYMBOL),
-  str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY),
-  str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
-  str_heredoc  = (STR_FUNC_PARSING|STR_FUNC_HEREDOC),
-  str_xquote   = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND),
-};
-
-/* heredoc structure */
-struct mrb_parser_heredoc_info {
-  mrb_bool allow_indent:1;
-  mrb_bool line_head:1;
-  enum mrb_string_type type;
-  const char *term;
-  int term_len;
-  mrb_ast_node *doc;
-};
-
-#ifndef MRB_PARSER_BUF_SIZE
-# define MRB_PARSER_BUF_SIZE 1024
-#endif
-
-/* parser structure */
-struct mrb_parser_state {
-  mrb_state *mrb;
-  struct mrb_pool *pool;
-  mrb_ast_node *cells;
-  const char *s, *send;
-#ifdef ENABLE_STDIO
-  FILE *f;
-#endif
-  mrbc_context *cxt;
-  char const *filename;
-  int lineno;
-  int column;
-
-  enum mrb_lex_state_enum lstate;
-  mrb_ast_node *lex_strterm; /* (type nest_level beg . end) */
-
-  unsigned int cond_stack;
-  unsigned int cmdarg_stack;
-  int paren_nest;
-  int lpar_beg;
-  int in_def, in_single, cmd_start;
-  mrb_ast_node *locals;
-
-  mrb_ast_node *pb;
-  char buf[MRB_PARSER_BUF_SIZE];
-  int bidx;
-
-  mrb_ast_node *heredocs;	/* list of mrb_parser_heredoc_info* */
-  mrb_ast_node *parsing_heredoc;
-  mrb_bool heredoc_starts_nextline:1;
-  mrb_bool heredoc_end_now:1; /* for mirb */
-
-  void *ylval;
-
-  size_t nerr;
-  size_t nwarn;
-  mrb_ast_node *tree;
-
-  int capture_errors;
-  struct mrb_parser_message error_buffer[10];
-  struct mrb_parser_message warn_buffer[10];
-
-  mrb_sym* filename_table;
-  size_t filename_table_length;
-  int current_filename_index;
-
-  jmp_buf jmp;
-};
-
-struct mrb_parser_state* mrb_parser_new(mrb_state*);
-void mrb_parser_free(struct mrb_parser_state*);
-void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*);
-
-void mrb_parser_set_filename(struct mrb_parser_state*, char const*);
-char const* mrb_parser_get_filename(struct mrb_parser_state*, uint16_t idx);
-
-/* utility functions */
-#ifdef ENABLE_STDIO
-struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*);
-#endif
-struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*);
-struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,int,mrbc_context*);
-int mrb_generate_code(mrb_state*, struct mrb_parser_state*);
-
-/* program load functions */
-#ifdef ENABLE_STDIO
-mrb_value mrb_load_file(mrb_state*,FILE*);
-#endif
-mrb_value mrb_load_string(mrb_state *mrb, const char *s);
-mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, int len);
-#ifdef ENABLE_STDIO
-mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt);
-#endif
-mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt);
-mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *cxt);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif /* MRUBY_COMPILE_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/data.h (+0 -58) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/data.h    2014-06-08 19:01:14 +0900 (f0420a0)
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-** mruby/data.h - Data class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_DATA_H
-#define MRUBY_DATA_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct mrb_data_type {
-  const char *struct_name;
-  void (*dfree)(mrb_state *mrb, void*);
-} mrb_data_type;
-
-struct RData {
-  MRB_OBJECT_HEADER;
-  struct iv_tbl *iv;
-  const mrb_data_type *type;
-  void *data;
-};
-
-struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *datap, const mrb_data_type *type);
-
-#define Data_Wrap_Struct(mrb,klass,type,ptr)\
-  mrb_data_object_alloc(mrb,klass,ptr,type)
-
-#define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \
-  sval = mrb_malloc(mrb, sizeof(strct));                     \
-  { static const strct zero = { 0 }; *sval = zero; };\
-  data = Data_Wrap_Struct(mrb,klass,type,sval);\
-} while (0)
-
-#define RDATA(obj)         ((struct RData *)(mrb_ptr(obj)))
-#define DATA_PTR(d)        (RDATA(d)->data)
-#define DATA_TYPE(d)       (RDATA(d)->type)
-void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*);
-void *mrb_data_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
-#define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype)
-void *mrb_data_check_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
-#define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype)
-
-/* obsolete functions and macros */
-#define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype)
-#define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
-#define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
-#define Data_Get_Struct(mrb,obj,type,sval) do {\
-  *(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \
-} while (0)
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif /* MRUBY_DATA_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/debug.h (+0 -65) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/debug.h    2014-06-08 19:01:14 +0900 (2e358a4)
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-** mruby/debug.h - mruby debug info
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_DEBUG_H
-#define MRUBY_DEBUG_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef enum mrb_debug_line_type {
-  mrb_debug_line_ary = 0,
-  mrb_debug_line_flat_map = 1
-} mrb_debug_line_type;
-
-typedef struct mrb_irep_debug_info_line {
-  uint32_t start_pos;
-  uint16_t line;
-} mrb_irep_debug_info_line;
-
-typedef struct mrb_irep_debug_info_file {
-  uint32_t start_pos;
-  const char *filename;
-  mrb_sym filename_sym;
-  uint32_t line_entry_count;
-  mrb_debug_line_type line_type;
-  union {
-    void *line_ptr;
-    mrb_irep_debug_info_line *line_flat_map;
-    uint16_t *line_ary;
-  };
-} mrb_irep_debug_info_file;
-
-typedef struct mrb_irep_debug_info {
-  uint32_t pc_count;
-  uint16_t flen;
-  mrb_irep_debug_info_file **files;
-} mrb_irep_debug_info;
-
-/*
- * get line from irep's debug info and program counter
- * @return returns NULL if not found
- */
-const char *mrb_debug_get_filename(mrb_irep *irep, uint32_t pc);
-
-/*
- * get line from irep's debug info and program counter
- * @return returns -1 if not found
- */
-int32_t mrb_debug_get_line(mrb_irep *irep, uint32_t pc);
-
-mrb_irep_debug_info_file *mrb_debug_info_append_file(
-    mrb_state *mrb, mrb_irep *irep,
-    uint32_t start_pos, uint32_t end_pos);
-mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
-void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif /* MRUBY_DEBUG_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/dump.h (+0 -159) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/dump.h    2014-06-08 19:01:14 +0900 (e75be9f)
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-** mruby/dump.h - mruby binary dumper (mrbc binary format)
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_DUMP_H
-#define MRUBY_DUMP_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#include "mruby.h"
-
-#ifdef ENABLE_STDIO
-int mrb_dump_irep_binary(mrb_state*, size_t, int, FILE*);
-int mrb_dump_irep_cfunc(mrb_state *mrb, size_t n, int, FILE *f, const char *initname);
-int32_t mrb_read_irep_file(mrb_state*, FILE*);
-#endif
-int32_t mrb_read_irep(mrb_state*, const uint8_t*);
-
-#ifdef ENABLE_STDIO
-mrb_value mrb_load_irep_file(mrb_state*,FILE*);
-#endif
-
-/* dump/load error code
- *
- * NOTE: MRB_DUMP_GENERAL_FAILURE is caused by
- * unspecified issues like malloc failed.
- */
-#define MRB_DUMP_OK                   0
-#define MRB_DUMP_GENERAL_FAILURE      -1
-#define MRB_DUMP_WRITE_FAULT          -2
-#define MRB_DUMP_READ_FAULT           -3
-#define MRB_DUMP_CRC_ERROR            -4
-#define MRB_DUMP_INVALID_FILE_HEADER  -5
-#define MRB_DUMP_INVALID_IREP         -6
-#define MRB_DUMP_INVALID_ARGUMENT     -7
-
-/* null symbol length */
-#define MRB_DUMP_NULL_SYM_LEN         0xFFFF
-
-/* Rite Binary File header */
-#define RITE_BINARY_IDENTIFIER         "RITE"
-#define RITE_BINARY_FORMAT_VER         "0001"
-#define RITE_COMPILER_NAME             "MATZ"
-#define RITE_COMPILER_VERSION          "0000"
-
-#define RITE_VM_VER                    "0000"
-
-#define RITE_BINARY_EOF                "END\0"
-#define RITE_SECTION_IREP_IDENTIFIER   "IREP"
-#define RITE_SECTION_LINENO_IDENTIFIER "LINE"
-#define RITE_SECTION_DEBUG_IDENTIFIER  "DBG\0"
-
-#define MRB_DUMP_DEFAULT_STR_LEN      128
-
-// binary header
-struct rite_binary_header {
-  uint8_t binary_identify[4]; // Binary Identifier
-  uint8_t binary_version[4];  // Binary Format Version
-  uint8_t binary_crc[2];      // Binary CRC
-  uint8_t binary_size[4];     // Binary Size
-  uint8_t compiler_name[4];   // Compiler name
-  uint8_t compiler_version[4];
-};
-
-// section header
-#define RITE_SECTION_HEADER \
-  uint8_t section_identify[4]; \
-  uint8_t section_size[4]
-
-struct rite_section_header {
-  RITE_SECTION_HEADER;
-};
-
-struct rite_section_irep_header {
-  RITE_SECTION_HEADER;
-
-  uint8_t rite_version[4];    // Rite Instruction Specification Version
-  uint8_t nirep[2];           // Number of ireps
-  uint8_t sirep[2];           // Start index
-};
-
-struct rite_section_lineno_header {
-  RITE_SECTION_HEADER;
-
-  uint8_t nirep[2];           // Number of ireps
-  uint8_t sirep[2];           // Start index
-};
-
-struct rite_section_debug_header {
-  RITE_SECTION_HEADER;
-
-  uint8_t nirep[2];           // Number of ireps
-  uint8_t sirep[2];           // Start index
-};
-
-struct rite_binary_footer {
-  RITE_SECTION_HEADER;
-};
-
-static inline int
-uint8_to_bin(uint8_t s, uint8_t *bin)
-{
-  *bin = s;
-  return sizeof(uint8_t);
-}
-
-static inline int
-uint16_to_bin(uint16_t s, uint8_t *bin)
-{
-  *bin++ = (s >> 8) & 0xff;
-  *bin   = s & 0xff;
-  return sizeof(uint16_t);
-}
-
-static inline int
-uint32_to_bin(uint32_t l, uint8_t *bin)
-{
-  *bin++ = (l >> 24) & 0xff;
-  *bin++ = (l >> 16) & 0xff;
-  *bin++ = (l >> 8) & 0xff;
-  *bin   = l & 0xff;
-  return sizeof(uint32_t);
-}
-
-static inline uint32_t
-bin_to_uint32(const uint8_t *bin)
-{
-  return (uint32_t)bin[0] << 24 |
-         (uint32_t)bin[1] << 16 |
-         (uint32_t)bin[2] << 8  |
-         (uint32_t)bin[3];
-}
-
-static inline uint16_t
-bin_to_uint16(const uint8_t *bin)
-{
-  return (uint16_t)bin[0] << 8 |
-         (uint16_t)bin[1];
-}
-
-static inline uint8_t
-bin_to_uint8(const uint8_t *bin)
-{
-  return (uint8_t)bin[0];
-}
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-/* crc.c */
-uint16_t
-calc_crc_16_ccitt(const uint8_t *src, size_t nbytes, uint16_t crc);
-
-#endif  /* MRUBY_DUMP_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/gc.h (+0 -17) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/gc.h    2014-06-08 19:01:14 +0900 (7afa24b)
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-** gc.h - garbage collector for mruby
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_GC_H
-#define MRUBY_GC_H
-
-#include "mruby.h"
-#include "mruby/value.h"
-
-typedef void (each_object_callback)(mrb_state *mrb, struct RBasic* obj, void *data);
-void mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data);
-void mrb_free_context(mrb_state *mrb, struct mrb_context *c);
-
-#endif  /* MRUBY_GC_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/hash.h (+0 -54) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/hash.h    2014-06-08 19:01:14 +0900 (ba3f84c)
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-** mruby/hash.h - Hash class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_HASH_H
-#define MRUBY_HASH_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-struct RHash {
-  MRB_OBJECT_HEADER;
-  struct iv_tbl *iv;
-  struct kh_ht *ht;
-};
-
-#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
-#define mrb_hash_value(p)  mrb_obj_value((void*)(p))
-
-mrb_value mrb_hash_new_capa(mrb_state*, int);
-mrb_value mrb_hash_new(mrb_state *mrb);
-
-void mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val);
-mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key);
-mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def);
-mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key);
-mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash);
-mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash);
-mrb_value mrb_hash_empty_p(mrb_state *mrb, mrb_value self);
-mrb_value mrb_hash_clear(mrb_state *mrb, mrb_value hash);
-
-/* RHASH_TBL allocates st_table if not available. */
-#define RHASH(obj)   ((struct RHash*)(mrb_ptr(obj)))
-#define RHASH_TBL(h)          (RHASH(h)->ht)
-#define RHASH_IFNONE(h)       mrb_iv_get(mrb, (h), mrb_intern2(mrb, "ifnone", 6))
-#define RHASH_PROCDEFAULT(h)  RHASH_IFNONE(h)
-struct kh_ht * mrb_hash_tbl(mrb_state *mrb, mrb_value hash);
-
-#define MRB_HASH_PROC_DEFAULT 256
-#define MRB_RHASH_PROCDEFAULT_P(h) (RHASH(h)->flags & MRB_HASH_PROC_DEFAULT)
-
-/* GC functions */
-void mrb_gc_mark_hash(mrb_state*, struct RHash*);
-size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
-void mrb_gc_free_hash(mrb_state*, struct RHash*);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_HASH_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/irep.h (+0 -42) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/irep.h    2014-06-08 19:01:14 +0900 (56e043e)
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-** mruby/irep.h - mrb_irep structure
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_IREP_H
-#define MRUBY_IREP_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/* Program data array struct */
-typedef struct mrb_irep {
-  uint32_t idx;
-  uint16_t nlocals;        /* Number of local variables */
-  uint16_t nregs;          /* Number of register variables */
-  uint8_t flags;
-
-  mrb_code *iseq;
-  mrb_value *pool;
-  mrb_sym *syms;
-
-  /* debug info */
-  const char *filename;
-  uint16_t *lines;
-  struct mrb_irep_debug_info* debug_info;
-
-  size_t ilen, plen, slen;
-} mrb_irep;
-
-#define MRB_ISEQ_NO_FREE 1
-
-mrb_irep *mrb_add_irep(mrb_state *mrb);
-mrb_value mrb_load_irep(mrb_state*, const uint8_t*);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_IREP_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/khash.h (+0 -257) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/khash.h    2014-06-08 19:01:14 +0900 (fb11586)
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
-** mruby/khash.c - Hash for mruby
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef KHASH_H
-#define KHASH_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#include "mruby.h"
-#include <string.h>
-
-typedef uint32_t khint_t;
-typedef khint_t khiter_t;
-
-#ifndef KHASH_DEFAULT_SIZE
-# define KHASH_DEFAULT_SIZE 32
-#endif
-#define KHASH_MIN_SIZE 8
-
-#define UPPER_BOUND(x) ((x)>>2|(x)>>1)
-
-//extern uint8_t __m[];
-
-/* mask for flags */
-static const uint8_t __m_empty[8]  = {0x02, 0x08, 0x20, 0x80};
-static const uint8_t __m_del[8]    = {0x01, 0x04, 0x10, 0x40};
-static const uint8_t __m_either[8] = {0x03, 0x0c, 0x30, 0xc0};
-
-
-#define __ac_isempty(ed_flag, i) (ed_flag[(i)/4]&__m_empty[(i)%4])
-#define __ac_isdel(ed_flag, i) (ed_flag[(i)/4]&__m_del[(i)%4])
-#define __ac_iseither(ed_flag, i) (ed_flag[(i)/4]&__m_either[(i)%4])
-#define khash_power2(v) do { \
-  v--;\
-  v |= v >> 1;\
-  v |= v >> 2;\
-  v |= v >> 4;\
-  v |= v >> 8;\
-  v |= v >> 16;\
-  v++;\
-} while (0)
-
-/* declare struct kh_xxx and kh_xxx_funcs
-
-   name: hash name
-   khkey_t: key data type
-   khval_t: value data type
-   kh_is_map: (not implemented / not used in RiteVM)
-*/
-#define KHASH_DECLARE(name, khkey_t, khval_t, kh_is_map)                \
-  typedef struct kh_##name {                                            \
-    khint_t n_buckets;                                                  \
-    khint_t size;                                                       \
-    khint_t n_occupied;                                                 \
-    khint_t upper_bound;                                                \
-    uint8_t *ed_flags;                                                  \
-    khkey_t *keys;                                                      \
-    khval_t *vals;                                                      \
-    khint_t mask;                                                       \
-    khint_t inc;                                                        \
-    mrb_state *mrb;                                                     \
-  } kh_##name##_t;                                                      \
-  void kh_alloc_##name(kh_##name##_t *h);                               \
-  kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size);   \
-  kh_##name##_t *kh_init_##name(mrb_state *mrb);                        \
-  void kh_destroy_##name(kh_##name##_t *h);                             \
-  void kh_clear_##name(kh_##name##_t *h);                               \
-  khint_t kh_get_##name(kh_##name##_t *h, khkey_t key);                 \
-  khint_t kh_put_##name(kh_##name##_t *h, khkey_t key);                 \
-  void kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets);       \
-  void kh_del_##name(kh_##name##_t *h, khint_t x);                      \
-  kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h);
-
-static inline void
-kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
-{
-  while (len-- > 0) {
-    *p++ = c;
-  }
-}
-
-/* define kh_xxx_funcs
-
-   name: hash name
-   khkey_t: key data type
-   khval_t: value data type
-   kh_is_map: (not implemented / not used in RiteVM)
-   __hash_func: hash function
-   __hash_equal: hash comparation function
-*/
-#define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
-  void kh_alloc_##name(kh_##name##_t *h)                                \
-  {                                                                     \
-    khint_t sz = h->n_buckets;                                          \
-    uint8_t *p = mrb_malloc(h->mrb, sizeof(uint8_t)*sz/4+(sizeof(khkey_t)+sizeof(khval_t))*sz); \
-    h->size = h->n_occupied = 0;                                        \
-    h->upper_bound = UPPER_BOUND(sz);                                   \
-    h->keys = (khkey_t *)p;                                             \
-    h->vals = (khval_t *)(p+sizeof(khkey_t)*sz);                        \
-    h->ed_flags = (p+sizeof(khkey_t)*sz+sizeof(khval_t)*sz);            \
-    kh_fill_flags(h->ed_flags, 0xaa, sz/4);                             \
-    h->mask = sz-1;                                                     \
-    h->inc = sz/2-1;                                                    \
-  }                                                                     \
-  kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size) {  \
-    kh_##name##_t *h = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
-    if (size < KHASH_MIN_SIZE)                                          \
-      size = KHASH_MIN_SIZE;                                            \
-    khash_power2(size);                                                 \
-    h->n_buckets = size;                                                \
-    h->mrb = mrb;                                                       \
-    kh_alloc_##name(h);                                                 \
-    return h;                                                           \
-  }                                                                     \
-  kh_##name##_t *kh_init_##name(mrb_state *mrb){                        \
-    return kh_init_##name##_size(mrb, KHASH_DEFAULT_SIZE);              \
-  }                                                                     \
-  void kh_destroy_##name(kh_##name##_t *h)                              \
-  {                                                                     \
-    if (h) {                                                            \
-      mrb_free(h->mrb, h->keys);                                        \
-      mrb_free(h->mrb, h);                                              \
-    }                                                                   \
-  }                                                                     \
-  void kh_clear_##name(kh_##name##_t *h)                                \
-  {                                                                     \
-    if (h && h->ed_flags) {                                             \
-      kh_fill_flags(h->ed_flags, 0xaa, h->n_buckets/4);                 \
-      h->size = h->n_occupied = 0;                                      \
-    }                                                                   \
-  }                                                                     \
-  khint_t kh_get_##name(kh_##name##_t *h, khkey_t key)                  \
-  {                                                                     \
-    khint_t k = __hash_func(h->mrb,key) & (h->mask);                    \
-    while (!__ac_isempty(h->ed_flags, k)) {                             \
-      if (!__ac_isdel(h->ed_flags, k)) {                                \
-        if (__hash_equal(h->mrb,h->keys[k], key)) return k;             \
-      }                                                                 \
-      k = (k+h->inc) & (h->mask);                                       \
-    }                                                                   \
-    return h->n_buckets;                                                \
-  }                                                                     \
-  void kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets)        \
-  {                                                                     \
-    if (new_n_buckets < KHASH_MIN_SIZE)                                 \
-      new_n_buckets = KHASH_MIN_SIZE;                                   \
-    khash_power2(new_n_buckets);                                        \
-    {                                                                   \
-      uint8_t *old_ed_flags = h->ed_flags;                              \
-      khkey_t *old_keys = h->keys;                                      \
-      khval_t *old_vals = h->vals;                                      \
-      khint_t old_n_buckets = h->n_buckets;                             \
-      khint_t i;                                                        \
-      h->n_buckets = new_n_buckets;                                     \
-      kh_alloc_##name(h);                                               \
-      /* relocate */                                                    \
-      for (i=0 ; i<old_n_buckets ; i++) {                               \
-        if (!__ac_iseither(old_ed_flags, i)) {                          \
-          khint_t k = kh_put_##name(h, old_keys[i]);                    \
-          kh_value(h,k) = old_vals[i];                                  \
-        }                                                               \
-      }                                                                 \
-      mrb_free(h->mrb, old_keys);                                       \
-    }                                                                   \
-  }                                                                     \
-  khint_t kh_put_##name(kh_##name##_t *h, khkey_t key)                  \
-  {                                                                     \
-    khint_t k;                                                          \
-    if (h->n_occupied >= h->upper_bound) {                              \
-      kh_resize_##name(h, h->n_buckets*2);                              \
-    }                                                                   \
-    k = __hash_func(h->mrb,key) & (h->mask);                            \
-    while (!__ac_iseither(h->ed_flags, k)) {                            \
-      if (__hash_equal(h->mrb,h->keys[k], key)) break;                  \
-      k = (k+h->inc) & (h->mask);                                       \
-    }                                                                   \
-    if (__ac_isempty(h->ed_flags, k)) {                                 \
-      /* put at empty */                                                \
-      h->keys[k] = key;                                                 \
-      h->ed_flags[k/4] &= ~__m_empty[k%4];                              \
-      h->size++;                                                        \
-      h->n_occupied++;                                                  \
-    } else if (__ac_isdel(h->ed_flags, k)) {                            \
-      /* put at del */                                                  \
-      h->keys[k] = key;                                                 \
-      h->ed_flags[k/4] &= ~__m_del[k%4];                                \
-      h->size++;                                                        \
-    }                                                                   \
-    return k;                                                           \
-  }                                                                     \
-  void kh_del_##name(kh_##name##_t *h, khint_t x)                       \
-  {                                                                     \
-    h->ed_flags[x/4] |= __m_del[x%4];                                   \
-    h->size--;                                                          \
-  }                                                                     \
-  kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h)       \
-  {                                                                     \
-    kh_##name##_t *h2;                                                  \
-    khiter_t k, k2;                                                     \
-                                                                        \
-    h2 = kh_init_##name(mrb);                                           \
-    for (k = kh_begin(h); k != kh_end(h); k++) {                        \
-      if (kh_exist(h, k)) {                                             \
-        k2 = kh_put_##name(h2, kh_key(h, k));                           \
-        kh_value(h2, k2) = kh_value(h, k);                              \
-      }                                                                 \
-    }                                                                   \
-    return h2;                                                          \
-  }
-
-
-#define khash_t(name) kh_##name##_t
-
-#define kh_init_size(name,mrb,size) kh_init_##name##_size(mrb,size)
-#define kh_init(name,mrb) kh_init_##name(mrb)
-#define kh_destroy(name, h) kh_destroy_##name(h)
-#define kh_clear(name, h) kh_clear_##name(h)
-#define kh_resize(name, h, s) kh_resize_##name(h, s)
-#define kh_put(name, h, k) kh_put_##name(h, k)
-#define kh_get(name, h, k) kh_get_##name(h, k)
-#define kh_del(name, h, k) kh_del_##name(h, k)
-#define kh_copy(name, mrb, h) kh_copy_##name(mrb, h)
-
-#define kh_exist(h, x) (!__ac_iseither((h)->ed_flags, (x)))
-#define kh_key(h, x) ((h)->keys[x])
-#define kh_val(h, x) ((h)->vals[x])
-#define kh_value(h, x) ((h)->vals[x])
-#define kh_begin(h) (khint_t)(0)
-#define kh_end(h) ((h)->n_buckets)
-#define kh_size(h) ((h)->size)
-#define kh_n_buckets(h) ((h)->n_buckets)
-
-#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
-#define kh_int_hash_equal(mrb,a, b) (a == b)
-#define kh_int64_hash_func(mrb,key) (khint_t)((key)>>33^(key)^(key)<<11)
-#define kh_int64_hash_equal(mrb,a, b) (a == b)
-static inline khint_t __ac_X31_hash_string(const char *s)
-{
-    khint_t h = *s;
-    if (h) for (++s ; *s; ++s) h = (h << 5) - h + *s;
-    return h;
-}
-#define kh_str_hash_func(mrb,key) __ac_X31_hash_string(key)
-#define kh_str_hash_equal(mrb,a, b) (strcmp(a, b) == 0)
-
-typedef const char *kh_cstr_t;
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* KHASH_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/numeric.h (+0 -32) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/numeric.h    2014-06-08 19:01:14 +0900 (aac7b99)
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-** mruby/numeric.h - Numeric, Integer, Float, Fixnum class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_NUMERIC_H
-#define MRUBY_NUMERIC_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define POSFIXABLE(f) ((f) <= MRB_INT_MAX)
-#define NEGFIXABLE(f) ((f) >= MRB_INT_MIN)
-#define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f))
-
-mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val);
-mrb_value mrb_flo_to_str(mrb_state *mrb, mrb_value flo, int max_digit);
-
-mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, int base);
-
-mrb_value mrb_fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y);
-mrb_value mrb_fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y);
-mrb_value mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y);
-mrb_value mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_NUMERIC_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/proc.h (+0 -62) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/proc.h    2014-06-08 19:01:14 +0900 (602b522)
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-** mruby/proc.h - Proc class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_PROC_H
-#define MRUBY_PROC_H
-
-#include "mruby/irep.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-struct REnv {
-  MRB_OBJECT_HEADER;
-  mrb_value *stack;
-  mrb_sym mid;
-  int cioff;
-};
-
-struct RProc {
-  MRB_OBJECT_HEADER;
-  union {
-    mrb_irep *irep;
-    mrb_func_t func;
-  } body;
-  struct RClass *target_class;
-  struct REnv *env;
-};
-
-/* aspec access */
-#define MRB_ASPEC_REQ(a)          (((a) >> 18) & 0x1f)
-#define MRB_ASPEC_OPT(a)          (((a) >> 13) & 0x1f)
-#define MRB_ASPEC_REST(a)         ((a) & (1<<12))
-#define MRB_ASPEC_POST(a)         (((a) >> 7) & 0x1f)
-#define MRB_ASPEC_KEY(a)          (((a) >> 2) & 0x1f)
-#define MRB_ASPEC_KDICT(a)        ((a) & (1<<1))
-#define MRB_ASPEC_BLOCK(a)        ((a) & 1)
-
-#define MRB_PROC_CFUNC 128
-#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC) != 0)
-#define MRB_PROC_STRICT 256
-#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
-
-#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
-
-struct RProc *mrb_proc_new(mrb_state*, mrb_irep*);
-struct RProc *mrb_proc_new_cfunc(mrb_state*, mrb_func_t);
-struct RProc *mrb_closure_new(mrb_state*, mrb_irep*);
-struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals);
-void mrb_proc_copy(struct RProc *a, struct RProc *b);
-
-#include "mruby/khash.h"
-KHASH_DECLARE(mt, mrb_sym, struct RProc*, 1)
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_PROC_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/range.h (+0 -35) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/range.h    2014-06-08 19:01:14 +0900 (6030410)
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-** mruby/range.h - Range class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_RANGE_H
-#define MRUBY_RANGE_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct mrb_range_edges {
-  mrb_value beg;
-  mrb_value end;
-} mrb_range_edges;
-
-struct RRange {
-  MRB_OBJECT_HEADER;
-  mrb_range_edges *edges;
-  int excl;
-};
-
-#define mrb_range_ptr(v)    ((struct RRange*)(mrb_ptr(v)))
-#define mrb_range_value(p)  mrb_obj_value((void*)(p))
-
-mrb_value mrb_range_new(mrb_state*, mrb_value, mrb_value, int);
-mrb_int mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_RANGE_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/string.h (+0 -79) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/string.h    2014-06-08 19:01:14 +0900 (727d956)
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-** mruby/string.h - String class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_STRING_H
-#define MRUBY_STRING_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define IS_EVSTR(p,e) ((p) < (e) && (*(p) == '$' || *(p) == '@' || *(p) == '{'))
-
-extern const char mrb_digitmap[];
-
-struct RString {
-  MRB_OBJECT_HEADER;
-  mrb_int len;
-  union {
-    mrb_int capa;
-    struct mrb_shared_string *shared;
-  } aux;
-  char *ptr;
-};
-
-#define mrb_str_ptr(s)    ((struct RString*)(mrb_ptr(s)))
-#define RSTRING(s)        ((struct RString*)(mrb_ptr(s)))
-#define RSTRING_PTR(s)    (RSTRING(s)->ptr)
-#define RSTRING_LEN(s)    (RSTRING(s)->len)
-#define RSTRING_CAPA(s)   (RSTRING(s)->aux.capa)
-#define RSTRING_END(s)    (RSTRING(s)->ptr + RSTRING(s)->len)
-
-void mrb_gc_free_str(mrb_state*, struct RString*);
-void mrb_str_modify(mrb_state*, struct RString*);
-mrb_value mrb_str_literal(mrb_state*, mrb_value);
-void mrb_str_concat(mrb_state*, mrb_value, mrb_value);
-mrb_value mrb_str_plus(mrb_state*, mrb_value, mrb_value);
-mrb_value mrb_ptr_to_str(mrb_state *, void*);
-mrb_value mrb_obj_as_string(mrb_state *mrb, mrb_value obj);
-mrb_value mrb_str_resize(mrb_state *mrb, mrb_value str, mrb_int len);
-mrb_value mrb_str_substr(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len);
-mrb_value mrb_string_type(mrb_state *mrb, mrb_value str);
-mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_buf_new(mrb_state *mrb, mrb_int capa);
-mrb_value mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len);
-
-char *mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr);
-char *mrb_string_value_ptr(mrb_state *mrb, mrb_value ptr);
-int mrb_str_offset(mrb_state *mrb, mrb_value str, int pos);
-mrb_value mrb_str_dup(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_intern(mrb_state *mrb, mrb_value self);
-mrb_value mrb_str_cat_cstr(mrb_state *, mrb_value, const char *);
-mrb_value mrb_str_to_inum(mrb_state *mrb, mrb_value str, int base, int badcheck);
-double mrb_str_to_dbl(mrb_state *mrb, mrb_value str, int badcheck);
-mrb_value mrb_str_to_str(mrb_state *mrb, mrb_value str);
-mrb_int mrb_str_hash(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_buf_append(mrb_state *mrb, mrb_value str, mrb_value str2);
-mrb_value mrb_str_inspect(mrb_state *mrb, mrb_value str);
-mrb_bool mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2);
-mrb_value mrb_str_dump(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len);
-mrb_value mrb_str_append(mrb_state *mrb, mrb_value str, mrb_value str2);
-
-int mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2);
-char *mrb_str_to_cstr(mrb_state *mrb, mrb_value str);
-
-/* For backward compatibility */
-static inline mrb_value
-mrb_str_cat2(mrb_state *mrb, mrb_value str, const char *ptr) {
-  return mrb_str_cat_cstr(mrb, str, ptr);
-}
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_STRING_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/value.h (+0 -507) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/value.h    2014-06-08 19:01:14 +0900 (c48c916)
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
-** mruby/value.h - mrb_value definition
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_VALUE_H
-#define MRUBY_VALUE_H
-
-#ifdef MRB_USE_FLOAT
-  typedef float mrb_float;
-# define mrb_float_to_str(buf, i) sprintf(buf, "%.7e", i)
-# define str_to_mrb_float(buf) strtof(buf, NULL)
-#else
-  typedef double mrb_float;
-# define mrb_float_to_str(buf, i) sprintf(buf, "%.16e", i)
-# define str_to_mrb_float(buf) strtod(buf, NULL)
-#endif
-
-#if defined(MRB_INT16) && defined(MRB_INT64)
-# error "You can't define MRB_INT16 and MRB_INT64 at the same time."
-#endif
-
-#if defined(MRB_INT64)
-# ifdef MRB_NAN_BOXING
-#  error Cannot use NaN boxing when mrb_int is 64bit
-# else
-   typedef int64_t mrb_int;
-#  define MRB_INT_MIN INT64_MIN
-#  define MRB_INT_MAX INT64_MAX
-#  define PRIdMRB_INT PRId64
-#  define PRIiMRB_INT PRIi64
-#  define PRIoMRB_INT PRIo64
-#  define PRIxMRB_INT PRIx64
-#  define PRIXMRB_INT PRIX64
-# endif
-#elif defined(MRB_INT16)
-  typedef int16_t mrb_int;
-# define MRB_INT_MIN INT16_MIN
-# define MRB_INT_MAX INT16_MAX
-#else
-  typedef int32_t mrb_int;
-# define MRB_INT_MIN INT32_MIN
-# define MRB_INT_MAX INT32_MAX
-# define PRIdMRB_INT PRId32
-# define PRIiMRB_INT PRIi32
-# define PRIoMRB_INT PRIo32
-# define PRIxMRB_INT PRIx32
-# define PRIXMRB_INT PRIX32
-#endif
-typedef short mrb_sym;
-
-#ifdef _MSC_VER
-# ifndef __cplusplus
-#  define inline __inline
-# endif
-# define snprintf _snprintf
-# if _MSC_VER < 1800
-#  include <float.h>
-#  define isnan _isnan
-#  define isinf(n) (!_finite(n) && !_isnan(n))
-#  define strtoll _strtoi64
-#  define strtof (float)strtod
-#  define PRId32 "I32d"
-#  define PRIi32 "I32i"
-#  define PRIo32 "I32o"
-#  define PRIx32 "I32x"
-#  define PRIX32 "I32X"
-#  define PRId64 "I64d"
-#  define PRIi64 "I64i"
-#  define PRIo64 "I64o"
-#  define PRIx64 "I64x"
-#  define PRIX64 "I64X"
-# else
-#  include <inttypes.h>
-# endif
-#else
-# include <inttypes.h>
-#endif
-
-typedef uint8_t mrb_bool;
-struct mrb_state;
-
-#if defined(MRB_NAN_BOXING)
-
-#ifdef MRB_USE_FLOAT
-# error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT conflict <<----
-#endif
-
-#ifdef MRB_INT64
-# error ---->> MRB_NAN_BOXING and MRB_INT64 conflict <<----
-#endif
-
-enum mrb_vtype {
-  MRB_TT_FALSE = 1,   /*   1 */
-  MRB_TT_FREE,        /*   2 */
-  MRB_TT_TRUE,        /*   3 */
-  MRB_TT_FIXNUM,      /*   4 */
-  MRB_TT_SYMBOL,      /*   5 */
-  MRB_TT_UNDEF,       /*   6 */
-  MRB_TT_FLOAT,       /*   7 */
-  MRB_TT_CPTR,       /*   8 */
-  MRB_TT_OBJECT,      /*   9 */
-  MRB_TT_CLASS,       /*  10 */
-  MRB_TT_MODULE,      /*  11 */
-  MRB_TT_ICLASS,      /*  12 */
-  MRB_TT_SCLASS,      /*  13 */
-  MRB_TT_PROC,        /*  14 */
-  MRB_TT_ARRAY,       /*  15 */
-  MRB_TT_HASH,        /*  16 */
-  MRB_TT_STRING,      /*  17 */
-  MRB_TT_RANGE,       /*  18 */
-  MRB_TT_EXCEPTION,   /*  19 */
-  MRB_TT_FILE,        /*  20 */
-  MRB_TT_ENV,         /*  21 */
-  MRB_TT_DATA,        /*  22 */
-  MRB_TT_FIBER,       /*  23 */
-  MRB_TT_MAXDEFINE    /*  24 */
-};
-
-#define MRB_TT_HAS_BASIC  MRB_TT_OBJECT
-
-#ifdef MRB_ENDIAN_BIG
-#define MRB_ENDIAN_LOHI(a,b) a b
-#else
-#define MRB_ENDIAN_LOHI(a,b) b a
-#endif
-
-typedef struct mrb_value {
-  union {
-    mrb_float f;
-    union {
-      void *p;
-      struct {
-	MRB_ENDIAN_LOHI(
- 	  uint32_t ttt;
-          ,union {
-	    mrb_int i;
-	    mrb_sym sym;
-	  };
-        )
-      };
-    } value;
-  };
-} mrb_value;
-
-/* value representation by nan-boxing:
- *   float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
- *   object: 111111111111TTTT TTPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP
- *   int   : 1111111111110001 0000000000000000 IIIIIIIIIIIIIIII IIIIIIIIIIIIIIII
- *   sym   : 1111111111110001 0100000000000000 SSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSS
- * In order to get enough bit size to save TT, all pointers are shifted 2 bits
- * in the right direction.
- */
-#define mrb_tt(o)       (((o).value.ttt & 0xfc000)>>14)
-#define mrb_mktt(tt)    (0xfff00000|((tt)<<14))
-#define mrb_type(o)     ((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT)
-#define mrb_ptr(o)      ((void*)((((intptr_t)0x3fffffffffff)&((intptr_t)((o).value.p)))<<2))
-#define mrb_float(o)    (o).f
-
-#define MRB_SET_VALUE(o, tt, attr, v) do {\
-  (o).value.ttt = mrb_mktt(tt);\
-  switch (tt) {\
-  case MRB_TT_FALSE:\
-  case MRB_TT_TRUE:\
-  case MRB_TT_UNDEF:\
-  case MRB_TT_FIXNUM:\
-  case MRB_TT_SYMBOL: (o).attr = (v); break;\
-  default: (o).value.i = 0; (o).value.p = (void*)((intptr_t)(o).value.p | (((intptr_t)(v))>>2)); break;\
-  }\
-} while (0)
-
-static inline mrb_value
-mrb_float_value(struct mrb_state *mrb, mrb_float f)
-{
-  mrb_value v;
-
-  if (f != f) {
-    v.value.ttt = 0x7ff80000;
-    v.value.i = 0;
-  } else {
-    v.f = f;
-  }
-  return v;
-}
-
-#else
-
-enum mrb_vtype {
-  MRB_TT_FALSE = 0,   /*   0 */
-  MRB_TT_FREE,        /*   1 */
-  MRB_TT_TRUE,        /*   2 */
-  MRB_TT_FIXNUM,      /*   3 */
-  MRB_TT_SYMBOL,      /*   4 */
-  MRB_TT_UNDEF,       /*   5 */
-  MRB_TT_FLOAT,       /*   6 */
-  MRB_TT_CPTR,       /*   7 */
-  MRB_TT_OBJECT,      /*   8 */
-  MRB_TT_CLASS,       /*   9 */
-  MRB_TT_MODULE,      /*  10 */
-  MRB_TT_ICLASS,      /*  11 */
-  MRB_TT_SCLASS,      /*  12 */
-  MRB_TT_PROC,        /*  13 */
-  MRB_TT_ARRAY,       /*  14 */
-  MRB_TT_HASH,        /*  15 */
-  MRB_TT_STRING,      /*  16 */
-  MRB_TT_RANGE,       /*  17 */
-  MRB_TT_EXCEPTION,   /*  18 */
-  MRB_TT_FILE,        /*  19 */
-  MRB_TT_ENV,         /*  20 */
-  MRB_TT_DATA,        /*  21 */
-  MRB_TT_FIBER,       /*  22 */
-  MRB_TT_MAXDEFINE    /*  23 */
-};
-
-#if defined(MRB_WORD_BOXING)
-
-#define MRB_TT_HAS_BASIC  MRB_TT_FLOAT
-
-enum mrb_special_consts {
-  MRB_Qnil    = 0,
-  MRB_Qfalse  = 2,
-  MRB_Qtrue   = 4,
-  MRB_Qundef  = 6,
-};
-
-#define MRB_FIXNUM_FLAG   0x01
-#define MRB_FIXNUM_SHIFT  1
-#define MRB_SYMBOL_FLAG   0x0e
-#define MRB_SPECIAL_SHIFT 8
-
-typedef union mrb_value {
-  union {
-    void *p;
-    struct {
-      unsigned int i_flag : MRB_FIXNUM_SHIFT;
-      mrb_int i : (sizeof(mrb_int) * CHAR_BIT - MRB_FIXNUM_SHIFT);
-    };
-    struct {
-      unsigned int sym_flag : MRB_SPECIAL_SHIFT;
-      int sym : (sizeof(mrb_sym) * CHAR_BIT);
-    };
-    struct RBasic *bp;
-    struct RFloat *fp;
-    struct RCptr *vp;
-  } value;
-  unsigned long w;
-} mrb_value;
-
-#define mrb_ptr(o)      (o).value.p
-#define mrb_float(o)    (o).value.fp->f
-
-#define MRB_SET_VALUE(o, ttt, attr, v) do {\
-  (o).w = 0;\
-  (o).attr = (v);\
-  switch (ttt) {\
-  case MRB_TT_FALSE:  (o).w = (v) ? MRB_Qfalse : MRB_Qnil; break;\
-  case MRB_TT_TRUE:   (o).w = MRB_Qtrue; break;\
-  case MRB_TT_UNDEF:  (o).w = MRB_Qundef; break;\
-  case MRB_TT_FIXNUM: (o).value.i_flag = MRB_FIXNUM_FLAG; break;\
-  case MRB_TT_SYMBOL: (o).value.sym_flag = MRB_SYMBOL_FLAG; break;\
-  default:            if ((o).value.bp) (o).value.bp->tt = ttt; break;\
-  }\
-} while (0)
-
-extern mrb_value
-mrb_float_value(struct mrb_state *mrb, mrb_float f);
-
-#else /* No MRB_xxx_BOXING */
-
-#define MRB_TT_HAS_BASIC  MRB_TT_OBJECT
-
-typedef struct mrb_value {
-  union {
-    mrb_float f;
-    void *p;
-    mrb_int i;
-    mrb_sym sym;
-  } value;
-  enum mrb_vtype tt;
-} mrb_value;
-
-#define mrb_type(o)     (o).tt
-#define mrb_ptr(o)      (o).value.p
-#define mrb_float(o)    (o).value.f
-
-#define MRB_SET_VALUE(o, ttt, attr, v) do {\
-  (o).tt = ttt;\
-  (o).attr = v;\
-} while (0)
-
-static inline mrb_value
-mrb_float_value(struct mrb_state *mrb, mrb_float f)
-{
-  mrb_value v;
-  (void) mrb;
-
-  MRB_SET_VALUE(v, MRB_TT_FLOAT, value.f, f);
-  return v;
-}
-
-#endif  /* no boxing */
-
-#endif
-
-#ifdef MRB_WORD_BOXING
-
-#define mrb_cptr(o) (o).value.vp->p
-#define mrb_fixnum_p(o) ((o).value.i_flag == MRB_FIXNUM_FLAG)
-#define mrb_undef_p(o) ((o).w == MRB_Qundef)
-#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
-#define mrb_bool(o)   ((o).w != MRB_Qnil && (o).w != MRB_Qfalse)
-
-#else
-#define mrb_cptr(o) mrb_ptr(o)
-#define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM)
-#define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF)
-#define mrb_nil_p(o)  (mrb_type(o) == MRB_TT_FALSE && !(o).value.i)
-#define mrb_bool(o)   (mrb_type(o) != MRB_TT_FALSE)
-
-#endif  /* no boxing */
-
-#define mrb_fixnum(o) (o).value.i
-#define mrb_symbol(o) (o).value.sym
-#define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT)
-#define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL)
-#define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY)
-#define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING)
-#define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH)
-#define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR)
-#define mrb_test(o)   mrb_bool(o)
-
-#define MRB_OBJECT_HEADER \
-  enum mrb_vtype tt:8;\
-  uint32_t color:3;\
-  uint32_t flags:21;\
-  struct RClass *c;\
-  struct RBasic *gcnext
-
-/* white: 011, black: 100, gray: 000 */
-#define MRB_GC_GRAY 0
-#define MRB_GC_WHITE_A 1
-#define MRB_GC_WHITE_B (1 << 1)
-#define MRB_GC_BLACK (1 << 2)
-#define MRB_GC_WHITES (MRB_GC_WHITE_A | MRB_GC_WHITE_B)
-#define MRB_GC_COLOR_MASK 7
-
-#define paint_gray(o) ((o)->color = MRB_GC_GRAY)
-#define paint_black(o) ((o)->color = MRB_GC_BLACK)
-#define paint_white(o) ((o)->color = MRB_GC_WHITES)
-#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
-#define is_gray(o) ((o)->color == MRB_GC_GRAY)
-#define is_white(o) ((o)->color & MRB_GC_WHITES)
-#define is_black(o) ((o)->color & MRB_GC_BLACK)
-#define is_dead(s, o) (((o)->color & other_white_part(s) & MRB_GC_WHITES) || (o)->tt == MRB_TT_FREE)
-#define flip_white_part(s) ((s)->current_white_part = other_white_part(s))
-#define other_white_part(s) ((s)->current_white_part ^ MRB_GC_WHITES)
-
-struct RBasic {
-  MRB_OBJECT_HEADER;
-};
-#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
-/* obsolete macro mrb_basic; will be removed soon */
-#define mrb_basic(v)     mrb_basic_ptr(v)
-
-struct RObject {
-  MRB_OBJECT_HEADER;
-  struct iv_tbl *iv;
-};
-#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
-/* obsolete macro mrb_object; will be removed soon */
-#define mrb_object(o) mrb_obj_ptr(o)
-#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_CPTR)
-#define mrb_special_const_p(x) mrb_immediate_p(x)
-
-struct RFiber {
-  MRB_OBJECT_HEADER;
-  struct mrb_context *cxt;
-};
-
-#ifdef MRB_WORD_BOXING
-struct RFloat {
-  MRB_OBJECT_HEADER;
-  mrb_float f;
-};
-
-struct RCptr {
-  MRB_OBJECT_HEADER;
-  void *p;
-};
-
-static inline enum mrb_vtype
-mrb_type(mrb_value o)
-{
-  switch (o.w) {
-  case MRB_Qfalse:
-  case MRB_Qnil:
-    return MRB_TT_FALSE;
-  case MRB_Qtrue:
-    return MRB_TT_TRUE;
-  case MRB_Qundef:
-    return MRB_TT_UNDEF;
-  }
-  if (o.value.i_flag == MRB_FIXNUM_FLAG) {
-    return MRB_TT_FIXNUM;
-  }
-  if (o.value.sym_flag == MRB_SYMBOL_FLAG) {
-    return MRB_TT_SYMBOL;
-  }
-  return o.value.bp->tt;
-}
-#endif  /* MRB_WORD_BOXING */
-
-static inline mrb_value
-mrb_fixnum_value(mrb_int i)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_FIXNUM, value.i, i);
-  return v;
-}
-
-static inline mrb_value
-mrb_symbol_value(mrb_sym i)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_SYMBOL, value.sym, i);
-  return v;
-}
-
-static inline mrb_value
-mrb_obj_value(void *p)
-{
-  mrb_value v;
-  struct RBasic *b = (struct RBasic*)p;
-
-  MRB_SET_VALUE(v, b->tt, value.p, p);
-  return v;
-}
-
-#ifdef MRB_WORD_BOXING
-mrb_value
-mrb_cptr_value(struct mrb_state *mrb, void *p);
-#else
-static inline mrb_value
-mrb_cptr_value(struct mrb_state *mrb, void *p)
-{
-  mrb_value v;
-  (void) mrb;
-
-  MRB_SET_VALUE(v, MRB_TT_CPTR, value.p, p);
-  return v;
-}
-#endif
-/* obsolete macros; will be removed */
-#define MRB_TT_VOIDP MRB_TT_CPTR
-#define mrb_voidp_value(m,p) mrb_cptr_value((m),(p))
-#define mrb_voidp(o) mrb_cptr(o)
-#define mrb_voidp_p(o) mrb_cptr_p(o)
-
-static inline mrb_value
-mrb_false_value(void)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_FALSE, value.i, 1);
-  return v;
-}
-
-static inline mrb_value
-mrb_nil_value(void)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_FALSE, value.i, 0);
-  return v;
-}
-
-static inline mrb_value
-mrb_true_value(void)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_TRUE, value.i, 1);
-  return v;
-}
-
-static inline mrb_value
-mrb_undef_value(void)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, MRB_TT_UNDEF, value.i, 0);
-  return v;
-}
-
-static inline mrb_value
-mrb_bool_value(mrb_bool boolean)
-{
-  mrb_value v;
-
-  MRB_SET_VALUE(v, boolean ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1);
-  return v;
-}
-
-#endif  /* MRUBY_OBJECT_H */

  Deleted: vendor/mruby-eeac4be/include/mruby/variable.h (+0 -78) 100644
===================================================================
--- vendor/mruby-eeac4be/include/mruby/variable.h    2014-06-08 19:01:14 +0900 (2845e0d)
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-** mruby/variable.h - mruby variables
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_VARIABLE_H
-#define MRUBY_VARIABLE_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct global_variable {
-    int   counter;
-    mrb_value *data;
-    mrb_value (*getter)(void);
-    void  (*setter)(void);
-    //void  (*marker)();
-    //int block_trace;
-    //struct trace_var *trace;
-} global_variable;
-
-struct global_entry {
-    global_variable *var;
-    mrb_sym id;
-};
-
-mrb_value mrb_vm_special_get(mrb_state*, mrb_sym);
-void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value);
-mrb_value mrb_vm_iv_get(mrb_state*, mrb_sym);
-void mrb_vm_iv_set(mrb_state*, mrb_sym, mrb_value);
-mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym);
-void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value);
-mrb_value mrb_vm_const_get(mrb_state*, mrb_sym);
-void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value);
-mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym);
-void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value);
-mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym);
-void mrb_const_remove(mrb_state*, mrb_value, mrb_sym);
-
-mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
-void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
-mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
-void mrb_obj_iv_ifnone(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
-mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym);
-void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v);
-mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
-mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym);
-void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src);
-int mrb_const_defined_at(mrb_state *mrb, struct RClass *klass, mrb_sym id);
-mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod);
-mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
-mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym);
-void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
-mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
-mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
-mrb_sym mrb_class_sym(mrb_state *mrb, struct RClass *c, struct RClass *outer);
-mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
-mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym);
-mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym);
-void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v);
-void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v);
-mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym);
-mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym);
-
-/* GC functions */
-void mrb_gc_mark_gv(mrb_state*);
-void mrb_gc_free_gv(mrb_state*);
-void mrb_gc_mark_iv(mrb_state*, struct RObject*);
-size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
-void mrb_gc_free_iv(mrb_state*, struct RObject*);
-
-#if defined(__cplusplus)
-}  /* extern "C" { */
-#endif
-
-#endif  /* MRUBY_VARIABLE_H */

  Deleted: vendor/mruby-eeac4be/minirake (+0 -477) 100755
===================================================================
--- vendor/mruby-eeac4be/minirake    2014-06-08 19:01:14 +0900 (e48ca13)
+++ /dev/null
@@ -1,477 +0,0 @@
-#!/usr/bin/env ruby
-
-# Original is https://github.com/jimweirich/rake/
-# Copyright (c) 2003 Jim Weirich
-# License: MIT-LICENSE
-
-require 'getoptlong'
-require 'fileutils'
-
-class String
-  def ext(newext='')
-    return self.dup if ['.', '..'].include? self
-    if newext != ''
-      newext = (newext =~ /^\./) ? newext : ("." + newext)
-    end
-    self.chomp(File.extname(self)) << newext
-  end
-
-  def pathmap(spec=nil, &block)
-    return self if spec.nil?
-    result = ''
-    spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
-      case frag
-      when '%f'
-        result << File.basename(self)
-      when '%n'
-        result << File.basename(self).ext
-      when '%d'
-        result << File.dirname(self)
-      when '%x'
-        result << File.extname(self)
-      when '%X'
-        result << self.ext
-      when '%p'
-        result << self
-      when '%s'
-        result << (File::ALT_SEPARATOR || File::SEPARATOR)
-      when '%-'
-        # do nothing
-      when '%%'
-        result << "%"
-      when /%(-?\d+)d/
-        result << pathmap_partial($1.to_i)
-      when /^%\{([^}]*)\}(\d*[dpfnxX])/
-        patterns, operator = $1, $2
-        result << pathmap('%' + operator).pathmap_replace(patterns, &block)
-      when /^%/
-        fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
-      else
-        result << frag
-      end
-    end
-    result
-  end
-end
-
-module MiniRake
-  class Task
-    TASKS = Hash.new
-    RULES = Array.new
-
-    # List of prerequisites for a task.
-    attr_reader :prerequisites
-
-    # Source dependency for rule synthesized tasks.  Nil if task was not
-    # sythesized from a rule.
-    attr_accessor :source
-
-    # Create a task named +task_name+ with no actions or prerequisites..
-    # use +enhance+ to add actions and prerequisites.
-    def initialize(task_name)
-      @name = task_name
-      @prerequisites = []
-      @actions = []
-    end
-
-    # Enhance a task with prerequisites or actions.  Returns self.
-    def enhance(deps=nil, &block)
-      @prerequisites |= deps if deps
-      @actions << block if block_given?
-      self
-    end
-
-    # Name of the task.
-    def name
-      @name.to_s
-    end
-
-    # Invoke the task if it is needed.  Prerequites are invoked first.
-    def invoke
-      puts "Invoke #{name} (already=[#{@already_invoked}], needed=[#{needed?}])" if $trace
-      return if @already_invoked
-      @already_invoked = true
-      prerequisites =****@prere*****{ |n| n.is_a?(Proc) ? n.call(name) : n }.flatten
-      prerequisites.each { |n| Task[n].invoke }
-      execute if needed?
-    end
-
-    # Execute the actions associated with this task.
-    def execute
-      puts "Execute #{name}" if $trace
-      self.class.enhance_with_matching_rule(name) if****@actio*****?
-      unless $dryrun
-        @actions.each { |act| act.call(self) }
-      end
-    end
-
-    # Is this task needed?
-    def needed?
-      true
-    end
-
-    # Timestamp for this task.  Basic tasks return the current time for
-    # their time stamp.  Other tasks can be more sophisticated.
-    def timestamp
-      prerequisites =****@prere*****{ |n| n.is_a?(Proc) ? n.call(name) : n }.flatten
-      prerequisites.collect { |n| Task[n].timestamp }.max || Time.now
-    end
-
-    # Class Methods ----------------------------------------------------
-
-    class << self
-
-      # Clear the task list.  This cause rake to immediately forget all
-      # the tasks that have been assigned.  (Normally used in the unit
-      # tests.)
-      def clear
-        TASKS.clear
-        RULES.clear
-      end
-
-      # List of all defined tasks.
-      def tasks
-        TASKS.keys.sort.collect { |tn| Task[tn] }
-      end
-
-      # Return a task with the given name.  If the task is not currently
-      # known, try to synthesize one from the defined rules.  If no
-      # rules are found, but an existing file matches the task name,
-      # assume it is a file task with no dependencies or actions.
-      def [](task_name)
-        task_name = task_name.to_s
-        if task = TASKS[task_name]
-          return task
-        end
-        if task = enhance_with_matching_rule(task_name)
-          return task
-        end
-        if File.exist?(task_name)
-          return FileTask.define_task(task_name)
-        end
-        fail "Don't know how to rake #{task_name}"
-      end
-
-      # Define a task given +args+ and an option block.  If a rule with
-      # the given name already exists, the prerequisites and actions are
-      # added to the existing task.
-      def define_task(args, &block)
-        task_name, deps = resolve_args(args)
-        lookup(task_name).enhance([deps].flatten, &block)
-      end
-
-      # Define a rule for synthesizing tasks.
-      def create_rule(args, &block)
-        pattern, deps = resolve_args(args)
-        pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern
-        RULES << [pattern, deps, block]
-      end
-
-
-      # Lookup a task.  Return an existing task if found, otherwise
-      # create a task of the current type.
-      def lookup(task_name)
-        name = task_name.to_s
-        TASKS[name] ||= self.new(name)
-      end
-
-      # If a rule can be found that matches the task name, enhance the
-      # task with the prerequisites and actions from the rule.  Set the
-      # source attribute of the task appropriately for the rule.  Return
-      # the enhanced task or nil of no rule was found.
-      def enhance_with_matching_rule(task_name)
-        RULES.each do |pattern, extensions, block|
-          if pattern.match(task_name)
-            ext = extensions.first
-            deps = extensions[1..-1]
-            case ext
-            when String
-              source = task_name.sub(/\.[^.]*$/, ext)
-            when Proc
-              source = ext.call(task_name)
-            else
-              fail "Don't know how to handle rule dependent: #{ext.inspect}"
-            end
-            if File.exist?(source)
-              task = FileTask.define_task({task_name => [source]+deps}, &block)
-              task.source = source
-              return task
-            end
-          end
-        end
-        nil
-      end
-
-      private
-
-      # Resolve the arguments for a task/rule.
-      def resolve_args(args)
-        case args
-        when Hash
-          fail "Too Many Task Names: #{args.keys.join(' ')}" if args.size > 1
-          fail "No Task Name Given" if args.size < 1
-          task_name = args.keys[0]
-          deps = args[task_name]
-          deps = [deps] if (String===deps) || (Regexp===deps) || (Proc===deps)
-        else
-          task_name = args
-          deps = []
-        end
-        [task_name, deps]
-      end
-    end
-  end
-
-
-  ######################################################################
-  class FileTask < Task
-    # Is this file task needed?  Yes if it doesn't exist, or if its time
-    # stamp is out of date.
-    def needed?
-      return true unless File.exist?(name)
-      prerequisites =****@prere*****{ |n| n.is_a?(Proc) ? n.call(name) : n }.flatten
-      latest_prereq = prerequisites.collect{|n| Task[n].timestamp}.max
-      return false if latest_prereq.nil?
-      timestamp < latest_prereq
-    end
-
-    # Time stamp for file task.
-    def timestamp
-      File::stat(name.to_s).mtime
-    end
-  end
-
-  module DSL
-    # Declare a basic task.
-    def task(args, &block)
-      MiniRake::Task.define_task(args, &block)
-    end
-
-    # Declare a file task.
-    def file(args, &block)
-      MiniRake::FileTask.define_task(args, &block)
-    end
-
-    # Declare a set of files tasks to create the given directories on
-    # demand.
-    def directory(dir)
-      path = []
-      Sys.split_all(dir).each do |p|
-        path << p
-        FileTask.define_task(File.join(path)) do |t|
-          Sys.makedirs(t.name)
-        end
-      end
-    end
-
-    # Declare a rule for auto-tasks.
-    def rule(args, &block)
-      MiniRake::Task.create_rule(args, &block)
-    end
-
-    # Write a message to standard out if $verbose is enabled.
-    def log(msg)
-      print "  " if $trace && $verbose
-      puts msg if $verbose
-    end
-
-    # Run the system command +cmd+.
-    def sh(cmd)
-      puts cmd if $verbose
-      system(cmd) or fail "Command Failed: [#{cmd}]"
-    end
-
-    def desc(text)
-    end
-  end
-end
-
-Rake = MiniRake
-extend MiniRake::DSL
-
-
-######################################################################
-# Task Definition Functions ...
-
-######################################################################
-# Rake main application object.  When invoking +rake+ from the command
-# line, a RakeApp object is created and run.
-#
-class RakeApp
-  RAKEFILES = ['rakefile', 'Rakefile']
-
-  OPTIONS = [
-    ['--dry-run',  '-n', GetoptLong::NO_ARGUMENT,
-      "Do a dry run without executing actions."],
-    ['--help',     '-H', GetoptLong::NO_ARGUMENT,
-      "Display this help message."],
-    ['--libdir',   '-I', GetoptLong::REQUIRED_ARGUMENT,
-      "Include LIBDIR in the search path for required modules."],
-    ['--nosearch', '-N', GetoptLong::NO_ARGUMENT,
-      "Do not search parent directories for the Rakefile."],
-    ['--quiet',    '-q', GetoptLong::NO_ARGUMENT,
-      "Do not log messages to standard output."],
-    ['--rakefile', '-f', GetoptLong::REQUIRED_ARGUMENT,
-      "Use FILE as the rakefile."],
-    ['--require',  '-r', GetoptLong::REQUIRED_ARGUMENT,
-      "Require MODULE before executing rakefile."],
-    ['--tasks',    '-T', GetoptLong::NO_ARGUMENT,
-      "Display the tasks and dependencies, then exit."],
-    ['--pull-gems','-p', GetoptLong::NO_ARGUMENT,
-      "Pull all git mrbgems."],
-    ['--trace',    '-t', GetoptLong::NO_ARGUMENT,
-      "Turn on invoke/execute tracing."],
-    ['--usage',    '-h', GetoptLong::NO_ARGUMENT,
-      "Display usage."],
-    ['--verbose',  '-v', GetoptLong::NO_ARGUMENT,
-      "Log message to standard output (default)."],
-  ]
-
-  # Create a RakeApp object.
-  def initialize
-    @rakefile = nil
-    @nosearch = false
-  end
-
-  # True if one of the files in RAKEFILES is in the current directory.
-  # If a match is found, it is copied into @rakefile.
-  def have_rakefile
-    RAKEFILES.each do |fn|
-      if File.exist?(fn)
-        @rakefile = fn
-        return true
-      end
-    end
-    return false
-  end
-
-  # Display the program usage line.
-  def usage
-      puts "rake [-f rakefile] {options} targets..."
-  end
-
-  # Display the rake command line help.
-  def help
-    usage
-    puts
-    puts "Options are ..."
-    puts
-    OPTIONS.sort.each do |long, short, mode, desc|
-      if mode == GetoptLong::REQUIRED_ARGUMENT
-        if desc =~ /\b([A-Z]{2,})\b/
-          long = long + "=#{$1}"
-        end
-      end
-      printf "  %-20s (%s)\n", long, short
-      printf "      %s\n", desc
-    end
-  end
-
-  # Display the tasks and dependencies.
-  def display_tasks
-    MiniRake::Task.tasks.each do |t|
-      puts "#{t.class} #{t.name}"
-      t.prerequisites.each { |pre| puts "    #{pre}" }
-    end
-  end
-
-  # Return a list of the command line options supported by the
-  # program.
-  def command_line_options
-    OPTIONS.collect { |lst| lst[0..-2] }
-  end
-
-  # Do the option defined by +opt+ and +value+.
-  def do_option(opt, value)
-    case opt
-    when '--dry-run'
-      $dryrun = true
-      $trace = true
-    when '--help'
-      help
-      exit
-    when '--libdir'
-      $:.push(value)
-    when '--nosearch'
-      @nosearch = true
-    when '--quiet'
-      $verbose = false
-    when '--rakefile'
-      RAKEFILES.clear
-      RAKEFILES << value
-    when '--require'
-      require value
-    when '--tasks'
-      $show_tasks = true
-    when '--pull-gems'
-      $pull_gems = true
-    when '--trace'
-      $trace = true
-    when '--usage'
-      usage
-      exit
-    when '--verbose'
-      $verbose = true
-    when '--version'
-      puts "rake, version #{RAKEVERSION}"
-      exit
-    else
-      fail "Unknown option: #{opt}"
-    end
-  end
-
-  # Read and handle the command line options.
-  def handle_options
-    $verbose = false
-    $pull_gems = false
-    opts = GetoptLong.new(*command_line_options)
-    opts.each { |opt, value| do_option(opt, value) }
-  end
-
-  # Run the +rake+ application.
-  def run
-    handle_options
-    begin
-      here = Dir.pwd
-      while ! have_rakefile
-        Dir.chdir("..")
-        if Dir.pwd == here || @nosearch
-          fail "No Rakefile found (looking for: #{RAKEFILES.join(', ')})"
-        end
-        here = Dir.pwd
-      end
-      tasks = []
-      ARGV.each do |task_name|
-        if /^(\w+)=(.*)/.match(task_name)
-          ENV[$1] = $2
-        else
-          tasks << task_name
-        end
-      end
-      puts "(in #{Dir.pwd})"
-      $rakefile = @rakefile
-      load @rakefile
-      if $show_tasks
-        display_tasks
-      else
-        tasks.push("default") if tasks.size == 0
-        tasks.each do |task_name|
-          MiniRake::Task[task_name].invoke
-        end
-      end
-    rescue Exception => ex
-      puts "rake aborted!"
-      puts ex.message
-      if $trace
-        puts ex.backtrace.join("\n")
-      else
-        puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || ""
-      end
-      exit 1
-    end
-  end
-end
-
-if __FILE__ == $0 then
-  RakeApp.new.run
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/default.gembox (+0 -61) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/default.gembox    2014-06-08 19:01:14 +0900 (33ee99b)
+++ /dev/null
@@ -1,61 +0,0 @@
-MRuby::GemBox.new do |conf|
-  # Use standard Kernel#sprintf method
-  conf.gem :core => "mruby-sprintf"
-
-  # Use standard print/puts/p
-  conf.gem :core => "mruby-print"
-
-  # Use standard Math module
-  conf.gem :core => "mruby-math"
-
-  # Use standard Time class
-  conf.gem :core => "mruby-time"
-
-  # Use standard Struct class
-  conf.gem :core => "mruby-struct"
-
-  # Use extensional Enumerable module
-  conf.gem :core => "mruby-enum-ext"
-
-  # Use extensional String class
-  conf.gem :core => "mruby-string-ext"
-
-  # Use extensional Numeric class
-  conf.gem :core => "mruby-numeric-ext"
-
-  # Use extensional Array class
-  conf.gem :core => "mruby-array-ext"
-
-  # Use extensional Hash class
-  conf.gem :core => "mruby-hash-ext"
-
-  # Use extensional Range class
-  conf.gem :core => "mruby-range-ext"
-
-  # Use extensional Proc class
-  conf.gem :core => "mruby-proc-ext"
-
-  # Use extensional Symbol class
-  conf.gem :core => "mruby-symbol-ext"
-
-  # Use Random class
-  conf.gem :core => "mruby-random"
-
-  # Use extensional Object class
-  conf.gem :core => "mruby-object-ext"
-
-  # Use ObjectSpace class
-  conf.gem :core => "mruby-objectspace"
-
-  # Use Fiber class
-  conf.gem :core => "mruby-fiber"
-
-  # Use extended toplevel object (main) methods
-  conf.gem :core => "mruby-toplevel-ext"
-
-  # Generate mirb command
-  conf.gem :core => "mruby-bin-mirb"
-
-  # Generate mruby command
-  conf.gem :core => "mruby-bin-mruby"
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/full-core.gembox (+0 -9) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/full-core.gembox    2014-06-08 19:01:14 +0900 (4a6ebbc)
+++ /dev/null
@@ -1,9 +0,0 @@
-MRuby::GemBox.new do |conf|
-  conf.gem :core => "mruby-sprintf"
-  conf.gem :core => "mruby-print"
-
-  Dir.glob("#{root}/mrbgems/mruby-*") do |x|
-    g = File.basename(x)
-    conf.gem :core => g unless g =~ /^mruby-(print|sprintf)$/
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (18f92ad)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-array-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrblib/array.rb (+0 -204) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-array-ext/mrblib/array.rb    2014-06-08 19:01:14 +0900 (337cef6)
+++ /dev/null
@@ -1,204 +0,0 @@
-class Array
-  ##
-  # call-seq:
-  #    ary.uniq! -> ary or nil
-  #
-  # Removes duplicate elements from +self+.
-  # Returns <code>nil</code> if no changes are made (that is, no
-  # duplicates are found).
-  #
-  #    a = [ "a", "a", "b", "b", "c" ]
-  #    a.uniq!   #=> ["a", "b", "c"]
-  #    b = [ "a", "b", "c" ]
-  #    b.uniq!   #=> nil
-  #
-  def uniq!
-    ary = self.dup
-    result = []
-    while ary.size > 0
-      result << ary.shift
-      ary.delete(result.last)
-    end
-    if result.size == self.size
-      nil
-    else
-      self.replace(result)
-    end
-  end
-
-  ##
-  # call-seq:
-  #    ary.uniq   -> new_ary
-  #
-  # Returns a new array by removing duplicate values in +self+.
-  #
-  #    a = [ "a", "a", "b", "b", "c" ]
-  #    a.uniq   #=> ["a", "b", "c"]
-  #
-  def uniq
-    ary = self.dup
-    ary.uniq!
-    ary
-  end
-
-  ##
-  # call-seq:
-  #    ary - other_ary    -> new_ary
-  #
-  # Array Difference---Returns a new array that is a copy of
-  # the original array, removing any items that also appear in
-  # <i>other_ary</i>. (If you need set-like behavior, see the
-  # library class Set.)
-  #
-  #    [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]  #=>  [ 3, 3, 5 ]
-  #
-  def -(elem)
-    raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array
-
-    hash = {}
-    array = []
-    elem.each { |x| hash[x] = true }
-    self.each { |x| array << x unless hash[x] }
-    array
-  end
-
-  ##
-  # call-seq:
-  #    ary | other_ary     -> new_ary
-  #
-  # Set Union---Returns a new array by joining this array with
-  # <i>other_ary</i>, removing duplicates.
-  #
-  #    [ "a", "b", "c" ] | [ "c", "d", "a" ]
-  #           #=> [ "a", "b", "c", "d" ]
-  #
-  def |(elem)
-    raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array
-
-    ary = self + elem
-    ary.uniq! or ary
-  end
-
-  ##
-  # call-seq:
-  #    ary & other_ary      -> new_ary
-  #
-  # Set Intersection---Returns a new array
-  # containing elements common to the two arrays, with no duplicates.
-  #
-  #    [ 1, 1, 3, 5 ] & [ 1, 2, 3 ]   #=> [ 1, 3 ]
-  #
-  def &(elem)
-    raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array
-
-    hash = {}
-    array = []
-    elem.each{|v| hash[v] = true }
-    self.each do |v|
-      if hash[v]
-        array << v
-        hash.delete v
-      end
-    end
-    array
-  end
-
-  ##
-  # call-seq:
-  #    ary.flatten -> new_ary
-  #    ary.flatten(level) -> new_ary
-  #
-  # Returns a new array that is a one-dimensional flattening of this
-  # array (recursively). That is, for every element that is an array,
-  # extract its elements into the new array.  If the optional
-  # <i>level</i> argument determines the level of recursion to flatten.
-  #
-  #    s = [ 1, 2, 3 ]           #=> [1, 2, 3]
-  #    t = [ 4, 5, 6, [7, 8] ]   #=> [4, 5, 6, [7, 8]]
-  #    a = [ s, t, 9, 10 ]       #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
-  #    a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-  #    a = [ 1, 2, [3, [4, 5] ] ]
-  #    a.flatten(1)              #=> [1, 2, 3, [4, 5]]
-  #
-  def flatten(depth=nil)
-    ar = []
-    self.each do |e|
-      if e.is_a?(Array) && (depth.nil? || depth > 0)
-        ar += e.flatten(depth.nil? ? nil : depth - 1)
-      else
-        ar << e
-      end
-    end
-    ar
-  end
-
-  ##
-  # call-seq:
-  #    ary.flatten!        -> ary or nil
-  #    ary.flatten!(level) -> array or nil
-  #
-  # Flattens +self+ in place.
-  # Returns <code>nil</code> if no modifications were made (i.e.,
-  # <i>ary</i> contains no subarrays.)  If the optional <i>level</i>
-  # argument determines the level of recursion to flatten.
-  #
-  #    a = [ 1, 2, [3, [4, 5] ] ]
-  #    a.flatten!   #=> [1, 2, 3, 4, 5]
-  #    a.flatten!   #=> nil
-  #    a            #=> [1, 2, 3, 4, 5]
-  #    a = [ 1, 2, [3, [4, 5] ] ]
-  #    a.flatten!(1) #=> [1, 2, 3, [4, 5]]
-  #
-  def flatten!(depth=nil)
-    modified = false
-    ar = []
-    self.each do |e|
-      if e.is_a?(Array) && (depth.nil? || depth > 0)
-        ar += e.flatten(depth.nil? ? nil : depth - 1)
-        modified = true
-      else
-        ar << e
-      end
-    end
-    if modified
-      self.replace(ar)
-    else
-      nil
-    end
-  end
-
-  ##
-  # call-seq:
-  #    ary.compact     -> new_ary
-  #
-  # Returns a copy of +self+ with all +nil+ elements removed.
-  #
-  #    [ "a", nil, "b", nil, "c", nil ].compact
-  #                      #=> [ "a", "b", "c" ]
-  #
-  def compact
-    result = self.dup
-    result.compact!
-    result
-  end
-
-  ##
-  # call-seq:
-  #    ary.compact!    -> ary  or  nil
-  #
-  # Removes +nil+ elements from the array.
-  # Returns +nil+ if no changes were made, otherwise returns
-  # <i>ary</i>.
-  #
-  #    [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
-  #    [ "a", "b", "c" ].compact!           #=> nil
-  #
-  def compact!
-    result = self.select { |e| e != nil }
-    if result.size == self.size
-      nil
-    else
-      self.replace(result)
-    end
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-array-ext/src/array.c (+0 -140) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-array-ext/src/array.c    2014-06-08 19:01:14 +0900 (ad6cead)
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "mruby.h"
-#include "mruby/value.h"
-#include "mruby/array.h"
-
-/*
- *  call-seq:
- *     Array.try_convert(obj) -> array or nil
- *
- *  Try to convert <i>obj</i> into an array, using +to_ary+ method.
- *  Returns converted array or +nil+ if <i>obj</i> cannot be converted
- *  for any reason. This method can be used to check if an argument is an
- *  array.
- *
- *     Array.try_convert([1])   #=> [1]
- *     Array.try_convert("1")   #=> nil
- *
- *     if tmp = Array.try_convert(arg)
- *       # the argument is an array
- *     elsif tmp = String.try_convert(arg)
- *       # the argument is a string
- *     end
- *
- */
-
-static mrb_value
-mrb_ary_s_try_convert(mrb_state *mrb, mrb_value self)
-{
-  mrb_value ary;
-
-  mrb_get_args(mrb, "o", &ary);
-  return mrb_check_array_type(mrb, ary);
-}
-
-/*
- *  call-seq:
- *     ary.assoc(obj)   -> new_ary  or  nil
- *
- *  Searches through an array whose elements are also arrays
- *  comparing _obj_ with the first element of each contained array
- *  using obj.==.
- *  Returns the first contained array that matches (that
- *  is, the first associated array),
- *  or +nil+ if no match is found.
- *  See also <code>Array#rassoc</code>.
- *
- *     s1 = [ "colors", "red", "blue", "green" ]
- *     s2 = [ "letters", "a", "b", "c" ]
- *     s3 = "foo"
- *     a  = [ s1, s2, s3 ]
- *     a.assoc("letters")  #=> [ "letters", "a", "b", "c" ]
- *     a.assoc("foo")      #=> nil
- */
-
-static mrb_value
-mrb_ary_assoc(mrb_state *mrb, mrb_value ary)
-{
-  mrb_int i;
-  mrb_value v, k;
-
-  mrb_get_args(mrb, "o", &k);
-
-  for (i = 0; i < RARRAY_LEN(ary); ++i) {
-    v = mrb_check_array_type(mrb, RARRAY_PTR(ary)[i]);
-    if (!mrb_nil_p(v) && RARRAY_LEN(v) > 0 &&
-        mrb_equal(mrb, RARRAY_PTR(v)[0], k))
-      return v;
-  }
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     ary.rassoc(obj) -> new_ary or nil
- *
- *  Searches through the array whose elements are also arrays. Compares
- *  _obj_ with the second element of each contained array using
- *  <code>==</code>. Returns the first contained array that matches. See
- *  also <code>Array#assoc</code>.
- *
- *     a = [ [ 1, "one"], [2, "two"], [3, "three"], ["ii", "two"] ]
- *     a.rassoc("two")    #=> [2, "two"]
- *     a.rassoc("four")   #=> nil
- */
-
-static mrb_value
-mrb_ary_rassoc(mrb_state *mrb, mrb_value ary)
-{
-  mrb_int i;
-  mrb_value v, value;
-
-  mrb_get_args(mrb, "o", &value);
-
-  for (i = 0; i < RARRAY_LEN(ary); ++i) {
-    v = RARRAY_PTR(ary)[i];
-    if (mrb_type(v) == MRB_TT_ARRAY &&
-        RARRAY_LEN(v) > 1 &&
-        mrb_equal(mrb, RARRAY_PTR(v)[1], value))
-      return v;
-  }
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     ary.at(index)   ->   obj  or nil
- *
- *  Returns the element at _index_. A
- *  negative index counts from the end of +self+.  Returns +nil+
- *  if the index is out of range. See also <code>Array#[]</code>.
- *
- *     a = [ "a", "b", "c", "d", "e" ]
- *     a.at(0)     #=> "a"
- *     a.at(-1)    #=> "e"
- */
-
-static mrb_value
-mrb_ary_at(mrb_state *mrb, mrb_value ary)
-{
-  mrb_int pos;
-  mrb_get_args(mrb, "i", &pos);
-
-  return mrb_ary_entry(ary, pos);
-}
-
-void
-mrb_mruby_array_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass * a = mrb->array_class;
-
-  mrb_define_class_method(mrb, a, "try_convert", mrb_ary_s_try_convert, MRB_ARGS_REQ(1));
-
-  mrb_define_method(mrb, a, "assoc",  mrb_ary_assoc,  MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, a, "at",     mrb_ary_at,     MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, a, "rassoc", mrb_ary_rassoc, MRB_ARGS_REQ(1));
-}
-
-void
-mrb_mruby_array_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-array-ext/test/array.rb (+0 -109) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-array-ext/test/array.rb    2014-06-08 19:01:14 +0900 (1c441ce)
+++ /dev/null
@@ -1,109 +0,0 @@
-##
-# Array(Ext) Test
-
-assert("Array::try_convert") do
-  Array.try_convert([1]) == [1] and
-  Array.try_convert("1").nil?
-end
-
-assert("Array#assoc") do
-  s1 = [ "colors", "red", "blue", "green" ]
-  s2 = [ "letters", "a", "b", "c" ]
-  s3 = "foo"
-  a  = [ s1, s2, s3 ]
-
-  a.assoc("letters") == [ "letters", "a", "b", "c" ] and
-  a.assoc("foo").nil?
-end
-
-assert("Array#at") do
-  a = [ "a", "b", "c", "d", "e" ]
-  a.at(0)  == "a" and a.at(-1) == "e"
-end
-
-assert("Array#rassoc") do
-  a = [ [ 1, "one"], [2, "two"], [3, "three"], ["ii", "two"] ]
-
-  a.rassoc("two") == [2, "two"] and
-  a.rassoc("four").nil?
-end
-
-assert("Array#uniq!") do
-  a = [1, 2, 3, 1]
-  a.uniq!
-  a == [1, 2, 3]
-end
-
-assert("Array#uniq") do
-  a = [1, 2, 3, 1]
-  a.uniq == [1, 2, 3] && a == [1, 2, 3, 1]
-end
-
-assert("Array#-") do
-  a = [1, 2, 3, 1]
-  b = [1]
-  c = 1
-  e1 = nil
-
-  begin
-    a - c
-  rescue => e1
-  end
-
-  (a - b) == [2, 3] and e1.class == TypeError and a == [1, 2, 3, 1]
-end
-
-assert("Array#|") do
-  a = [1, 2, 3, 1]
-  b = [1, 4]
-  c = 1
-  e1 = nil
-
-  begin
-    a | c
-  rescue => e1
-  end
-
-  (a | b) == [1, 2, 3, 4] and e1.class == TypeError and a == [1, 2, 3, 1]
-end
-
-assert("Array#&") do
-  a = [1, 2, 3, 1]
-  b = [1, 4]
-  c = 1
-  e1 = nil
-
-  begin
-    a & c
-  rescue => e1
-  end
-
-  (a & b) == [1] and e1.class == TypeError and a == [1, 2, 3, 1]
-end
-
-assert("Array#flatten") do
-  [1, 2, "3", {4=>5}, :'6'] == [1, 2, "3", {4=>5}, :'6'].flatten and
-  [1, 2, 3, 4, 5, 6] == [1, 2, [3, 4, 5], 6].flatten and
-  [1, 2, 3, 4, 5, 6] == [1, 2, [3, [4, 5], 6]].flatten and
-  [1, [2, [3, [4, [5, [6]]]]]] == [1, [2, [3, [4, [5, [6]]]]]].flatten(0) and
-  [1, 2, [3, [4, [5, [6]]]]] == [1, [2, [3, [4, [5, [6]]]]]].flatten(1) and
-  [1, 2, 3, [4, [5, [6]]]] == [1, [2, [3, [4, [5, [6]]]]]].flatten(2) and
-  [1, 2, 3, 4, [5, [6]]] == [1, [2, [3, [4, [5, [6]]]]]].flatten(3) and
-  [1, 2, 3, 4, 5, [6]] == [1, [2, [3, [4, [5, [6]]]]]].flatten(4) and
-  [1, 2, 3, 4, 5, 6] == [1, [2, [3, [4, [5, [6]]]]]].flatten(5)
-end
-
-assert("Array#flatten!") do
-  [1, 2, 3, 4, 5, 6] == [1, 2, [3, [4, 5], 6]].flatten!
-end
-
-assert("Array#compact") do
-  a = [1, nil, "2", nil, :t, false, nil]
-  a.compact == [1, "2", :t, false] && a == [1, nil, "2", nil, :t, false, nil]
-end
-
-assert("Array#compact!") do
-  a = [1, nil, "2", nil, :t, false, nil]
-  a.compact!
-  a == [1, "2", :t, false]
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/mrbgem.rake (+0 -8) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/mrbgem.rake    2014-06-08 19:01:14 +0900 (846a3b0)
+++ /dev/null
@@ -1,8 +0,0 @@
-MRuby::Gem::Specification.new('mruby-bin-mirb') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-
-  spec.linker.libraries << 'readline' if spec.cc.defines.include? "ENABLE_READLINE"
-
-  spec.bins = %w(mirb)
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c (+0 -399) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c    2014-06-08 19:01:14 +0900 (1c746db)
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
-** mirb - Embeddable Interactive Ruby Shell
-**
-** This program takes code from the user in
-** an interactive way and executes it
-** immediately. It's a REPL...
-*/
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <mruby.h>
-#include "mruby/array.h"
-#include <mruby/proc.h>
-#include <mruby/data.h>
-#include <mruby/compile.h>
-#ifdef ENABLE_READLINE
-#include <limits.h>
-#include <readline/readline.h>
-#include <readline/history.h>
-#endif
-#include <mruby/string.h>
-
-
-#ifdef ENABLE_READLINE
-static const char *history_file_name = ".mirb_history";
-char history_path[PATH_MAX];
-#endif
-
-
-static void
-p(mrb_state *mrb, mrb_value obj, int prompt)
-{
-  obj = mrb_funcall(mrb, obj, "inspect", 0);
-  if (prompt) {
-    if (!mrb->exc) {
-      fputs(" => ", stdout);
-    }
-    else {
-      obj = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0);
-    }
-  }
-  fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
-  putc('\n', stdout);
-}
-
-/* Guess if the user might want to enter more
- * or if he wants an evaluation of his code now */
-mrb_bool
-is_code_block_open(struct mrb_parser_state *parser)
-{
-  int code_block_open = FALSE;
-
-  /* check for heredoc */
-  if (parser->parsing_heredoc != NULL) return TRUE;
-  if (parser->heredoc_end_now) {
-    parser->heredoc_end_now = FALSE;
-    return FALSE;
-  }
-
-  /* check if parser error are available */
-  if (0 < parser->nerr) {
-    const char *unexpected_end = "syntax error, unexpected $end";
-    const char *message = parser->error_buffer[0].message;
-
-    /* a parser error occur, we have to check if */
-    /* we need to read one more line or if there is */
-    /* a different issue which we have to show to */
-    /* the user */
-
-    if (strncmp(message, unexpected_end, strlen(unexpected_end)) == 0) {
-      code_block_open = TRUE;
-    }
-    else if (strcmp(message, "syntax error, unexpected keyword_end") == 0) {
-      code_block_open = FALSE;
-    }
-    else if (strcmp(message, "syntax error, unexpected tREGEXP_BEG") == 0) {
-      code_block_open = FALSE;
-    }
-    return code_block_open;
-  }
-
-  /* check for unterminated string */
-  if (parser->lex_strterm) return TRUE;
-
-  switch (parser->lstate) {
-
-  /* all states which need more code */
-
-  case EXPR_BEG:
-    /* an expression was just started, */
-    /* we can't end it like this */
-    code_block_open = TRUE;
-    break;
-  case EXPR_DOT:
-    /* a message dot was the last token, */
-    /* there has to come more */
-    code_block_open = TRUE;
-    break;
-  case EXPR_CLASS:
-    /* a class keyword is not enough! */
-    /* we need also a name of the class */
-    code_block_open = TRUE;
-    break;
-  case EXPR_FNAME:
-    /* a method name is necessary */
-    code_block_open = TRUE;
-    break;
-  case EXPR_VALUE:
-    /* if, elsif, etc. without condition */
-    code_block_open = TRUE;
-    break;
-
-  /* now all the states which are closed */
-
-  case EXPR_ARG:
-    /* an argument is the last token */
-    code_block_open = FALSE;
-    break;
-
-  /* all states which are unsure */
-
-  case EXPR_CMDARG:
-    break;
-  case EXPR_END:
-    /* an expression was ended */
-    break;
-  case EXPR_ENDARG:
-    /* closing parenthese */
-    break;
-  case EXPR_ENDFN:
-    /* definition end */
-    break;
-  case EXPR_MID:
-    /* jump keyword like break, return, ... */
-    break;
-  case EXPR_MAX_STATE:
-    /* don't know what to do with this token */
-    break;
-  default:
-    /* this state is unexpected! */
-    break;
-  }
-
-  return code_block_open;
-}
-
-void mrb_show_version(mrb_state *);
-void mrb_show_copyright(mrb_state *);
-
-struct _args {
-  mrb_bool verbose      : 1;
-  int argc;
-  char** argv;
-};
-
-static void
-usage(const char *name)
-{
-  static const char *const usage_msg[] = {
-  "switches:",
-  "-v           print version number, then run in verbose mode",
-  "--verbose    run in verbose mode",
-  "--version    print the version",
-  "--copyright  print the copyright",
-  NULL
-  };
-  const char *const *p = usage_msg;
-
-  printf("Usage: %s [switches]\n", name);
-  while (*p)
-    printf("  %s\n", *p++);
-}
-
-static int
-parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
-{
-  static const struct _args args_zero = { 0 };
-
-  *args = args_zero;
-
-  for (argc--,argv++; argc > 0; argc--,argv++) {
-    char *item;
-    if (argv[0][0] != '-') break;
-
-    item = argv[0] + 1;
-    switch (*item++) {
-    case 'v':
-      if (!args->verbose) mrb_show_version(mrb);
-      args->verbose = 1;
-      break;
-    case '-':
-      if (strcmp((*argv) + 2, "version") == 0) {
-        mrb_show_version(mrb);
-        exit(EXIT_SUCCESS);
-      }
-      else if (strcmp((*argv) + 2, "verbose") == 0) {
-        args->verbose = 1;
-        break;
-      }
-      else if (strcmp((*argv) + 2, "copyright") == 0) {
-        mrb_show_copyright(mrb);
-        exit(EXIT_SUCCESS);
-      }
-    default:
-      return EXIT_FAILURE;
-    }
-  }
-  return EXIT_SUCCESS;
-}
-
-static void
-cleanup(mrb_state *mrb, struct _args *args)
-{
-  mrb_close(mrb);
-}
-
-/* Print a short remark for the user */
-static void
-print_hint(void)
-{
-  printf("mirb - Embeddable Interactive Ruby Shell\n");
-  printf("\nThis is a very early version, please test and report errors.\n");
-  printf("Thanks :)\n\n");
-}
-
-/* Print the command line prompt of the REPL */
-void
-print_cmdline(int code_block_open)
-{
-  if (code_block_open) {
-    printf("* ");
-  }
-  else {
-    printf("> ");
-  }
-}
-
-int
-main(int argc, char **argv)
-{
-  char ruby_code[1024] = { 0 };
-  char last_code_line[1024] = { 0 };
-#ifndef ENABLE_READLINE
-  int last_char;
-  int char_index;
-#else
-  char *home = NULL;
-#endif
-  mrbc_context *cxt;
-  struct mrb_parser_state *parser;
-  mrb_state *mrb;
-  mrb_value result;
-  struct _args args;
-  int n;
-  int code_block_open = FALSE;
-  int ai;
-
-  /* new interpreter instance */
-  mrb = mrb_open();
-  if (mrb == NULL) {
-    fputs("Invalid mrb interpreter, exiting mirb\n", stderr);
-    return EXIT_FAILURE;
-  }
-  mrb_define_global_const(mrb, "ARGV", mrb_ary_new_capa(mrb, 0));
-
-  n = parse_args(mrb, argc, argv, &args);
-  if (n == EXIT_FAILURE) {
-    cleanup(mrb, &args);
-    usage(argv[0]);
-    return n;
-  }
-
-  print_hint();
-
-  cxt = mrbc_context_new(mrb);
-  cxt->capture_errors = 1;
-  cxt->lineno = 1;
-  mrbc_filename(mrb, cxt, "(mirb)");
-  if (args.verbose) cxt->dump_result = 1;
-
-  ai = mrb_gc_arena_save(mrb);
-
-#ifdef ENABLE_READLINE
-  using_history();
-  home = getenv("HOME");
-#ifdef _WIN32
-  if (!home)
-    home = getenv("USERPROFILE");
-#endif
-  if (home) {
-    strcpy(history_path, home);
-    strcat(history_path, "/");
-    strcat(history_path, history_file_name);
-    read_history(history_path);
-  }
-#endif
-
-
-  while (TRUE) {
-#ifndef ENABLE_READLINE
-    print_cmdline(code_block_open);
-
-    char_index = 0;
-    while ((last_char = getchar()) != '\n') {
-      if (last_char == EOF) break;
-      last_code_line[char_index++] = last_char;
-    }
-    if (last_char == EOF) {
-      fputs("\n", stdout);
-      break;
-    }
-
-    last_code_line[char_index] = '\0';
-#else
-    char* line = readline(code_block_open ? "* " : "> ");
-    if (line == NULL) {
-      printf("\n");
-      break;
-    }
-    strncpy(last_code_line, line, sizeof(last_code_line)-1);
-    add_history(line);
-    free(line);
-#endif
-
-    if ((strcmp(last_code_line, "quit") == 0) || (strcmp(last_code_line, "exit") == 0)) {
-      if (!code_block_open) {
-        break;
-      }
-      else{
-        /* count the quit/exit commands as strings if in a quote block */
-        strcat(ruby_code, "\n");
-        strcat(ruby_code, last_code_line);
-      }
-    }
-    else {
-      if (code_block_open) {
-        strcat(ruby_code, "\n");
-        strcat(ruby_code, last_code_line);
-      }
-      else {
-        strcpy(ruby_code, last_code_line);
-      }
-    }
-
-    /* parse code */
-    parser = mrb_parser_new(mrb);
-    parser->s = ruby_code;
-    parser->send = ruby_code + strlen(ruby_code);
-    parser->lineno = cxt->lineno;
-    mrb_parser_parse(parser, cxt);
-    code_block_open = is_code_block_open(parser);
-
-    if (code_block_open) {
-      /* no evaluation of code */
-    }
-    else {
-      if (0 < parser->nerr) {
-        /* syntax error */
-        printf("line %d: %s\n", parser->error_buffer[0].lineno, parser->error_buffer[0].message);
-      }
-      else {
-        /* generate bytecode */
-        n = mrb_generate_code(mrb, parser);
-
-        /* evaluate the bytecode */
-        result = mrb_run(mrb,
-            /* pass a proc for evaulation */
-            mrb_proc_new(mrb, mrb->irep[n]),
-            mrb_top_self(mrb));
-        /* did an exception occur? */
-        if (mrb->exc) {
-          p(mrb, mrb_obj_value(mrb->exc), 0);
-          mrb->exc = 0;
-        }
-        else {
-          /* no */
-          if (!mrb_respond_to(mrb, result, mrb_intern2(mrb, "inspect", 7))){
-            result = mrb_any_to_s(mrb,result);
-          }
-          p(mrb, result, 1);
-        }
-      }
-      ruby_code[0] = '\0';
-      last_code_line[0] = '\0';
-      mrb_gc_arena_restore(mrb, ai);
-    }
-    mrb_parser_free(parser);
-    cxt->lineno++;
-  }
-  mrbc_context_free(mrb, cxt);
-  mrb_close(mrb);
-
-#ifdef ENABLE_READLINE
-  write_history(history_path);
-#endif
-
-  return 0;
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/mrbgem.rake (+0 -5) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/mrbgem.rake    2014-06-08 19:01:14 +0900 (08ba898)
+++ /dev/null
@@ -1,5 +0,0 @@
-MRuby::Gem::Specification.new('mruby-bin-mruby') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-  spec.bins = %w(mruby)
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c (+0 -251) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c    2014-06-08 19:01:14 +0900 (baeb959)
+++ /dev/null
@@ -1,251 +0,0 @@
-#include "mruby.h"
-#include "mruby/proc.h"
-#include "mruby/array.h"
-#include "mruby/string.h"
-#include "mruby/compile.h"
-#include "mruby/dump.h"
-#include "mruby/variable.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef ENABLE_STDIO
-static void
-p(mrb_state *mrb, mrb_value obj)
-{
-  obj = mrb_funcall(mrb, obj, "inspect", 0);
-  fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
-  putc('\n', stdout);
-}
-#else
-#define p(mrb,obj) mrb_p(mrb,obj)
-#endif
-
-void mrb_show_version(mrb_state *);
-void mrb_show_copyright(mrb_state *);
-
-struct _args {
-  FILE *rfp;
-  char* cmdline;
-  mrb_bool fname        : 1;
-  mrb_bool mrbfile      : 1;
-  mrb_bool check_syntax : 1;
-  mrb_bool verbose      : 1;
-  int argc;
-  char** argv;
-};
-
-static void
-usage(const char *name)
-{
-  static const char *const usage_msg[] = {
-  "switches:",
-  "-b           load and execute RiteBinary (mrb) file",
-  "-c           check syntax only",
-  "-e 'command' one line of script",
-  "-v           print version number, then run in verbose mode",
-  "--verbose    run in verbose mode",
-  "--version    print the version",
-  "--copyright  print the copyright",
-  NULL
-  };
-  const char *const *p = usage_msg;
-
-  printf("Usage: %s [switches] programfile\n", name);
-  while (*p)
-    printf("  %s\n", *p++);
-}
-
-static int
-parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
-{
-  char **origargv = argv;
-  static const struct _args args_zero = { 0 };
-
-  *args = args_zero;
-
-  for (argc--,argv++; argc > 0; argc--,argv++) {
-    char *item;
-    if (argv[0][0] != '-') break;
-
-    if (strlen(*argv) <= 1) {
-      argc--; argv++;
-      args->rfp = stdin;
-      break;
-    }
-
-    item = argv[0] + 1;
-    switch (*item++) {
-    case 'b':
-      args->mrbfile = 1;
-      break;
-    case 'c':
-      args->check_syntax = 1;
-      break;
-    case 'e':
-      if (item[0]) {
-        goto append_cmdline;
-      }
-      else if (argc > 1) {
-        argc--; argv++;
-        item = argv[0];
-append_cmdline:
-        if (!args->cmdline) {
-          size_t buflen;
-          char *buf;
-
-          buflen = strlen(item) + 1;
-          buf = (char *)mrb_malloc(mrb, buflen);
-          memcpy(buf, item, buflen);
-          args->cmdline = buf;
-        }
-        else {
-          size_t cmdlinelen;
-          size_t itemlen;
-
-          cmdlinelen = strlen(args->cmdline);
-          itemlen = strlen(item);
-          args->cmdline =
-            (char *)mrb_realloc(mrb, args->cmdline, cmdlinelen + itemlen + 2);
-          args->cmdline[cmdlinelen] = '\n';
-          memcpy(args->cmdline + cmdlinelen + 1, item, itemlen + 1);
-        }
-      }
-      else {
-        printf("%s: No code specified for -e\n", *origargv);
-        return EXIT_SUCCESS;
-      }
-      break;
-    case 'v':
-      if (!args->verbose) mrb_show_version(mrb);
-      args->verbose = 1;
-      break;
-    case '-':
-      if (strcmp((*argv) + 2, "version") == 0) {
-        mrb_show_version(mrb);
-        exit(EXIT_SUCCESS);
-      }
-      else if (strcmp((*argv) + 2, "verbose") == 0) {
-        args->verbose = 1;
-        break;
-      }
-      else if (strcmp((*argv) + 2, "copyright") == 0) {
-        mrb_show_copyright(mrb);
-        exit(EXIT_SUCCESS);
-      }
-    default:
-      return EXIT_FAILURE;
-    }
-  }
-
-  if (args->rfp == NULL && args->cmdline == NULL) {
-    if (*argv == NULL) args->rfp = stdin;
-    else {
-      args->rfp = fopen(argv[0], args->mrbfile ? "rb" : "r");
-      if (args->rfp == NULL) {
-        printf("%s: Cannot open program file. (%s)\n", *origargv, *argv);
-        return 0;
-      }
-      args->fname = 1;
-      args->cmdline = argv[0];
-      argc--; argv++;
-    }
-  }
-  args->argv = (char **)mrb_realloc(mrb, args->argv, sizeof(char*) * (argc + 1));
-  memcpy(args->argv, argv, (argc+1) * sizeof(char*));
-  args->argc = argc;
-
-  return EXIT_SUCCESS;
-}
-
-static void
-cleanup(mrb_state *mrb, struct _args *args)
-{
-  if (args->rfp && args->rfp != stdin)
-    fclose(args->rfp);
-  if (args->cmdline && !args->fname)
-    mrb_free(mrb, args->cmdline);
-  if (args->argv)
-    mrb_free(mrb, args->argv);
-  mrb_close(mrb);
-}
-
-int
-main(int argc, char **argv)
-{
-  mrb_state *mrb = mrb_open();
-  int n = -1;
-  int i;
-  struct _args args;
-  mrb_value ARGV;
-
-  if (mrb == NULL) {
-    fputs("Invalid mrb_state, exiting mruby\n", stderr);
-    return EXIT_FAILURE;
-  }
-
-  n = parse_args(mrb, argc, argv, &args);
-  if (n == EXIT_FAILURE || (args.cmdline == NULL && args.rfp == NULL)) {
-    cleanup(mrb, &args);
-    usage(argv[0]);
-    return n;
-  }
-
-  ARGV = mrb_ary_new_capa(mrb, args.argc);
-  for (i = 0; i < args.argc; i++) {
-    mrb_ary_push(mrb, ARGV, mrb_str_new(mrb, args.argv[i], strlen(args.argv[i])));
-  }
-  mrb_define_global_const(mrb, "ARGV", ARGV);
-
-  if (args.mrbfile) {
-    n = mrb_read_irep_file(mrb, args.rfp);
-    if (n < 0) {
-      fprintf(stderr, "failed to load mrb file: %s\n", args.cmdline);
-    }
-    else if (!args.check_syntax) {
-      mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
-      n = 0;
-      if (mrb->exc) {
-        mrb_print_error(mrb);
-        n = -1;
-      }
-    }
-  }
-  else {
-    mrbc_context *c = mrbc_context_new(mrb);
-    mrb_sym zero_sym = mrb_intern2(mrb, "$0", 2);
-    mrb_value v;
-
-    if (args.verbose)
-      c->dump_result = 1;
-    if (args.check_syntax)
-      c->no_exec = 1;
-
-    if (args.rfp) {
-      char *cmdline;
-      cmdline = args.cmdline ? args.cmdline : "-";
-      mrbc_filename(mrb, c, cmdline);
-      mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline));
-      v = mrb_load_file_cxt(mrb, args.rfp, c);
-    }
-    else {
-      mrbc_filename(mrb, c, "-e");
-      mrb_gv_set(mrb, zero_sym, mrb_str_new(mrb, "-e", 2));
-      v = mrb_load_string_cxt(mrb, args.cmdline, c);
-    }
-
-    mrbc_context_free(mrb, c);
-    if (mrb->exc) {
-      if (!mrb_undef_p(v)) {
-        mrb_print_error(mrb);
-      }
-      n = -1;
-    }
-    else if (args.check_syntax) {
-      printf("Syntax OK\n");
-    }
-  }
-  cleanup(mrb, &args);
-
-  return n == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (e054f43)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-enum-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrblib/enum.rb (+0 -164) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/mrblib/enum.rb    2014-06-08 19:01:14 +0900 (f250d39)
+++ /dev/null
@@ -1,164 +0,0 @@
-##
-# Enumerable
-#
-module Enumerable
-  ##
-  # call-seq:
-  #    enum.drop(n)               -> array
-  #
-  # Drops first n elements from <i>enum</i>, and returns rest elements
-  # in an array.
-  #
-  #    a = [1, 2, 3, 4, 5, 0]
-  #    a.drop(3)             #=> [4, 5, 0]
-
-  def drop(n)
-    raise TypeError, "expected Integer for 1st argument" unless n.kind_of? Integer
-    raise ArgumentError, "attempt to drop negative size" if n < 0
-
-    ary = []
-    self.each {|e| n == 0 ? ary << e : n -= 1 }
-    ary
-  end
-
-  ##
-  # call-seq:
-  #    enum.drop_while {|arr| block }   -> array
-  #
-  # Drops elements up to, but not including, the first element for
-  # which the block returns +nil+ or +false+ and returns an array
-  # containing the remaining elements.
-  #
-  #    a = [1, 2, 3, 4, 5, 0]
-  #    a.drop_while {|i| i < 3 }   #=> [3, 4, 5, 0]
-
-  def drop_while(&block)
-    ary, state = [], false
-    self.each do |e|
-      state = true if !state and !block.call(e)
-      ary << e if state
-    end
-    ary
-  end
-
-  ##
-  # call-seq:
-  #    enum.take(n)               -> array
-  #
-  # Returns first n elements from <i>enum</i>.
-  #
-  #    a = [1, 2, 3, 4, 5, 0]
-  #    a.take(3)             #=> [1, 2, 3]
-
-  def take(n)
-    raise TypeError, "expected Integer for 1st argument" unless n.kind_of? Integer
-    raise ArgumentError, "attempt to take negative size" if n < 0
-
-    ary = []
-    self.each do |e|
-      break if ary.size >= n
-      ary << e
-    end
-    ary
-  end
-
-  ##
-  # call-seq:
-  #    enum.take_while {|arr| block }   -> array
-  #
-  # Passes elements to the block until the block returns +nil+ or +false+,
-  # then stops iterating and returns an array of all prior elements.
-  #
-  #
-  #    a = [1, 2, 3, 4, 5, 0]
-  #    a.take_while {|i| i < 3 }   #=> [1, 2]
-
-  def take_while(&block)
-    ary = []
-    self.each do |e|
-      return ary unless block.call(e)
-      ary << e
-    end
-    ary
-  end
-  
-  ##
-  # call-seq:
-  #   enum.each_cons(n) {...}   ->  nil
-  #
-  # Iterates the given block for each array of consecutive <n>
-  # elements.
-  #
-  # e.g.:
-  #     (1..10).each_cons(3) {|a| p a}
-  #     # outputs below
-  #     [1, 2, 3]
-  #     [2, 3, 4]
-  #     [3, 4, 5]
-  #     [4, 5, 6]
-  #     [5, 6, 7]
-  #     [6, 7, 8]
-  #     [7, 8, 9]
-  #     [8, 9, 10]
-
-  def each_cons(n, &block)
-    raise TypeError, "expected Integer for 1st argument" unless n.kind_of? Integer
-    raise ArgumentError, "invalid size" if n <= 0
-
-    ary = []
-    self.each do |e|
-      ary.shift if ary.size == n
-      ary << e
-      block.call(ary.dup) if ary.size == n
-    end
-  end
-
-  ##
-  # call-seq:
-  #   enum.each_slice(n) {...}  ->  nil
-  #
-  # Iterates the given block for each slice of <n> elements.
-  #
-  # e.g.:
-  #     (1..10).each_slice(3) {|a| p a}
-  #     # outputs below
-  #     [1, 2, 3]
-  #     [4, 5, 6]
-  #     [7, 8, 9]
-  #     [10]
-
-  def each_slice(n, &block)
-    raise TypeError, "expected Integer for 1st argument" unless n.kind_of? Integer
-    raise ArgumentError, "invalid slice size" if n <= 0
-
-    ary = []
-    self.each do |e|
-      ary << e
-      if ary.size == n
-        block.call(ary)
-        ary = []
-      end
-    end
-    block.call(ary) unless ary.empty?
-  end
-
-  ##
-  # call-seq:
-  #    enum.group_by {| obj | block }  -> a_hash
-  #
-  # Returns a hash, which keys are evaluated result from the
-  # block, and values are arrays of elements in <i>enum</i>
-  # corresponding to the key.
-  #
-  #    (1..6).group_by {|i| i%3}   #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
-
-  def group_by(&block)
-    h = {}
-    self.each do |e|
-      key = block.call(e)
-      h.key?(key) ? (h[key] << e) : (h[key] = [e])
-    end
-    h
-  end
-
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/test/enum.rb (+0 -43) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-enum-ext/test/enum.rb    2014-06-08 19:01:14 +0900 (a776223)
+++ /dev/null
@@ -1,43 +0,0 @@
-##
-# Enumerable(Ext) Test
-
-assert("Enumerable#drop") do
-  a = [1, 2, 3, 4, 5, 0]
-
-  assert_equal [4, 5, 0], a.drop(3)
-  assert_equal [], a.drop(6)
-end
-
-assert("Enumerable#drop_while") do
-  a = [1, 2, 3, 4, 5, 0]
-  assert_equal [3, 4, 5, 0], a.drop_while {|i| i < 3 }
-end
-
-assert("Enumerable#take") do
-  a = [1, 2, 3, 4, 5, 0]
-  assert_equal [1, 2, 3], a.take(3)
-end
-
-assert("Enumerable#take_while") do
-  a = [1, 2, 3, 4, 5, 0]
-  assert_equal [1, 2], a.take_while {|i| i < 3}
-end
-
-assert("Enumerable#each_cons") do
-  a = []
-  (1..5).each_cons(3){|e| a << e}
-  assert_equal [[1, 2, 3], [2, 3, 4], [3, 4, 5]], a
-end
-
-assert("Enumerable#each_slice") do
-  a = []
-  (1..10).each_slice(3){|e| a << e}
-  assert_equal [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]], a
-end
-
-assert("Enumerable#group_by") do
-  r = (1..6).group_by {|i| i % 3 }
-  assert_equal [3, 6], r[0]
-  assert_equal [1, 4], r[1]
-  assert_equal [2, 5], r[2]
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-eval/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-eval/mrbgem.rake    2014-06-08 19:01:14 +0900 (217a9e6)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-eval') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-eval/src/eval.c (+0 -23) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-eval/src/eval.c    2014-06-08 19:01:14 +0900 (c935f5e)
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "mruby.h"
-#include "mruby/compile.h"
-
-static mrb_value
-f_eval(mrb_state *mrb, mrb_value self)
-{
-  char *s;
-  int len;
-
-  mrb_get_args(mrb, "s", &s, &len);
-  return mrb_load_nstring(mrb, s, len);
-}
-
-void
-mrb_mruby_eval_gem_init(mrb_state* mrb)
-{
-  mrb_define_class_method(mrb, mrb->kernel_module, "eval", f_eval, MRB_ARGS_REQ(1));
-}
-
-void
-mrb_mruby_eval_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-exit/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-exit/mrbgem.rake    2014-06-08 19:01:14 +0900 (910b3b4)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-exit') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-exit/src/mruby-exit.c (+0 -24) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-exit/src/mruby-exit.c    2014-06-08 19:01:14 +0900 (d816575)
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdlib.h>
-#include "mruby.h"
-
-static mrb_value
-f_exit(mrb_state *mrb, mrb_value self)
-{
-  mrb_int i = EXIT_SUCCESS;
-
-  mrb_get_args(mrb, "|i", &i);
-  exit(i);
-  /* not reached */
-  return mrb_nil_value();
-}
-
-void
-mrb_mruby_exit_gem_init(mrb_state* mrb)
-{
-  mrb_define_method(mrb, mrb->kernel_module, "exit", f_exit, MRB_ARGS_REQ(1));
-}
-
-void
-mrb_mruby_exit_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-fiber/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-fiber/mrbgem.rake    2014-06-08 19:01:14 +0900 (25009c4)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-fiber') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-fiber/src/fiber.c (+0 -253) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-fiber/src/fiber.c    2014-06-08 19:01:14 +0900 (c764b47)
+++ /dev/null
@@ -1,253 +0,0 @@
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/proc.h"
-
-#define FIBER_STACK_INIT_SIZE 64
-#define FIBER_CI_INIT_SIZE 8
-
-/*
- *  call-seq:
- *     Fiber.new{...} -> obj
- *
- *  Creates a fiber, whose execution is suspend until it is explicitly
- *  resumed using <code>Fiber#resume</code> method.  
- *  The code running inside the fiber can give up control by calling
- *  <code>Fiber.yield</code> in which case it yields control back to caller
- *  (the caller of the <code>Fiber#resume</code>).
- *
- *  Upon yielding or termination the Fiber returns the value of the last
- *  executed expression
- *
- *  For instance:
- *
- *    fiber = Fiber.new do
- *      Fiber.yield 1
- *      2
- *    end
- *
- *    puts fiber.resume
- *    puts fiber.resume
- *    puts fiber.resume
- *
- *  <em>produces</em>
- *
- *    1
- *    2
- *    resuming dead fiber (RuntimeError)
- *
- *  The <code>Fiber#resume</code> method accepts an arbitrary number of
- *  parameters, if it is the first call to <code>resume</code> then they
- *  will be passed as block arguments. Otherwise they will be the return
- *  value of the call to <code>Fiber.yield</code>
- *
- *  Example:
- *
- *    fiber = Fiber.new do |first|
- *      second = Fiber.yield first + 2
- *    end
- *
- *    puts fiber.resume 10
- *    puts fiber.resume 14
- *    puts fiber.resume 18
- *
- *  <em>produces</em>
- *
- *    12
- *    14
- *    resuming dead fiber (RuntimeError)
- *
- */
-static mrb_value
-fiber_init(mrb_state *mrb, mrb_value self)
-{
-  static const struct mrb_context mrb_context_zero = { 0 };
-  struct RFiber *f = (struct RFiber*)mrb_ptr(self);
-  struct mrb_context *c;
-  struct RProc *p;
-  mrb_callinfo *ci;
-  mrb_value blk;
-
-  mrb_get_args(mrb, "&", &blk);
-  
-  if (mrb_nil_p(blk)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Fiber object without a block");
-  }
-  p = mrb_proc_ptr(blk);
-  if (MRB_PROC_CFUNC_P(p)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Fiber from C defined method");
-  }
-
-  f->cxt = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context));
-  *f->cxt = mrb_context_zero;
-  c = f->cxt;
-
-  /* initialize VM stack */
-  c->stbase = (mrb_value *)mrb_calloc(mrb, FIBER_STACK_INIT_SIZE, sizeof(mrb_value));
-  c->stend = c->stbase + FIBER_STACK_INIT_SIZE;
-  c->stack = c->stbase;
-
-  /* copy receiver from a block */
-  c->stack[0] = mrb->c->stack[0];
-
-  /* initialize callinfo stack */
-  c->cibase = (mrb_callinfo *)mrb_calloc(mrb, FIBER_CI_INIT_SIZE, sizeof(mrb_callinfo));
-  c->ciend = c->cibase + FIBER_CI_INIT_SIZE;
-  c->ci = c->cibase;
-
-  /* adjust return callinfo */
-  ci = c->ci;
-  ci->target_class = p->target_class;
-  ci->proc = p;
-  ci->pc = p->body.irep->iseq;
-  ci->nregs = p->body.irep->nregs;
-  ci[1] = ci[0];
-  c->ci++;                      /* push dummy callinfo */
-
-  c->fib = f;
-  c->status = MRB_FIBER_CREATED;
-
-  return self;
-}
-
-static struct mrb_context*
-fiber_check(mrb_state *mrb, mrb_value fib)
-{
-  struct RFiber *f = (struct RFiber*)mrb_ptr(fib);
-
-  if (!f->cxt) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "uninitialized Fiber");
-  }
-  return f->cxt;
-}
-
-static mrb_value
-fiber_result(mrb_state *mrb, mrb_value *a, int len)
-{
-  if (len == 0) return mrb_nil_value();
-  if (len == 1) return a[0];
-  return mrb_ary_new_from_values(mrb, len, a);
-}
-
-/* mark return from context modifying method */
-#define MARK_CONTEXT_MODIFY(c) (c)->ci->target_class = NULL
-
-/*
- *  call-seq:
- *     fiber.resume(args, ...) -> obj
- *
- *  Resumes the fiber from the point at which the last <code>Fiber.yield</code>
- *  was called, or starts running it if it is the first call to
- *  <code>resume</code>. Arguments passed to resume will be the value of
- *  the <code>Fiber.yield</code> expression or will be passed as block
- *  parameters to the fiber's block if this is the first <code>resume</code>.
- *
- *  Alternatively, when resume is called it evaluates to the arguments passed
- *  to the next <code>Fiber.yield</code> statement inside the fiber's block
- *  or to the block value if it runs to completion without any
- *  <code>Fiber.yield</code>
- */
-static mrb_value
-fiber_resume(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_context *c = fiber_check(mrb, self);
-  mrb_value *a;
-  int len;
-
-  if (c->status == MRB_FIBER_RESUMED) {
-    mrb_raise(mrb, E_RUNTIME_ERROR, "double resume");
-  }
-  if (c->status == MRB_FIBER_TERMINATED) {
-    mrb_raise(mrb, E_RUNTIME_ERROR, "resuming dead fiber");
-  }
-  mrb_get_args(mrb, "*", &a, &len);
-  mrb->c->status = MRB_FIBER_RESUMED;
-  if (c->status == MRB_FIBER_CREATED) {
-    mrb_value *b = c->stack+1;
-    mrb_value *e = b + len;
-
-    while (b<e) {
-      *b++ = *a++;
-    }
-    c->cibase->argc = len;
-    c->prev = mrb->c;
-    if (c->prev->fib) 
-      mrb_field_write_barrier(mrb, (struct RBasic*)c->fib, (struct RBasic*)c->prev->fib);
-    mrb_write_barrier(mrb, (struct RBasic*)c->fib);
-    c->status = MRB_FIBER_RUNNING;
-    mrb->c = c;
-
-    MARK_CONTEXT_MODIFY(c);
-    return c->ci->proc->env->stack[0];
-  }
-  MARK_CONTEXT_MODIFY(c);
-  c->prev = mrb->c;
-  if (c->prev->fib) 
-    mrb_field_write_barrier(mrb, (struct RBasic*)c->fib, (struct RBasic*)c->prev->fib);
-  mrb_write_barrier(mrb, (struct RBasic*)c->fib);
-  c->status = MRB_FIBER_RUNNING;
-  mrb->c = c;
-  return fiber_result(mrb, a, len);
-}
-
-/*
- *  call-seq:
- *     fiber.alive? -> true or false
- *
- *  Returns true if the fiber can still be resumed. After finishing
- *  execution of the fiber block this method will always return false.
- */
-static mrb_value
-fiber_alive_p(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_context *c = fiber_check(mrb, self);
-  return mrb_bool_value(c->status != MRB_FIBER_TERMINATED);
-}
-
-/*
- *  call-seq:
- *     Fiber.yield(args, ...) -> obj
- *
- *  Yields control back to the context that resumed the fiber, passing
- *  along any arguments that were passed to it. The fiber will resume
- *  processing at this point when <code>resume</code> is called next.
- *  Any arguments passed to the next <code>resume</code> will be the
- *  value that this <code>Fiber.yield</code> expression evaluates to.
- */
-static mrb_value
-fiber_yield(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_context *c = mrb->c;
-  mrb_value *a;
-  int len;
-
-  if (!c->prev) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "can't yield from root fiber");
-  }
-  mrb_get_args(mrb, "*", &a, &len);
-  c->prev->status = MRB_FIBER_RUNNING;
-  mrb->c = c->prev;
-  c->prev = NULL;
-  MARK_CONTEXT_MODIFY(mrb->c);
-  return fiber_result(mrb, a, len);
-}
-
-void
-mrb_mruby_fiber_gem_init(mrb_state* mrb)
-{
-  struct RClass *c;
-
-  c = mrb_define_class(mrb, "Fiber", mrb->object_class);
-  MRB_SET_INSTANCE_TT(c, MRB_TT_FIBER);
-
-  mrb_define_method(mrb, c, "initialize", fiber_init,    MRB_ARGS_NONE());
-  mrb_define_method(mrb, c, "resume",     fiber_resume,  MRB_ARGS_ANY());
-  mrb_define_method(mrb, c, "alive?",     fiber_alive_p, MRB_ARGS_NONE());
-
-  mrb_define_class_method(mrb, c, "yield", fiber_yield, MRB_ARGS_ANY());
-}
-
-void
-mrb_mruby_fiber_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-fiber/test/fiber.rb (+0 -64) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-fiber/test/fiber.rb    2014-06-08 19:01:14 +0900 (8caf725)
+++ /dev/null
@@ -1,64 +0,0 @@
-assert('Fiber.new') {
-  f = Fiber.new{}
-  f.class == Fiber
-}
-
-assert('Fiber#resume') {
-  f = Fiber.new{|x| x == 2}
-  f.resume(2)
-}
-
-assert('Fiber#alive?') {
-  f = Fiber.new{ Fiber.yield }
-  f.resume
-  r1 = f.alive?
-  f.resume
-  r2 = f.alive?
-  r1 == true and r2 == false
-}
-
-assert('Fiber.yield') {
-  f = Fiber.new{|x| Fiber.yield(x == 3)}
-  f.resume(3)
-}
-
-assert('Fiber iteration') {
-  f1 = Fiber.new{
-    [1,2,3].each{|x| Fiber.yield(x)}
-  }
-  f2 = Fiber.new{
-    [9,8,7].each{|x| Fiber.yield(x)}
-  }
-  a = []
-  3.times {
-    a << f1.resume
-    a << f2.resume
-  }
-  a == [1,9,2,8,3,7]
-}
-
-assert('Fiber with splat in the block argument list') {
-  Fiber.new{|*x|x}.resume(1) == [1]
-}
-
-assert('Fiber raises on resume when dead') {
-  r1 = true
-  begin
-    f = Fiber.new{}
-    f.resume
-    r1 = f.alive?
-    f.resume
-    false
-  rescue => e1
-    true
-  end
-}
-
-assert('Yield raises when called on root fiber') {
-  begin
-    Fiber.yield
-    false
-  rescue => e1
-    true
-  end
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (25d4f8e)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-hash-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrblib/hash.rb (+0 -13) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/mrblib/hash.rb    2014-06-08 19:01:14 +0900 (3fb83ab)
+++ /dev/null
@@ -1,13 +0,0 @@
-class Hash
-  def merge!(other, &block)
-    raise "can't convert argument into Hash" unless other.respond_to?(:to_hash)
-    if block
-      other.each_key{|k|
-        self[k] = (self.has_key?(k))? block.call(k, self[k], other[k]): other[k]
-      }
-    else
-      other.each_key{|k| self[k] = other[k]}
-    end
-    self
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/src/hash-ext.c (+0 -62) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/src/hash-ext.c    2014-06-08 19:01:14 +0900 (9451892)
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-** hash.c - Hash class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/hash.h"
-#include "mruby/khash.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-
-/*
- * call-seq:
- *   hsh.values_at(key, ...)   -> array
- *
- * Return an array containing the values associated with the given keys.
- * Also see <code>Hash.select</code>.
- *
- *   h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" }
- *   h.values_at("cow", "cat")  #=> ["bovine", "feline"]
- */
-
-mrb_value
-mrb_hash_values_at(mrb_state *mrb, int argc, mrb_value *argv, mrb_value hash)
-{
-    mrb_value result = mrb_ary_new_capa(mrb, argc);
-    long i;
-
-    for (i=0; i<argc; i++) {
-        mrb_ary_push(mrb, result, mrb_hash_get(mrb, hash, argv[i]));
-    }
-    return result;
-}
-
-static mrb_value
-hash_values_at(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-
-  return mrb_hash_values_at(mrb, argc, argv, hash);
-}
-
-void
-mrb_mruby_hash_ext_gem_init(mrb_state *mrb)
-{
-  struct RClass *h;
-
-  h = mrb->hash_class;
-
-  mrb_define_method(mrb, h, "values_at",              hash_values_at,       MRB_ARGS_ANY());
-}
-
-void
-mrb_mruby_hash_ext_gem_final(mrb_state *mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/test/hash.rb (+0 -24) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-hash-ext/test/hash.rb    2014-06-08 19:01:14 +0900 (40f6ac8)
+++ /dev/null
@@ -1,24 +0,0 @@
-##
-# Hash(Ext) Test
-
-assert('Hash#merge!') do
-  a = { 'abc_key' => 'abc_value', 'cba_key' => 'cba_value' }
-  b = { 'cba_key' => 'XXX',  'xyz_key' => 'xyz_value' }
-
-  result_1 = a.merge! b
-  
-  a = { 'abc_key' => 'abc_value', 'cba_key' => 'cba_value' }
-  result_2 = a.merge!(b) do |key, original, new|
-    original
-  end
-
-  assert_equal({'abc_key' => 'abc_value', 'cba_key' => 'XXX',
-               'xyz_key' => 'xyz_value' }, result_1)
-  assert_equal({'abc_key' => 'abc_value', 'cba_key' => 'cba_value',
-               'xyz_key' => 'xyz_value' }, result_2)
-end
-
-assert('Hash#values_at') do
-  h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" }
-  assert_equal ["bovine", "feline"], h.values_at("cow", "cat")
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-math/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-math/mrbgem.rake    2014-06-08 19:01:14 +0900 (75d3d1f)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-math') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-math/src/math.c (+0 -689) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-math/src/math.c    2014-06-08 19:01:14 +0900 (4960de6)
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
-** math.c - Math module
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-
-#include <math.h>
-
-#define domain_error(msg) \
-    mrb_raise(mrb, E_RANGE_ERROR, "Numerical argument is out of domain - " #msg)
-
-/* math functions not provided by Microsoft Visual C++ 2012 or older */
-#if defined _MSC_VER && _MSC_VER < 1800
-
-#define MATH_TOLERANCE 1E-12
-
-#define asinh(x) log(x + sqrt(pow(x,2.0) + 1))
-#define acosh(x) log(x + sqrt(pow(x,2.0) - 1))
-#define atanh(x) (log(1+x) - log(1-x))/2.0
-#define cbrt(x)  pow(x,1.0/3.0)
-
-/* Declaration of complementary Error function */
-double
-erfc(double x);
-
-/*
-** Implementations of error functions
-** credits to http://www.digitalmars.com/archives/cplusplus/3634.html
-*/
-
-/* Implementation of Error function */
-double
-erf(double x)
-{
-  static const double two_sqrtpi =  1.128379167095512574;
-  double sum  = x;
-  double term = x;
-  double xsqr = x*x;
-  int j= 1;
-  if (fabs(x) > 2.2) {
-    return 1.0 - erfc(x);
-  }
-  do {
-    term *= xsqr/j;
-    sum  -= term/(2*j+1);
-    ++j;
-    term *= xsqr/j;
-    sum  += term/(2*j+1);
-    ++j;
-  } while (fabs(term/sum) > MATH_TOLERANCE);
-  return two_sqrtpi*sum;
-}
-
-/* Implementation of complementary Error function */
-double
-erfc(double x)
-{
-  static const double one_sqrtpi=  0.564189583547756287;
-  double a = 1;
-  double b = x;
-  double c = x;
-  double d = x*x+0.5;
-  double q1;
-  double q2 = b/d;
-  double n = 1.0;
-  double t;
-  if (fabs(x) < 2.2) {
-    return 1.0 - erf(x);
-  }
-  if (x < 0.0) { /*signbit(x)*/
-    return 2.0 - erfc(-x);
-  }
-  do {
-    t  = a*n+b*x;
-    a  = b;
-    b  = t;
-    t  = c*n+d*x;
-    c  = d;
-    d  = t;
-    n += 0.5;
-    q1 = q2;
-    q2 = b/d;
-  } while (fabs(q1-q2)/q2 > MATH_TOLERANCE);
-  return one_sqrtpi*exp(-x*x)*q2;
-}
-
-#endif
-
-#if (defined _MSC_VER && _MSC_VER < 1800) || defined __ANDROID__
-
-double
-log2(double x)
-{
-    return log10(x)/log10(2.0);
-}
-
-#endif
-
-/*
-  TRIGONOMETRIC FUNCTIONS
-*/
-
-/*
- *  call-seq:
- *     Math.sin(x)    -> float
- *
- *  Computes the sine of <i>x</i> (expressed in radians). Returns
- *  -1..1.
- */
-static mrb_value
-math_sin(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = sin(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.cos(x)    -> float
- *
- *  Computes the cosine of <i>x</i> (expressed in radians). Returns
- *  -1..1.
- */
-static mrb_value
-math_cos(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = cos(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.tan(x)    -> float
- *
- *  Returns the tangent of <i>x</i> (expressed in radians).
- */
-static mrb_value
-math_tan(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = tan(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
-  INVERSE TRIGONOMETRIC FUNCTIONS
-*/
-
-/*
- *  call-seq:
- *     Math.asin(x)    -> float
- *
- *  Computes the arc sine of <i>x</i>. Returns -{PI/2} .. {PI/2}.
- */
-static mrb_value
-math_asin(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = asin(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.acos(x)    -> float
- *
- *  Computes the arc cosine of <i>x</i>. Returns 0..PI.
- */
-static mrb_value
-math_acos(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = acos(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.atan(x)    -> float
- *
- *  Computes the arc tangent of <i>x</i>. Returns -{PI/2} .. {PI/2}.
- */
-static mrb_value
-math_atan(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = atan(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.atan2(y, x)  -> float
- *
- *  Computes the arc tangent given <i>y</i> and <i>x</i>. Returns
- *  -PI..PI.
- *
- *    Math.atan2(-0.0, -1.0) #=> -3.141592653589793
- *    Math.atan2(-1.0, -1.0) #=> -2.356194490192345
- *    Math.atan2(-1.0, 0.0)  #=> -1.5707963267948966
- *    Math.atan2(-1.0, 1.0)  #=> -0.7853981633974483
- *    Math.atan2(-0.0, 1.0)  #=> -0.0
- *    Math.atan2(0.0, 1.0)   #=> 0.0
- *    Math.atan2(1.0, 1.0)   #=> 0.7853981633974483
- *    Math.atan2(1.0, 0.0)   #=> 1.5707963267948966
- *    Math.atan2(1.0, -1.0)  #=> 2.356194490192345
- *    Math.atan2(0.0, -1.0)  #=> 3.141592653589793
- *
- */
-static mrb_value
-math_atan2(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x, y;
-
-  mrb_get_args(mrb, "ff", &x, &y);
-  x = atan2(x, y);
-
-  return mrb_float_value(mrb, x);
-}
-
-
-
-/*
-  HYPERBOLIC TRIG FUNCTIONS
-*/
-/*
- *  call-seq:
- *     Math.sinh(x)    -> float
- *
- *  Computes the hyperbolic sine of <i>x</i> (expressed in
- *  radians).
- */
-static mrb_value
-math_sinh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = sinh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.cosh(x)    -> float
- *
- *  Computes the hyperbolic cosine of <i>x</i> (expressed in radians).
- */
-static mrb_value
-math_cosh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = cosh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.tanh()    -> float
- *
- *  Computes the hyperbolic tangent of <i>x</i> (expressed in
- *  radians).
- */
-static mrb_value
-math_tanh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = tanh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-
-/*
-  INVERSE HYPERBOLIC TRIG FUNCTIONS
-*/
-
-/*
- *  call-seq:
- *     Math.asinh(x)    -> float
- *
- *  Computes the inverse hyperbolic sine of <i>x</i>.
- */
-static mrb_value
-math_asinh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-
-  x = asinh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.acosh(x)    -> float
- *
- *  Computes the inverse hyperbolic cosine of <i>x</i>.
- */
-static mrb_value
-math_acosh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = acosh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.atanh(x)    -> float
- *
- *  Computes the inverse hyperbolic tangent of <i>x</i>.
- */
-static mrb_value
-math_atanh(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = atanh(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
-  EXPONENTIALS AND LOGARITHMS
-*/
-#if defined __CYGWIN__
-# include <cygwin/version.h>
-# if CYGWIN_VERSION_DLL_MAJOR < 1005
-#  define nan(x) nan()
-# endif
-# define log(x) ((x) < 0.0 ? nan("") : log(x))
-# define log10(x) ((x) < 0.0 ? nan("") : log10(x))
-#endif
-
-/*
- *  call-seq:
- *     Math.exp(x)    -> float
- *
- *  Returns e**x.
- *
- *    Math.exp(0)       #=> 1.0
- *    Math.exp(1)       #=> 2.718281828459045
- *    Math.exp(1.5)     #=> 4.4816890703380645
- *
- */
-static mrb_value
-math_exp(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = exp(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.log(numeric)    -> float
- *     Math.log(num,base)   -> float
- *
- *  Returns the natural logarithm of <i>numeric</i>.
- *  If additional second argument is given, it will be the base
- *  of logarithm.
- *
- *    Math.log(1)          #=> 0.0
- *    Math.log(Math::E)    #=> 1.0
- *    Math.log(Math::E**3) #=> 3.0
- *    Math.log(12,3)       #=> 2.2618595071429146
- *
- */
-static mrb_value
-math_log(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x, base;
-  int argc;
-
-  argc = mrb_get_args(mrb, "f|f", &x, &base);
-  x = log(x);
-  if (argc == 2) {
-    x /= log(base);
-  }
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.log2(numeric)    -> float
- *
- *  Returns the base 2 logarithm of <i>numeric</i>.
- *
- *    Math.log2(1)      #=> 0.0
- *    Math.log2(2)      #=> 1.0
- *    Math.log2(32768)  #=> 15.0
- *    Math.log2(65536)  #=> 16.0
- *
- */
-static mrb_value
-math_log2(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = log2(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.log10(numeric)    -> float
- *
- *  Returns the base 10 logarithm of <i>numeric</i>.
- *
- *    Math.log10(1)       #=> 0.0
- *    Math.log10(10)      #=> 1.0
- *    Math.log10(10**100) #=> 100.0
- *
- */
-static mrb_value
-math_log10(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = log10(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.sqrt(numeric)    -> float
- *
- *  Returns the square root of <i>numeric</i>.
- *
- */
-static mrb_value
-math_sqrt(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = sqrt(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-
-/*
- *  call-seq:
- *     Math.cbrt(numeric)    -> float
- *
- *  Returns the cube root of <i>numeric</i>.
- *
- *    -9.upto(9) {|x|
- *      p [x, Math.cbrt(x), Math.cbrt(x)**3]
- *    }
- *    #=>
- *    [-9, -2.0800838230519, -9.0]
- *    [-8, -2.0, -8.0]
- *    [-7, -1.91293118277239, -7.0]
- *    [-6, -1.81712059283214, -6.0]
- *    [-5, -1.7099759466767, -5.0]
- *    [-4, -1.5874010519682, -4.0]
- *    [-3, -1.44224957030741, -3.0]
- *    [-2, -1.25992104989487, -2.0]
- *    [-1, -1.0, -1.0]
- *    [0, 0.0, 0.0]
- *    [1, 1.0, 1.0]
- *    [2, 1.25992104989487, 2.0]
- *    [3, 1.44224957030741, 3.0]
- *    [4, 1.5874010519682, 4.0]
- *    [5, 1.7099759466767, 5.0]
- *    [6, 1.81712059283214, 6.0]
- *    [7, 1.91293118277239, 7.0]
- *    [8, 2.0, 8.0]
- *    [9, 2.0800838230519, 9.0]
- *
- */
-static mrb_value
-math_cbrt(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = cbrt(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-
-/*
- *  call-seq:
- *     Math.frexp(numeric)    -> [ fraction, exponent ]
- *
- *  Returns a two-element array containing the normalized fraction (a
- *  <code>Float</code>) and exponent (a <code>Fixnum</code>) of
- *  <i>numeric</i>.
- *
- *     fraction, exponent = Math.frexp(1234)   #=> [0.6025390625, 11]
- *     fraction * 2**exponent                  #=> 1234.0
- */
-static mrb_value
-math_frexp(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-  int exp;
-
-  mrb_get_args(mrb, "f", &x);
-  x = frexp(x, &exp);
-
-  return mrb_assoc_new(mrb, mrb_float_value(mrb, x), mrb_fixnum_value(exp));
-}
-
-/*
- *  call-seq:
- *     Math.ldexp(flt, int) -> float
- *
- *  Returns the value of <i>flt</i>*(2**<i>int</i>).
- *
- *     fraction, exponent = Math.frexp(1234)
- *     Math.ldexp(fraction, exponent)   #=> 1234.0
- */
-static mrb_value
-math_ldexp(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-  mrb_int   i;
-
-  mrb_get_args(mrb, "fi", &x, &i);
-  x = ldexp(x, i);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- *  call-seq:
- *     Math.hypot(x, y)    -> float
- *
- *  Returns sqrt(x**2 + y**2), the hypotenuse of a right-angled triangle
- *  with sides <i>x</i> and <i>y</i>.
- *
- *     Math.hypot(3, 4)   #=> 5.0
- */
-static mrb_value
-math_hypot(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x, y;
-
-  mrb_get_args(mrb, "ff", &x, &y);
-  x = hypot(x, y);
-
-  return mrb_float_value(mrb, x);
-}
-
-/*
- * call-seq:
- *    Math.erf(x)  -> float
- *
- *  Calculates the error function of x.
- */
-static mrb_value
-math_erf(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = erf(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-
-/*
- * call-seq:
- *    Math.erfc(x)  -> float
- *
- *  Calculates the complementary error function of x.
- */
-static mrb_value
-math_erfc(mrb_state *mrb, mrb_value obj)
-{
-  mrb_float x;
-
-  mrb_get_args(mrb, "f", &x);
-  x = erfc(x);
-
-  return mrb_float_value(mrb, x);
-}
-
-/* ------------------------------------------------------------------------*/
-void
-mrb_mruby_math_gem_init(mrb_state* mrb)
-{
-  struct RClass *mrb_math;
-  mrb_math = mrb_define_module(mrb, "Math");
-
-#ifdef M_PI
-  mrb_define_const(mrb, mrb_math, "PI", mrb_float_value(mrb, M_PI));
-#else
-  mrb_define_const(mrb, mrb_math, "PI", mrb_float_value(mrb, atan(1.0)*4.0));
-#endif
-
-#ifdef M_E
-  mrb_define_const(mrb, mrb_math, "E", mrb_float_value(mrb, M_E));
-#else
-  mrb_define_const(mrb, mrb_math, "E", mrb_float_value(mrb, exp(1.0)));
-#endif
-
-#ifdef MRB_USE_FLOAT
-  mrb_define_const(mrb, mrb_math, "TOLERANCE", mrb_float_value(mrb, 1e-5));
-#else
-  mrb_define_const(mrb, mrb_math, "TOLERANCE", mrb_float_value(mrb, 1e-12));
-#endif
-
-  mrb_define_module_function(mrb, mrb_math, "sin", math_sin, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "cos", math_cos, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "tan", math_tan, MRB_ARGS_REQ(1));
-
-  mrb_define_module_function(mrb, mrb_math, "asin", math_asin, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "acos", math_acos, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "atan", math_atan, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "atan2", math_atan2, MRB_ARGS_REQ(2));
-
-  mrb_define_module_function(mrb, mrb_math, "sinh", math_sinh, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "cosh", math_cosh, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "tanh", math_tanh, MRB_ARGS_REQ(1));
-
-  mrb_define_module_function(mrb, mrb_math, "asinh", math_asinh, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "acosh", math_acosh, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "atanh", math_atanh, MRB_ARGS_REQ(1));
-
-  mrb_define_module_function(mrb, mrb_math, "exp", math_exp, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "log", math_log, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
-  mrb_define_module_function(mrb, mrb_math, "log2", math_log2, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "log10", math_log10, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "sqrt", math_sqrt, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "cbrt", math_cbrt, MRB_ARGS_REQ(1));
-
-  mrb_define_module_function(mrb, mrb_math, "frexp", math_frexp, MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "ldexp", math_ldexp, MRB_ARGS_REQ(2));
-
-  mrb_define_module_function(mrb, mrb_math, "hypot", math_hypot, MRB_ARGS_REQ(2));
-
-  mrb_define_module_function(mrb, mrb_math, "erf",  math_erf,  MRB_ARGS_REQ(1));
-  mrb_define_module_function(mrb, mrb_math, "erfc", math_erfc, MRB_ARGS_REQ(1));
-}
-
-void
-mrb_mruby_math_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-math/test/math.rb (+0 -136) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-math/test/math.rb    2014-06-08 19:01:14 +0900 (1cc3a20)
+++ /dev/null
@@ -1,136 +0,0 @@
-##
-# Math Test
-
-##
-# Performs fuzzy check for equality on methods returning floats
-# on the basis of the Math::TOLERANCE constant.
-def check_float(a, b)
-  tolerance = Math::TOLERANCE
-  a = a.to_f
-  b = b.to_f
-  if a.finite? and b.finite?
-    (a-b).abs < tolerance
-  else
-    true
-  end
-end
-
-assert('Math.sin 0') do
-  check_float(Math.sin(0), 0)
-end
-
-assert('Math.sin PI/2') do
-  check_float(Math.sin(Math::PI / 2), 1)
-end
-
-assert('Fundamental trig identities') do
-  result = true
-  N = 13
-  N.times do |i|
-    a  = Math::PI / N * i
-    ca = Math::PI / 2 - a
-    s  = Math.sin(a)
-    c  = Math.cos(a)
-    t  = Math.tan(a)
-    result &= check_float(s, Math.cos(ca))
-    result &= check_float(t, 1 / Math.tan(ca))
-    result &= check_float(s ** 2 + c ** 2, 1)
-    result &= check_float(t ** 2 + 1, (1/c) ** 2)
-    result &= check_float((1/t) ** 2 + 1, (1/s) ** 2)
-  end
-  result
-end
-
-assert('Math.erf 0') do
-  check_float(Math.erf(0), 0)
-end
-
-assert('Math.exp 0') do
-  check_float(Math.exp(0), 1.0)
-end
-
-assert('Math.exp 1') do
-  check_float(Math.exp(1), 2.718281828459045)
-end
-
-assert('Math.exp 1.5') do
-  check_float(Math.exp(1.5), 4.4816890703380645)
-end
-
-assert('Math.log 1') do
-  check_float(Math.log(1), 0)
-end
-
-assert('Math.log E') do
-  check_float(Math.log(Math::E), 1.0)
-end
-
-assert('Math.log E**3') do
-  check_float(Math.log(Math::E**3), 3.0)
-end
-
-assert('Math.log2 1') do
-  check_float(Math.log2(1), 0.0)
-end
-
-assert('Math.log2 2') do
-  check_float(Math.log2(2), 1.0)
-end
-
-assert('Math.log10 1') do
-  check_float(Math.log10(1), 0.0)
-end
-
-assert('Math.log10 10') do
-  check_float(Math.log10(10), 1.0)
-end
-
-assert('Math.log10 10**100') do
-  check_float(Math.log10(10**100), 100.0)
-end
-
-assert('Math.sqrt') do
-  num = [0.0, 1.0, 2.0, 3.0, 4.0]
-  sqr = [0, 1, 4, 9, 16]
-  result = true
-  sqr.each_with_index do |v,i|
-    result &= check_float(Math.sqrt(v), num[i])
-  end
-  result
-end
-
-assert('Math.cbrt') do
-  num = [-2.0, -1.0, 0.0, 1.0, 2.0]
-  cub = [-8, -1, 0, 1, 8]
-  result = true
-  cub.each_with_index do |v,i|
-    result &= check_float(Math.cbrt(v), num[i])
-  end
-  result
-end
-
-assert('Math.hypot') do
-  check_float(Math.hypot(3, 4), 5.0)
-end
-
-assert('Math.frexp 1234') do
-  n = 1234
-  fraction, exponent = Math.frexp(n)
-  check_float(Math.ldexp(fraction, exponent), n)
-end
-
-assert('Math.erf 1') do
-  check_float(Math.erf(1), 0.842700792949715)
-end
-
-assert('Math.erfc 1') do
-  check_float(Math.erfc(1), 0.157299207050285)
-end
-
-assert('Math.erf -1') do
-  check_float(Math.erf(-1), -0.8427007929497148)
-end
-
-assert('Math.erfc -1') do
-  check_float(Math.erfc(-1), 1.8427007929497148)
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (0108040)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-numeric-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/src/numeric_ext.c (+0 -31) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/src/numeric_ext.c    2014-06-08 19:01:14 +0900 (bb6955b)
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <limits.h>
-#include "mruby.h"
-#include "mruby/numeric.h"
-
-static mrb_value
-mrb_int_chr(mrb_state *mrb, mrb_value x)
-{
-  mrb_int chr;
-  char c;
-
-  chr = mrb_fixnum(x);
-  if (chr >= (1 << CHAR_BIT)) {
-    mrb_raisef(mrb, E_RANGE_ERROR, "%S out of char range", x);
-  }
-  c = (char)chr;
-
-  return mrb_str_new(mrb, &c, 1);
-}
-
-void
-mrb_mruby_numeric_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass *i = mrb_class_get(mrb, "Integer");
-
-  mrb_define_method(mrb, i, "chr", mrb_int_chr, MRB_ARGS_NONE());
-}
-
-void
-mrb_mruby_numeric_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/test/numeric.rb (+0 -10) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-numeric-ext/test/numeric.rb    2014-06-08 19:01:14 +0900 (7d85eaa)
+++ /dev/null
@@ -1,10 +0,0 @@
-##
-# Numeric(Ext) Test
-
-assert('Integer#chr') do
-  assert_equal("A", 65.chr)
-  assert_equal("B", 0x42.chr)
-
-  # multibyte encoding (not support yet)
-  assert_raise(RangeError) { 12345.chr }
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-object-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-object-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (980f166)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-object-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-object-ext/src/object.c (+0 -108) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-object-ext/src/object.c    2014-06-08 19:01:14 +0900 (927a23d)
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-
-/*
- *  call-seq:
- *     nil.to_a    -> []
- *
- *  Always returns an empty array.
- */
-
-static mrb_value
-nil_to_a(mrb_state *mrb, mrb_value obj)
-{
-    return mrb_ary_new(mrb);
-}
-
-/*
- *  call-seq:
- *     nil.to_f    -> 0.0
- *
- *  Always returns zero.
- */
-
-static mrb_value
-nil_to_f(mrb_state *mrb, mrb_value obj)
-{
-    return mrb_float_value(mrb, 0.0);
-}
-
-/*
- *  call-seq:
- *     nil.to_i    -> 0
- *
- *  Always returns zero.
- */
-
-static mrb_value
-nil_to_i(mrb_state *mrb, mrb_value obj)
-{
-    return mrb_fixnum_value(0);
-}
-
-/*
- *  call-seq:
- *     obj.instance_exec(arg...) {|var...| block }                       -> obj
- *
- *  Executes the given block within the context of the receiver
- *  (_obj_). In order to set the context, the variable +self+ is set
- *  to _obj_ while the code is executing, giving the code access to
- *  _obj_'s instance variables.  Arguments are passed as block parameters.
- *
- *     class KlassWithSecret
- *       def initialize
- *         @secret = 99
- *       end
- *     end
- *     k = KlassWithSecret.new
- *     k.instance_exec(5) {|x| @secret+x }   #=> 104
- */
-
-mrb_value
-mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c);
-
-static mrb_value
-mrb_obj_instance_exec(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv;
-  int argc;
-  mrb_value blk;
-  struct RClass *c;
-
-  mrb_get_args(mrb, "*&", &argv, &argc, &blk);
-
-  if (mrb_nil_p(blk)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
-  }
-
-  switch (mrb_type(self)) {
-  case MRB_TT_SYMBOL:
-  case MRB_TT_FIXNUM:
-  case MRB_TT_FLOAT:
-    c = NULL;
-    break;
-  default:
-    c = mrb_class_ptr(mrb_singleton_class(mrb, self));
-    break;
-  }
-
-  return mrb_yield_internal(mrb, blk, argc, argv, self, c);
-}
-
-void
-mrb_mruby_object_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass * n = mrb->nil_class;
-
-  mrb_define_method(mrb, n, "to_a", nil_to_a,       MRB_ARGS_NONE());
-  mrb_define_method(mrb, n, "to_f", nil_to_f,       MRB_ARGS_NONE());
-  mrb_define_method(mrb, n, "to_i", nil_to_i,       MRB_ARGS_NONE());
-
-  mrb_define_method(mrb, mrb->object_class, "instance_exec", mrb_obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK());
-}
-
-void
-mrb_mruby_object_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/nil.rb (+0 -11) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/nil.rb    2014-06-08 19:01:14 +0900 (5cd1cf4)
+++ /dev/null
@@ -1,11 +0,0 @@
-assert('NilClass#to_a') do
-  assert_equal [], nil.to_a
-end
-
-assert('NilClass#to_f') do
-  assert_equal 0.0, nil.to_f
-end
-
-assert('NilClass#to_i') do
-  assert_equal 0, nil.to_i
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/object.rb (+0 -9) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-object-ext/test/object.rb    2014-06-08 19:01:14 +0900 (1f2dd1b)
+++ /dev/null
@@ -1,9 +0,0 @@
-assert('Object#instance_exec') do
-  class KlassWithSecret
-    def initialize
-      @secret = 99
-    end
-  end
-  k = KlassWithSecret.new
-  assert_equal 104, k.instance_exec(5) {|x| @secret+x }
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-objectspace/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-objectspace/mrbgem.rake    2014-06-08 19:01:14 +0900 (6a6a3e7)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-objectspace') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-objectspace/src/mruby_objectspace.c (+0 -117) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-objectspace/src/mruby_objectspace.c    2014-06-08 19:01:14 +0900 (ac6189d)
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <mruby.h>
-#include <mruby/gc.h>
-#include <mruby/hash.h>
-#include <mruby/value.h>
-
-struct os_count_struct {
-  size_t total;
-  size_t freed;
-  size_t counts[MRB_TT_MAXDEFINE+1];
-};
-
-void
-os_count_object_type(mrb_state *mrb, struct RBasic* obj, void *data)
-{
-  struct os_count_struct* obj_count;
-  obj_count = (struct os_count_struct*)(data);
-
-  if (is_dead(mrb, obj)) {
-    obj_count->freed++;
-  } else {
-    obj_count->counts[obj->tt]++;
-    obj_count->total++;
-  }
-}
-
-/*
- *  call-seq:
- *     ObjectSpace.count_objects([result_hash]) -> hash
- *
- *  Counts objects for each type.
- *
- *  It returns a hash, such as:
- *  {
- *    :TOTAL=>10000,
- *    :FREE=>3011,
- *    :MRB_TT_OBJECT=>6,
- *    :MRB_TT_CLASS=>404,
- *    # ...
- *  }
- *
- *  If the optional argument +result_hash+ is given,
- *  it is overwritten and returned. This is intended to avoid probe effect.
- *
- */
-
-mrb_value
-os_count_objects(mrb_state *mrb, mrb_value self)
-{
-  struct os_count_struct obj_count;
-  size_t i;
-  mrb_value hash;
-
-  if (mrb_get_args(mrb, "|H", &hash) == 0) {
-    hash = mrb_hash_new(mrb);
-  }
-
-  if (!mrb_test(mrb_hash_empty_p(mrb, hash))) {
-    mrb_hash_clear(mrb, hash);
-  }
-
-  for (i = 0; i <= MRB_TT_MAXDEFINE; i++) {
-    obj_count.counts[i] = 0;
-  }
-  obj_count.total = 0;
-  obj_count.freed = 0;
-
-  mrb_objspace_each_objects(mrb, os_count_object_type, &obj_count);
-
-  mrb_hash_set(mrb, hash, mrb_symbol_value(mrb_intern_cstr(mrb, "TOTAL")), mrb_fixnum_value(obj_count.total));
-  mrb_hash_set(mrb, hash, mrb_symbol_value(mrb_intern_cstr(mrb, "FREE")), mrb_fixnum_value(obj_count.freed));
-
-  for (i = 0; i < MRB_TT_MAXDEFINE; i++) {
-    mrb_value type;
-    switch (i) {
-#define COUNT_TYPE(t) case (t): type = mrb_symbol_value(mrb_intern_cstr(mrb, #t)); break;
-      COUNT_TYPE(MRB_TT_FALSE);
-      COUNT_TYPE(MRB_TT_FREE);
-      COUNT_TYPE(MRB_TT_TRUE);
-      COUNT_TYPE(MRB_TT_FIXNUM);
-      COUNT_TYPE(MRB_TT_SYMBOL);
-      COUNT_TYPE(MRB_TT_UNDEF);
-      COUNT_TYPE(MRB_TT_FLOAT);
-      COUNT_TYPE(MRB_TT_CPTR);
-      COUNT_TYPE(MRB_TT_OBJECT);
-      COUNT_TYPE(MRB_TT_CLASS);
-      COUNT_TYPE(MRB_TT_MODULE);
-      COUNT_TYPE(MRB_TT_ICLASS);
-      COUNT_TYPE(MRB_TT_SCLASS);
-      COUNT_TYPE(MRB_TT_PROC);
-      COUNT_TYPE(MRB_TT_ARRAY);
-      COUNT_TYPE(MRB_TT_HASH);
-      COUNT_TYPE(MRB_TT_STRING);
-      COUNT_TYPE(MRB_TT_RANGE);
-      COUNT_TYPE(MRB_TT_EXCEPTION);
-      COUNT_TYPE(MRB_TT_FILE);
-      COUNT_TYPE(MRB_TT_ENV);
-      COUNT_TYPE(MRB_TT_DATA);
-#undef COUNT_TYPE
-    default:
-      type = mrb_fixnum_value(i); break;
-    }
-    if (obj_count.counts[i])
-      mrb_hash_set(mrb, hash, type, mrb_fixnum_value(obj_count.counts[i]));
-  }
-
-  return hash;
-}
-
-void
-mrb_mruby_objectspace_gem_init(mrb_state* mrb) {
-  struct RClass *os = mrb_define_module(mrb, "ObjectSpace");
-  mrb_define_class_method(mrb, os, "count_objects", os_count_objects, MRB_ARGS_ANY());
-}
-
-void
-mrb_mruby_objectspace_gem_final(mrb_state* mrb) {
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-objectspace/test/objectspace.rb (+0 -37) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-objectspace/test/objectspace.rb    2014-06-08 19:01:14 +0900 (6121370)
+++ /dev/null
@@ -1,37 +0,0 @@
-assert('ObjectSpace.count_objects') do
-  h = {}
-  ObjectSpace.count_objects(h)
-  assert_kind_of(Hash, h)
-  assert_true(h.keys.all? {|x| x.is_a?(Symbol) || x.is_a?(Integer) })
-  assert_true(h.values.all? {|x| x.is_a?(Integer) })
-
-  assert_true(h.has_key?(:TOTAL))
-  assert_true(h.has_key?(:FREE))
-
-  h = ObjectSpace.count_objects
-  assert_kind_of(Hash, h)
-  assert_true(h.keys.all? {|x| x.is_a?(Symbol) || x.is_a?(Integer) })
-  assert_true(h.values.all? {|x| x.is_a?(Integer) })
-
-  assert_raise(TypeError) { ObjectSpace.count_objects(1) }
-
-  h0 = {:MRB_TT_FOO=>1000}
-  h = ObjectSpace.count_objects(h0)
-  assert_false(h0.has_key?(:MRB_TT_FOO))
-
-  GC.start
-  h_after = {}
-  h_before = ObjectSpace.count_objects
-
-  objs = []
-  1000.times do
-    objs << {}
-  end
-  objs = nil
-  ObjectSpace.count_objects(h)
-  GC.start
-  ObjectSpace.count_objects(h_after)
-
-  assert_equal(h[:MRB_TT_HASH], h_before[:MRB_TT_HASH] + 1000)
-  assert_equal(h_after[:MRB_TT_HASH], h_before[:MRB_TT_HASH])
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-print/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-print/mrbgem.rake    2014-06-08 19:01:14 +0900 (768fc2e)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-print') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-print/mrblib/print.rb (+0 -64) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-print/mrblib/print.rb    2014-06-08 19:01:14 +0900 (38a1066)
+++ /dev/null
@@ -1,64 +0,0 @@
-##
-# Kernel
-#
-# ISO 15.3.1
-module Kernel
-  ##
-  # Invoke method +print+ on STDOUT and passing +*args+
-  #
-  # ISO 15.3.1.2.10
-  def print(*args)
-    i = 0
-    len = args.size
-    while i < len
-      __printstr__ args[i].to_s
-      i += 1
-    end
-  end
-
-  ##
-  # Invoke method +puts+ on STDOUT and passing +*args*+
-  #
-  # ISO 15.3.1.2.11
-  def puts(*args)
-    i = 0
-    len = args.size
-    while i < len
-      s = args[i].to_s
-      __printstr__ s
-      __printstr__ "\n" if (s[-1] != "\n")
-      i += 1
-    end
-    __printstr__ "\n" if len == 0
-    nil
-  end
-
-  ##
-  # Print human readable object description
-  #
-  # ISO 15.3.1.3.34
-  def p(*args)
-    i = 0
-    len = args.size
-    while i < len
-      __printstr__ args[i].inspect
-      __printstr__ "\n"
-      i += 1
-    end
-    args[0]
-  end
-
-  unless Kernel.respond_to?(:sprintf)
-    def printf(*args)
-      raise NotImplementedError.new('printf not available')
-    end
-    def sprintf(*args)
-      raise NotImplementedError.new('sprintf not available')
-    end
-  else
-    def printf(*args)
-      __printstr__(sprintf(*args))
-      nil
-    end
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-print/src/print.c (+0 -44) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-print/src/print.c    2014-06-08 19:01:14 +0900 (788b924)
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "mruby.h"
-#include "mruby/string.h"
-#include <stdio.h>
-
-static void
-printstr(mrb_state *mrb, mrb_value obj)
-{
-  struct RString *str;
-  char *s;
-  int len;
-
-  if (mrb_string_p(obj)) {
-    str = mrb_str_ptr(obj);
-    s = str->ptr;
-    len = str->len;
-    fwrite(s, len, 1, stdout);
-  }
-}
-
-/* 15.3.1.2.9  */
-/* 15.3.1.3.34 */
-mrb_value
-mrb_printstr(mrb_state *mrb, mrb_value self)
-{
-  mrb_value argv;
-
-  mrb_get_args(mrb, "o", &argv);
-  printstr(mrb, argv);
-
-  return argv;
-}
-
-void
-mrb_mruby_print_gem_init(mrb_state* mrb)
-{
-  struct RClass *krn;
-  krn = mrb->kernel_module;
-  mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, MRB_ARGS_REQ(1));
-}
-
-void
-mrb_mruby_print_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (b75fced)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-proc-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrblib/proc.rb (+0 -40) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/mrblib/proc.rb    2014-06-08 19:01:14 +0900 (5dd9981)
+++ /dev/null
@@ -1,40 +0,0 @@
-class Proc
-
-  def ===(*args)
-    call(*args)
-  end
-
-  def yield(*args)
-    call(*args)
-  end
-
-  def to_proc
-    self
-  end
-
-  def curry(arity=self.arity)
-    abs = lambda {|a| a < 0 ? -a - 1 : a}
-    arity = abs[arity]
-    if lambda?
-      self_arity = self.arity
-      if (self_arity >= 0 && arity != self_arity) ||
-         (self_arity < 0 && abs[self_arity] > arity)
-        raise ArgumentError, "wrong number of arguments (#{arity} for #{abs[self_arity]})"
-      end
-    end
-
-    pproc = self
-    make_curry = proc do |given_args=[]|
-      proc do |*args|
-        new_args = given_args + args
-        if new_args.size >= arity
-          pproc[*new_args]
-        else
-          make_curry[new_args]
-        end
-      end
-    end
-    make_curry.call
-  end
-
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/src/proc.c (+0 -97) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/src/proc.c    2014-06-08 19:01:14 +0900 (87d96a8)
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "mruby.h"
-#include "mruby/proc.h"
-#include "mruby/array.h"
-#include "mruby/string.h"
-
-static mrb_value
-mrb_proc_lambda(mrb_state *mrb, mrb_value self)
-{
-  struct RProc *p = mrb_proc_ptr(self);
-  return mrb_bool_value(MRB_PROC_STRICT_P(p));
-}
-
-static mrb_value
-mrb_proc_source_location(mrb_state *mrb, mrb_value self)
-{
-  struct RProc *p = mrb_proc_ptr(self);
-
-  if (MRB_PROC_CFUNC_P(p)) {
-    return mrb_nil_value();
-  }
-  else {
-    mrb_irep *irep = p->body.irep;
-    mrb_value filename = mrb_nil_value();
-    mrb_value lines = mrb_nil_value();
-
-    if (irep->filename) filename = mrb_str_new_cstr(mrb, irep->filename);
-    if (irep->lines)    lines = mrb_fixnum_value(*irep->lines);
-
-    return mrb_assoc_new(mrb, filename, lines);
-  }
-}
-
-static mrb_value
-mrb_proc_inspect(mrb_state *mrb, mrb_value self)
-{
-  struct RProc *p = mrb_proc_ptr(self);
-  mrb_value str = mrb_str_new_cstr(mrb, "#<Proc:");
-  mrb_str_concat(mrb, str, mrb_ptr_to_str(mrb, mrb_cptr(self)));
-
-  if (!MRB_PROC_CFUNC_P(p)) {
-    mrb_irep *irep = p->body.irep;
-    mrb_str_cat_cstr(mrb, str, "@");   
-
-    if (irep->filename) {
-      mrb_str_cat_cstr(mrb, str, irep->filename);
-    }
-    else {
-      mrb_str_cat_cstr(mrb, str, "-");
-    }
-    mrb_str_cat_cstr(mrb, str, ":");
-
-    if (irep->lines) {
-      mrb_str_append(mrb, str, mrb_fixnum_value(*irep->lines));
-    }
-    else {
-      mrb_str_cat_cstr(mrb, str, "-");      
-    }
-  }
-
-  if (MRB_PROC_STRICT_P(p)) {
-    mrb_str_cat_cstr(mrb, str, " (lambda)");
-  }
-
-  mrb_str_cat_cstr(mrb, str, ">");
-  return str;
-}
-
-static mrb_value
-mrb_kernel_proc(mrb_state *mrb, mrb_value self)
-{
-  mrb_value blk;
-
-  mrb_get_args(mrb, "&", &blk);
-  if (mrb_nil_p(blk)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Proc object without a block");
-  }
-
-  return blk;
-}
-
-void
-mrb_mruby_proc_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass *p = mrb->proc_class;
-  mrb_define_method(mrb, p, "lambda?",         mrb_proc_lambda,          MRB_ARGS_NONE());
-  mrb_define_method(mrb, p, "source_location", mrb_proc_source_location, MRB_ARGS_NONE());
-  mrb_define_method(mrb, p, "to_s",            mrb_proc_inspect,         MRB_ARGS_NONE());
-  mrb_define_method(mrb, p, "inspect",         mrb_proc_inspect,         MRB_ARGS_NONE());
-
-  mrb_define_class_method(mrb, mrb->kernel_module, "proc", mrb_kernel_proc, MRB_ARGS_NONE());
-  mrb_define_method(mrb, mrb->kernel_module,       "proc", mrb_kernel_proc, MRB_ARGS_NONE());
-}
-
-void
-mrb_mruby_proc_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/test/proc.rb (+0 -41) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-proc-ext/test/proc.rb    2014-06-08 19:01:14 +0900 (abbd7a9)
+++ /dev/null
@@ -1,41 +0,0 @@
-##
-# Proc(Ext) Test
-
-assert('Proc#lambda?') do
-  assert_true lambda{}.lambda?
-  assert_true !Proc.new{}.lambda?
-end
-
-assert('Proc#===') do
-  proc = Proc.new {|a| a * 2}
-  assert_equal 20, (proc === 10)
-end
-
-assert('Proc#yield') do
-  proc = Proc.new {|a| a * 2}
-  assert_equal 20, proc.yield(10)
-end
-
-assert('Proc#curry') do
-  b = proc {|x, y, z| (x||0) + (y||0) + (z||0) }
-  assert_equal 6, b.curry[1][2][3]
-  assert_equal 6, b.curry[1, 2][3, 4]
-  assert_equal 6, b.curry(5)[1][2][3][4][5]
-  assert_equal 6, b.curry(5)[1, 2][3, 4][5]
-  assert_equal 1, b.curry(1)[1]
-
-  b = lambda {|x, y, z| (x||0) + (y||0) + (z||0) }
-  assert_equal 6, b.curry[1][2][3]
-  assert_raise(ArgumentError) { b.curry[1, 2][3, 4] }
-  assert_raise(ArgumentError) { b.curry(5) }
-  assert_raise(ArgumentError) { b.curry(1) }
-end
-
-assert('Proc#to_proc') do
-  proc = Proc.new {}
-  assert_equal proc, proc.to_proc
-end
-
-assert('Kernel#proc') do
-  assert_true !proc{|a|}.lambda?
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/mrbgem.rake    2014-06-08 19:01:14 +0900 (7ad3c85)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-random') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.c (+0 -193) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.c    2014-06-08 19:01:14 +0900 (3246909)
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-** mt19937ar.c - MT Random functions
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <stdio.h>
-#include "mt19937ar.h"
-
-/* Period parameters */  
-//#define N 624
-#define M 397
-#define MATRIX_A 0x9908b0dfUL   /* constant vector a */
-#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
-#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
-
-static unsigned long mt[N]; /* the array for the state vector  */
-static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */
-
-void mrb_random_init_genrand(mt_state *t, unsigned long s)
-{
-    t->mt[0]= s & 0xffffffffUL;
-    for (t->mti=1; t->mti<N; t->mti++) {
-        t->mt[t->mti] = 
-	    (1812433253UL * (t->mt[t->mti-1] ^ (t->mt[t->mti-1] >> 30)) + t->mti); 
-        t->mt[t->mti] &= 0xffffffffUL;
-    }
-}
-
-unsigned long mrb_random_genrand_int32(mt_state *t)
-{
-    unsigned long y;
-    static unsigned long mag01[2]={0x0UL, MATRIX_A};
-    /* mag01[x] = x * MATRIX_A  for x=0,1 */
-
-    if (t->mti >= N) { /* generate N words at one time */
-        int kk;
-
-        if (t->mti == N+1)   /* if init_genrand() has not been called, */
-            mrb_random_init_genrand(t, 5489UL); /* a default initial seed is used */
-
-        for (kk=0;kk<N-M;kk++) {
-            y = (t->mt[kk]&UPPER_MASK)|(t->mt[kk+1]&LOWER_MASK);
-            t->mt[kk] = t->mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        for (;kk<N-1;kk++) {
-            y = (t->mt[kk]&UPPER_MASK)|(t->mt[kk+1]&LOWER_MASK);
-            t->mt[kk] = t->mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        y = (t->mt[N-1]&UPPER_MASK)|(t->mt[0]&LOWER_MASK);
-        t->mt[N-1] = t->mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
-
-        t->mti = 0;
-    }
-  
-    y = t->mt[t->mti++];
-
-    /* Tempering */
-    y ^= (y >> 11);
-    y ^= (y << 7) & 0x9d2c5680UL;
-    y ^= (y << 15) & 0xefc60000UL;
-    y ^= (y >> 18);
-    
-    t->gen_int = y;
-
-    return y;
-}
-
-double mrb_random_genrand_real1(mt_state *t)
-{
-    mrb_random_genrand_int32(t);
-    t->gen_dbl =  t->gen_int*(1.0/4294967295.0); 
-    return t->gen_dbl;
-    /* divided by 2^32-1 */ 
-}
-
-/* initializes mt[N] with a seed */
-void init_genrand(unsigned long s)
-{
-    mt[0]= s & 0xffffffffUL;
-    for (mti=1; mti<N; mti++) {
-        mt[mti] = 
-	    (1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti); 
-        /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
-        /* In the previous versions, MSBs of the seed affect   */
-        /* only MSBs of the array mt[].                        */
-        /* 2002/01/09 modified by Makoto Matsumoto             */
-        mt[mti] &= 0xffffffffUL;
-        /* for >32 bit machines */
-    }
-}
-
-/* initialize by an array with array-length */
-/* init_key is the array for initializing keys */
-/* key_length is its length */
-/* slight change for C++, 2004/2/26 */
-void init_by_array(unsigned long init_key[], int key_length)
-{
-    int i, j, k;
-    init_genrand(19650218UL);
-    i=1; j=0;
-    k = (N>key_length ? N : key_length);
-    for (; k; k--) {
-        mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL))
-          + init_key[j] + j; /* non linear */
-        mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
-        i++; j++;
-        if (i>=N) { mt[0] = mt[N-1]; i=1; }
-        if (j>=key_length) j=0;
-    }
-    for (k=N-1; k; k--) {
-        mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL))
-          - i; /* non linear */
-        mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
-        i++;
-        if (i>=N) { mt[0] = mt[N-1]; i=1; }
-    }
-
-    mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */ 
-}
-
-/* generates a random number on [0,0xffffffff]-interval */
-unsigned long genrand_int32(void)
-{
-    unsigned long y;
-    static unsigned long mag01[2]={0x0UL, MATRIX_A};
-    /* mag01[x] = x * MATRIX_A  for x=0,1 */
-
-    if (mti >= N) { /* generate N words at one time */
-        int kk;
-
-        if (mti == N+1)   /* if init_genrand() has not been called, */
-            init_genrand(5489UL); /* a default initial seed is used */
-
-        for (kk=0;kk<N-M;kk++) {
-            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
-            mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        for (;kk<N-1;kk++) {
-            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
-            mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
-        mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
-
-        mti = 0;
-    }
-  
-    y = mt[mti++];
-
-    /* Tempering */
-    y ^= (y >> 11);
-    y ^= (y << 7) & 0x9d2c5680UL;
-    y ^= (y << 15) & 0xefc60000UL;
-    y ^= (y >> 18);
-
-    return y;
-}
-
-/* generates a random number on [0,0x7fffffff]-interval */
-long genrand_int31(void)
-{
-    return (long)(genrand_int32()>>1);
-}
-
-/* generates a random number on [0,1]-real-interval */
-double genrand_real1(void)
-{
-    return genrand_int32()*(1.0/4294967295.0); 
-    /* divided by 2^32-1 */ 
-}
-
-/* generates a random number on [0,1)-real-interval */
-double genrand_real2(void)
-{
-    return genrand_int32()*(1.0/4294967296.0); 
-    /* divided by 2^32 */
-}
-
-/* generates a random number on (0,1)-real-interval */
-double genrand_real3(void)
-{
-    return (((double)genrand_int32()) + 0.5)*(1.0/4294967296.0); 
-    /* divided by 2^32 */
-}
-
-/* generates a random number on [0,1) with 53-bit resolution*/
-double genrand_res53(void) 
-{ 
-    unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; 
-    return(a*67108864.0+b)*(1.0/9007199254740992.0); 
-} 
-/* These real versions are due to Isaku Wada, 2002/01/09 added */

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.h (+0 -48) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/src/mt19937ar.h    2014-06-08 19:01:14 +0900 (d59bd87)
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-** mt19937ar.h - MT Random functions
-**
-** See Copyright Notice in mruby.h
-*/
-
-#define N 624
-
-typedef struct {
-  unsigned long mt[N];
-  int mti;
-  union {
-    unsigned long gen_int;
-    double gen_dbl;
-  };
-} mt_state;
-
-void mrb_random_init_genrand(mt_state *, unsigned long);
-unsigned long mrb_random_genrand_int32(mt_state *);
-double mrb_random_genrand_real1(mt_state *t);
-
-/* initializes mt[N] with a seed */
-void init_genrand(unsigned long s);
-
-/* initialize by an array with array-length */
-/* init_key is the array for initializing keys */
-/* key_length is its length */
-/* slight change for C++, 2004/2/26 */
-void init_by_array(unsigned long init_key[], int key_length);
-
-/* generates a random number on [0,0xffffffff]-interval */
-unsigned long genrand_int32(void);
-
-/* generates a random number on [0,0x7fffffff]-interval */
-long genrand_int31(void);
-
-/* These real versions are due to Isaku Wada, 2002/01/09 added */
-/* generates a random number on [0,1]-real-interval */
-double genrand_real1(void);
-
-/* generates a random number on [0,1)-real-interval */
-double genrand_real2(void);
-
-/* generates a random number on (0,1)-real-interval */
-double genrand_real3(void);
-
-/* generates a random number on [0,1) with 53-bit resolution*/
-double genrand_res53(void);

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.c (+0 -228) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.c    2014-06-08 19:01:14 +0900 (771167f)
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
-** random.c - Random module
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/variable.h"
-#include "mruby/data.h"
-#include "mt19937ar.h"
-
-#include <time.h>
-
-#define GLOBAL_RAND_SEED_KEY          "$mrb_g_rand_seed"
-#define GLOBAL_RAND_SEED_KEY_CSTR_LEN 16
-
-#define INSTANCE_RAND_SEED_KEY          "$mrb_i_rand_seed"
-#define INSTANCE_RAND_SEED_KEY_CSTR_LEN 16
-
-#define MT_STATE_KEY          "$mrb_i_mt_state"
-#define MT_STATE_KEY_CSTR_LEN 15
-
-static const struct mrb_data_type mt_state_type = {
-  MT_STATE_KEY, mrb_free,
-};
-
-static mt_state *mrb_mt_get_context(mrb_state *mrb,  mrb_value self)
-{
-  mt_state *t;
-  mrb_value context;
-
-  context = mrb_iv_get(mrb, self, mrb_intern2(mrb, MT_STATE_KEY, MT_STATE_KEY_CSTR_LEN));
-  t = DATA_GET_PTR(mrb, context, &mt_state_type, mt_state);
-
-  return t;
-}
-
-static void mt_g_srand(unsigned long seed)
-{
-  init_genrand(seed);
-}
-
-static unsigned long mt_g_rand()
-{
-  return genrand_int32();
-}
-
-static double mt_g_rand_real()
-{
-  return genrand_real1();
-}
-
-static mrb_value mrb_random_mt_g_srand(mrb_state *mrb, mrb_value seed)
-{
-  if (mrb_nil_p(seed)) {
-    seed = mrb_fixnum_value(time(NULL) + mt_g_rand());
-    if (mrb_fixnum(seed) < 0) {
-      seed = mrb_fixnum_value( 0 - mrb_fixnum(seed));
-    }
-  }
-
-  mt_g_srand((unsigned) mrb_fixnum(seed));
-
-  return seed;
-}
-
-static mrb_value mrb_random_mt_g_rand(mrb_state *mrb, mrb_value max)
-{
-  mrb_value value;
-
-  if (mrb_fixnum(max) == 0) {
-    value = mrb_float_value(mrb, mt_g_rand_real());
-  } else {
-    value = mrb_fixnum_value(mt_g_rand() % mrb_fixnum(max));
-  }
-
-  return value;
-}
- 
-static void mt_srand(mt_state *t, unsigned long seed)
-{
-  mrb_random_init_genrand(t, seed);
-}  
-
-static unsigned long mt_rand(mt_state *t)
-{
-  return mrb_random_genrand_int32(t);
-}  
-
-static double mt_rand_real(mt_state *t)
-{
-  return mrb_random_genrand_real1(t);
-}  
-
-static mrb_value mrb_random_mt_srand(mrb_state *mrb, mt_state *t, mrb_value seed)
-{ 
-  if (mrb_nil_p(seed)) {
-    seed = mrb_fixnum_value(time(NULL) + mt_rand(t));
-    if (mrb_fixnum(seed) < 0) {
-      seed = mrb_fixnum_value( 0 - mrb_fixnum(seed));
-    }
-  }
-
-  mt_srand(t, (unsigned) mrb_fixnum(seed));
-
-  return seed;
-}
-
-static mrb_value mrb_random_mt_rand(mrb_state *mrb, mt_state *t, mrb_value max)
-{ 
-  mrb_value value;
-
-  if (mrb_fixnum(max) == 0) {
-    value = mrb_float_value(mrb, mt_rand_real(t));
-  } else {
-    value = mrb_fixnum_value(mt_rand(t) % mrb_fixnum(max));
-  }
-
-  return value;
-}
-
-static mrb_value get_opt(mrb_state* mrb)
-{
-  mrb_value arg;
-
-  arg = mrb_fixnum_value(0);
-  mrb_get_args(mrb, "|o", &arg);
-
-  if (!mrb_nil_p(arg)) {
-    if (!mrb_fixnum_p(arg)) {
-      mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid argument type");
-    }
-    arg = mrb_check_convert_type(mrb, arg, MRB_TT_FIXNUM, "Fixnum", "to_int");
-    if (mrb_fixnum(arg) < 0) {
-      arg = mrb_fixnum_value(0 - mrb_fixnum(arg));
-    }
-  }
-  return arg;
-}
-
-static mrb_value mrb_random_g_rand(mrb_state *mrb, mrb_value self)
-{
-  mrb_value max;
-  mrb_value seed;
-
-  max = get_opt(mrb);
-  seed = mrb_gv_get(mrb, mrb_intern2(mrb, GLOBAL_RAND_SEED_KEY, GLOBAL_RAND_SEED_KEY_CSTR_LEN));
-  if (mrb_nil_p(seed)) {
-    mrb_random_mt_g_srand(mrb, mrb_nil_value());
-  }
-  return mrb_random_mt_g_rand(mrb, max);
-}
-
-static mrb_value mrb_random_g_srand(mrb_state *mrb, mrb_value self)
-{
-  mrb_value seed;
-  mrb_value old_seed;
-
-  seed = get_opt(mrb);
-  seed = mrb_random_mt_g_srand(mrb, seed);
-  old_seed = mrb_gv_get(mrb, mrb_intern2(mrb, GLOBAL_RAND_SEED_KEY, GLOBAL_RAND_SEED_KEY_CSTR_LEN));
-  mrb_gv_set(mrb, mrb_intern2(mrb, GLOBAL_RAND_SEED_KEY, GLOBAL_RAND_SEED_KEY_CSTR_LEN), seed);
-  return old_seed;
-}
-
-static mrb_value mrb_random_init(mrb_state *mrb, mrb_value self)
-{
-  mrb_value seed;
-
-
-  mt_state *t = (mt_state *)mrb_malloc(mrb, sizeof(mt_state));
-  t->mti = N + 1;
-
-  seed = get_opt(mrb);
-  seed = mrb_random_mt_srand(mrb, t, seed);
-  mrb_iv_set(mrb, self, mrb_intern2(mrb, INSTANCE_RAND_SEED_KEY, INSTANCE_RAND_SEED_KEY_CSTR_LEN), seed);
-  mrb_iv_set(mrb, self, mrb_intern2(mrb, MT_STATE_KEY, MT_STATE_KEY_CSTR_LEN),
-    mrb_obj_value(Data_Wrap_Struct(mrb, mrb->object_class, &mt_state_type, (void*) t)));
-  return self;
-}
-
-static mrb_value mrb_random_rand(mrb_state *mrb, mrb_value self)
-{
-  mrb_value max;
-  mrb_value seed;
-  mt_state *t = mrb_mt_get_context(mrb, self);
-
-  max = get_opt(mrb);
-  seed = mrb_iv_get(mrb, self, mrb_intern2(mrb, INSTANCE_RAND_SEED_KEY, INSTANCE_RAND_SEED_KEY_CSTR_LEN));
-  if (mrb_nil_p(seed)) {
-    mrb_random_mt_srand(mrb, t, mrb_nil_value());
-  }
-  return mrb_random_mt_rand(mrb, t, max);
-}
-
-static mrb_value mrb_random_srand(mrb_state *mrb, mrb_value self)
-{
-  mrb_value seed;
-  mrb_value old_seed;
-  mt_state *t = mrb_mt_get_context(mrb, self);
-
-  seed = get_opt(mrb);
-  seed = mrb_random_mt_srand(mrb, t, seed);
-  old_seed = mrb_iv_get(mrb, self, mrb_intern2(mrb, INSTANCE_RAND_SEED_KEY, INSTANCE_RAND_SEED_KEY_CSTR_LEN));
-  mrb_iv_set(mrb, self, mrb_intern2(mrb, INSTANCE_RAND_SEED_KEY, INSTANCE_RAND_SEED_KEY_CSTR_LEN), seed);
-
-  return old_seed;
-}
-
-void mrb_mruby_random_gem_init(mrb_state *mrb)
-{
-  struct RClass *random;
-
-  mrb_define_method(mrb, mrb->kernel_module, "rand", mrb_random_g_rand, MRB_ARGS_OPT(1));
-  mrb_define_method(mrb, mrb->kernel_module, "srand", mrb_random_g_srand, MRB_ARGS_OPT(1));
-
-  random = mrb_define_class(mrb, "Random", mrb->object_class);
-  mrb_define_class_method(mrb, random, "rand", mrb_random_g_rand, MRB_ARGS_OPT(1));
-  mrb_define_class_method(mrb, random, "srand", mrb_random_g_srand, MRB_ARGS_OPT(1));
-
-  mrb_define_method(mrb, random, "initialize", mrb_random_init, MRB_ARGS_OPT(1));
-  mrb_define_method(mrb, random, "rand", mrb_random_rand, MRB_ARGS_OPT(1));
-  mrb_define_method(mrb, random, "srand", mrb_random_srand, MRB_ARGS_OPT(1));
-}
-
-void mrb_mruby_random_gem_final(mrb_state *mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.h (+0 -12) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/src/random.h    2014-06-08 19:01:14 +0900 (3dc5d4e)
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
-// random.h - Random module
-//
-// See Copyright Notice in mruby.h
-*/
-
-#ifndef RANDOM_H
-#define RANDOM_H
-
-void mrb_mruby_random_gem_init(mrb_state *mrb);
-
-#endif

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-random/test/random.rb (+0 -32) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-random/test/random.rb    2014-06-08 19:01:14 +0900 (01d231d)
+++ /dev/null
@@ -1,32 +0,0 @@
-##
-# Random Test
-
-assert("Random#srand") do
-  r1 = Random.new(123)
-  r2 = Random.new(123)
-  r1.rand == r2.rand
-end
-
-assert("Kernel::srand") do
-  srand(234)
-  r1 = rand
-  srand(234)
-  r2 = rand
-  r1 == r2
-end
-
-assert("Random::srand") do
-  Random.srand(345)
-  r1 = rand
-  srand(345)
-  r2 = Random.rand
-  r1 == r2
-end
-
-assert("fixnum") do
-  rand(3).class == Fixnum
-end
-
-assert("float") do
-  rand.class == Float
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-range-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-range-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (a7970aa)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-range-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-range-ext/src/range.c (+0 -141) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-range-ext/src/range.c    2014-06-08 19:01:14 +0900 (4e17dac)
+++ /dev/null
@@ -1,141 +0,0 @@
-#include "mruby.h"
-#include "mruby/range.h"
-
-static mrb_bool
-r_le(mrb_state *mrb, mrb_value a, mrb_value b)
-{
-  mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */
-  /* output :a < b => -1, a = b =>  0, a > b => +1 */
-
-  if (mrb_type(r) == MRB_TT_FIXNUM) {
-    mrb_int c = mrb_fixnum(r);
-    if (c == 0 || c == -1) return TRUE;
-  }
-
-  return FALSE;
-}
-
-static mrb_bool
-r_lt(mrb_state *mrb, mrb_value a, mrb_value b)
-{
-  mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b);
-  /* output :a < b => -1, a = b =>  0, a > b => +1 */
-
-  if (mrb_type(r) == MRB_TT_FIXNUM) {
-    if (mrb_fixnum(r) == -1) return TRUE;
-  }
-
-  return FALSE;
-}
-
-/*
- *  call-seq:
- *     rng.cover?(obj)  ->  true or false
- *
- *  Returns <code>true</code> if +obj+ is between the begin and end of
- *  the range.
- *
- *  This tests <code>begin <= obj <= end</code> when #exclude_end? is +false+
- *  and <code>begin <= obj < end</code> when #exclude_end? is +true+.
- *
- *     ("a".."z").cover?("c")    #=> true
- *     ("a".."z").cover?("5")    #=> false
- *     ("a".."z").cover?("cc")   #=> true
- */
-static mrb_value
-mrb_range_cover(mrb_state *mrb, mrb_value range)
-{
-  mrb_value val;
-  struct RRange *r = mrb_range_ptr(range);
-  mrb_value beg, end;
-
-  mrb_get_args(mrb, "o", &val);
-
-  beg = r->edges->beg;
-  end = r->edges->end;
-
-  if (r_le(mrb, beg, val)) {
-    if (r->excl) {
-      if (r_lt(mrb, val, end))
-        return mrb_true_value();
-    }
-    else {
-      if (r_le(mrb, val, end))
-        return mrb_true_value();
-    }
-  }
-
-  return mrb_false_value();
-}
-
-/*
- *  call-seq:
- *     rng.first    -> obj
- *     rng.first(n) -> an_array
- *
- *  Returns the first object in the range, or an array of the first +n+
- *  elements.
- *
- *    (10..20).first     #=> 10
- *    (10..20).first(3)  #=> [10, 11, 12]
- */
-static mrb_value
-mrb_range_first(mrb_state *mrb, mrb_value range)
-{
-  mrb_value num;
-  mrb_value array;
-  struct RRange *r = mrb_range_ptr(range);
-
-  if (mrb_get_args(mrb, "|o", &num) == 0) {
-    return r->edges->beg;
-  }
-
-  array = mrb_funcall(mrb, range, "to_a", 0);
-  return mrb_funcall(mrb, array, "first", 1, mrb_to_int(mrb, num));
-}
-
-/*
- *  call-seq:
- *     rng.last    -> obj
- *     rng.last(n) -> an_array
- *
- *  Returns the last object in the range,
- *  or an array of the last +n+ elements.
- *
- *  Note that with no arguments +last+ will return the object that defines
- *  the end of the range even if #exclude_end? is +true+.
- *
- *    (10..20).last      #=> 20
- *    (10...20).last     #=> 20
- *    (10..20).last(3)   #=> [18, 19, 20]
- *    (10...20).last(3)  #=> [17, 18, 19]
- */
-static mrb_value
-mrb_range_last(mrb_state *mrb, mrb_value range)
-{
-  mrb_value num;
-  mrb_value array;
-  struct RRange *r = mrb_range_ptr(range);
-
-  if (mrb_get_args(mrb, "|o", &num) == 0) {
-    return r->edges->end;
-  }
-
-  array = mrb_funcall(mrb, range, "to_a", 0);
-  return mrb_funcall(mrb, array, "last", 1, mrb_to_int(mrb, num));
-}
-
-void
-mrb_mruby_range_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass * s = mrb_class_get(mrb, "Range");
-
-  mrb_define_method(mrb, s, "cover?", mrb_range_cover, MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, s, "first",  mrb_range_first, MRB_ARGS_OPT(1));
-  mrb_define_method(mrb, s, "last",   mrb_range_last,  MRB_ARGS_OPT(1));
-}
-
-void
-mrb_mruby_range_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-range-ext/test/range.rb (+0 -20) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-range-ext/test/range.rb    2014-06-08 19:01:14 +0900 (2a170a6)
+++ /dev/null
@@ -1,20 +0,0 @@
-##
-# Range(Ext) Test
-
-assert('Range#cover?') do
-  assert_true ("a".."z").cover?("c")
-  assert_true !("a".."z").cover?("5")
-  assert_true ("a".."z").cover?("cc")
-end
-
-assert('Range#first') do
-  assert_equal 10, (10..20).first
-  assert_equal [10, 11, 12], (10..20).first(3)
-end
-
-assert('Range#last') do
-  assert_equal 20, (10..20).last
-  assert_equal 20, (10...20).last
-  assert_equal [18, 19, 20], (10..20).last(3)
-  assert_equal [17, 18, 19], (10...20).last(3)
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-sprintf/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-sprintf/mrbgem.rake    2014-06-08 19:01:14 +0900 (3e15ee7)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-sprintf') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/kernel.c (+0 -30) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/kernel.c    2014-06-08 19:01:14 +0900 (bd4f2bc)
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-** kernel.c - Kernel module suppliment
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-
-mrb_value mrb_f_sprintf(mrb_state *mrb, mrb_value obj); /* in sprintf.c */
-
-void
-mrb_mruby_sprintf_gem_init(mrb_state* mrb)
-{
-  struct RClass *krn;
-
-  if (mrb->kernel_module == NULL) {
-    mrb->kernel_module = mrb_define_module(mrb, "Kernel"); /* Might be PARANOID. */
-  }
-  krn = mrb->kernel_module;
-
-  mrb_define_method(mrb, krn, "sprintf", mrb_f_sprintf, MRB_ARGS_ANY());
-  mrb_define_method(mrb, krn, "format",  mrb_f_sprintf, MRB_ARGS_ANY());
-}
-
-void
-mrb_mruby_sprintf_gem_final(mrb_state* mrb)
-{
-  /* nothing to do. */
-}
-

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/sprintf.c (+0 -1102) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-sprintf/src/sprintf.c    2014-06-08 19:01:14 +0900 (6479b19)
+++ /dev/null
@@ -1,1102 +0,0 @@
-/*
-** sprintf.c - Kernel.#sprintf
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-
-#include <limits.h>
-#include <stdio.h>
-#include <string.h>
-#include "mruby/string.h"
-#include "mruby/hash.h"
-#include "mruby/numeric.h"
-#include <math.h>
-#include <ctype.h>
-
-#ifdef HAVE_IEEEFP_H
-#include <ieeefp.h>
-#endif
-
-#define BIT_DIGITS(N)   (((N)*146)/485 + 1)  /* log2(10) =~ 146/485 */
-#define BITSPERDIG (sizeof(mrb_int)*CHAR_BIT)
-#define EXTENDSIGN(n, l) (((~0 << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0 << (n)))
-
-static void fmt_setup(char*,size_t,int,int,mrb_int,mrb_int);
-
-static char*
-remove_sign_bits(char *str, int base)
-{
-  char *t;
-
-  t = str;
-  if (base == 16) {
-    while (*t == 'f') {
-      t++;
-    }
-  }
-  else if (base == 8) {
-    *t |= EXTENDSIGN(3, strlen(t));
-    while (*t == '7') {
-      t++;
-    }
-  }
-  else if (base == 2) {
-    while (*t == '1') {
-      t++;
-    }
-  }
-
-  return t;
-}
-
-static char
-sign_bits(int base, const char *p)
-{
-  char c;
-
-  switch (base) {
-  case 16:
-    if (*p == 'X') c = 'F';
-    else c = 'f';
-    break;
-  case 8:
-    c = '7'; break;
-  case 2:
-    c = '1'; break;
-  default:
-    c = '.'; break;
-  }
-  return c;
-}
-
-static mrb_value
-mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base)
-{
-  char buf[64], *b = buf + sizeof buf;
-  mrb_int num = mrb_fixnum(x);
-  unsigned long val = (unsigned long)num;
-  char d;
-
-  if (base != 2) {
-    mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %S", mrb_fixnum_value(base));
-  }
-
-  if (val >= (1 << 10))
-    val &= 0x3ff;
-
-  if (val == 0) {
-    return mrb_str_new(mrb, "0", 1);
-  }
-  *--b = '\0';
-  do {
-    *--b = mrb_digitmap[(int)(val % base)];
-  } while (val /= base);
-
-  if (num < 0) {
-    b = remove_sign_bits(b, base);
-    switch (base) {
-    case 16: d = 'f'; break;
-    case 8:  d = '7'; break;
-    case 2:  d = '1'; break;
-    default: d = 0;   break;
-    }
-
-    if (d && *b != d) {
-      *--b = d;
-    }
-  }
-
-  return mrb_str_new_cstr(mrb, b);
-}
-
-#define FNONE  0
-#define FSHARP 1
-#define FMINUS 2
-#define FPLUS  4
-#define FZERO  8
-#define FSPACE 16
-#define FWIDTH 32
-#define FPREC  64
-#define FPREC0 128
-
-#define CHECK(l) do {\
-/*  int cr = ENC_CODERANGE(result);*/\
-  while (blen + (l) >= bsiz) {\
-    bsiz*=2;\
-  }\
-  mrb_str_resize(mrb, result, bsiz);\
-/*  ENC_CODERANGE_SET(result, cr);*/\
-  buf = RSTRING_PTR(result);\
-} while (0)
-
-#define PUSH(s, l) do { \
-  CHECK(l);\
-  memcpy(&buf[blen], s, l);\
-  blen += (l);\
-} while (0)
-
-#define FILL(c, l) do { \
-  CHECK(l);\
-  memset(&buf[blen], c, l);\
-  blen += (l);\
-} while (0)
-
-#define GETARG() (!mrb_undef_p(nextvalue) ? nextvalue : \
-  posarg == -1 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "unnumbered(%S) mixed with numbered", mrb_fixnum_value(nextarg)), mrb_undef_value()) : \
-  posarg == -2 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "unnumbered(%S) mixed with named", mrb_fixnum_value(nextarg)), mrb_undef_value()) : \
-  (posarg = nextarg++, GETNTHARG(posarg)))
-
-#define GETPOSARG(n) (posarg > 0 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "numbered(%S) after unnumbered(%S)", mrb_fixnum_value(n), mrb_fixnum_value(posarg)), mrb_undef_value()) : \
-  posarg == -2 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "numbered(%S) after named", mrb_fixnum_value(n)), mrb_undef_value()) : \
-  ((n < 1) ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid index - %S$", mrb_fixnum_value(n)), mrb_undef_value()) : \
-  (posarg = -1, GETNTHARG(n))))
-
-#define GETNTHARG(nth) \
-  ((nth >= argc) ? (mrb_raise(mrb, E_ARGUMENT_ERROR, "too few arguments"), mrb_undef_value()) : argv[nth])
-
-#define GETNAMEARG(id, name, len) ( \
-  posarg > 0 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "named%S after unnumbered(%S)", mrb_str_new(mrb, (name), (len)), mrb_fixnum_value(posarg)), mrb_undef_value()) : \
-  posarg == -1 ? \
-  (mrb_raisef(mrb, E_ARGUMENT_ERROR, "named%S after numbered", mrb_str_new(mrb, (name), (len))), mrb_undef_value()) :    \
-  (posarg = -2, mrb_hash_fetch(mrb, get_hash(mrb, &hash, argc, argv), id, mrb_undef_value())))
-
-#define GETNUM(n, val) \
-  for (; p < end && ISDIGIT(*p); p++) {\
-    int next_n = 10 * n + (*p - '0'); \
-    if (next_n / 10 != n) {\
-      mrb_raise(mrb, E_ARGUMENT_ERROR, #val " too big"); \
-    } \
-    n = next_n; \
-  } \
-  if (p >= end) { \
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "malformed format string - %*[0-9]"); \
-  }
-
-#define GETASTER(num) do { \
-  t = p++; \
-  n = 0; \
-  GETNUM(n, val); \
-  if (*p == '$') { \
-    tmp = GETPOSARG(n); \
-  } \
-  else { \
-    tmp = GETARG(); \
-    p = t; \
-  } \
-  num = mrb_fixnum(tmp); \
-} while (0)
-
-static mrb_value
-get_hash(mrb_state *mrb, mrb_value *hash, int argc, const mrb_value *argv)
-{
-  mrb_value tmp;
-
-  if (!mrb_undef_p(*hash)) return *hash;
-  if (argc != 2) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "one hash required");
-  }
-  tmp = mrb_check_convert_type(mrb, argv[1], MRB_TT_HASH, "Hash", "to_hash");
-  if (mrb_nil_p(tmp)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "one hash required");
-  }
-  return (*hash = tmp);
-}
-
-/*
- *  call-seq:
- *     format(format_string [, arguments...] )   -> string
- *     sprintf(format_string [, arguments...] )  -> string
- *
- *  Returns the string resulting from applying <i>format_string</i> to
- *  any additional arguments.  Within the format string, any characters
- *  other than format sequences are copied to the result.
- *
- *  The syntax of a format sequence is follows.
- *
- *    %[flags][width][.precision]type
- *
- *  A format
- *  sequence consists of a percent sign, followed by optional flags,
- *  width, and precision indicators, then terminated with a field type
- *  character.  The field type controls how the corresponding
- *  <code>sprintf</code> argument is to be interpreted, while the flags
- *  modify that interpretation.
- *
- *  The field type characters are:
- *
- *      Field |  Integer Format
- *      ------+--------------------------------------------------------------
- *        b   | Convert argument as a binary number.
- *            | Negative numbers will be displayed as a two's complement
- *            | prefixed with `..1'.
- *        B   | Equivalent to `b', but uses an uppercase 0B for prefix
- *            | in the alternative format by #.
- *        d   | Convert argument as a decimal number.
- *        i   | Identical to `d'.
- *        o   | Convert argument as an octal number.
- *            | Negative numbers will be displayed as a two's complement
- *            | prefixed with `..7'.
- *        u   | Identical to `d'.
- *        x   | Convert argument as a hexadecimal number.
- *            | Negative numbers will be displayed as a two's complement
- *            | prefixed with `..f' (representing an infinite string of
- *            | leading 'ff's).
- *        X   | Equivalent to `x', but uses uppercase letters.
- *
- *      Field |  Float Format
- *      ------+--------------------------------------------------------------
- *        e   | Convert floating point argument into exponential notation
- *            | with one digit before the decimal point as [-]d.dddddde[+-]dd.
- *            | The precision specifies the number of digits after the decimal
- *            | point (defaulting to six).
- *        E   | Equivalent to `e', but uses an uppercase E to indicate
- *            | the exponent.
- *        f   | Convert floating point argument as [-]ddd.dddddd,
- *            | where the precision specifies the number of digits after
- *            | the decimal point.
- *        g   | Convert a floating point number using exponential form
- *            | if the exponent is less than -4 or greater than or
- *            | equal to the precision, or in dd.dddd form otherwise.
- *            | The precision specifies the number of significant digits.
- *        G   | Equivalent to `g', but use an uppercase `E' in exponent form.
- *        a   | Convert floating point argument as [-]0xh.hhhhp[+-]dd,
- *            | which is consisted from optional sign, "0x", fraction part
- *            | as hexadecimal, "p", and exponential part as decimal.
- *        A   | Equivalent to `a', but use uppercase `X' and `P'.
- *
- *      Field |  Other Format
- *      ------+--------------------------------------------------------------
- *        c   | Argument is the numeric code for a single character or
- *            | a single character string itself.
- *        p   | The valuing of argument.inspect.
- *        s   | Argument is a string to be substituted.  If the format
- *            | sequence contains a precision, at most that many characters
- *            | will be copied.
- *        %   | A percent sign itself will be displayed.  No argument taken.
- *
- *  The flags modifies the behavior of the formats.
- *  The flag characters are:
- *
- *    Flag     | Applies to    | Meaning
- *    ---------+---------------+-----------------------------------------
- *    space    | bBdiouxX      | Leave a space at the start of
- *             | aAeEfgG       | non-negative numbers.
- *             | (numeric fmt) | For `o', `x', `X', `b' and `B', use
- *             |               | a minus sign with absolute value for
- *             |               | negative values.
- *    ---------+---------------+-----------------------------------------
- *    (digit)$ | all           | Specifies the absolute argument number
- *             |               | for this field.  Absolute and relative
- *             |               | argument numbers cannot be mixed in a
- *             |               | sprintf string.
- *    ---------+---------------+-----------------------------------------
- *     #       | bBoxX         | Use an alternative format.
- *             | aAeEfgG       | For the conversions `o', increase the precision
- *             |               | until the first digit will be `0' if
- *             |               | it is not formatted as complements.
- *             |               | For the conversions `x', `X', `b' and `B'
- *             |               | on non-zero, prefix the result with ``0x'',
- *             |               | ``0X'', ``0b'' and ``0B'', respectively.
- *             |               | For `a', `A', `e', `E', `f', `g', and 'G',
- *             |               | force a decimal point to be added,
- *             |               | even if no digits follow.
- *             |               | For `g' and 'G', do not remove trailing zeros.
- *    ---------+---------------+-----------------------------------------
- *    +        | bBdiouxX      | Add a leading plus sign to non-negative
- *             | aAeEfgG       | numbers.
- *             | (numeric fmt) | For `o', `x', `X', `b' and `B', use
- *             |               | a minus sign with absolute value for
- *             |               | negative values.
- *    ---------+---------------+-----------------------------------------
- *    -        | all           | Left-justify the result of this conversion.
- *    ---------+---------------+-----------------------------------------
- *    0 (zero) | bBdiouxX      | Pad with zeros, not spaces.
- *             | aAeEfgG       | For `o', `x', `X', `b' and `B', radix-1
- *             | (numeric fmt) | is used for negative numbers formatted as
- *             |               | complements.
- *    ---------+---------------+-----------------------------------------
- *    *        | all           | Use the next argument as the field width.
- *             |               | If negative, left-justify the result. If the
- *             |               | asterisk is followed by a number and a dollar
- *             |               | sign, use the indicated argument as the width.
- *
- *  Examples of flags:
- *
- *   # `+' and space flag specifies the sign of non-negative numbers.
- *   sprintf("%d", 123)  #=> "123"
- *   sprintf("%+d", 123) #=> "+123"
- *   sprintf("% d", 123) #=> " 123"
- *
- *   # `#' flag for `o' increases number of digits to show `0'.
- *   # `+' and space flag changes format of negative numbers.
- *   sprintf("%o", 123)   #=> "173"
- *   sprintf("%#o", 123)  #=> "0173"
- *   sprintf("%+o", -123) #=> "-173"
- *   sprintf("%o", -123)  #=> "..7605"
- *   sprintf("%#o", -123) #=> "..7605"
- *
- *   # `#' flag for `x' add a prefix `0x' for non-zero numbers.
- *   # `+' and space flag disables complements for negative numbers.
- *   sprintf("%x", 123)   #=> "7b"
- *   sprintf("%#x", 123)  #=> "0x7b"
- *   sprintf("%+x", -123) #=> "-7b"
- *   sprintf("%x", -123)  #=> "..f85"
- *   sprintf("%#x", -123) #=> "0x..f85"
- *   sprintf("%#x", 0)    #=> "0"
- *
- *   # `#' for `X' uses the prefix `0X'.
- *   sprintf("%X", 123)  #=> "7B"
- *   sprintf("%#X", 123) #=> "0X7B"
- *
- *   # `#' flag for `b' add a prefix `0b' for non-zero numbers.
- *   # `+' and space flag disables complements for negative numbers.
- *   sprintf("%b", 123)   #=> "1111011"
- *   sprintf("%#b", 123)  #=> "0b1111011"
- *   sprintf("%+b", -123) #=> "-1111011"
- *   sprintf("%b", -123)  #=> "..10000101"
- *   sprintf("%#b", -123) #=> "0b..10000101"
- *   sprintf("%#b", 0)    #=> "0"
- *
- *   # `#' for `B' uses the prefix `0B'.
- *   sprintf("%B", 123)  #=> "1111011"
- *   sprintf("%#B", 123) #=> "0B1111011"
- *
- *   # `#' for `e' forces to show the decimal point.
- *   sprintf("%.0e", 1)  #=> "1e+00"
- *   sprintf("%#.0e", 1) #=> "1.e+00"
- *
- *   # `#' for `f' forces to show the decimal point.
- *   sprintf("%.0f", 1234)  #=> "1234"
- *   sprintf("%#.0f", 1234) #=> "1234."
- *
- *   # `#' for `g' forces to show the decimal point.
- *   # It also disables stripping lowest zeros.
- *   sprintf("%g", 123.4)   #=> "123.4"
- *   sprintf("%#g", 123.4)  #=> "123.400"
- *   sprintf("%g", 123456)  #=> "123456"
- *   sprintf("%#g", 123456) #=> "123456."
- *
- *  The field width is an optional integer, followed optionally by a
- *  period and a precision.  The width specifies the minimum number of
- *  characters that will be written to the result for this field.
- *
- *  Examples of width:
- *
- *   # padding is done by spaces,       width=20
- *   # 0 or radix-1.             <------------------>
- *   sprintf("%20d", 123)   #=> "                 123"
- *   sprintf("%+20d", 123)  #=> "                +123"
- *   sprintf("%020d", 123)  #=> "00000000000000000123"
- *   sprintf("%+020d", 123) #=> "+0000000000000000123"
- *   sprintf("% 020d", 123) #=> " 0000000000000000123"
- *   sprintf("%-20d", 123)  #=> "123                 "
- *   sprintf("%-+20d", 123) #=> "+123                "
- *   sprintf("%- 20d", 123) #=> " 123                "
- *   sprintf("%020x", -123) #=> "..ffffffffffffffff85"
- *
- *  For
- *  numeric fields, the precision controls the number of decimal places
- *  displayed.  For string fields, the precision determines the maximum
- *  number of characters to be copied from the string.  (Thus, the format
- *  sequence <code>%10.10s</code> will always contribute exactly ten
- *  characters to the result.)
- *
- *  Examples of precisions:
- *
- *   # precision for `d', 'o', 'x' and 'b' is
- *   # minimum number of digits               <------>
- *   sprintf("%20.8d", 123)  #=> "            00000123"
- *   sprintf("%20.8o", 123)  #=> "            00000173"
- *   sprintf("%20.8x", 123)  #=> "            0000007b"
- *   sprintf("%20.8b", 123)  #=> "            01111011"
- *   sprintf("%20.8d", -123) #=> "           -00000123"
- *   sprintf("%20.8o", -123) #=> "            ..777605"
- *   sprintf("%20.8x", -123) #=> "            ..ffff85"
- *   sprintf("%20.8b", -11)  #=> "            ..110101"
- *
- *   # "0x" and "0b" for `#x' and `#b' is not counted for
- *   # precision but "0" for `#o' is counted.  <------>
- *   sprintf("%#20.8d", 123)  #=> "            00000123"
- *   sprintf("%#20.8o", 123)  #=> "            00000173"
- *   sprintf("%#20.8x", 123)  #=> "          0x0000007b"
- *   sprintf("%#20.8b", 123)  #=> "          0b01111011"
- *   sprintf("%#20.8d", -123) #=> "           -00000123"
- *   sprintf("%#20.8o", -123) #=> "            ..777605"
- *   sprintf("%#20.8x", -123) #=> "          0x..ffff85"
- *   sprintf("%#20.8b", -11)  #=> "          0b..110101"
- *
- *   # precision for `e' is number of
- *   # digits after the decimal point           <------>
- *   sprintf("%20.8e", 1234.56789) #=> "      1.23456789e+03"
- *
- *   # precision for `f' is number of
- *   # digits after the decimal point               <------>
- *   sprintf("%20.8f", 1234.56789) #=> "       1234.56789000"
- *
- *   # precision for `g' is number of
- *   # significant digits                          <------->
- *   sprintf("%20.8g", 1234.56789) #=> "           1234.5679"
- *
- *   #                                         <------->
- *   sprintf("%20.8g", 123456789)  #=> "       1.2345679e+08"
- *
- *   # precision for `s' is
- *   # maximum number of characters                    <------>
- *   sprintf("%20.8s", "string test") #=> "            string t"
- *
- *  Examples:
- *
- *     sprintf("%d %04x", 123, 123)               #=> "123 007b"
- *     sprintf("%08b '%4s'", 123, 123)            #=> "01111011 ' 123'"
- *     sprintf("%1$*2$s %2$d %1$s", "hello", 8)   #=> "   hello 8 hello"
- *     sprintf("%1$*2$s %2$d", "hello", -8)       #=> "hello    -8"
- *     sprintf("%+g:% g:%-g", 1.23, 1.23, 1.23)   #=> "+1.23: 1.23:1.23"
- *     sprintf("%u", -123)                        #=> "-123"
- *
- *  For more complex formatting, Ruby supports a reference by name.
- *  %<name>s style uses format style, but %{name} style doesn't.
- *
- *  Exapmles:
- *    sprintf("%<foo>d : %<bar>f", { :foo => 1, :bar => 2 })
- *      #=> 1 : 2.000000
- *    sprintf("%{foo}f", { :foo => 1 })
- *      # => "1f"
- */
-
-mrb_value
-mrb_f_sprintf(mrb_state *mrb, mrb_value obj)
-{
-  int argc;
-  mrb_value *argv;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-
-  if (argc <= 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "too few arguments");
-    return mrb_nil_value();
-  }
-  else {
-    return mrb_str_format(mrb, argc - 1, argv + 1, argv[0]);
-  }
-}
-
-mrb_value
-mrb_str_format(mrb_state *mrb, int argc, const mrb_value *argv, mrb_value fmt)
-{
-  const char *p, *end;
-  char *buf;
-  mrb_int blen;
-  mrb_int bsiz;
-  mrb_value result;
-  mrb_int n;
-  mrb_int width;
-  mrb_int prec;
-  int flags = FNONE;
-  int nextarg = 1;
-  int posarg = 0;
-  mrb_value nextvalue;
-  mrb_value tmp;
-  mrb_value str;
-  mrb_value hash = mrb_undef_value();
-
-#define CHECK_FOR_WIDTH(f)                                                  \
-  if ((f) & FWIDTH) {                                                       \
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "width given twice");         \
-  }                                                                         \
-  if ((f) & FPREC0) {                                                       \
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "width after precision");     \
-  }
-#define CHECK_FOR_FLAGS(f)                                                  \
-  if ((f) & FWIDTH) {                                                       \
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after width");          \
-  }                                                                         \
-  if ((f) & FPREC0) {                                                       \
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after precision");      \
-  }
-
-  ++argc;
-  --argv;
-  fmt = mrb_str_to_str(mrb, fmt);
-  p = RSTRING_PTR(fmt);
-  end = p + RSTRING_LEN(fmt);
-  blen = 0;
-  bsiz = 120;
-  result = mrb_str_buf_new(mrb, bsiz);
-  buf = RSTRING_PTR(result);
-  memset(buf, 0, bsiz);
-
-  for (; p < end; p++) {
-    const char *t;
-    mrb_sym id = 0;
-
-    for (t = p; t < end && *t != '%'; t++) ;
-    PUSH(p, t - p);
-    if (t >= end)
-      goto sprint_exit; /* end of fmt string */
-
-    p = t + 1;    /* skip `%' */
-
-    width = prec = -1;
-    nextvalue = mrb_undef_value();
-
-retry:
-    switch (*p) {
-      default:
-        mrb_raisef(mrb, E_ARGUMENT_ERROR, "malformed format string - \\%%S", mrb_str_new(mrb, p, 1));
-        break;
-
-      case ' ':
-        CHECK_FOR_FLAGS(flags);
-        flags |= FSPACE;
-        p++;
-        goto retry;
-
-      case '#':
-        CHECK_FOR_FLAGS(flags);
-        flags |= FSHARP;
-        p++;
-        goto retry;
-
-      case '+':
-        CHECK_FOR_FLAGS(flags);
-        flags |= FPLUS;
-        p++;
-        goto retry;
-
-      case '-':
-        CHECK_FOR_FLAGS(flags);
-        flags |= FMINUS;
-        p++;
-        goto retry;
-
-      case '0':
-        CHECK_FOR_FLAGS(flags);
-        flags |= FZERO;
-        p++;
-        goto retry;
-
-      case '1': case '2': case '3': case '4':
-      case '5': case '6': case '7': case '8': case '9':
-        n = 0;
-        GETNUM(n, width);
-        if (*p == '$') {
-          if (!mrb_undef_p(nextvalue)) {
-            mrb_raisef(mrb, E_ARGUMENT_ERROR, "value given twice - %S$", mrb_fixnum_value(n));
-          }
-          nextvalue = GETPOSARG(n);
-          p++;
-          goto retry;
-        }
-        CHECK_FOR_WIDTH(flags);
-        width = n;
-        flags |= FWIDTH;
-        goto retry;
-
-      case '<':
-      case '{': {
-        const char *start = p;
-        char term = (*p == '<') ? '>' : '}';
-        mrb_value symname;
-
-        for (; p < end && *p != term; )
-          p++;
-        if (id) {
-          mrb_raisef(mrb, E_ARGUMENT_ERROR, "name%S after <%S>",
-                     mrb_str_new(mrb, start, p - start + 1), mrb_sym2str(mrb, id));
-        }
-        symname = mrb_str_new(mrb, start + 1, p - start - 1);
-        id = mrb_intern_str(mrb, symname);
-        nextvalue = GETNAMEARG(mrb_symbol_value(id), start, (int)(p - start + 1));
-        if (mrb_undef_p(nextvalue)) {
-          mrb_raisef(mrb, E_KEY_ERROR, "key%S not found", mrb_str_new(mrb, start, p - start + 1));
-        }
-        if (term == '}') goto format_s;
-        p++;
-        goto retry;
-      }
-
-      case '*':
-        CHECK_FOR_WIDTH(flags);
-        flags |= FWIDTH;
-        GETASTER(width);
-        if (width < 0) {
-          flags |= FMINUS;
-          width = -width;
-        }
-        p++;
-        goto retry;
-
-      case '.':
-        if (flags & FPREC0) {
-          mrb_raise(mrb, E_ARGUMENT_ERROR, "precision given twice");
-        }
-        flags |= FPREC|FPREC0;
-
-        prec = 0;
-        p++;
-        if (*p == '*') {
-          GETASTER(prec);
-          if (prec < 0) {  /* ignore negative precision */
-            flags &= ~FPREC;
-          }
-          p++;
-          goto retry;
-        }
-
-        GETNUM(prec, precision);
-        goto retry;
-
-      case '\n':
-      case '\0':
-        p--;
-
-      case '%':
-        if (flags != FNONE) {
-          mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format character - %");
-        }
-        PUSH("%", 1);
-        break;
-
-      case 'c': {
-        mrb_value val = GETARG();
-        mrb_value tmp;
-        unsigned int c;
-
-        tmp = mrb_check_string_type(mrb, val);
-        if (!mrb_nil_p(tmp)) {
-          if (RSTRING_LEN(tmp) != 1 ) {
-            mrb_raise(mrb, E_ARGUMENT_ERROR, "%c requires a character");
-          }
-          c = RSTRING_PTR(tmp)[0];
-          n = 1;
-        }
-        else {
-          c = mrb_fixnum(val);
-          n = 1;
-        }
-        if (n <= 0) {
-          mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid character");
-        }
-        if (!(flags & FWIDTH)) {
-          CHECK(n);
-          buf[blen] = c;
-          blen += n;
-        }
-        else if ((flags & FMINUS)) {
-          CHECK(n);
-          buf[blen] = c;
-          blen += n;
-          FILL(' ', width-1);
-        }
-        else {
-          FILL(' ', width-1);
-          CHECK(n);
-          buf[blen] = c;
-          blen += n;
-        }
-      }
-      break;
-
-      case 's':
-      case 'p':
-  format_s:
-      {
-        mrb_value arg = GETARG();
-        mrb_int len;
-        mrb_int slen;
-
-        if (*p == 'p') arg = mrb_inspect(mrb, arg);
-        str = mrb_obj_as_string(mrb, arg);
-        len = RSTRING_LEN(str);
-        RSTRING_LEN(result) = blen;
-        if (flags&(FPREC|FWIDTH)) {
-          slen = RSTRING_LEN(str);
-          if (slen < 0) {
-            mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid mbstring sequence");
-          }
-          if ((flags&FPREC) && (prec < slen)) {
-            char *p = RSTRING_PTR(str) + prec;
-            slen = prec;
-            len = p - RSTRING_PTR(str);
-          }
-          /* need to adjust multi-byte string pos */
-          if ((flags&FWIDTH) && (width > slen)) {
-            width -= (int)slen;
-            if (!(flags&FMINUS)) {
-              CHECK(width);
-              while (width--) {
-                buf[blen++] = ' ';
-              }
-            }
-            CHECK(len);
-            memcpy(&buf[blen], RSTRING_PTR(str), len);
-            blen += len;
-            if (flags&FMINUS) {
-              CHECK(width);
-              while (width--) {
-                buf[blen++] = ' ';
-              }
-            }
-            break;
-          }
-        }
-        PUSH(RSTRING_PTR(str), len);
-      }
-      break;
-
-      case 'd':
-      case 'i':
-      case 'o':
-      case 'x':
-      case 'X':
-      case 'b':
-      case 'B':
-      case 'u': {
-        mrb_value val = GETARG();
-        char fbuf[32], nbuf[64], *s;
-        const char *prefix = NULL;
-        int sign = 0, dots = 0;
-        char sc = 0;
-        mrb_int v = 0, org_v = 0;
-        int base;
-        mrb_int len;
-
-        switch (*p) {
-          case 'd':
-          case 'i':
-          case 'u':
-            sign = 1; break;
-          case 'o':
-          case 'x':
-          case 'X':
-          case 'b':
-          case 'B':
-            if (flags&(FPLUS|FSPACE)) sign = 1;
-            break;
-          default:
-            break;
-        }
-        if (flags & FSHARP) {
-          switch (*p) {
-            case 'o': prefix = "0"; break;
-            case 'x': prefix = "0x"; break;
-            case 'X': prefix = "0X"; break;
-            case 'b': prefix = "0b"; break;
-            case 'B': prefix = "0B"; break;
-            default: break;
-          }
-        }
-
-  bin_retry:
-        switch (mrb_type(val)) {
-          case MRB_TT_FLOAT:
-            if (FIXABLE(mrb_float(val))) {
-              val = mrb_fixnum_value((mrb_int)mrb_float(val));
-              goto bin_retry;
-            }
-            val = mrb_flo_to_fixnum(mrb, val);
-            if (mrb_fixnum_p(val)) goto bin_retry;
-            break;
-          case MRB_TT_STRING:
-            val = mrb_str_to_inum(mrb, val, 0, TRUE);
-            goto bin_retry;
-          case MRB_TT_FIXNUM:
-            v = mrb_fixnum(val);
-            break;
-          default:
-            val = mrb_Integer(mrb, val);
-            goto bin_retry;
-        }
-
-        switch (*p) {
-          case 'o':
-            base = 8; break;
-          case 'x':
-          case 'X':
-            base = 16; break;
-          case 'b':
-          case 'B':
-            base = 2; break;
-          case 'u':
-          case 'd':
-          case 'i':
-          default:
-            base = 10; break;
-        }
-
-        if (base == 2) {
-          org_v = v;
-          if ( v < 0 && !sign ) {
-            val = mrb_fix2binstr(mrb, mrb_fixnum_value(v), base);
-            dots = 1;
-          }
-          else {
-            val = mrb_fixnum_to_str(mrb, mrb_fixnum_value(v), base);
-          }
-          v = mrb_fixnum(mrb_str_to_inum(mrb, val, 10, 0/*Qfalse*/));
-        }
-        if (sign) {
-          char c = *p;
-          if (c == 'i') c = 'd'; /* %d and %i are identical */
-          if (base == 2) c = 'd';
-          if (v < 0) {
-            v = -v;
-            sc = '-';
-            width--;
-          }
-          else if (flags & FPLUS) {
-            sc = '+';
-            width--;
-          }
-          else if (flags & FSPACE) {
-            sc = ' ';
-            width--;
-          }
-          snprintf(fbuf, sizeof(fbuf), "%%l%c", c);
-          snprintf(nbuf, sizeof(nbuf), fbuf, v);
-          s = nbuf;
-        }
-        else {
-          char c = *p;
-          if (c == 'X') c = 'x';
-          if (base == 2) c = 'd';
-          s = nbuf;
-          if (v < 0) {
-            dots = 1;
-          }
-          snprintf(fbuf, sizeof(fbuf), "%%l%c", c);
-          snprintf(++s, sizeof(nbuf) - 1, fbuf, v);
-          if (v < 0) {
-            char d;
-
-            s = remove_sign_bits(s, base);
-            switch (base) {
-              case 16: d = 'f'; break;
-              case 8:  d = '7'; break;
-              case 2:  d = '1'; break;
-              default: d = 0; break;
-            }
-
-            if (d && *s != d) {
-              *--s = d;
-            }
-          }
-        }
-        {
-          size_t size;
-          size = strlen(s);
-          /* PARANOID: assert(size <= MRB_INT_MAX) */
-          len = (mrb_int)size;
-        }
-
-        if (dots) {
-          prec -= 2;
-          width -= 2;
-        }
-
-        if (*p == 'X') {
-          char *pp = s;
-          int c;
-          while ((c = (int)(unsigned char)*pp) != 0) {
-            *pp = toupper(c);
-            pp++;
-          }
-        }
-
-        if (prefix && !prefix[1]) { /* octal */
-          if (dots) {
-            prefix = NULL;
-          }
-          else if (len == 1 && *s == '0') {
-            len = 0;
-            if (flags & FPREC) prec--;
-          }
-          else if ((flags & FPREC) && (prec > len)) {
-            prefix = NULL;
-          }
-        }
-        else if (len == 1 && *s == '0') {
-          prefix = NULL;
-        }
-
-        if (prefix) {
-          size_t size;
-          size = strlen(prefix);
-          /* PARANOID: assert(size <= MRB_INT_MAX).
-           *  this check is absolutely paranoid. */
-          width -= (mrb_int)size;
-        }
-
-        if ((flags & (FZERO|FMINUS|FPREC)) == FZERO) {
-          prec = width;
-          width = 0;
-        }
-        else {
-          if (prec < len) {
-            if (!prefix && prec == 0 && len == 1 && *s == '0') len = 0;
-            prec = len;
-          }
-          width -= prec;
-        }
-
-        if (!(flags&FMINUS)) {
-          CHECK(width);
-          while (width-- > 0) {
-            buf[blen++] = ' ';
-          }
-        }
-
-        if (sc) PUSH(&sc, 1);
-
-        if (prefix) {
-          int plen = (int)strlen(prefix);
-          PUSH(prefix, plen);
-        }
-        CHECK(prec - len);
-        if (dots) PUSH("..", 2);
-
-        if (v < 0 || (base == 2 && org_v < 0)) {
-          char c = sign_bits(base, p);
-          while (len < prec--) {
-            buf[blen++] = c;
-          }
-        }
-        else if ((flags & (FMINUS|FPREC)) != FMINUS) {
-          char c = '0';
-          while (len < prec--) {
-            buf[blen++] = c;
-          }
-        }
-
-        PUSH(s, len);
-        CHECK(width);
-        while (width-- > 0) {
-          buf[blen++] = ' ';
-        }
-      }
-      break;
-
-      case 'f':
-      case 'g':
-      case 'G':
-      case 'e':
-      case 'E':
-      case 'a':
-      case 'A': {
-        mrb_value val = GETARG();
-        double fval;
-        int i, need = 6;
-        char fbuf[32];
-
-        fval = mrb_float(mrb_Float(mrb, val));
-        if (isnan(fval) || isinf(fval)) {
-          const char *expr;
-          const int elen = 3;
-
-          if (isnan(fval)) {
-            expr = "NaN";
-          }
-          else {
-            expr = "Inf";
-          }
-          need = elen;
-          if ((!isnan(fval) && fval < 0.0) || (flags & FPLUS))
-            need++;
-          if ((flags & FWIDTH) && need < width)
-            need = width;
-
-          CHECK(need + 1);
-          snprintf(&buf[blen], need + 1, "%*s", need, "");
-          if (flags & FMINUS) {
-            if (!isnan(fval) && fval < 0.0)
-              buf[blen++] = '-';
-            else if (flags & FPLUS)
-              buf[blen++] = '+';
-            else if (flags & FSPACE)
-              blen++;
-            memcpy(&buf[blen], expr, elen);
-          }
-          else {
-            if (!isnan(fval) && fval < 0.0)
-              buf[blen + need - elen - 1] = '-';
-            else if (flags & FPLUS)
-              buf[blen + need - elen - 1] = '+';
-            else if ((flags & FSPACE) && need > width)
-              blen++;
-            memcpy(&buf[blen + need - elen], expr, elen);
-          }
-          blen += strlen(&buf[blen]);
-          break;
-        }
-
-        fmt_setup(fbuf, sizeof(fbuf), *p, flags, width, prec);
-        need = 0;
-        if (*p != 'e' && *p != 'E') {
-          i = INT_MIN;
-          frexp(fval, &i);
-          if (i > 0)
-            need = BIT_DIGITS(i);
-        }
-        need += (flags&FPREC) ? prec : 6;
-        if ((flags&FWIDTH) && need < width)
-          need = width;
-        need += 20;
-
-        CHECK(need);
-        n = snprintf(&buf[blen], need, fbuf, fval);
-        blen += n;
-      }
-      break;
-    }
-    flags = FNONE;
-  }
-
-  sprint_exit:
-#if 0
-  /* XXX - We cannot validate the number of arguments if (digit)$ style used.
-   */
-  if (posarg >= 0 && nextarg < argc) {
-    const char *mesg = "too many arguments for format string";
-    if (mrb_test(ruby_debug)) mrb_raise(mrb, E_ARGUMENT_ERROR, mesg);
-    if (mrb_test(ruby_verbose)) mrb_warn(mrb, "%S", mrb_str_new_cstr(mrb, mesg));
-  }
-#endif
-  mrb_str_resize(mrb, result, blen);
-
-  return result;
-}
-
-static void
-fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec)
-{
-  char *end = buf + size;
-  int n;
-
-  *buf++ = '%';
-  if (flags & FSHARP) *buf++ = '#';
-  if (flags & FPLUS)  *buf++ = '+';
-  if (flags & FMINUS) *buf++ = '-';
-  if (flags & FZERO)  *buf++ = '0';
-  if (flags & FSPACE) *buf++ = ' ';
-
-  if (flags & FWIDTH) {
-    n = snprintf(buf, end - buf, "%d", (int)width);
-    buf += n;
-  }
-
-  if (flags & FPREC) {
-    n = snprintf(buf, end - buf, ".%d", (int)prec);
-    buf += n;
-  }
-
-  *buf++ = c;
-  *buf = '\0';
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-sprintf/test/sprintf.rb (+0 -3) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-sprintf/test/sprintf.rb    2014-06-08 19:01:14 +0900 (52e94fb)
+++ /dev/null
@@ -1,3 +0,0 @@
-##
-# Kernel#sprintf Kernel#format Test
-

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (4a33699)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-string-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrblib/string.rb (+0 -52) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-string-ext/mrblib/string.rb    2014-06-08 19:01:14 +0900 (005438b)
+++ /dev/null
@@ -1,52 +0,0 @@
-class String
-  def lstrip
-    a = 0
-    z = self.size - 1
-    a += 1 while " \f\n\r\t\v".include?(self[a]) and a <= z
-    (z >= 0) ? self[a..z] : ""
-  end
-
-  def rstrip
-    a = 0
-    z = self.size - 1
-    z -= 1 while " \f\n\r\t\v\0".include?(self[z]) and a <= z
-    (z >= 0) ? self[a..z] : ""
-  end
-
-  def strip
-    a = 0
-    z = self.size - 1
-    a += 1 while " \f\n\r\t\v".include?(self[a]) and a <= z
-    z -= 1 while " \f\n\r\t\v\0".include?(self[z]) and a <= z
-    (z >= 0) ? self[a..z] : ""
-  end
-
-  def lstrip!
-    s = self.lstrip
-    (s == self) ? nil : self.replace(s)
-  end
-
-  def rstrip!
-    s = self.rstrip
-    (s == self) ? nil : self.replace(s)
-  end
-
-  def strip!
-    s = self.strip
-    (s == self) ? nil : self.replace(s)
-  end
-
-# call-seq:
-#    str.casecmp(other_str)   -> -1, 0, +1 or nil
-#
-# Case-insensitive version of <code>String#<=></code>.
-#
-#    "abcdef".casecmp("abcde")     #=> 1
-#    "aBcDeF".casecmp("abcdef")    #=> 0
-#    "abcdef".casecmp("abcdefg")   #=> -1
-#    "abcdef".casecmp("ABCDEF")    #=> 0
-#
-  def casecmp(str)
-    self.downcase <=> str.downcase
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-string-ext/src/string.c (+0 -184) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-string-ext/src/string.c    2014-06-08 19:01:14 +0900 (6718e73)
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "mruby.h"
-#include "mruby/string.h"
-#include <ctype.h>
-#include <string.h>
-
-static mrb_value
-mrb_str_getbyte(mrb_state *mrb, mrb_value str)
-{
-  mrb_int pos;
-  mrb_get_args(mrb, "i", &pos);
-
-  if (pos < 0)
-    pos += RSTRING_LEN(str);
-  if (pos < 0 ||  RSTRING_LEN(str) <= pos)
-    return mrb_nil_value();
-
-  return mrb_fixnum_value((unsigned char)RSTRING_PTR(str)[pos]);
-}
-
-/*
- *  call-seq:
- *     str.swapcase!   -> str or nil
- *
- *  Equivalent to <code>String#swapcase</code>, but modifies the receiver in
- *  place, returning <i>str</i>, or <code>nil</code> if no changes were made.
- *  Note: case conversion is effective only in ASCII region.
- */
-static mrb_value
-mrb_str_swapcase_bang(mrb_state *mrb, mrb_value str)
-{
-  char *p, *pend;
-  int modify = 0;
-  struct RString *s = mrb_str_ptr(str);
-
-  mrb_str_modify(mrb, s);
-  p = s->ptr;
-  pend = s->ptr + s->len;
-  while (p < pend) {
-    if (ISUPPER(*p)) {
-      *p = TOLOWER(*p);
-      modify = 1;
-    }
-    else if (ISLOWER(*p)) {
-      *p = TOUPPER(*p);
-      modify = 1;
-    }
-    p++;
-  }
-
-  if (modify) return str;
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     str.swapcase   -> new_str
- *
- *  Returns a copy of <i>str</i> with uppercase alphabetic characters converted
- *  to lowercase and lowercase characters converted to uppercase.
- *  Note: case conversion is effective only in ASCII region.
- *
- *     "Hello".swapcase          #=> "hELLO"
- *     "cYbEr_PuNk11".swapcase   #=> "CyBeR_pUnK11"
- */
-static mrb_value
-mrb_str_swapcase(mrb_state *mrb, mrb_value self)
-{
-  mrb_value str;
-
-  str = mrb_str_dup(mrb, self);
-  mrb_str_swapcase_bang(mrb, str);
-  return str;
-}
-
-/*
- *  call-seq:
- *     str << integer       -> str
- *     str.concat(integer)  -> str
- *     str << obj           -> str
- *     str.concat(obj)      -> str
- *
- *  Append---Concatenates the given object to <i>str</i>. If the object is a
- *  <code>Integer</code>, it is considered as a codepoint, and is converted
- *  to a character before concatenation.
- *
- *     a = "hello "
- *     a << "world"   #=> "hello world"
- *     a.concat(33)   #=> "hello world!"
- */
-static mrb_value
-mrb_str_concat2(mrb_state *mrb, mrb_value self)
-{
-  mrb_value str;
-  mrb_get_args(mrb, "S", &str);
-  mrb_str_concat(mrb, self, str);
-  return self;
-}
-
-/*
- *  call-seq:
- *     str.start_with?([prefixes]+)   -> true or false
- *
- *  Returns true if +str+ starts with one of the +prefixes+ given.
- *
- *    "hello".start_with?("hell")               #=> true
- *
- *    # returns true if one of the prefixes matches.
- *    "hello".start_with?("heaven", "hell")     #=> true
- *    "hello".start_with?("heaven", "paradise") #=> false
- *    "h".start_with?("heaven", "hell")         #=> false
- */
-static mrb_value
-mrb_str_start_with(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv, sub;
-  int argc, i;
-  mrb_get_args(mrb, "*", &argv, &argc);
-
-  for (i = 0; i < argc; i++) {
-    size_t len_l, len_r;
-    int ai = mrb_gc_arena_save(mrb);
-    sub = mrb_string_type(mrb, argv[i]);
-    mrb_gc_arena_restore(mrb, ai);
-    len_l = RSTRING_LEN(self);
-    len_r = RSTRING_LEN(sub);
-    if (len_l >= len_r) {
-      if (memcmp(RSTRING_PTR(self), RSTRING_PTR(sub), len_r) == 0) {
-        return mrb_true_value();
-      }
-    }
-  }
-  return mrb_false_value();
-}
-
-/*
- *  call-seq:
- *     str.end_with?([suffixes]+)   -> true or false
- *
- *  Returns true if +str+ ends with one of the +suffixes+ given.
- */
-static mrb_value
-mrb_str_end_with(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv, sub;
-  int argc, i;
-  mrb_get_args(mrb, "*", &argv, &argc);
-
-  for (i = 0; i < argc; i++) {
-    size_t len_l, len_r;
-    int ai = mrb_gc_arena_save(mrb);
-    sub = mrb_string_type(mrb, argv[i]);
-    mrb_gc_arena_restore(mrb, ai);
-    len_l = RSTRING_LEN(self);
-    len_r = RSTRING_LEN(sub);
-    if (len_l >= len_r) {
-      if (memcmp(RSTRING_PTR(self) + (len_l - len_r),
-                 RSTRING_PTR(sub),
-                 len_r) == 0) {
-        return mrb_true_value();
-      }  
-    }
-  }
-  return mrb_false_value();
-}
-
-void
-mrb_mruby_string_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass * s = mrb->string_class;
-
-  mrb_define_method(mrb, s, "dump",            mrb_str_dump,            MRB_ARGS_NONE());
-  mrb_define_method(mrb, s, "getbyte",         mrb_str_getbyte,         MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, s, "swapcase!",       mrb_str_swapcase_bang,   MRB_ARGS_NONE());
-  mrb_define_method(mrb, s, "swapcase",        mrb_str_swapcase,        MRB_ARGS_NONE());
-  mrb_define_method(mrb, s, "concat",          mrb_str_concat2,         MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, s, "<<",              mrb_str_concat2,         MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, s, "start_with?",     mrb_str_start_with,      MRB_ARGS_REST());
-  mrb_define_method(mrb, s, "end_with?",       mrb_str_end_with,        MRB_ARGS_REST());
-}
-
-void
-mrb_mruby_string_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-string-ext/test/string.rb (+0 -116) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-string-ext/test/string.rb    2014-06-08 19:01:14 +0900 (3ab9594)
+++ /dev/null
@@ -1,116 +0,0 @@
-##
-# String(Ext) Test
-
-assert('String#getbyte') do
-  str1 = "hello"
-  bytes1 = [104, 101, 108, 108, 111]
-  assert_equal bytes1[0], str1.getbyte(0)
-  assert_equal bytes1[-1], str1.getbyte(-1)
-  assert_equal bytes1[6], str1.getbyte(6)
-
-  str2 = "\xFF"
-  bytes2 = [0xFF]
-  assert_equal bytes2[0], str2.getbyte(0)
-end
-
-assert('String#dump') do
-  ("\1" * 100).dump     # should not raise an exception - regress #1210
-  "\0".inspect == "\"\\000\"" and
-  "foo".dump == "\"foo\""
-end
-
-assert('String#strip') do
-  s = "  abc  " 
-  s.strip
-  "".strip == "" and " \t\r\n\f\v".strip == "" and
-  "\0a\0".strip == "\0a" and
-  "abc".strip     == "abc" and
-  "  abc".strip   == "abc" and
-  "abc  ".strip   == "abc" and
-  "  abc  ".strip == "abc" and
-  s == "  abc  "
-end
-
-assert('String#lstrip') do
-  s = "  abc  " 
-  s.lstrip
-  "".lstrip == "" and " \t\r\n\f\v".lstrip == "" and
-  "\0a\0".lstrip == "\0a\0" and
-  "abc".lstrip     == "abc"   and
-  "  abc".lstrip   == "abc"   and
-  "abc  ".lstrip   == "abc  " and
-  "  abc  ".lstrip == "abc  " and
-  s == "  abc  "
-end
-
-assert('String#rstrip') do
-  s = "  abc  " 
-  s.rstrip
-  "".rstrip == "" and " \t\r\n\f\v".rstrip == "" and
-  "\0a\0".rstrip == "\0a" and
-  "abc".rstrip     == "abc"   and
-  "  abc".rstrip   == "  abc" and
-  "abc  ".rstrip   == "abc"   and
-  "  abc  ".rstrip == "  abc" and
-  s == "  abc  "
-end
-
-assert('String#strip!') do
-  s = "  abc  "
-  t = "abc"
-  s.strip! == "abc" and s == "abc" and t.strip! == nil
-end
-
-assert('String#lstrip!') do
-  s = "  abc  "
-  t = "abc  "
-  s.lstrip! == "abc  " and s == "abc  " and t.lstrip! == nil
-end
-
-assert('String#rstrip!') do
-  s = "  abc  "
-  t = "  abc"
-  s.rstrip! == "  abc" and s == "  abc" and t.rstrip! == nil
-end
-
-assert('String#swapcase') do
-  assert_equal "hELLO", "Hello".swapcase
-  assert_equal "CyBeR_pUnK11", "cYbEr_PuNk11".swapcase
-end
-
-assert('String#swapcase!') do
-  s = "Hello"
-  t = s.clone
-  t.swapcase!
-  assert_equal s.swapcase, t
-end
-
-assert('String#concat') do
-  s = "Hello "
-  s.concat "World!"
-  t = "Hello "
-  t << "World!"
-  assert_equal "Hello World!", t
-  assert_equal "Hello World!", s
-end
-
-assert('String#casecmp') do
-  assert_equal 1, "abcdef".casecmp("abcde")
-  assert_equal 0, "aBcDeF".casecmp("abcdef")
-  assert_equal(-1, "abcdef".casecmp("abcdefg"))
-  assert_equal 0, "abcdef".casecmp("ABCDEF")
-end
-
-assert('String#start_with?') do
-  assert_true "hello".start_with?("heaven", "hell")
-  assert_true !"hello".start_with?("heaven", "paradise")
-  assert_true !"h".start_with?("heaven", "hell")
-  assert_raise TypeError do "hello".start_with?(true) end
-end
-
-assert('String#end_with?') do
-  assert_true "string".end_with?("ing", "mng")
-  assert_true !"string".end_with?("str", "tri")
-  assert_true !"ng".end_with?("ing", "mng")
-  assert_raise TypeError do "hello".end_with?(true) end
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-struct/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-struct/mrbgem.rake    2014-06-08 19:01:14 +0900 (3e9eab8)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-struct') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-struct/mrblib/struct.rb (+0 -50) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-struct/mrblib/struct.rb    2014-06-08 19:01:14 +0900 (5d0ede9)
+++ /dev/null
@@ -1,50 +0,0 @@
-##
-# Struct
-#
-# ISO 15.2.18
-
-if Object.const_defined?(:Struct)
-  class Struct
-
-    ##
-    # Calls the given block for each element of +self+
-    # and pass the respective element.
-    #
-    # ISO 15.2.18.4.4
-    def each(&block)
-      self.class.members.each{|field|
-        block.call(self[field])
-      }
-      self
-    end
-
-    ##
-    # Calls the given block for each element of +self+
-    # and pass the name and value of the respectiev
-    # element.
-    #
-    # ISO 15.2.18.4.5
-    def each_pair(&block)
-      self.class.members.each{|field|
-        block.call(field.to_sym, self[field])
-      }
-      self
-    end
-
-    ##
-    # Calls the given block for each element of +self+
-    # and returns an array with all elements of which
-    # block is not false.
-    #
-    # ISO 15.2.18.4.7
-    def select(&block)
-      ary = []
-      self.class.members.each{|field|
-        val = self[field]
-        ary.push(val) if block.call(val)
-      }
-      ary
-    end
-  end
-end
-

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-struct/src/struct.c (+0 -818) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-struct/src/struct.c    2014-06-08 19:01:14 +0900 (a8511fc)
+++ /dev/null
@@ -1,818 +0,0 @@
-/*
-** struct.c - Struct class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <string.h>
-#include <stdarg.h>
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/string.h"
-#include "mruby/class.h"
-#include "mruby/data.h"
-#include "mruby/variable.h"
-
-#define RSTRUCT_ARY(st) mrb_ary_ptr(st)
-#define RSTRUCT_LEN(st) RSTRUCT_ARY(st)->len
-#define RSTRUCT_PTR(st) RSTRUCT_ARY(st)->ptr
-
-static struct RClass *
-struct_class(mrb_state *mrb)
-{
-  return mrb_class_get(mrb, "Struct");
-}
-
-static inline mrb_value
-struct_ivar_get(mrb_state *mrb, mrb_value c, mrb_sym id)
-{
-  struct RClass* kclass;
-  struct RClass* sclass = struct_class(mrb);
-  mrb_value ans;
-
-  for (;;) {
-    ans = mrb_iv_get(mrb, c, id);
-    if (!mrb_nil_p(ans)) return ans;
-    kclass = RCLASS_SUPER(c);
-    if (kclass == 0 || kclass == sclass)
-      return mrb_nil_value();
-    c = mrb_obj_value(kclass);
-  }
-}
-
-mrb_value
-mrb_struct_iv_get(mrb_state *mrb, mrb_value c, const char *name)
-{
-  return struct_ivar_get(mrb, c, mrb_intern_cstr(mrb, name));
-}
-
-mrb_value
-mrb_struct_s_members(mrb_state *mrb, mrb_value klass)
-{
-  mrb_value members = struct_ivar_get(mrb, klass, mrb_intern2(mrb, "__members__", 11));
-
-  if (mrb_nil_p(members)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "uninitialized struct");
-  }
-  if (!mrb_array_p(members)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "corrupted struct");
-  }
-  return members;
-}
-
-mrb_value
-mrb_struct_members(mrb_state *mrb, mrb_value s)
-{
-  mrb_value members = mrb_struct_s_members(mrb, mrb_obj_value(mrb_obj_class(mrb, s)));
-  if (!strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s)), "Struct")) {
-    if (RSTRUCT_LEN(s) != RARRAY_LEN(members)) {
-      mrb_raisef(mrb, E_TYPE_ERROR,
-                 "struct size differs (%S required %S given)",
-                 mrb_fixnum_value(RARRAY_LEN(members)), mrb_fixnum_value(RSTRUCT_LEN(s)));
-    }
-  }
-  return members;
-}
-
-static mrb_value
-mrb_struct_s_members_m(mrb_state *mrb, mrb_value klass)
-{
-  mrb_value members, ary;
-  mrb_value *p, *pend;
-
-  members = mrb_struct_s_members(mrb, klass);
-  ary = mrb_ary_new_capa(mrb, RARRAY_LEN(members));
-  p = RARRAY_PTR(members); pend = p + RARRAY_LEN(members);
-  while (p < pend) {
-    mrb_ary_push(mrb, ary, *p);
-    p++;
-  }
-  return ary;
-}
-
-/* 15.2.18.4.6  */
-/*
- *  call-seq:
- *     struct.members    -> array
- *
- *  Returns an array of strings representing the names of the instance
- *  variables.
- *
- *     Customer = Struct.new(:name, :address, :zip)
- *     joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
- *     joe.members   #=> [:name, :address, :zip]
- */
-
-static mrb_value
-mrb_struct_members_m(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_struct_s_members_m(mrb, mrb_obj_value(mrb_obj_class(mrb, obj)));
-}
-
-mrb_value
-mrb_struct_getmember(mrb_state *mrb, mrb_value obj, mrb_sym id)
-{
-  mrb_value members, slot, *ptr, *ptr_members;
-  mrb_int i, len;
-
-  ptr = RSTRUCT_PTR(obj);
-  members = mrb_struct_members(mrb, obj);
-  ptr_members = RARRAY_PTR(members);
-  slot = mrb_symbol_value(id);
-  len = RARRAY_LEN(members);
-  for (i=0; i<len; i++) {
-    if (mrb_obj_equal(mrb, ptr_members[i], slot)) {
-      return ptr[i];
-    }
-  }
-  mrb_raisef(mrb, E_INDEX_ERROR, "%S is not struct member", mrb_sym2str(mrb, id));
-  return mrb_nil_value();       /* not reached */
-}
-
-static mrb_value
-mrb_struct_ref(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_struct_getmember(mrb, obj, mrb->c->ci->mid);
-}
-
-static mrb_value mrb_struct_ref0(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[0];}
-static mrb_value mrb_struct_ref1(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[1];}
-static mrb_value mrb_struct_ref2(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[2];}
-static mrb_value mrb_struct_ref3(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[3];}
-static mrb_value mrb_struct_ref4(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[4];}
-static mrb_value mrb_struct_ref5(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[5];}
-static mrb_value mrb_struct_ref6(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[6];}
-static mrb_value mrb_struct_ref7(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[7];}
-static mrb_value mrb_struct_ref8(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[8];}
-static mrb_value mrb_struct_ref9(mrb_state* mrb, mrb_value obj) {return RSTRUCT_PTR(obj)[9];}
-
-#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
-#define N_REF_FUNC numberof(ref_func)
-
-static mrb_value (*const ref_func[])(mrb_state*, mrb_value) = {
-  mrb_struct_ref0,
-  mrb_struct_ref1,
-  mrb_struct_ref2,
-  mrb_struct_ref3,
-  mrb_struct_ref4,
-  mrb_struct_ref5,
-  mrb_struct_ref6,
-  mrb_struct_ref7,
-  mrb_struct_ref8,
-  mrb_struct_ref9,
-};
-
-mrb_sym
-mrb_id_attrset(mrb_state *mrb, mrb_sym id)
-{
-  const char *name;
-  char *buf;
-  size_t len;
-  mrb_sym mid;
-
-  name = mrb_sym2name_len(mrb, id, &len);
-  buf = (char *)mrb_malloc(mrb, len+2);
-  memcpy(buf, name, len);
-  buf[len] = '=';
-  buf[len+1] = '\0';
-
-  mid = mrb_intern2(mrb, buf, len+1);
-  mrb_free(mrb, buf);
-  return mid;
-}
-
-static mrb_value
-mrb_struct_set(mrb_state *mrb, mrb_value obj, mrb_value val)
-{
-  const char *name;
-  size_t i, len;
-  mrb_sym mid;
-  mrb_value members, slot, *ptr, *ptr_members;
-
-  /* get base id */
-  name = mrb_sym2name_len(mrb, mrb->c->ci->mid, &len);
-  mid = mrb_intern2(mrb, name, len-1); /* omit last "=" */
-
-  members = mrb_struct_members(mrb, obj);
-  ptr_members = RARRAY_PTR(members);
-  len = RARRAY_LEN(members);
-  ptr = RSTRUCT_PTR(obj);
-  for (i=0; i<len; i++) {
-    slot = ptr_members[i];
-    if (mrb_symbol(slot) == mid) {
-      return ptr[i] = val;
-    }
-  }
-  mrb_raisef(mrb, E_INDEX_ERROR, "`%S' is not a struct member",
-             mrb_sym2str(mrb, mid));
-  return mrb_nil_value();            /* not reached */
-}
-
-static mrb_value
-mrb_struct_set_m(mrb_state *mrb, mrb_value obj)
-{
-  mrb_value val;
-
-  mrb_get_args(mrb, "o", &val);
-  return mrb_struct_set(mrb, obj, val);
-}
-
-#define is_notop_id(id) (id)//((id)>tLAST_TOKEN)
-#define is_local_id(id) (is_notop_id(id))//&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
-int
-mrb_is_local_id(mrb_sym id)
-{
-  return is_local_id(id);
-}
-
-#define is_const_id(id) (is_notop_id(id))//&&((id)&ID_SCOPE_MASK)==ID_CONST)
-int
-mrb_is_const_id(mrb_sym id)
-{
-  return is_const_id(id);
-}
-
-static mrb_value
-make_struct(mrb_state *mrb, mrb_value name, mrb_value members, struct RClass * klass)
-{
-  mrb_value nstr, *ptr_members;
-  mrb_sym id;
-  mrb_int i, len;
-  struct RClass *c;
-
-  if (mrb_nil_p(name)) {
-    c = mrb_class_new(mrb, klass);
-  }
-  else {
-    /* old style: should we warn? */
-    name = mrb_str_to_str(mrb, name);
-    id = mrb_obj_to_sym(mrb, name);
-    if (!mrb_is_const_id(id)) {
-      mrb_name_error(mrb, id, "identifier %S needs to be constant", name);
-    }
-    if (mrb_const_defined_at(mrb, klass, id)) {
-      mrb_warn(mrb, "redefining constant Struct::%S", name);
-      //?rb_mod_remove_const(klass, mrb_sym2name(mrb, id));
-    }
-    c = mrb_define_class_under(mrb, klass, RSTRING_PTR(name), klass);
-  }
-  MRB_SET_INSTANCE_TT(c, MRB_TT_ARRAY);
-  nstr = mrb_obj_value(c);
-  mrb_iv_set(mrb, nstr, mrb_intern2(mrb, "__members__", 11), members);
-
-  mrb_define_class_method(mrb, c, "new", mrb_instance_new, MRB_ARGS_ANY());
-  mrb_define_class_method(mrb, c, "[]", mrb_instance_new, MRB_ARGS_ANY());
-  mrb_define_class_method(mrb, c, "members", mrb_struct_s_members_m, MRB_ARGS_NONE());
-  //RSTRUCT(nstr)->basic.c->super = c->c;
-  ptr_members = RARRAY_PTR(members);
-  len = RARRAY_LEN(members);
-  for (i=0; i< len; i++) {
-    mrb_sym id = mrb_symbol(ptr_members[i]);
-    if (mrb_is_local_id(id) || mrb_is_const_id(id)) {
-      if (i < N_REF_FUNC) {
-        mrb_define_method_id(mrb, c, id, ref_func[i], MRB_ARGS_NONE());
-      }
-      else {
-        mrb_define_method_id(mrb, c, id, mrb_struct_ref, MRB_ARGS_NONE());
-      }
-      mrb_define_method_id(mrb, c, mrb_id_attrset(mrb, id), mrb_struct_set_m, MRB_ARGS_REQ(1));
-    }
-  }
-  return nstr;
-}
-
-mrb_value
-mrb_struct_define(mrb_state *mrb, const char *name, ...)
-{
-  va_list ar;
-  mrb_value nm, ary;
-  char *mem;
-
-  if (!name) nm = mrb_nil_value();
-  else nm = mrb_str_new_cstr(mrb, name);
-  ary = mrb_ary_new(mrb);
-
-  va_start(ar, name);
-  while ((mem = va_arg(ar, char*)) != 0) {
-    mrb_sym slot = mrb_intern(mrb, mem);
-    mrb_ary_push(mrb, ary, mrb_symbol_value(slot));
-  }
-  va_end(ar);
-
-  return make_struct(mrb, nm, ary, struct_class(mrb));
-}
-
-/* 15.2.18.3.1  */
-/*
- *  call-seq:
- *     Struct.new( [aString] [, aSym]+> )    -> StructClass
- *     StructClass.new(arg, ...)             -> obj
- *     StructClass[arg, ...]                 -> obj
- *
- *  Creates a new class, named by <i>aString</i>, containing accessor
- *  methods for the given symbols. If the name <i>aString</i> is
- *  omitted, an anonymous structure class will be created. Otherwise,
- *  the name of this struct will appear as a constant in class
- *  <code>Struct</code>, so it must be unique for all
- *  <code>Struct</code>s in the system and should start with a capital
- *  letter. Assigning a structure class to a constant effectively gives
- *  the class the name of the constant.
- *
- *  <code>Struct::new</code> returns a new <code>Class</code> object,
- *  which can then be used to create specific instances of the new
- *  structure. The number of actual parameters must be
- *  less than or equal to the number of attributes defined for this
- *  class; unset parameters default to <code>nil</code>.  Passing too many
- *  parameters will raise an <code>ArgumentError</code>.
- *
- *  The remaining methods listed in this section (class and instance)
- *  are defined for this generated class.
- *
- *     # Create a structure with a name in Struct
- *     Struct.new("Customer", :name, :address)    #=> Struct::Customer
- *     Struct::Customer.new("Dave", "123 Main")   #=> #<struct Struct::Customer name="Dave", address="123 Main">
- *
- *     # Create a structure named by its constant
- *     Customer = Struct.new(:name, :address)     #=> Customer
- *     Customer.new("Dave", "123 Main")           #=> #<struct Customer name="Dave", address="123 Main">
- */
-static mrb_value
-mrb_struct_s_def(mrb_state *mrb, mrb_value klass)
-{
-  mrb_value name, rest;
-  mrb_value *pargv;
-  int argcnt;
-  mrb_int i;
-  mrb_value b, st;
-  mrb_sym id;
-  mrb_value *argv;
-  int argc;
-
-  name = mrb_nil_value();
-  rest = mrb_nil_value();
-  mrb_get_args(mrb, "*&", &argv, &argc, &b);
-  if (argc == 0) { /* special case to avoid crash */
-    rest = mrb_ary_new(mrb);
-  }
-  else {
-    if (argc > 0) name = argv[0];
-    if (argc > 1) rest = argv[1];
-    if (mrb_array_p(rest)) {
-      if (!mrb_nil_p(name) && mrb_symbol_p(name)) {
-        /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */
-        mrb_ary_unshift(mrb, rest, name);
-        name = mrb_nil_value();
-      }
-    }
-    else {
-      pargv = &argv[1];
-      argcnt = argc-1;
-      if (!mrb_nil_p(name) && mrb_symbol_p(name)) {
-        /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */
-        name = mrb_nil_value();
-        pargv = &argv[0];
-        argcnt++;
-      }
-      rest = mrb_ary_new_from_values(mrb, argcnt, pargv);
-    }
-    for (i=0; i<RARRAY_LEN(rest); i++) {
-      id = mrb_obj_to_sym(mrb, RARRAY_PTR(rest)[i]);
-      RARRAY_PTR(rest)[i] = mrb_symbol_value(id);
-    }
-  }
-  st = make_struct(mrb, name, rest, struct_class(mrb));
-  if (!mrb_nil_p(b)) {
-    mrb_funcall(mrb, b, "call", 1, &st);
-  }
-
-  return st;
-}
-
-static int
-num_members(mrb_state *mrb, struct RClass *klass)
-{
-  mrb_value members;
-
-  members = struct_ivar_get(mrb, mrb_obj_value(klass), mrb_intern2(mrb, "__members__", 11));
-  if (!mrb_array_p(members)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "broken members");
-  }
-  return RARRAY_LEN(members);
-}
-
-/* 15.2.18.4.8  */
-/*
- */
-static mrb_value
-mrb_struct_initialize_withArg(mrb_state *mrb, int argc, mrb_value *argv, mrb_value self)
-{
-  struct RClass *klass = mrb_obj_class(mrb, self);
-  int i, n;
-
-  n = num_members(mrb, klass);
-  if (n < argc) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "struct size differs");
-  }
-
-  for (i = 0; i < argc; i++) {
-    mrb_ary_set(mrb, self, i, argv[i]);
-  }
-  for (i = argc; i < n; i++) {
-    mrb_ary_set(mrb, self, i, mrb_nil_value());
-  }
-  return self;
-}
-
-static mrb_value
-mrb_struct_initialize_m(mrb_state *mrb, /*int argc, mrb_value *argv,*/ mrb_value self)
-{
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  return mrb_struct_initialize_withArg(mrb, argc, argv, self);
-}
-
-mrb_value
-mrb_struct_initialize(mrb_state *mrb, mrb_value self, mrb_value values)
-{
-  return mrb_struct_initialize_withArg(mrb, RARRAY_LEN(values), RARRAY_PTR(values), self);
-}
-
-static mrb_value
-inspect_struct(mrb_state *mrb, mrb_value s, int recur)
-{
-  const char *cn = mrb_class_name(mrb, mrb_obj_class(mrb, s));
-  mrb_value members, str = mrb_str_new(mrb, "#<struct ", 9);
-  mrb_value *ptr, *ptr_members;
-  mrb_int i, len;
-
-  if (cn) {
-    mrb_str_append(mrb, str, mrb_str_new_cstr(mrb, cn));
-  }
-  if (recur) {
-    return mrb_str_cat2(mrb, str, ":...>");
-  }
-
-  members = mrb_struct_members(mrb, s);
-  ptr_members = RARRAY_PTR(members);
-  ptr = RSTRUCT_PTR(s);
-  len = RSTRUCT_LEN(s);
-  for (i=0; i<len; i++) {
-    mrb_value slot;
-    mrb_sym id;
-
-    if (i > 0) {
-      mrb_str_cat2(mrb, str, ", ");
-    }
-    else if (cn) {
-      mrb_str_cat2(mrb, str, " ");
-    }
-    slot = ptr_members[i];
-    id = mrb_symbol(slot);
-    if (mrb_is_local_id(id) || mrb_is_const_id(id)) {
-      const char *name;
-      size_t len;
-
-      name = mrb_sym2name_len(mrb, id, &len);
-      mrb_str_append(mrb, str, mrb_str_new(mrb, name, len));
-    }
-    else {
-      mrb_str_append(mrb, str, mrb_inspect(mrb, slot));
-    }
-    mrb_str_cat2(mrb, str, "=");
-    mrb_str_append(mrb, str, mrb_inspect(mrb, ptr[i]));
-  }
-  mrb_str_cat2(mrb, str, ">");
-
-  return str;
-}
-
-/*
- * call-seq:
- *   struct.to_s      -> string
- *   struct.inspect   -> string
- *
- * Describe the contents of this struct in a string.
- */
-static mrb_value
-mrb_struct_inspect(mrb_state *mrb, mrb_value s)
-{
-  return inspect_struct(mrb, s, 0);
-}
-
-/* 15.2.18.4.9  */
-/* :nodoc: */
-mrb_value
-mrb_struct_init_copy(mrb_state *mrb, mrb_value copy)
-{
-  mrb_value s;
-  int i, len;
-
-  mrb_get_args(mrb, "o", &s);
-
-  if (mrb_obj_equal(mrb, copy, s)) return copy;
-  if (!mrb_obj_is_instance_of(mrb, s, mrb_obj_class(mrb, copy))) {
-    mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
-  }
-  if (!mrb_array_p(s)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "corrupted struct");
-  }
-  if (RSTRUCT_LEN(copy) != RSTRUCT_LEN(s)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "struct size mismatch");
-  }
-  len = RSTRUCT_LEN(copy);
-  for (i = 0; i < len; i++) {
-    mrb_ary_set(mrb, copy, i, RSTRUCT_PTR(s)[i]);
-  }
-  return copy;
-}
-
-static mrb_value
-mrb_struct_aref_id(mrb_state *mrb, mrb_value s, mrb_sym id)
-{
-  mrb_value *ptr, members, *ptr_members;
-  mrb_int i, len;
-
-  ptr = RSTRUCT_PTR(s);
-  members = mrb_struct_members(mrb, s);
-  ptr_members = RARRAY_PTR(members);
-  len = RARRAY_LEN(members);
-  for (i=0; i<len; i++) {
-    if (mrb_symbol(ptr_members[i]) == id) {
-      return ptr[i];
-    }
-  }
-  mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id));
-  return mrb_nil_value();       /* not reached */
-}
-
-/* 15.2.18.4.2  */
-/*
- *  call-seq:
- *     struct[symbol]    -> anObject
- *     struct[fixnum]    -> anObject
- *
- *  Attribute Reference---Returns the value of the instance variable
- *  named by <i>symbol</i>, or indexed (0..length-1) by
- *  <i>fixnum</i>. Will raise <code>NameError</code> if the named
- *  variable does not exist, or <code>IndexError</code> if the index is
- *  out of range.
- *
- *     Customer = Struct.new(:name, :address, :zip)
- *     joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
- *
- *     joe["name"]   #=> "Joe Smith"
- *     joe[:name]    #=> "Joe Smith"
- *     joe[0]        #=> "Joe Smith"
- */
-mrb_value
-mrb_struct_aref_n(mrb_state *mrb, mrb_value s, mrb_value idx)
-{
-  mrb_int i;
-
-  if (mrb_string_p(idx)) {
-    mrb_value sym = mrb_check_intern_str(mrb, idx);
-
-    if (mrb_nil_p(sym)) {
-      mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", idx);
-    }
-    idx = sym;
-  }
-  if (mrb_symbol_p(idx)) {
-    return mrb_struct_aref_id(mrb, s, mrb_symbol(idx));
-  }
-
-  i = mrb_fixnum(idx);
-  if (i < 0) i = RSTRUCT_LEN(s) + i;
-  if (i < 0)
-      mrb_raisef(mrb, E_INDEX_ERROR,
-                 "offset %S too small for struct(size:%S)",
-                 mrb_fixnum_value(i), mrb_fixnum_value(RSTRUCT_LEN(s)));
-  if (RSTRUCT_LEN(s) <= i)
-    mrb_raisef(mrb, E_INDEX_ERROR,
-               "offset %S too large for struct(size:%S)",
-               mrb_fixnum_value(i), mrb_fixnum_value(RSTRUCT_LEN(s)));
-  return RSTRUCT_PTR(s)[i];
-}
-
-mrb_value
-mrb_struct_aref(mrb_state *mrb, mrb_value s)
-{
-  mrb_value idx;
-
-  mrb_get_args(mrb, "o", &idx);
-  return mrb_struct_aref_n(mrb, s, idx);
-}
-
-static mrb_value
-mrb_struct_aset_id(mrb_state *mrb, mrb_value s, mrb_sym id, mrb_value val)
-{
-  mrb_value members, *ptr, *ptr_members;
-  mrb_int i, len;
-
-  members = mrb_struct_members(mrb, s);
-  len = RARRAY_LEN(members);
-  if (RSTRUCT_LEN(s) != len) {
-    mrb_raisef(mrb, E_TYPE_ERROR,
-               "struct size differs (%S required %S given)",
-               mrb_fixnum_value(len), mrb_fixnum_value(RSTRUCT_LEN(s)));
-  }
-  ptr = RSTRUCT_PTR(s);
-  ptr_members = RARRAY_PTR(members);
-  for (i=0; i<len; i++) {
-    if (mrb_symbol(ptr_members[i]) == id) {
-      ptr[i] = val;
-      return val;
-    }
-  }
-  mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id));
-  return val;                   /* not reach */
-}
-
-/* 15.2.18.4.3  */
-/*
- *  call-seq:
- *     struct[symbol] = obj    -> obj
- *     struct[fixnum] = obj    -> obj
- *
- *  Attribute Assignment---Assigns to the instance variable named by
- *  <i>symbol</i> or <i>fixnum</i> the value <i>obj</i> and
- *  returns it. Will raise a <code>NameError</code> if the named
- *  variable does not exist, or an <code>IndexError</code> if the index
- *  is out of range.
- *
- *     Customer = Struct.new(:name, :address, :zip)
- *     joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
- *
- *     joe["name"] = "Luke"
- *     joe[:zip]   = "90210"
- *
- *     joe.name   #=> "Luke"
- *     joe.zip    #=> "90210"
- */
-
-mrb_value
-mrb_struct_aset(mrb_state *mrb, mrb_value s)
-{
-  mrb_int i;
-  mrb_value idx;
-  mrb_value val;
-
-  mrb_get_args(mrb, "oo", &idx, &val);
-
-  if (mrb_string_p(idx) || mrb_symbol_p(idx)) {
-    return mrb_struct_aset_id(mrb, s, mrb_obj_to_sym(mrb, idx), val);
-  }
-
-  i = mrb_fixnum(idx);
-  if (i < 0) i = RSTRUCT_LEN(s) + i;
-  if (i < 0) {
-    mrb_raisef(mrb, E_INDEX_ERROR,
-               "offset %S too small for struct(size:%S)",
-               mrb_fixnum_value(i), mrb_fixnum_value(RSTRUCT_LEN(s)));
-  }
-  if (RSTRUCT_LEN(s) <= i) {
-    mrb_raisef(mrb, E_INDEX_ERROR,
-               "offset %S too large for struct(size:%S)",
-               mrb_fixnum_value(i), mrb_fixnum_value(RSTRUCT_LEN(s)));
-  }
-  return RSTRUCT_PTR(s)[i] = val;
-}
-
-/* 15.2.18.4.1  */
-/*
- *  call-seq:
- *     struct == other_struct     -> true or false
- *
- *  Equality---Returns <code>true</code> if <i>other_struct</i> is
- *  equal to this one: they must be of the same class as generated by
- *  <code>Struct::new</code>, and the values of all instance variables
- *  must be equal (according to <code>Object#==</code>).
- *
- *     Customer = Struct.new(:name, :address, :zip)
- *     joe   = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
- *     joejr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
- *     jane  = Customer.new("Jane Doe", "456 Elm, Anytown NC", 12345)
- *     joe == joejr   #=> true
- *     joe == jane    #=> false
- */
-
-static mrb_value
-mrb_struct_equal(mrb_state *mrb, mrb_value s)
-{
-  mrb_value s2;
-  mrb_value *ptr, *ptr2;
-  mrb_int i, len;
-  mrb_bool equal_p;
-
-  mrb_get_args(mrb, "o", &s2);
-  if (mrb_obj_equal(mrb, s, s2)) {
-    equal_p = 1;
-  }
-  else if (!strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s)), "Struct") ||
-           mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) {
-    equal_p = 0;
-  }
-  else if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) {
-    mrb_bug(mrb, "inconsistent struct"); /* should never happen */
-    equal_p = 0; /* This substuture is just to suppress warnings. never called. */
-  }
-  else {
-    ptr = RSTRUCT_PTR(s);
-    ptr2 = RSTRUCT_PTR(s2);
-    len = RSTRUCT_LEN(s);
-    equal_p = 1;
-    for (i=0; i<len; i++) {
-      if (!mrb_equal(mrb, ptr[i], ptr2[i])) {
-        equal_p = 0;
-        break;
-      }
-    }
-  }
-
-  return mrb_bool_value(equal_p);
-}
-
-/* 15.2.18.4.12(x)  */
-/*
- * code-seq:
- *   struct.eql?(other)   -> true or false
- *
- * Two structures are equal if they are the same object, or if all their
- * fields are equal (using <code>eql?</code>).
- */
-static mrb_value
-mrb_struct_eql(mrb_state *mrb, mrb_value s)
-{
-  mrb_value s2;
-  mrb_value *ptr, *ptr2;
-  mrb_int i, len;
-  mrb_bool eql_p;
-
-  mrb_get_args(mrb, "o", &s2);
-  if (mrb_obj_equal(mrb, s, s2)) {
-    eql_p = 1;
-  }
-  else if (strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s2)), "Struct") ||
-           mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) {
-    eql_p = 0;
-  }
-  else if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) {
-    mrb_bug(mrb, "inconsistent struct"); /* should never happen */
-    eql_p = 0; /* This substuture is just to suppress warnings. never called. */
-  }
-  else {
-    ptr = RSTRUCT_PTR(s);
-    ptr2 = RSTRUCT_PTR(s2);
-    len = RSTRUCT_LEN(s);
-    eql_p = 1;
-    for (i=0; i<len; i++) {
-      if (!mrb_eql(mrb, ptr[i], ptr2[i])) {
-        eql_p = 0;
-        break;
-      }
-    }
-  }
-
-  return mrb_bool_value(eql_p);
-}
-
-/*
- *  A <code>Struct</code> is a convenient way to bundle a number of
- *  attributes together, using accessor methods, without having to write
- *  an explicit class.
- *
- *  The <code>Struct</code> class is a generator of specific classes,
- *  each one of which is defined to hold a set of variables and their
- *  accessors. In these examples, we'll call the generated class
- *  ``<i>Customer</i>Class,'' and we'll show an example instance of that
- *  class as ``<i>Customer</i>Inst.''
- *
- *  In the descriptions that follow, the parameter <i>symbol</i> refers
- *  to a symbol, which is either a quoted string or a
- *  <code>Symbol</code> (such as <code>:name</code>).
- */
-void
-mrb_mruby_struct_gem_init(mrb_state* mrb)
-{
-  struct RClass *st;
-  st = mrb_define_class(mrb, "Struct",  mrb->object_class);
-
-  mrb_define_class_method(mrb, st, "new",             mrb_struct_s_def,       MRB_ARGS_ANY());  /* 15.2.18.3.1  */
-
-  mrb_define_method(mrb, st,       "==",              mrb_struct_equal,       MRB_ARGS_REQ(1)); /* 15.2.18.4.1  */
-  mrb_define_method(mrb, st,       "[]",              mrb_struct_aref,        MRB_ARGS_REQ(1)); /* 15.2.18.4.2  */
-  mrb_define_method(mrb, st,       "[]=",             mrb_struct_aset,        MRB_ARGS_REQ(2)); /* 15.2.18.4.3  */
-  mrb_define_method(mrb, st,       "members",         mrb_struct_members_m,   MRB_ARGS_NONE()); /* 15.2.18.4.6  */
-  mrb_define_method(mrb, st,       "initialize",      mrb_struct_initialize_m,MRB_ARGS_ANY());  /* 15.2.18.4.8  */
-  mrb_define_method(mrb, st,       "initialize_copy", mrb_struct_init_copy,   MRB_ARGS_REQ(1)); /* 15.2.18.4.9  */
-  mrb_define_method(mrb, st,       "inspect",         mrb_struct_inspect,     MRB_ARGS_NONE()); /* 15.2.18.4.10(x)  */
-  mrb_define_alias(mrb, st,        "to_s", "inspect");                                      /* 15.2.18.4.11(x)  */
-  mrb_define_method(mrb, st,       "eql?",            mrb_struct_eql,         MRB_ARGS_REQ(1)); /* 15.2.18.4.12(x)  */
-}
-
-void
-mrb_mruby_struct_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-struct/test/struct.rb (+0 -77) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-struct/test/struct.rb    2014-06-08 19:01:14 +0900 (d79b30c)
+++ /dev/null
@@ -1,77 +0,0 @@
-##
-# Struct ISO Test
-
-if Object.const_defined?(:Struct)
-  assert('Struct', '15.2.18') do
-    Struct.class == Class
-  end
-
-  assert('Struct superclass', '15.2.18.2') do
-    Struct.superclass == Object
-  end
-
-  assert('Struct.new', '15.2.18.3.1') do
-    c = Struct.new(:m1, :m2)
-    c.superclass == Struct and
-      c.members == [:m1,:m2]
-  end
-
-  # Check crash bug with Struc.new and no params.
-  assert('Struct.new', '15.2.18.3.1') do
-     c = Struct.new()
-     c.superclass == Struct and c.members == []
-  end
-
-  assert('Struct#==', '15.2.18.4.1') do
-    c = Struct.new(:m1, :m2)
-    cc1 = c.new(1,2)
-    cc2 = c.new(1,2)
-    cc1 == cc2
-  end
-
-  assert('Struct#[]', '15.2.18.4.2') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    cc[:m1] == 1 and cc["m2"] == 2
-  end
-
-  assert('Struct#[]=', '15.2.18.4.3') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    cc[:m1] = 3
-    cc[:m1] == 3
-  end
-
-  assert('Struct#each', '15.2.18.4.4') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    a = []
-    cc.each{|x|
-      a << x
-    }
-    a[0] == 1 and a[1] == 2
-  end
-
-  assert('Struct#each_pair', '15.2.18.4.5') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    a = []
-    cc.each_pair{|k,v|
-      a << [k,v]
-    }
-    a[0] == [:m1, 1] and a[1] == [:m2, 2]
-  end
-
-  assert('Struct#members', '15.2.18.4.6') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    cc.members == [:m1,:m2]
-  end
-
-  assert('Struct#select', '15.2.18.4.7') do
-    c = Struct.new(:m1, :m2)
-    cc = c.new(1,2)
-    cc.select{|v| v % 2 == 0} == [2]
-  end
-end
-

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (6294e7a)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-symbol-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrblib/symbol.rb (+0 -9) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/mrblib/symbol.rb    2014-06-08 19:01:14 +0900 (f716162)
+++ /dev/null
@@ -1,9 +0,0 @@
-class Symbol
-
-  def to_proc
-    Proc.new do |obj, *args|
-      obj.send(self, *args)
-    end
-  end
-
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/src/symbol.c (+0 -55) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/src/symbol.c    2014-06-08 19:01:14 +0900 (3d2cb1e)
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "mruby.h"
-#include "mruby/khash.h"
-#include "mruby/array.h"
-
-typedef struct symbol_name {
-  size_t len;
-  const char *name;
-} symbol_name;
-
-KHASH_DECLARE(n2s, symbol_name, mrb_sym, 1)
-
-/*
- *  call-seq:
- *     Symbol.all_symbols    => array
- *
- *  Returns an array of all the symbols currently in Ruby's symbol
- *  table.
- *
- *     Symbol.all_symbols.size    #=> 903
- *     Symbol.all_symbols[1,20]   #=> [:floor, :ARGV, :Binding, :symlink,
- *                                     :chown, :EOFError, :$;, :String,
- *                                     :LOCK_SH, :"setuid?", :$<,
- *                                     :default_proc, :compact, :extend,
- *                                     :Tms, :getwd, :$=, :ThreadGroup,
- *                                     :wait2, :$>]
- */
-static mrb_value
-mrb_sym_all_symbols(mrb_state *mrb, mrb_value self)
-{
-  khiter_t k;
-  mrb_sym sym;
-  khash_t(n2s) *h = mrb->name2sym;
-  mrb_value ary = mrb_ary_new_capa(mrb, kh_size(h));
-
-  for (k = kh_begin(h); k != kh_end(h); k++) {
-    if (kh_exist(h, k)) {
-      sym = kh_value(h, k);
-      mrb_ary_push(mrb, ary, mrb_symbol_value(sym));
-    }
-  }
-
-  return ary;
-}
-
-void
-mrb_mruby_symbol_ext_gem_init(mrb_state* mrb)
-{
-  struct RClass *s = mrb->symbol_class;
-  mrb_define_class_method(mrb, s, "all_symbols", mrb_sym_all_symbols, MRB_ARGS_NONE());
-}
-
-void
-mrb_mruby_symbol_ext_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/test/symbol.rb (+0 -12) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-symbol-ext/test/symbol.rb    2014-06-08 19:01:14 +0900 (741315d)
+++ /dev/null
@@ -1,12 +0,0 @@
-##
-# Symbol(Ext) Test
-
-assert('Symbol#to_proc') do
-  assert_equal 5, :abs.to_proc[-5]
-end
-
-assert('Symbol.all_symbols') do
-  foo = [:__symbol_test_1, :__symbol_test_2, :__symbol_test_3].sort
-  symbols = Symbol.all_symbols.select{|sym|sym.to_s.include? '__symbol_test'}.sort
-  assert_equal foo, symbols
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-time/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-time/mrbgem.rake    2014-06-08 19:01:14 +0900 (edf2aa3)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-time') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-time/src/time.c (+0 -721) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-time/src/time.c    2014-06-08 19:01:14 +0900 (2ec3529)
+++ /dev/null
@@ -1,721 +0,0 @@
-/*
-** time.c - Time class
-**
-** See Copyright Notice in mruby.h
-*/
-
-
-#include "mruby.h"
-#include <stdio.h>
-#include <time.h>
-#include "mruby/class.h"
-#include "mruby/data.h"
-
-/** Time class configuration */
-
-/* gettimeofday(2) */
-/* C99 does not have gettimeofday that is required to retrieve microseconds */
-/* uncomment following macro on platforms without gettimeofday(2) */
-/* #define NO_GETTIMEOFDAY */
-
-/* gmtime(3) */
-/* C99 does not have reentrant gmtime_r() so it might cause troubles under */
-/* multi-threading environment.  undef following macro on platforms that */
-/* does not have gmtime_r() and localtime_r(). */
-/* #define NO_GMTIME_R */
-
-#ifdef _WIN32
-#if _MSC_VER
-/* Win32 platform do not provide gmtime_r/localtime_r; emulate them using gmtime_s/localtime_s */
-#define gmtime_r(tp, tm)    ((gmtime_s((tm), (tp)) == 0) ? (tm) : NULL)
-#define localtime_r(tp, tm)    ((localtime_s((tm), (tp)) == 0) ? (tm) : NULL)
-#else
-#define NO_GMTIME_R
-#endif
-#endif
-
-/* timegm(3) */
-/* mktime() creates tm structure for localtime; timegm() is for UTF time */
-/* define following macro to use probably faster timegm() on the platform */
-/* #define USE_SYSTEM_TIMEGM */
-
-/** end of Time class configuration */
-
-#ifndef NO_GETTIMEOFDAY
-#include <sys/time.h>
-#endif
-#ifdef NO_GMTIME_R
-#define gmtime_r(t,r) gmtime(t)
-#define localtime_r(t,r) (tzset(),localtime(t))
-#endif
-
-#ifndef USE_SYSTEM_TIMEGM
-#define timegm my_timgm
-
-static unsigned int
-is_leapyear(unsigned int y)
-{
-  return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
-}
-
-static time_t
-timegm(struct tm *tm)
-{
-  static const unsigned int ndays[2][12] = {
-    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
-    {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
-  };
-  time_t r = 0;
-  int i;
-  unsigned int *nday = (unsigned int*) ndays[is_leapyear(tm->tm_year+1900)];
-
-  for (i = 70; i < tm->tm_year; ++i)
-    r += is_leapyear(i+1900) ? 366*24*60*60 : 365*24*60*60;
-  for (i = 0; i < tm->tm_mon; ++i)
-    r += nday[i] * 24 * 60 * 60;
-  r += (tm->tm_mday - 1) * 24 * 60 * 60;
-  r += tm->tm_hour * 60 * 60;
-  r += tm->tm_min * 60;
-  r += tm->tm_sec;
-  return r;
-}
-#endif
-
-/* Since we are limited to using ISO C89, this implementation is based
-* on time_t. That means the resolution of time is only precise to the
-* second level. Also, there are only 2 timezones, namely UTC and LOCAL.
-*/
-
-enum mrb_timezone {
-  MRB_TIMEZONE_NONE   = 0,
-  MRB_TIMEZONE_UTC    = 1,
-  MRB_TIMEZONE_LOCAL  = 2,
-  MRB_TIMEZONE_LAST   = 3
-};
-
-static const char *timezone_names[] = {
-  "none",
-  "UTC",
-  "LOCAL",
-   NULL
-};
-
-static const char *mon_names[] = {
-  "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-};
-
-static const char *wday_names[] = {
-  "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
-};
-
-struct mrb_time {
-  time_t              sec;
-  time_t              usec;
-  enum mrb_timezone   timezone;
-  struct tm           datetime;
-};
-
-static struct mrb_data_type mrb_time_type = { "Time", mrb_free };
-
-/** Updates the datetime of a mrb_time based on it's timezone and
-seconds setting. Returns self on success, NULL of failure. */
-static struct mrb_time*
-mrb_time_update_datetime(struct mrb_time *self)
-{
-  struct tm *aid;
-
-  if (self->timezone == MRB_TIMEZONE_UTC) {
-    aid = gmtime_r(&self->sec, &self->datetime);
-  }
-  else {
-    aid = localtime_r(&self->sec, &self->datetime);
-  }
-  if (!aid) return NULL;
-#ifdef NO_GMTIME_R
-  self->datetime = *aid; // copy data
-#endif
-
-  return self;
-}
-
-static mrb_value
-mrb_time_wrap(mrb_state *mrb, struct RClass *tc, struct mrb_time *tm)
-{
-  return mrb_obj_value(Data_Wrap_Struct(mrb, tc, &mrb_time_type, tm));
-}
-
-
-/* Allocates a mrb_time object and initializes it. */
-static struct mrb_time*
-time_alloc(mrb_state *mrb, double sec, double usec, enum mrb_timezone timezone)
-{
-  struct mrb_time *tm;
-
-  tm = (struct mrb_time *)mrb_malloc(mrb, sizeof(struct mrb_time));
-  tm->sec  = (time_t)sec;
-  tm->usec = (sec - tm->sec) * 1.0e6 + usec;
-  while (tm->usec < 0) {
-    tm->sec--;
-    tm->usec += 1.0e6;
-  }
-  while (tm->usec > 1.0e6) {
-    tm->sec++;
-    tm->usec -= 1.0e6;
-  }
-  tm->timezone = timezone;
-  mrb_time_update_datetime(tm);
-
-  return tm;
-}
-
-static mrb_value
-mrb_time_make(mrb_state *mrb, struct RClass *c, double sec, double usec, enum mrb_timezone timezone)
-{
-  return mrb_time_wrap(mrb, c, time_alloc(mrb, sec, usec, timezone));
-}
-
-static struct mrb_time*
-current_mrb_time(mrb_state *mrb)
-{
-  struct mrb_time *tm;
-
-  tm = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
-#ifdef NO_GETTIMEOFDAY
-  {
-    static time_t last_sec = 0, last_usec = 0;
-
-    tm->sec  = time(NULL);
-    if (tm->sec != last_sec) {
-      last_sec = tm->sec;
-      last_usec = 0;
-    }
-    else {
-      /* add 1 usec to differentiate two times */
-      last_usec += 1;
-    }
-    tm->usec = last_usec;
-  }
-#else
-  {
-    struct timeval tv;
-
-    gettimeofday(&tv, NULL);
-    tm->sec = tv.tv_sec;
-    tm->usec = tv.tv_usec;
-  }
-#endif
-  tm->timezone = MRB_TIMEZONE_LOCAL;
-  mrb_time_update_datetime(tm);
-
-  return tm;
-}
-
-/* Allocates a new Time object with given millis value. */
-static mrb_value
-mrb_time_now(mrb_state *mrb, mrb_value self)
-{
-  return mrb_time_wrap(mrb, mrb_class_ptr(self), current_mrb_time(mrb));
-}
-
-/* 15.2.19.6.1 */
-/* Creates an instance of time at the given time in seconds, etc. */
-static mrb_value
-mrb_time_at(mrb_state *mrb, mrb_value self)
-{
-  mrb_float f, f2 = 0;
-
-  mrb_get_args(mrb, "f|f", &f, &f2);
-  return mrb_time_make(mrb, mrb_class_ptr(self), f, f2, MRB_TIMEZONE_LOCAL);
-}
-
-static struct mrb_time*
-time_mktime(mrb_state *mrb, mrb_int ayear, mrb_int amonth, mrb_int aday,
-  mrb_int ahour, mrb_int amin, mrb_int asec, mrb_int ausec,
-  enum mrb_timezone timezone)
-{
-  time_t nowsecs;
-  struct tm nowtime = { 0 };
-
-  nowtime.tm_year  = (int)ayear  - 1900;
-  nowtime.tm_mon   = (int)amonth - 1;
-  nowtime.tm_mday  = (int)aday;
-  nowtime.tm_hour  = (int)ahour;
-  nowtime.tm_min   = (int)amin;
-  nowtime.tm_sec   = (int)asec;
-  nowtime.tm_isdst = -1;
-  if (timezone == MRB_TIMEZONE_UTC) {
-    nowsecs = timegm(&nowtime);
-  }
-  else {
-    nowsecs = mktime(&nowtime);
-  }
-  if (nowsecs < 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "Not a valid time.");
-  }
-
-  return time_alloc(mrb, nowsecs, ausec, timezone);
-}
-
-/* 15.2.19.6.2 */
-/* Creates an instance of time at the given time in UTC. */
-static mrb_value
-mrb_time_gm(mrb_state *mrb, mrb_value self)
-{
-  mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0, amin = 0, asec = 0, ausec = 0;
-
-  mrb_get_args(mrb, "i|iiiiii",
-                &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
-  return mrb_time_wrap(mrb, mrb_class_ptr(self),
-          time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_UTC));
-}
-
-
-/* 15.2.19.6.3 */
-/* Creates an instance of time at the given time in local time zone. */
-static mrb_value
-mrb_time_local(mrb_state *mrb, mrb_value self)
-{
-  mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0, amin = 0, asec = 0, ausec = 0;
-
-  mrb_get_args(mrb, "i|iiiiii",
-                &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
-  return mrb_time_wrap(mrb, mrb_class_ptr(self),
-          time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_LOCAL));
-}
-
-
-static mrb_value
-mrb_time_eq(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-  struct mrb_time *tm1, *tm2;
-  mrb_bool eq_p;
-
-  mrb_get_args(mrb, "o", &other);
-  tm1 = DATA_CHECK_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
-  eq_p = tm1 && tm2 && tm1->sec == tm2->sec && tm1->usec == tm2->usec;
-
-  return mrb_bool_value(eq_p);
-}
-
-static mrb_value
-mrb_time_cmp(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-  struct mrb_time *tm1, *tm2;
-
-  mrb_get_args(mrb, "o", &other);
-  tm1 = DATA_CHECK_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
-  if (!tm1 || !tm2) return mrb_nil_value();
-  if (tm1->sec > tm2->sec) {
-    return mrb_fixnum_value(1);
-  }
-  else if (tm1->sec < tm2->sec) {
-    return mrb_fixnum_value(-1);
-  }
-  /* tm1->sec == tm2->sec */
-  if (tm1->usec > tm2->usec) {
-    return mrb_fixnum_value(1);
-  }
-  else if (tm1->usec < tm2->usec) {
-    return mrb_fixnum_value(-1);
-  }
-  return mrb_fixnum_value(0);
-}
-
-static mrb_value
-mrb_time_plus(mrb_state *mrb, mrb_value self)
-{
-  mrb_float f;
-  struct mrb_time *tm;
-
-  mrb_get_args(mrb, "f", &f);
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec+f, tm->usec, tm->timezone);
-}
-
-static mrb_value
-mrb_time_minus(mrb_state *mrb, mrb_value self)
-{
-  mrb_float f;
-  mrb_value other;
-  struct mrb_time *tm, *tm2;
-
-  mrb_get_args(mrb, "o", &other);
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-
-  tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
-  if (tm2) {
-    f = (mrb_float)(tm->sec - tm2->sec)
-      + (mrb_float)(tm->usec - tm2->usec) / 1.0e6;
-    return mrb_float_value(mrb, f);
-  }
-  else {
-    mrb_get_args(mrb, "f", &f);
-    return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec-f, tm->usec, tm->timezone);
-  }
-}
-
-/* 15.2.19.7.30 */
-/* Returns week day number of time. */
-static mrb_value
-mrb_time_wday(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_wday);
-}
-
-/* 15.2.19.7.31 */
-/* Returns year day number of time. */
-static mrb_value
-mrb_time_yday(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_yday + 1);
-}
-
-/* 15.2.19.7.32 */
-/* Returns year of time. */
-static mrb_value
-mrb_time_year(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_year + 1900);
-}
-
-/* 15.2.19.7.33 */
-/* Returns name of time's timezone. */
-static mrb_value
-mrb_time_zone(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  if (tm->timezone <= MRB_TIMEZONE_NONE) return mrb_nil_value();
-  if (tm->timezone >= MRB_TIMEZONE_LAST) return mrb_nil_value();
-  return mrb_str_new_cstr(mrb, timezone_names[tm->timezone]);
-}
-
-/* 15.2.19.7.4 */
-/* Returns a string that describes the time. */
-static mrb_value
-mrb_time_asctime(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-  struct tm *d;
-  char buf[256];
-  int len;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  d = &tm->datetime;
-  len = snprintf(buf, sizeof(buf), "%s %s %02d %02d:%02d:%02d %s%d",
-  wday_names[d->tm_wday], mon_names[d->tm_mon], d->tm_mday,
-  d->tm_hour, d->tm_min, d->tm_sec,
-  tm->timezone == MRB_TIMEZONE_UTC ? "UTC " : "",
-  d->tm_year + 1900);
-  return mrb_str_new(mrb, buf, len);
-}
-
-/* 15.2.19.7.6 */
-/* Returns the day in the month of the time. */
-static mrb_value
-mrb_time_day(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  if (!tm) return mrb_nil_value();
-  return mrb_fixnum_value(tm->datetime.tm_mday);
-}
-
-
-/* 15.2.19.7.7 */
-/* Returns true if daylight saving was applied for this time. */
-static mrb_value
-mrb_time_dst_p(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_bool_value(tm->datetime.tm_isdst);
-}
-
-/* 15.2.19.7.8 */
-/* 15.2.19.7.10 */
-/* Returns the Time object of the UTC(GMT) timezone. */
-static mrb_value
-mrb_time_getutc(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm, *tm2;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm2 = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
-  *tm2 = *tm;
-  tm2->timezone = MRB_TIMEZONE_UTC;
-  mrb_time_update_datetime(tm2);
-  return mrb_time_wrap(mrb, mrb_obj_class(mrb, self), tm2);
-}
-
-/* 15.2.19.7.9 */
-/* Returns the Time object of the LOCAL timezone. */
-static mrb_value
-mrb_time_getlocal(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm, *tm2;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm2 = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
-  *tm2 = *tm;
-  tm2->timezone = MRB_TIMEZONE_LOCAL;
-  mrb_time_update_datetime(tm2);
-  return mrb_time_wrap(mrb, mrb_obj_class(mrb, self), tm2);
-}
-
-/* 15.2.19.7.15 */
-/* Returns hour of time. */
-static mrb_value
-mrb_time_hour(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_hour);
-}
-
-/* 15.2.19.7.16 */
-/* Initializes a time by setting the amount of milliseconds since the epoch.*/
-static mrb_value
-mrb_time_initialize(mrb_state *mrb, mrb_value self)
-{
-  mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0,
-  amin = 0, asec = 0, ausec = 0;
-  int n;
-  struct mrb_time *tm;
-
-  tm = (struct mrb_time*)DATA_PTR(self);
-  if (tm) {
-    mrb_free(mrb, tm);
-  }
-  DATA_TYPE(self) = &mrb_time_type;
-  DATA_PTR(self) = NULL;
-
-  n = mrb_get_args(mrb, "|iiiiiii",
-       &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
-  if (n == 0) {
-    tm = current_mrb_time(mrb);
-  }
-  else {
-    tm = time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_LOCAL);
-  }
-  DATA_PTR(self) = tm;
-  return self;
-}
-
-/* 15.2.19.7.17(x) */
-/* Initializes a copy of this time object. */
-static mrb_value
-mrb_time_initialize_copy(mrb_state *mrb, mrb_value copy)
-{
-  mrb_value src;
-
-  mrb_get_args(mrb, "o", &src);
-  if (mrb_obj_equal(mrb, copy, src)) return copy;
-  if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
-    mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
-  }
-  if (!DATA_PTR(copy)) {
-    DATA_PTR(copy) = mrb_malloc(mrb, sizeof(struct mrb_time));
-    DATA_TYPE(copy) = &mrb_time_type;
-  }
-  *(struct mrb_time *)DATA_PTR(copy) = *(struct mrb_time *)DATA_PTR(src);
-  return copy;
-}
-
-/* 15.2.19.7.18 */
-/* Sets the timezone attribute of the Time object to LOCAL. */
-static mrb_value
-mrb_time_localtime(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm->timezone = MRB_TIMEZONE_LOCAL;
-  mrb_time_update_datetime(tm);
-  return self;
-}
-
-/* 15.2.19.7.19 */
-/* Returns day of month of time. */
-static mrb_value
-mrb_time_mday(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_mday);
-}
-
-/* 15.2.19.7.20 */
-/* Returns minutes of time. */
-static mrb_value
-mrb_time_min(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_min);
-}
-
-/* 15.2.19.7.21 and 15.2.19.7.22 */
-/* Returns month of time. */
-static mrb_value
-mrb_time_mon(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_mon + 1);
-}
-
-/* 15.2.19.7.23 */
-/* Returns seconds in minute of time. */
-static mrb_value
-mrb_time_sec(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->datetime.tm_sec);
-}
-
-
-/* 15.2.19.7.24 */
-/* Returns a Float with the time since the epoch in seconds. */
-static mrb_value
-mrb_time_to_f(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_float_value(mrb, (mrb_float)tm->sec + (mrb_float)tm->usec/1.0e6);
-}
-
-/* 15.2.19.7.25 */
-/* Returns a Fixnum with the time since the epoch in seconds. */
-static mrb_value
-mrb_time_to_i(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->sec);
-}
-
-/* 15.2.19.7.26 */
-/* Returns a Float with the time since the epoch in microseconds. */
-static mrb_value
-mrb_time_usec(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_fixnum_value(tm->usec);
-}
-
-/* 15.2.19.7.27 */
-/* Sets the timezone attribute of the Time object to UTC. */
-static mrb_value
-mrb_time_utc(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  tm->timezone = MRB_TIMEZONE_UTC;
-  mrb_time_update_datetime(tm);
-  return self;
-}
-
-/* 15.2.19.7.28 */
-/* Returns true if this time is in the UTC timezone false if not. */
-static mrb_value
-mrb_time_utc_p(mrb_state *mrb, mrb_value self)
-{
-  struct mrb_time *tm;
-
-  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
-  return mrb_bool_value(tm->timezone == MRB_TIMEZONE_UTC);
-}
-
-
-void
-mrb_mruby_time_gem_init(mrb_state* mrb)
-{
-  struct RClass *tc;
-  /* ISO 15.2.19.2 */
-  tc = mrb_define_class(mrb, "Time", mrb->object_class);
-  MRB_SET_INSTANCE_TT(tc, MRB_TT_DATA);
-  mrb_include_module(mrb, tc, mrb_class_get(mrb, "Comparable"));
-  mrb_define_class_method(mrb, tc, "at", mrb_time_at, MRB_ARGS_ANY());          /* 15.2.19.6.1 */
-  mrb_define_class_method(mrb, tc, "gm", mrb_time_gm, MRB_ARGS_ARG(1,6));       /* 15.2.19.6.2 */
-  mrb_define_class_method(mrb, tc, "local", mrb_time_local, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.3 */
-  mrb_define_class_method(mrb, tc, "mktime", mrb_time_local, MRB_ARGS_ARG(1,6));/* 15.2.19.6.4 */
-  mrb_define_class_method(mrb, tc, "now", mrb_time_now, MRB_ARGS_NONE());       /* 15.2.19.6.5 */
-  mrb_define_class_method(mrb, tc, "utc", mrb_time_gm, MRB_ARGS_ARG(1,6));      /* 15.2.19.6.6 */
-
-  mrb_define_method(mrb, tc, "=="     , mrb_time_eq     , MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, tc, "<=>"    , mrb_time_cmp    , MRB_ARGS_REQ(1)); /* 15.2.19.7.1 */
-  mrb_define_method(mrb, tc, "+"      , mrb_time_plus   , MRB_ARGS_REQ(1)); /* 15.2.19.7.2 */
-  mrb_define_method(mrb, tc, "-"      , mrb_time_minus  , MRB_ARGS_REQ(1)); /* 15.2.19.7.3 */
-  mrb_define_method(mrb, tc, "to_s"   , mrb_time_asctime, MRB_ARGS_NONE());
-  mrb_define_method(mrb, tc, "inspect", mrb_time_asctime, MRB_ARGS_NONE());
-  mrb_define_method(mrb, tc, "asctime", mrb_time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.4 */
-  mrb_define_method(mrb, tc, "ctime"  , mrb_time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.5 */
-  mrb_define_method(mrb, tc, "day"    , mrb_time_day    , MRB_ARGS_NONE()); /* 15.2.19.7.6 */
-  mrb_define_method(mrb, tc, "dst?"   , mrb_time_dst_p  , MRB_ARGS_NONE()); /* 15.2.19.7.7 */
-  mrb_define_method(mrb, tc, "getgm"  , mrb_time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.8 */
-  mrb_define_method(mrb, tc, "getlocal",mrb_time_getlocal,MRB_ARGS_NONE()); /* 15.2.19.7.9 */
-  mrb_define_method(mrb, tc, "getutc" , mrb_time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.10 */
-  mrb_define_method(mrb, tc, "gmt?"   , mrb_time_utc_p  , MRB_ARGS_NONE()); /* 15.2.19.7.11 */
-  mrb_define_method(mrb, tc, "gmtime" , mrb_time_utc    , MRB_ARGS_NONE()); /* 15.2.19.7.13 */
-  mrb_define_method(mrb, tc, "hour"   , mrb_time_hour, MRB_ARGS_NONE());    /* 15.2.19.7.15 */
-  mrb_define_method(mrb, tc, "localtime", mrb_time_localtime, MRB_ARGS_NONE()); /* 15.2.19.7.18 */
-  mrb_define_method(mrb, tc, "mday"   , mrb_time_mday, MRB_ARGS_NONE());    /* 15.2.19.7.19 */
-  mrb_define_method(mrb, tc, "min"    , mrb_time_min, MRB_ARGS_NONE());     /* 15.2.19.7.20 */
-
-  mrb_define_method(mrb, tc, "mon"  , mrb_time_mon, MRB_ARGS_NONE());       /* 15.2.19.7.21 */
-  mrb_define_method(mrb, tc, "month", mrb_time_mon, MRB_ARGS_NONE());       /* 15.2.19.7.22 */
-
-  mrb_define_method(mrb, tc, "sec" , mrb_time_sec, MRB_ARGS_NONE());        /* 15.2.19.7.23 */
-  mrb_define_method(mrb, tc, "to_i", mrb_time_to_i, MRB_ARGS_NONE());       /* 15.2.19.7.25 */
-  mrb_define_method(mrb, tc, "to_f", mrb_time_to_f, MRB_ARGS_NONE());       /* 15.2.19.7.24 */
-  mrb_define_method(mrb, tc, "usec", mrb_time_usec, MRB_ARGS_NONE());       /* 15.2.19.7.26 */
-  mrb_define_method(mrb, tc, "utc" , mrb_time_utc, MRB_ARGS_NONE());        /* 15.2.19.7.27 */
-  mrb_define_method(mrb, tc, "utc?", mrb_time_utc_p,MRB_ARGS_NONE());       /* 15.2.19.7.28 */
-  mrb_define_method(mrb, tc, "wday", mrb_time_wday, MRB_ARGS_NONE());       /* 15.2.19.7.30 */
-  mrb_define_method(mrb, tc, "yday", mrb_time_yday, MRB_ARGS_NONE());       /* 15.2.19.7.31 */
-  mrb_define_method(mrb, tc, "year", mrb_time_year, MRB_ARGS_NONE());       /* 15.2.19.7.32 */
-  mrb_define_method(mrb, tc, "zone", mrb_time_zone, MRB_ARGS_NONE());       /* 15.2.19.7.33 */
-
-  mrb_define_method(mrb, tc, "initialize", mrb_time_initialize, MRB_ARGS_REQ(1)); /* 15.2.19.7.16 */
-  mrb_define_method(mrb, tc, "initialize_copy", mrb_time_initialize_copy, MRB_ARGS_REQ(1)); /* 15.2.19.7.17 */
-
-  /*
-    methods not available:
-      gmt_offset(15.2.19.7.12)
-      gmtoff(15.2.19.7.14)
-      utc_offset(15.2.19.7.29)
-  */
-}
-
-void
-mrb_mruby_time_gem_final(mrb_state* mrb)
-{
-}

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-time/test/time.rb (+0 -201) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-time/test/time.rb    2014-06-08 19:01:14 +0900 (f92459d)
+++ /dev/null
@@ -1,201 +0,0 @@
-##
-# Time ISO Test
-
-if Object.const_defined?(:Time)
-  assert('Time.new', '15.2.3.3.3') do
-    Time.new.class == Time
-  end
-
-  assert('Time', '15.2.19') do
-    Time.class == Class
-  end
-
-  assert('Time superclass', '15.2.19.2') do
-    Time.superclass == Object
-  end
-
-  assert('Time.at', '15.2.19.6.1') do
-    Time.at(1300000000.0)
-  end
-
-  assert('Time.gm', '15.2.19.6.2') do
-    Time.gm(2012, 12, 23)
-  end
-
-  assert('Time.local', '15.2.19.6.3') do
-    Time.local(2012, 12, 23)
-  end
-
-  assert('Time.mktime', '15.2.19.6.4') do
-    Time.mktime(2012, 12, 23)
-  end
-
-  assert('Time.now', '15.2.19.6.5') do
-    Time.now.class == Time
-  end
-
-  assert('Time.utc', '15.2.19.6.6') do
-    Time.utc(2012, 12, 23)
-  end
-
-  assert('Time#+', '15.2.19.7.1') do
-    t1 = Time.at(1300000000.0)
-    t2 = t1.+(60)
-
-    t2.utc.asctime == "Sun Mar 13 07:07:40 UTC 2011"
-  end
-
-  assert('Time#-', '15.2.19.7.2') do
-    t1 = Time.at(1300000000.0)
-    t2 = t1.-(60)
-
-    t2.utc.asctime == "Sun Mar 13 07:05:40 UTC 2011"
-  end
-
-  assert('Time#<=>', '15.2.19.7.3') do
-    t1 = Time.at(1300000000.0)
-    t2 = Time.at(1400000000.0)
-    t3 = Time.at(1500000000.0)
-
-    t2.<=>(t1) == 1 and
-      t2.<=>(t2) == 0 and
-      t2.<=>(t3) == -1 and
-      t2.<=>(nil) == nil
-  end
-
-  assert('Time#asctime', '15.2.19.7.4') do
-    Time.at(1300000000.0).utc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-
-  assert('Time#ctime', '15.2.19.7.5') do
-    Time.at(1300000000.0).utc.ctime == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-
-  assert('Time#day', '15.2.19.7.6') do
-    Time.gm(2012, 12, 23).day == 23
-  end
-
-  assert('Time#dst?', '15.2.19.7.7') do
-    not Time.gm(2012, 12, 23).utc.dst?
-  end
-
-  assert('Time#getgm', '15.2.19.7.8') do
-    Time.at(1300000000.0).getgm.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-
-  assert('Time#getlocal', '15.2.19.7.9') do
-    t1 = Time.at(1300000000.0)
-    t2 = Time.at(1300000000.0)
-    t3 = t1.getlocal
-
-    t1 == t3 and t3 == t2.getlocal
-  end
-
-  assert('Time#getutc', '15.2.19.7.10') do
-    Time.at(1300000000.0).getutc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-
-  assert('Time#gmt?', '15.2.19.7.11') do
-    Time.at(1300000000.0).utc.gmt?
-  end
-
-  # ATM not implemented
-  # assert('Time#gmt_offset', '15.2.19.7.12') do
-
-  assert('Time#gmtime', '15.2.19.7.13') do
-    Time.at(1300000000.0).gmtime
-  end
-
-  # ATM not implemented
-  # assert('Time#gmtoff', '15.2.19.7.14') do
-
-  assert('Time#hour', '15.2.19.7.15') do
-    Time.gm(2012, 12, 23, 7, 6).hour == 7
-  end
-
-  # ATM doesn't really work
-  # assert('Time#initialize', '15.2.19.7.16') do
-
-  assert('Time#initialize_copy', '15.2.19.7.17') do
-    time_tmp_2 = Time.at(7.0e6)
-    time_tmp_2.clone == time_tmp_2
-  end
-
-  assert('Time#localtime', '15.2.19.7.18') do
-    t1 = Time.at(1300000000.0)
-    t2 = Time.at(1300000000.0)
-
-    t1.localtime
-    t1 == t2.getlocal
-  end
-
-  assert('Time#mday', '15.2.19.7.19') do
-    Time.gm(2012, 12, 23).mday == 23
-  end
-
-  assert('Time#min', '15.2.19.7.20') do
-    Time.gm(2012, 12, 23, 7, 6).min == 6
-  end
-
-  assert('Time#mon', '15.2.19.7.21') do
-    Time.gm(2012, 12, 23).mon == 12
-  end
-
-  assert('Time#month', '15.2.19.7.22') do
-    Time.gm(2012, 12, 23).month == 12
-  end
-
-  assert('Times#sec', '15.2.19.7.23') do
-    Time.gm(2012, 12, 23, 7, 6, 40).sec == 40
-  end
-
-  assert('Time#to_f', '15.2.19.7.24') do
-    Time.at(1300000000.0).to_f == 1300000000.0
-  end
-
-  assert('Time#to_i', '15.2.19.7.25') do
-    Time.at(1300000000.0).to_i == 1300000000
-  end
-
-  assert('Time#usec', '15.2.19.7.26') do
-    Time.at(1300000000.0).usec == 0
-  end
-
-  assert('Time#utc', '15.2.19.7.27') do
-    Time.at(1300000000.0).utc
-  end
-
-  assert('Time#utc?', '15.2.19.7.28') do
-    Time.at(1300000000.0).utc.utc?
-  end
-
-  # ATM not implemented
-  # assert('Time#utc_offset', '15.2.19.7.29') do
-
-  assert('Time#wday', '15.2.19.7.30') do
-    Time.gm(2012, 12, 23).wday == 0
-  end
-
-  assert('Time#yday', '15.2.19.7.31') do
-    Time.gm(2012, 12, 23).yday == 358
-  end
-
-  assert('Time#year', '15.2.19.7.32') do
-    Time.gm(2012, 12, 23).year == 2012
-  end
-
-  assert('Time#zone', '15.2.19.7.33') do
-    Time.at(1300000000.0).utc.zone == 'UTC'
-  end
-
-  # Not ISO specified
-
-  assert('Time#to_s') do
-    Time.at(1300000000.0).utc.to_s == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-
-  assert('Time#inspect') do
-    Time.at(1300000000.0).utc.inspect == "Sun Mar 13 07:06:40 UTC 2011"
-  end
-end
-

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrbgem.rake (+0 -4) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrbgem.rake    2014-06-08 19:01:14 +0900 (78eb73a)
+++ /dev/null
@@ -1,4 +0,0 @@
-MRuby::Gem::Specification.new('mruby-toplevel-ext') do |spec|
-  spec.license = 'MIT'
-  spec.author  = 'mruby developers'
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb (+0 -11) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb    2014-06-08 19:01:14 +0900 (7745623)
+++ /dev/null
@@ -1,11 +0,0 @@
-
-def self.include (*modules)
-  self.class.include(*modules)
-end
-
-def self.private(*methods)
-end
-def self.protected(*methods)
-end
-def self.public(*methods)
-end

  Deleted: vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/test/toplevel.rb (+0 -24) 100644
===================================================================
--- vendor/mruby-eeac4be/mrbgems/mruby-toplevel-ext/test/toplevel.rb    2014-06-08 19:01:14 +0900 (9630fe3)
+++ /dev/null
@@ -1,24 +0,0 @@
-##
-# Toplevel Self(Ext) Test
-
-assert('Toplevel#include') do
-  module ToplevelTestModule1
-    def method_foo
-      :foo
-    end
-
-    CONST_BAR = :bar
-  end
-
-  module ToplevelTestModule2
-    CONST_BAR = :bar2
-  end
-
-  self.include ToplevelTestModule2, ToplevelTestModule1
-  
-  assert_true self.class.included_modules.include?( ToplevelTestModule1 )
-  assert_true self.class.included_modules.include?( ToplevelTestModule2 )
-  assert_equal :foo, method_foo
-  assert_equal :bar2, CONST_BAR
-end
-

  Deleted: vendor/mruby-eeac4be/mrblib/array.rb (+0 -111) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/array.rb    2014-06-08 19:01:14 +0900 (82df909)
+++ /dev/null
@@ -1,111 +0,0 @@
-##
-# Array
-#
-# ISO 15.2.12
-class Array
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the respective element.
-  #
-  # ISO 15.2.12.5.10
-  def each(&block)
-    idx, length = -1, self.length-1
-    while idx < length and length <= self.length and length = self.length-1
-      elm = self[idx += 1]
-      unless elm
-        if elm == nil and length >= self.length
-          break
-        end
-      end
-      block.call(elm)
-    end
-    self
-  end
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the index of the respective element.
-  #
-  # ISO 15.2.12.5.11
-  def each_index(&block)
-    idx = 0
-    while(idx < length)
-      block.call(idx)
-      idx += 1
-    end
-    self
-  end
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the respective element. Each element will
-  # be replaced by the resulting values.
-  #
-  # ISO 15.2.12.5.7
-  def collect!(&block)
-    self.each_index{|idx|
-      self[idx] = block.call(self[idx])
-    }
-    self
-  end
-
-  ##
-  # Alias for collect!
-  #
-  # ISO 15.2.12.5.20
-  alias map! collect!
-
-  ##
-  # Private method for Array creation.
-  #
-  # ISO 15.2.12.5.15
-  def initialize(size=0, obj=nil, &block)
-    raise TypeError, "expected Integer for 1st argument" unless size.kind_of? Integer
-    raise ArgumentError, "negative array size" if size < 0
-
-    self.clear
-    if size > 0
-      self[size - 1] = nil  # allocate
-
-      idx = 0
-      while(idx < size)
-        self[idx] = (block)? block.call(idx): obj
-        idx += 1
-      end
-    end
-
-    self
-  end
-
-  ##
-  # Delete element with index +key+
-  def delete(key, &block)
-    while i = self.index(key)
-      self.delete_at(i)
-      ret = key
-    end
-    if ret == nil && block
-      block.call
-    else
-      ret
-    end
-  end
-end
-
-##
-# Array is enumerable and comparable
-module Enumerable; end
-module Comparable; end
-class Array
-  # ISO 15.2.12.3
-  include Enumerable
-  include Comparable
-
-  ##
-  # Sort all elements and replace +self+ with these
-  # elements.
-  def sort!(&block)
-    self.replace(self.sort(&block))
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/class.rb (+0 -32) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/class.rb    2014-06-08 19:01:14 +0900 (ebfb1f7)
+++ /dev/null
@@ -1,32 +0,0 @@
-class Module
-  # 15.2.2.4.13
-  def attr_reader(*names)
-    names.each do |name|
-      name = name.to_s
-      raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?')  || name.include?('$')
-
-      attr_name = '@'+name
-      define_method(name){self.instance_variable_get(attr_name)}
-    end
-  end
-  # 15.2.2.4.14
-  def attr_writer(*names)
-    names.each do |name|
-      name = name.to_s
-      raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?')  || name.include?('$')
-
-      attr_name = '@'+name
-      name = (name+"=").intern
-      define_method(name){|v|self.instance_variable_set(attr_name,v)}
-    end
-  end
-  # 15.2.2.4.12
-  def attr_accessor(*names)
-    attr_reader(*names)
-    attr_writer(*names)
-  end
-  # 15.2.2.4.11
-  def attr(name)
-    attr_reader(name)
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/compar.rb (+0 -104) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/compar.rb    2014-06-08 19:01:14 +0900 (40fb2e7)
+++ /dev/null
@@ -1,104 +0,0 @@
-##
-# Comparable
-#
-# ISO 15.3.3
-module Comparable
-
-  ##
-  # Return true if +self+ is less
-  # than +other+. Otherwise return
-  # false.
-  #
-  # ISO 15.3.3.2.1
-  def < other
-    cmp = self <=> other
-    if cmp.nil?
-      false
-    elsif cmp < 0
-      true
-    else
-      false
-    end
-  end
-
-  ##
-  # Return true if +self+ is less
-  # than or equal to +other+.
-  # Otherwise return false.
-  #
-  # ISO 15.3.3.2.2
-  def <= other
-    cmp = self <=> other
-    if cmp.nil?
-      false
-    elsif cmp <= 0
-      true
-    else
-      false
-    end
-  end
-
-  ##
-  # Return true if +self+ is equal
-  # to +other+. Otherwise return
-  # false.
-  #
-  # ISO 15.3.3.2.3
-  def == other
-    cmp = self <=> other
-    if cmp == 0
-      true
-    else
-      false
-    end
-  end
-
-  ##
-  # Return true if +self+ is greater
-  # than +other+. Otherwise return
-  # false.
-  #
-  # ISO 15.3.3.2.4
-  def > other
-    cmp = self <=> other
-    if cmp.nil?
-      false
-    elsif cmp > 0
-      true
-    else
-      false
-    end
-  end
-
-  ##
-  # Return true if +self+ is greater
-  # than or equal to +other+.
-  # Otherwise return false.
-  #
-  # ISO 15.3.3.2.5
-  def >= other
-    cmp = self <=> other
-    if cmp.nil?
-      false
-    elsif cmp >= 0
-      true
-    else
-      false
-    end
-  end
-
-  ##
-  # Return true if +self+ is greater
-  # than or equal to +min+ and
-  # less than or equal to +max+.
-  # Otherwise return false.
-  #
-  # ISO 15.3.3.2.6
-  def between?(min, max)
-    if self < min or self > max
-      false
-    else
-      true
-    end
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/enum.rb (+0 -398) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/enum.rb    2014-06-08 19:01:14 +0900 (0593e1f)
+++ /dev/null
@@ -1,398 +0,0 @@
-##
-# Enumerable
-#
-#  ISO 15.3.2
-#
-#  The <code>Enumerable</code> mixin provides collection classes with
-#  several traversal and searching methods, and with the ability to
-#  sort. The class must provide a method <code>each</code>, which
-#  yields successive members of the collection. If
-#  <code>Enumerable#max</code>, <code>#min</code>, or
-#  <code>#sort</code> is used, the objects in the collection must also
-#  implement a meaningful <code><=></code> operator, as these methods
-#  rely on an ordering between members of the collection.
-
-module Enumerable
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return false
-  # if one block value is false. Otherwise
-  # return true. If no block is given and
-  # +self+ is false return false.
-  #
-  # ISO 15.3.2.2.1
-  def all?(&block)
-    st = true
-    if block
-      self.each{|val|
-        unless block.call(val)
-          st = false
-          break
-        end
-      }
-    else
-      self.each{|val|
-        unless val
-          st = false
-          break
-        end
-      }
-    end
-    st
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return true
-  # if one block value is true. Otherwise
-  # return false. If no block is given and
-  # +self+ is true object return true.
-  #
-  # ISO 15.3.2.2.2
-  def any?(&block)
-    st = false
-    if block
-      self.each{|val|
-        if block.call(val)
-          st = true
-          break
-        end
-      }
-    else
-      self.each{|val|
-        if val
-          st = true
-          break
-        end
-      }
-    end
-    st
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Append all
-  # values of each block together and
-  # return this value.
-  #
-  # ISO 15.3.2.2.3
-  def collect(&block)
-    ary = []
-    self.each{|val|
-      ary.push(block.call(val))
-    }
-    ary
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return
-  # +ifnone+ if no block value was true.
-  # Otherwise return the first block value
-  # which had was true.
-  #
-  # ISO 15.3.2.2.4
-  def detect(ifnone=nil, &block)
-    ret = ifnone
-    self.each{|val|
-      if block.call(val)
-        ret = val
-        break
-      end
-    }
-    ret
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Pass an
-  # index to the block which starts at 0
-  # and increase by 1 for each element.
-  #
-  # ISO 15.3.2.2.5
-  def each_with_index(&block)
-    i = 0
-    self.each{|val|
-      block.call(val, i)
-      i += 1
-    }
-    self
-  end
-
-  ##
-  # Return an array of all elements which
-  # are yield by +each+.
-  #
-  # ISO 15.3.2.2.6
-  def entries
-    ary = []
-    self.each{|val|
-      ary.push val
-    }
-    ary
-  end
-
-  ##
-  # Alias for find
-  #
-  # ISO 15.3.2.2.7
-  alias find detect
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return an array
-  # which contains all elements whose block
-  # value was true.
-  #
-  # ISO 15.3.2.2.8
-  def find_all(&block)
-    ary = []
-    self.each{|val|
-      ary.push(val) if block.call(val)
-    }
-    ary
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+ and which return
-  # value was true when invoking === with
-  # +pattern+. Return an array with all
-  # elements or the respective block values.
-  #
-  # ISO 15.3.2.2.9
-  def grep(pattern, &block)
-    ary = []
-    self.each{|val|
-      if pattern === val
-        ary.push((block)? block.call(val): val)
-      end
-    }
-    ary
-  end
-
-  ##
-  # Return true if at least one element which
-  # is yield by +each+ returns a true value
-  # by invoking == with +obj+. Otherwise return
-  # false.
-  #
-  # ISO 15.3.2.2.10
-  def include?(obj)
-    st = false
-    self.each{|val|
-      if val == obj
-        st = true
-        break
-      end
-    }
-    st
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return value
-  # is the sum of all block values. Pass
-  # to each block the current sum and the
-  # current element.
-  #
-  # ISO 15.3.2.2.11
-  def inject(*args, &block)
-    raise ArgumentError, "too many arguments" if args.size > 2
-    if Symbol === args[-1]
-      sym = args[-1]
-      block = ->(x,y){x.send(sym,y)}
-      args.pop
-    end
-    if args.empty?
-      flag = true  # no initial argument
-      result = nil
-    else
-      flag = false
-      result = args[0]
-    end
-    self.each{|val|
-      if flag
-        # push first element as initial
-        flag = false
-        result = val
-      else
-        result = block.call(result, val)
-      end
-    }
-    result
-  end
-  alias reduce inject
-
-  ##
-  # Alias for collect
-  #
-  # ISO 15.3.2.2.12
-  alias map collect
-
-  ##
-  # Return the maximum value of all elements
-  # yield by +each+. If no block is given <=>
-  # will be invoked to define this value. If
-  # a block is given it will be used instead.
-  #
-  # ISO 15.3.2.2.13
-  def max(&block)
-    flag = true  # 1st element?
-    result = nil
-    self.each{|val|
-      if flag
-        # 1st element
-        result = val
-        flag = false
-      else
-        if block
-          result = val if block.call(val, result) > 0
-        else
-          result = val if (val <=> result) > 0
-        end
-      end
-    }
-    result
-  end
-
-  ##
-  # Return the minimum value of all elements
-  # yield by +each+. If no block is given <=>
-  # will be invoked to define this value. If
-  # a block is given it will be used instead.
-  #
-  # ISO 15.3.2.2.14
-  def min(&block)
-    flag = true  # 1st element?
-    result = nil
-    self.each{|val|
-      if flag
-        # 1st element
-        result = val
-        flag = false
-      else
-        if block
-          result = val if block.call(val, result) < 0
-        else
-          result = val if (val <=> result) < 0
-        end
-      end
-    }
-    result
-  end
-
-  ##
-  # Alias for include?
-  #
-  # ISO 15.3.2.2.15
-  alias member? include?
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return an
-  # array which contains two arrays. The
-  # first array contains all elements
-  # whose block value was true. The second
-  # array contains all elements whose
-  # block value was false.
-  #
-  # ISO 15.3.2.2.16
-  def partition(&block)
-    ary_T = []
-    ary_F = []
-    self.each{|val|
-      if block.call(val)
-        ary_T.push(val)
-      else
-        ary_F.push(val)
-      end
-    }
-    [ary_T, ary_F]
-  end
-
-  ##
-  # Call the given block for each element
-  # which is yield by +each+. Return an
-  # array which contains only the elements
-  # whose block value was false.
-  #
-  # ISO 15.3.2.2.17
-  def reject(&block)
-    ary = []
-    self.each{|val|
-      ary.push(val) unless block.call(val)
-    }
-    ary
-  end
-
-  ##
-  # Alias for find_all.
-  #
-  # ISO 15.3.2.2.18
-  alias select find_all
-
-  ##
-  # TODO
-  # Does this OK? Please test it.
-  def __sort_sub__(sorted, work, src_ary, head, tail, &block)
-    if head == tail
-      sorted[head] = work[head] if src_ary == 1
-      return
-    end
-
-    # on current step, which is a src ary?
-    if src_ary == 0
-      src, dst = sorted, work
-    else
-      src, dst = work, sorted
-    end
-
-    key = src[head]    # key value for dividing values
-    i, j = head, tail  # position to store on the dst ary
-
-    (head + 1).upto(tail){|idx|
-      if ((block)? block.call(src[idx], key): (src[idx] <=> key)) > 0
-        # larger than key
-        dst[j] = src[idx]
-        j -= 1
-      else
-        dst[i] = src[idx]
-        i += 1
-      end
-    }
-
-    sorted[i] = key
-
-    # sort each sub-array
-    src_ary = (src_ary + 1) % 2  # exchange a src ary
-    __sort_sub__(sorted, work, src_ary, head, i - 1, &block) if i > head
-    __sort_sub__(sorted, work, src_ary, i + 1, tail, &block) if i < tail
-  end
-#  private :__sort_sub__
-
-  ##
-  # Return a sorted array of all elements
-  # which are yield by +each+. If no block
-  # is given <=> will be invoked on each
-  # element to define the order. Otherwise
-  # the given block will be used for
-  # sorting.
-  #
-  # ISO 15.3.2.2.19
-  def sort(&block)
-    ary = []
-    self.each{|val| ary.push(val)}
-    unless ary.empty?
-      __sort_sub__(ary, ::Array.new(ary.size), 0, 0, ary.size - 1, &block)
-    end
-    ary
-  end
-
-  ##
-  # Alias for entries.
-  #
-  # ISO 15.3.2.2.20
-  alias to_a entries
-end

  Deleted: vendor/mruby-eeac4be/mrblib/error.rb (+0 -66) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/error.rb    2014-06-08 19:01:14 +0900 (9e5a3da)
+++ /dev/null
@@ -1,66 +0,0 @@
-##
-# Exception
-#
-# ISO 15.2.22
-class Exception
-
-  ##
-  # Raise an exception.
-  #
-  # ISO 15.2.22.4.1
-  def self.exception(*args, &block)
-    self.new(*args, &block)
-  end
-end
-
-# ISO 15.2.24
-class ArgumentError < StandardError
-end
-
-# ISO 15.2.25
-class LocalJumpError < StandardError
-end
-
-# ISO 15.2.26
-class RangeError < StandardError
-end
-
-class FloatDomainError < RangeError
-end
-
-# ISO 15.2.26
-class RegexpError < StandardError
-end
-
-# ISO 15.2.29
-class TypeError < StandardError
-end
-
-# ISO 15.2.31
-class NameError < StandardError
-  attr_accessor :name
-
-  def new(message="NameError", name=nil)
-    initialize(message, name)
-  end
-
-  def initialize(message=nil, name=nil)
-    @name = name
-    super(message)
-  end
-end
-
-# ISO 15.2.32
-class NoMethodError < NameError
-end
-
-# ISO 15.2.33
-class IndexError < StandardError
-end
-
-class KeyError < IndexError
-end
-
-class NotImplementedError < ScriptError
-end
-

  Deleted: vendor/mruby-eeac4be/mrblib/hash.rb (+0 -193) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/hash.rb    2014-06-08 19:01:14 +0900 (f7cdbdc)
+++ /dev/null
@@ -1,193 +0,0 @@
-##
-# Hash
-#
-# ISO 15.2.13
-class Hash
-
-  ##
-  # Delete the element with the key +key+.
-  # Return the value of the element if +key+
-  # was found. Return nil if nothing was
-  # found. If a block is given, call the
-  # block with the value of the element.
-  #
-  # ISO 15.2.13.4.8
-  def delete(key, &block)
-    if block && ! self.has_key?(key)
-      block.call(key)
-    else
-      self.__delete(key)
-    end
-  end
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the key and value of each element.
-  #
-  # call-seq:
-  #   hsh.each      {| key, value | block } -> hsh
-  #   hsh.each_pair {| key, value | block } -> hsh
-  #   hsh.each                              -> an_enumerator
-  #   hsh.each_pair                         -> an_enumerator
-  #
-  #
-  # If no block is given, an enumerator is returned instead.
-  #
-  #  h = { "a" => 100, "b" => 200 }
-  #  h.each {|key, value| puts "#{key} is #{value}" }
-  #
-  # <em>produces:</em>
-  #
-  # a is 100
-  # b is 200
-  #
-  # ISO 15.2.13.4.9
-  def each(&block)
-    self.keys.each{|k| block.call([k, self[k]])}
-    self
-  end
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the key of each element.
-  #
-  # call-seq:
-  #   hsh.each_key {| key | block } -> hsh
-  #   hsh.each_key                  -> an_enumerator
-  #
-  # If no block is given, an enumerator is returned instead.
-  #
-  #   h = { "a" => 100, "b" => 200 }
-  #   h.each_key {|key| puts key }
-  #
-  # <em>produces:</em>
-  #
-  #  a
-  #  b
-  #
-  # ISO 15.2.13.4.10
-  def each_key(&block)
-    self.keys.each{|k| block.call(k)}
-    self
-  end
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the value of each element.
-  #
-  # call-seq:
-  #   hsh.each_value {| value | block } -> hsh
-  #   hsh.each_value                    -> an_enumerator
-  #
-  # If no block is given, an enumerator is returned instead.
-  #
-  #  h = { "a" => 100, "b" => 200 }
-  #  h.each_value {|value| puts value }
-  #
-  # <em>produces:</em>
-  #
-  #  100
-  #  200
-  #
-  # ISO 15.2.13.4.11
-  def each_value(&block)
-    self.keys.each{|k| block.call(self[k])}
-    self
-  end
-
-  ##
-  # Create a direct instance of the class Hash.
-  #
-  # ISO 15.2.13.4.16
-  def initialize(*args, &block)
-    self.__init_core(block, *args)
-  end
-
-  ##
-  # Return a hash which contains the content of
-  # +self+ and +other+. If a block is given
-  # it will be called for each element with
-  # a duplicate key. The value of the block
-  # will be the final value of this element.
-  #
-  # ISO 15.2.13.4.22
-  def merge(other, &block)
-    h = {}
-    raise "can't convert argument into Hash" unless other.respond_to?(:to_hash)
-    other = other.to_hash
-    self.each_key{|k| h[k] = self[k]}
-    if block
-      other.each_key{|k|
-        h[k] = (self.has_key?(k))? block.call(k, self[k], other[k]): other[k]
-      }
-    else
-      other.each_key{|k| h[k] = other[k]}
-    end
-    h
-  end
-
-  # 1.8/1.9 Hash#reject! returns Hash; ISO says nothing.
-  def reject!(&b)
-    keys = []
-    self.each_key{|k|
-      v = self[k]
-      if b.call(k, v)
-        keys.push(k)
-      end
-    }
-    return nil if keys.size == 0
-    keys.each{|k|
-      self.delete(k)
-    }
-    self
-  end
-
-  # 1.8/1.9 Hash#reject returns Hash; ISO says nothing.
-  def reject(&b)
-    h = {}
-    self.each_key{|k|
-      v = self[k]
-      unless b.call(k, v)
-        h[k] = v
-      end
-    }
-    h
-  end
-
-  # 1.9 Hash#select! returns Hash; ISO says nothing.
-  def select!(&b)
-    keys = []
-    self.each_key{|k|
-      v = self[k]
-      unless b.call(k, v)
-        keys.push(k)
-      end
-    }
-    return nil if keys.size == 0
-    keys.each{|k|
-      self.delete(k)
-    }
-    self
-  end
-
-  # 1.9 Hash#select returns Hash; ISO says nothing.
-  def select(&b)
-    h = {}
-    self.each_key{|k|
-      v = self[k]
-      if b.call(k, v)
-        h[k] = v
-      end
-    }
-    h
-  end
-end
-
-##
-# Hash is enumerable
-#
-# ISO 15.2.13.3
-module Enumerable; end
-class Hash
-  include Enumerable
-end

  Deleted: vendor/mruby-eeac4be/mrblib/init_mrblib.c (+0 -14) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/init_mrblib.c    2014-06-08 19:01:14 +0900 (f65b185)
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "mruby.h"
-#include "mruby/irep.h"
-#include "mruby/dump.h"
-#include "mruby/string.h"
-#include "mruby/proc.h"
-
-extern const uint8_t mrblib_irep[];
-
-void
-mrb_init_mrblib(mrb_state *mrb)
-{
-  mrb_load_irep(mrb, mrblib_irep);
-}
-

  Deleted: vendor/mruby-eeac4be/mrblib/kernel.rb (+0 -46) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/kernel.rb    2014-06-08 19:01:14 +0900 (8ccf3cf)
+++ /dev/null
@@ -1,46 +0,0 @@
-##
-# Kernel
-#
-# ISO 15.3.1
-module Kernel
-
-  # 15.3.1.2.1
-  def self.`(s)
-    raise NotImplementedError.new("` not implemented")
-  end
-
-  # 15.3.1.3.5
-  def `(s)
-    Kernel.`(s)
-  end
-
-  ##
-  # Calls the given block repetitively.
-  #
-  # ISO 15.3.1.2.8
-  def self.loop #(&block)
-    while(true)
-      yield
-    end
-  end
-
-  # 15.3.1.2.3
-  def self.eval(s)
-    raise NotImplementedError.new("eval not implemented")
-  end
-
-  # 15.3.1.3.12
-  def eval(s)
-    Kernel.eval(s)
-  end
-
-  ##
-  # Alias for +Kernel.loop+.
-  #
-  # ISO 15.3.1.3.29
-  def loop #(&block)
-    while(true)
-      yield
-    end
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/mrblib.rake (+0 -18) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/mrblib.rake    2014-06-08 19:01:14 +0900 (db70842)
+++ /dev/null
@@ -1,18 +0,0 @@
-MRuby.each_target do
-  current_dir = File.dirname(__FILE__).relative_path_from(Dir.pwd)
-  relative_from_root = File.dirname(__FILE__).relative_path_from(MRUBY_ROOT)
-  current_build_dir = "#{build_dir}/#{relative_from_root}"
-  
-  self.libmruby << objfile("#{current_build_dir}/mrblib")
-
-  file objfile("#{current_build_dir}/mrblib") => "#{current_build_dir}/mrblib.c"
-  file "#{current_build_dir}/mrblib.c" => [mrbcfile] + Dir.glob("#{current_dir}/*.rb").sort do |t|
-    mrbc_, *rbfiles = t.prerequisites
-    FileUtils.mkdir_p File.dirname(t.name)
-    open(t.name, 'w') do |f|
-      _pp "GEN", "*.rb", "#{t.name.relative_path}"
-      f.puts File.read("#{current_dir}/init_mrblib.c")
-      mrbc.run f, rbfiles, 'mrblib_irep'
-    end
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/numeric.rb (+0 -101) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/numeric.rb    2014-06-08 19:01:14 +0900 (daa35c5)
+++ /dev/null
@@ -1,101 +0,0 @@
-##
-# Integer
-#
-# ISO 15.2.8
-class Integer
-
-  ##
-  # Returns the receiver simply.
-  #
-  # ISO 15.2.8.3.14
-  def ceil
-    self
-  end
-
-  ##
-  # Calls the given block once for each Integer
-  # from +self+ downto +num+.
-  #
-  # ISO 15.2.8.3.15
-  def downto(num, &block)
-    i = self
-    while(i >= num)
-      block.call(i)
-      i -= 1
-    end
-    self
-  end
-
-  ##
-  # Returns the receiver simply.
-  #
-  # ISO 15.2.8.3.17
-  def floor
-    self
-  end
-
-  ##
-  # Calls the given block +self+ times.
-  #
-  # ISO 15.2.8.3.22
-  def times(&block)
-    i = 0
-    while(i < self)
-      block.call(i)
-      i += 1
-    end
-    self
-  end
-
-  ##
-  # Returns the receiver simply.
-  #
-  # ISO 15.2.8.3.24
-  def round
-    self
-  end
-
-  ##
-  # Returns the receiver simply.
-  #
-  # ISO 15.2.8.3.26
-  def truncate
-    self
-  end
-
-  ##
-  # Calls the given block once for each Integer
-  # from +self+ upto +num+.
-  #
-  # ISO 15.2.8.3.27
-  def upto(num, &block)
-    i = self
-    while(i <= num)
-      block.call(i)
-      i += 1
-    end
-    self
-  end
-
-  ##
-  # Calls the given block from +self+ to +num+
-  # incremented by +step+ (default 1).
-  #
-  def step(num, step=1, &block)
-    i = if num.kind_of? Float then self.to_f else self end
-    while(i <= num)
-      block.call(i)
-      i += step
-    end
-    self
-  end
-end
-
-##
-# Numeric is comparable
-#
-# ISO 15.2.7.3
-module Comparable; end
-class Numeric
-  include Comparable
-end

  Deleted: vendor/mruby-eeac4be/mrblib/print.rb (+0 -18) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/print.rb    2014-06-08 19:01:14 +0900 (1ae3ae8)
+++ /dev/null
@@ -1,18 +0,0 @@
-##
-# Kernel
-#
-# ISO 15.3.1
-module Kernel
-  def print(*a)
-    raise NotImplementedError.new('print not available')
-  end
-  def puts(*a)
-    raise NotImplementedError.new('puts not available')
-  end
-  def p(*a)
-    raise NotImplementedError.new('p not available')
-  end
-  def printf(*args)
-    raise NotImplementedError.new('printf not available')
-  end
-end

  Deleted: vendor/mruby-eeac4be/mrblib/range.rb (+0 -40) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/range.rb    2014-06-08 19:01:14 +0900 (d43e3c2)
+++ /dev/null
@@ -1,40 +0,0 @@
-##
-# Range
-#
-# ISO 15.2.14
-class Range
-
-  ##
-  # Calls the given block for each element of +self+
-  # and pass the respective element.
-  #
-  # ISO 15.2.14.4.4
-  def each(&block)
-    val = self.first
-    unless val.respond_to? :succ
-      raise TypeError, "can't iterate"
-    end
-
-    last = self.last
-    return self if (val <=> last) > 0
-
-    while((val <=> last) < 0)
-      block.call(val)
-      val = val.succ
-    end
-
-    if not exclude_end? and (val <=> last) == 0
-      block.call(val)
-    end
-    self
-  end
-end
-
-##
-# Range is enumerable
-#
-# ISO 15.2.14.3
-module Enumerable; end
-class Range
-  include Enumerable
-end

  Deleted: vendor/mruby-eeac4be/mrblib/string.rb (+0 -157) 100644
===================================================================
--- vendor/mruby-eeac4be/mrblib/string.rb    2014-06-08 19:01:14 +0900 (49f87be)
+++ /dev/null
@@ -1,157 +0,0 @@
-##
-# String
-#
-# ISO 15.2.10
-class String
-
-  ##
-  # Calls the given block for each line
-  # and pass the respective line.
-  #
-  # ISO 15.2.10.5.15
-  def each_line(&block)
-    # expect that str.index accepts an Integer for 1st argument as a byte data
-    offset = 0
-    while(pos = self.index(0x0a, offset))
-      block.call(self[offset, pos + 1 - offset])
-      offset = pos + 1
-    end
-    block.call(self[offset, self.size - offset]) if self.size > offset
-    self
-  end
-
-  ##
-  # Replace all matches of +pattern+ with +replacement+.
-  # Call block (if given) for each match and replace
-  # +pattern+ with the value of the block. Return the
-  # final value.
-  #
-  # ISO 15.2.10.5.18
-  def gsub(*args, &block)
-    if args.size == 2
-      split(args[0], -1).join(args[1])
-    elsif args.size == 1 && block
-      split(args[0], -1).join(block.call(args[0]))
-    else
-      raise ArgumentError, "wrong number of arguments"
-    end
-  end
-
-  ##
-  # Replace all matches of +pattern+ with +replacement+.
-  # Call block (if given) for each match and replace
-  # +pattern+ with the value of the block. Modify
-  # +self+ with the final value.
-  #
-  # ISO 15.2.10.5.19
-  def gsub!(*args, &block)
-    str = self.gsub(*args, &block)
-    if str != self
-      self.replace(str)
-      self
-    else
-      nil
-    end
-  end
-
-  ##
-  # Calls the given block for each match of +pattern+
-  # If no block is given return an array with all
-  # matches of +pattern+.
-  #
-  # ISO 15.2.10.5.32
-  def scan(reg, &block)
-    ### *** TODO *** ###
-    unless Object.const_defined?(:Regexp)
-      raise NotImplementedError, "scan not available (yet)"
-    end
-  end
-
-  ##
-  # Replace only the first match of +pattern+ with
-  # +replacement+. Call block (if given) for each
-  # match and replace +pattern+ with the value of the
-  # block. Return the final value.
-  #
-  # ISO 15.2.10.5.36
-  def sub(*args, &block)
-    if args.size == 2
-      split(args[0], 2).join(args[1])
-    elsif args.size == 1 && block
-      split(args[0], 2).join(block.call(args[0]))
-    else
-      raise ArgumentError, "wrong number of arguments"
-    end
-  end
-
-  ##
-  # Replace only the first match of +pattern+ with
-  # +replacement+. Call block (if given) for each
-  # match and replace +pattern+ with the value of the
-  # block. Modify +self+ with the final value.
-  #
-  # ISO 15.2.10.5.37
-  def sub!(*args, &block)
-    str = self.sub(*args, &block)
-    if str != self
-      self.replace(str)
-      self
-    else
-      nil
-    end
-  end
-
-  ##
-  # Call the given block for each character of
-  # +self+.
-  def each_char(&block)
-    pos = 0
-    while(pos < self.size)
-      block.call(self[pos])
-      pos += 1
-    end
-    self
-  end
-
-  ##
-  # Call the given block for each byte of +self+.
-  def each_byte(&block)
-    bytes = self.bytes
-    pos = 0
-    while(pos < bytes.size)
-      block.call(bytes[pos])
-      pos += 1
-    end
-    self
-  end
-
-  ##
-  # Modify +self+ by replacing the content of +self+
-  # at the position +pos+ with +value+.
-  def []=(pos, value)
-    b = self[0, pos]
-    a = self[pos+1..-1]
-    self.replace([b, value, a].join(''))
-  end
-
-  ##
-  # ISO 15.2.10.5.5
-  def =~(re)
-    re =~ self
-  end
-
-  ##
-  # ISO 15.2.10.5.27
-  def match(re, &block)
-    re.match(self, &block)
-  end
-end
-
-##
-# String is comparable
-#
-# ISO 15.2.10.3
-module Comparable; end
-class String
-  include Comparable
-end

  Deleted: vendor/mruby-eeac4be/src/.dirstamp (+0 -0) 100644
===================================================================
--- vendor/mruby-eeac4be/src/.dirstamp    2014-06-08 19:01:14 +0900 (e69de29)
+++ /dev/null

  Deleted: vendor/mruby-eeac4be/src/array.c (+0 -1151) 100644
===================================================================
--- vendor/mruby-eeac4be/src/array.c    2014-06-08 19:01:14 +0900 (526cf49)
+++ /dev/null
@@ -1,1151 +0,0 @@
-/*
-** array.c - Array class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef SIZE_MAX
- /* Some versions of VC++
-  * has SIZE_MAX in stdint.h
-  */
-# include <limits.h>
-#endif
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/string.h"
-#include "value_array.h"
-
-#define ARY_DEFAULT_LEN   4
-#define ARY_SHRINK_RATIO  5 /* must be larger than 2 */
-#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
-#define ARY_MAX_SIZE ((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? (mrb_int)ARY_C_MAX_SIZE : MRB_INT_MAX-1)
-
-static inline mrb_value
-ary_elt(mrb_value ary, mrb_int offset)
-{
-  if (RARRAY_LEN(ary) == 0) return mrb_nil_value();
-  if (offset < 0 || RARRAY_LEN(ary) <= offset) {
-    return mrb_nil_value();
-  }
-  return RARRAY_PTR(ary)[offset];
-}
-
-static struct RArray*
-ary_new_capa(mrb_state *mrb, mrb_int capa)
-{
-  struct RArray *a;
-  mrb_int blen;
-
-  if (capa > ARY_MAX_SIZE) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
-  }
-  blen = capa * sizeof(mrb_value);
-  if (blen < capa) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
-  }
-
-  a = (struct RArray*)mrb_obj_alloc(mrb, MRB_TT_ARRAY, mrb->array_class);
-  a->ptr = (mrb_value *)mrb_malloc(mrb, blen);
-  a->aux.capa = capa;
-  a->len = 0;
-
-  return a;
-}
-
-mrb_value
-mrb_ary_new_capa(mrb_state *mrb, mrb_int capa)
-{
-  struct RArray *a = ary_new_capa(mrb, capa);
-  return mrb_obj_value(a);
-}
-
-mrb_value
-mrb_ary_new(mrb_state *mrb)
-{
-  return mrb_ary_new_capa(mrb, 0);
-}
-
-/*
- * to copy array, use this instead of memcpy because of portability
- * * gcc on ARM may fail optimization of memcpy
- *   http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3934.html
- * * gcc on MIPS also fail
- *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39755
- * * memcpy doesn't exist on freestanding environment
- *
- * If you optimize for binary size, use memcpy instead of this at your own risk
- * of above portability issue.
- *
- * see also http://togetter.com/li/462898
- *
- */
-static inline void
-array_copy(mrb_value *dst, const mrb_value *src, size_t size)
-{
-  size_t i;
-
-  for (i = 0; i < size; i++) {
-    dst[i] = src[i];
-  }
-}
-
-mrb_value
-mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr)
-{
-  mrb_value arv[2];
-  arv[0] = car;
-  arv[1] = cdr;
-  return mrb_ary_new_from_values(mrb, 2, arv);
-}
-
-static void
-ary_fill_with_nil(mrb_value *ptr, mrb_int size)
-{
-  mrb_value nil = mrb_nil_value();
-
-  while ((int)(size--)) {
-    *ptr++ = nil;
-  }
-}
-
-static void
-ary_modify(mrb_state *mrb, struct RArray *a)
-{
-  if (a->flags & MRB_ARY_SHARED) {
-    mrb_shared_array *shared = a->aux.shared;
-
-    if (shared->refcnt == 1 && a->ptr == shared->ptr) {
-      a->ptr = shared->ptr;
-      a->aux.capa = a->len;
-      mrb_free(mrb, shared);
-    }
-    else {
-      mrb_value *ptr, *p;
-      mrb_int len;
-
-      p = a->ptr;
-      len = a->len * sizeof(mrb_value);
-      ptr = (mrb_value *)mrb_malloc(mrb, len);
-      if (p) {
-        array_copy(ptr, p, a->len);
-      }
-      a->ptr = ptr;
-      a->aux.capa = a->len;
-      mrb_ary_decref(mrb, shared);
-    }
-    a->flags &= ~MRB_ARY_SHARED;
-  }
-}
-
-static void
-ary_make_shared(mrb_state *mrb, struct RArray *a)
-{
-  if (!(a->flags & MRB_ARY_SHARED)) {
-    mrb_shared_array *shared = (mrb_shared_array *)mrb_malloc(mrb, sizeof(mrb_shared_array));
-
-    shared->refcnt = 1;
-    if (a->aux.capa > a->len) {
-      a->ptr = shared->ptr = (mrb_value *)mrb_realloc(mrb, a->ptr, sizeof(mrb_value)*a->len+1);
-    }
-    else {
-      shared->ptr = a->ptr;
-    }
-    shared->len = a->len;
-    a->aux.shared = shared;
-    a->flags |= MRB_ARY_SHARED;
-  }
-}
-
-static void
-ary_expand_capa(mrb_state *mrb, struct RArray *a, mrb_int len)
-{
-  mrb_int capa = a->aux.capa;
-
-  if (len > ARY_MAX_SIZE) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
-  }
-
-  while (capa < len) {
-    if (capa == 0) {
-      capa = ARY_DEFAULT_LEN;
-    }
-    else {
-      capa *= 2;
-    }
-  }
-
-  if (capa > ARY_MAX_SIZE) capa = ARY_MAX_SIZE; /* len <= capa <= ARY_MAX_SIZE */
-
-  if (capa > a->aux.capa) {
-    mrb_value *expanded_ptr = (mrb_value *)mrb_realloc(mrb, a->ptr, sizeof(mrb_value)*capa);
-
-    if (!expanded_ptr) {
-      mrb_raise(mrb, E_RUNTIME_ERROR, "out of memory");
-    }
-
-    a->aux.capa = capa;
-    a->ptr = expanded_ptr;
-  }
-}
-
-static void
-ary_shrink_capa(mrb_state *mrb, struct RArray *a)
-{
-  mrb_int capa = a->aux.capa;
-
-  if (capa < ARY_DEFAULT_LEN * 2) return;
-  if (capa <= a->len * ARY_SHRINK_RATIO) return;
-
-  do {
-    capa /= 2;
-    if (capa < ARY_DEFAULT_LEN) {
-      capa = ARY_DEFAULT_LEN;
-      break;
-    }
-  } while (capa > a->len * ARY_SHRINK_RATIO);
-
-  if (capa > a->len && capa < a->aux.capa) {
-    a->aux.capa = capa;
-    a->ptr = (mrb_value *)mrb_realloc(mrb, a->ptr, sizeof(mrb_value)*capa);
-  }
-}
-
-mrb_value
-mrb_ary_s_create(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *vals;
-  int len;
-
-  mrb_get_args(mrb, "*", &vals, &len);
-  return mrb_ary_new_from_values(mrb, len, vals);
-}
-
-static void
-ary_concat(mrb_state *mrb, struct RArray *a, mrb_value *ptr, mrb_int blen)
-{
-  mrb_int len = a->len + blen;
-
-  ary_modify(mrb, a);
-  if (a->aux.capa < len) ary_expand_capa(mrb, a, len);
-  array_copy(a->ptr+a->len, ptr, blen);
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-  a->len = len;
-}
-
-void
-mrb_ary_concat(mrb_state *mrb, mrb_value self, mrb_value other)
-{
-  struct RArray *a2 = mrb_ary_ptr(other);
-
-  ary_concat(mrb, mrb_ary_ptr(self), a2->ptr, a2->len);
-}
-
-mrb_value
-mrb_ary_concat_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *ptr;
-  mrb_int blen;
-
-  mrb_get_args(mrb, "a", &ptr, &blen);
-  ary_concat(mrb, mrb_ary_ptr(self), ptr, blen);
-  return self;
-}
-
-mrb_value
-mrb_ary_plus(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a1 = mrb_ary_ptr(self);
-  struct RArray *a2;
-  mrb_value ary;
-  mrb_value *ptr;
-  mrb_int blen;
-
-  mrb_get_args(mrb, "a", &ptr, &blen);
-  ary = mrb_ary_new_capa(mrb, a1->len + blen);
-  a2 = mrb_ary_ptr(ary);
-  array_copy(a2->ptr, a1->ptr, a1->len);
-  array_copy(a2->ptr + a1->len, ptr, blen);
-  a2->len = a1->len + blen;
-
-  return ary;
-}
-
-/*
- *  call-seq:
- *     ary <=> other_ary   ->  -1, 0, +1 or nil
- *
- *  Comparison---Returns an integer (-1, 0, or +1)
- *  if this array is less than, equal to, or greater than <i>other_ary</i>.
- *  Each object in each array is compared (using <=>). If any value isn't
- *  equal, then that inequality is the return value. If all the
- *  values found are equal, then the return is based on a
- *  comparison of the array lengths.  Thus, two arrays are
- *  ``equal'' according to <code>Array#<=></code> if and only if they have
- *  the same length and the value of each element is equal to the
- *  value of the corresponding element in the other array.
- *
- *     [ "a", "a", "c" ]    <=> [ "a", "b", "c" ]   #=> -1
- *     [ 1, 2, 3, 4, 5, 6 ] <=> [ 1, 2 ]            #=> +1
- *
- */
-mrb_value
-mrb_ary_cmp(mrb_state *mrb, mrb_value ary1)
-{
-  mrb_value ary2;
-  struct RArray *a1, *a2;
-  mrb_value r;
-  mrb_int i, len;
-
-  mrb_get_args(mrb, "o", &ary2);
-  if (!mrb_array_p(ary2)) return mrb_nil_value();
-  a1 = RARRAY(ary1); a2 = RARRAY(ary2);
-  if (a1->len == a2->len && a1->ptr == a2->ptr) return mrb_fixnum_value(0);
-  else {
-    mrb_sym cmp = mrb_intern2(mrb, "<=>", 3);
-
-    len = RARRAY_LEN(ary1);
-    if (len > RARRAY_LEN(ary2)) {
-      len = RARRAY_LEN(ary2);
-    }
-    for (i=0; i<len; i++) {
-      mrb_value v = ary_elt(ary2, i);
-      r = mrb_funcall_argv(mrb, ary_elt(ary1, i), cmp, 1, &v);
-      if (mrb_type(r) != MRB_TT_FIXNUM || mrb_fixnum(r) != 0) return r;
-    }
-  }
-  len = a1->len - a2->len;
-  return mrb_fixnum_value((len == 0)? 0: (len > 0)? 1: -1);
-}
-
-static void
-ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, mrb_int len)
-{
-  ary_modify(mrb, a);
-  if (a->aux.capa < len)
-    ary_expand_capa(mrb, a, len);
-  array_copy(a->ptr, argv, len);
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-  a->len = len;
-}
-
-void
-mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other)
-{
-  struct RArray *a2 = mrb_ary_ptr(other);
-
-  ary_replace(mrb, mrb_ary_ptr(self), a2->ptr, a2->len);
-}
-
-mrb_value
-mrb_ary_replace_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-
-  mrb_get_args(mrb, "A", &other);
-  mrb_ary_replace(mrb, self, other);
-
-  return self;
-}
-
-mrb_value
-mrb_ary_times(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a1 = mrb_ary_ptr(self);
-  struct RArray *a2;
-  mrb_value ary;
-  mrb_value *ptr;
-  mrb_int times;
-
-  mrb_get_args(mrb, "i", &times);
-  if (times < 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "negative argument");
-  }
-  if (times == 0) return mrb_ary_new(mrb);
-
-  ary = mrb_ary_new_capa(mrb, a1->len * times);
-  a2 = mrb_ary_ptr(ary);
-  ptr = a2->ptr;
-  while (times--) {
-    array_copy(ptr, a1->ptr, a1->len);
-    ptr += a1->len;
-    a2->len += a1->len;
-  }
-
-  return ary;
-}
-
-mrb_value
-mrb_ary_reverse_bang(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-
-  if (a->len > 1) {
-    mrb_value *p1, *p2;
-
-    ary_modify(mrb, a);
-    p1 = a->ptr;
-    p2 = a->ptr + a->len - 1;
-
-    while (p1 < p2) {
-      mrb_value tmp = *p1;
-      *p1++ = *p2;
-      *p2-- = tmp;
-    }
-  }
-  return self;
-}
-
-mrb_value
-mrb_ary_reverse(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self), *b;
-  mrb_value ary;
-
-  ary = mrb_ary_new_capa(mrb, a->len);
-  b = mrb_ary_ptr(ary);
-  if (a->len > 0) {
-    mrb_value *p1, *p2, *e;
-
-    p1 = a->ptr;
-    e  = p1 + a->len;
-    p2 = b->ptr + a->len - 1;
-    while (p1 < e) {
-      *p2-- = *p1++;
-    }
-    b->len = a->len;
-  }
-  return ary;
-}
-
-mrb_value
-mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals)
-{
-  mrb_value ary;
-  struct RArray *a;
-
-  ary = mrb_ary_new_capa(mrb, size);
-  a = mrb_ary_ptr(ary);
-  array_copy(a->ptr, vals, size);
-  a->len = size;
-
-  return ary;
-}
-
-void
-mrb_ary_push(mrb_state *mrb, mrb_value ary, mrb_value elem) /* mrb_ary_push */
-{
-  struct RArray *a = mrb_ary_ptr(ary);
-
-  ary_modify(mrb, a);
-  if (a->len == a->aux.capa)
-    ary_expand_capa(mrb, a, a->len + 1);
-  a->ptr[a->len++] = elem;
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-}
-
-mrb_value
-mrb_ary_push_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv;
-  int len;
-
-  mrb_get_args(mrb, "*", &argv, &len);
-  while (len--) {
-    mrb_ary_push(mrb, self, *argv++);
-  }
-
-  return self;
-}
-
-mrb_value
-mrb_ary_pop(mrb_state *mrb, mrb_value ary)
-{
-  struct RArray *a = mrb_ary_ptr(ary);
-
-  if (a->len == 0) return mrb_nil_value();
-  return a->ptr[--a->len];
-}
-
-#define ARY_SHIFT_SHARED_MIN 10
-
-mrb_value
-mrb_ary_shift(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_value val;
-
-  if (a->len == 0) return mrb_nil_value();
-  if (a->flags & MRB_ARY_SHARED) {
-  L_SHIFT:
-    val = a->ptr[0];
-    a->ptr++;
-    a->len--;
-    return val;
-  }
-  if (a->len > ARY_SHIFT_SHARED_MIN) {
-    ary_make_shared(mrb, a);
-    goto L_SHIFT;
-  }
-  else {
-    mrb_value *ptr = a->ptr;
-    mrb_int size = a->len;
-
-    val = *ptr;
-    while ((int)(--size)) {
-      *ptr = *(ptr+1);
-      ++ptr;
-    }
-    --a->len;
-  }
-  return val;
-}
-
-/* self = [1,2,3]
-   item = 0
-   self.unshift item
-   p self #=> [0, 1, 2, 3] */
-mrb_value
-mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-
-  if ((a->flags & MRB_ARY_SHARED)
-      && a->aux.shared->refcnt == 1 /* shared only referenced from this array */
-      && a->ptr - a->aux.shared->ptr >= 1) /* there's room for unshifted item */ {
-    a->ptr--;
-    a->ptr[0] = item;
-  }
-  else {
-    ary_modify(mrb, a);
-    if (a->aux.capa < a->len + 1)
-      ary_expand_capa(mrb, a, a->len + 1);
-    value_move(a->ptr + 1, a->ptr, a->len);
-    a->ptr[0] = item;
-  }
-  a->len++;
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-
-  return self;
-}
-
-mrb_value
-mrb_ary_unshift_m(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_value *vals;
-  int len;
-
-  mrb_get_args(mrb, "*", &vals, &len);
-  if ((a->flags & MRB_ARY_SHARED)
-      && a->aux.shared->refcnt == 1 /* shared only referenced from this array */
-      && a->ptr - a->aux.shared->ptr >= len) /* there's room for unshifted item */ {
-    a->ptr -= len;
-  }
-  else {
-    ary_modify(mrb, a);
-    if (len == 0) return self;
-    if (a->aux.capa < a->len + len)
-      ary_expand_capa(mrb, a, a->len + len);
-    value_move(a->ptr + len, a->ptr, a->len);
-  }
-  array_copy(a->ptr, vals, len);
-  a->len += len;
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-
-  return self;
-}
-
-mrb_value
-mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n)
-{
-  struct RArray *a = mrb_ary_ptr(ary);
-
-  /* range check */
-  if (n < 0) n += a->len;
-  if (n < 0 || a->len <= (int)n) return mrb_nil_value();
-
-  return a->ptr[n];
-}
-
-void
-mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val) /* rb_ary_store */
-{
-  struct RArray *a = mrb_ary_ptr(ary);
-
-  ary_modify(mrb, a);
-  /* range check */
-  if (n < 0) {
-    n += a->len;
-    if (n < 0) {
-      mrb_raisef(mrb, E_INDEX_ERROR, "index %S out of array", mrb_fixnum_value(n - a->len));
-    }
-  }
-  if (a->len <= (int)n) {
-    if (a->aux.capa <= (int)n)
-      ary_expand_capa(mrb, a, n + 1);
-    ary_fill_with_nil(a->ptr + a->len, n + 1 - a->len);
-    a->len = n + 1;
-  }
-
-  a->ptr[n] = val;
-  mrb_write_barrier(mrb, (struct RBasic*)a);
-}
-
-mrb_value
-mrb_ary_splice(mrb_state *mrb, mrb_value ary, mrb_int head, mrb_int len, mrb_value rpl)
-{
-  struct RArray *a = mrb_ary_ptr(ary);
-  mrb_int tail, size;
-  mrb_value *argv;
-  mrb_int i, argc;
-
-  ary_modify(mrb, a);
-  /* range check */
-  if (head < 0) {
-    head += a->len;
-    if (head < 0) {
-      mrb_raise(mrb, E_INDEX_ERROR, "index is out of array");
-    }
-  }
-  if (a->len < len || a->len < head + len) {
-    len = a->len - head;
-  }
-  tail = head + len;
-
-  /* size check */
-  if (mrb_array_p(rpl)) {
-    argc = RARRAY_LEN(rpl);
-    argv = RARRAY_PTR(rpl);
-  }
-  else {
-    argc = 1;
-    argv = &rpl;
-  }
-  size = head + argc;
-
-  if (tail < a->len) size += a->len - tail;
-  if (size > a->aux.capa)
-    ary_expand_capa(mrb, a, size);
-
-  if (head > a->len) {
-    ary_fill_with_nil(a->ptr + a->len, (int)(head - a->len));
-  }
-  else if (head < a->len) {
-    value_move(a->ptr + head + argc, a->ptr + tail, a->len - tail);
-  }
-
-  for(i = 0; i < argc; i++) {
-    *(a->ptr + head + i) = *(argv + i);
-  }
-
-  a->len = size;
-
-  return ary;
-}
-
-mrb_int
-mrb_ary_len(mrb_state *mrb, mrb_value ary)
-{
-  return RARRAY_LEN(ary);
-}
-
-void
-mrb_ary_decref(mrb_state *mrb, mrb_shared_array *shared)
-{
-  shared->refcnt--;
-  if (shared->refcnt == 0) {
-    mrb_free(mrb, shared->ptr);
-    mrb_free(mrb, shared);
-  }
-}
-
-static mrb_value
-ary_subseq(mrb_state *mrb, struct RArray *a, mrb_int beg, mrb_int len)
-{
-  struct RArray *b;
-
-  ary_make_shared(mrb, a);
-  b  = (struct RArray*)mrb_obj_alloc(mrb, MRB_TT_ARRAY, mrb->array_class);
-  b->ptr = a->ptr + beg;
-  b->len = len;
-  b->aux.shared = a->aux.shared;
-  b->aux.shared->refcnt++;
-  b->flags |= MRB_ARY_SHARED;
-
-  return mrb_obj_value(b);
-}
-
-mrb_value
-mrb_ary_aget(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_int index, len;
-  mrb_value *argv;
-  int size;
-
-  mrb_get_args(mrb, "i*", &index, &argv, &size);
-  switch(size) {
-  case 0:
-    return mrb_ary_ref(mrb, self, index);
-
-  case 1:
-    if (mrb_type(argv[0]) != MRB_TT_FIXNUM) {
-      mrb_raise(mrb, E_TYPE_ERROR, "expected Fixnum");
-    }
-    if (index < 0) index += a->len;
-    if (index < 0 || a->len < (int)index) return mrb_nil_value();
-    len = mrb_fixnum(argv[0]);
-    if (len < 0) return mrb_nil_value();
-    if (a->len == (int)index) return mrb_ary_new(mrb);
-    if (len > a->len - index) len = a->len - index;
-    return ary_subseq(mrb, a, index, len);
-
-  default:
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-    break;
-  }
-
-  return mrb_nil_value(); /* dummy to avoid warning : not reach here */
-}
-
-mrb_value
-mrb_ary_aset(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  switch(argc) {
-  case 2:
-    if (!mrb_fixnum_p(argv[0])) {
-      /* Should we support Range object for 1st arg ? */
-      mrb_raise(mrb, E_TYPE_ERROR, "expected Fixnum for 1st argument");
-    }
-    mrb_ary_set(mrb, self, mrb_fixnum(argv[0]), argv[1]);
-    return argv[1];
-
-  case 3:
-    mrb_ary_splice(mrb, self, mrb_fixnum(argv[0]), mrb_fixnum(argv[1]), argv[2]);
-    return argv[2];
-
-  default:
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-    return mrb_nil_value();
-  }
-}
-
-mrb_value
-mrb_ary_delete_at(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_int   index;
-  mrb_value val;
-  mrb_value *ptr;
-  mrb_int len;
-
-  mrb_get_args(mrb, "i", &index);
-  if (index < 0) index += a->len;
-  if (index < 0 || a->len <= (int)index) return mrb_nil_value();
-
-  ary_modify(mrb, a);
-  val = a->ptr[index];
-
-  ptr = a->ptr + index;
-  len = a->len - index;
-  while ((int)(--len)) {
-    *ptr = *(ptr+1);
-    ++ptr;
-  }
-  --a->len;
-
-  ary_shrink_capa(mrb, a);
-
-  return val;
-}
-
-mrb_value
-mrb_ary_first(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_int size;
-
-  if (mrb_get_args(mrb, "|i", &size) == 0) {
-    return (a->len > 0)? a->ptr[0]: mrb_nil_value();
-  }
-  if (size < 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "negative array size");
-  }
-
-  if (size > a->len) size = a->len;
-  if (a->flags & MRB_ARY_SHARED) {
-    return ary_subseq(mrb, a, 0, size);
-  }
-  return mrb_ary_new_from_values(mrb, size, a->ptr);
-}
-
-mrb_value
-mrb_ary_last(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-  mrb_int size;
-  mrb_value *vals;
-  int len;
-
-  mrb_get_args(mrb, "*", &vals, &len);
-  if (len > 1) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-  }
-
-  if (len == 0) return (a->len > 0)? a->ptr[a->len - 1]: mrb_nil_value();
-
-  /* len == 1 */
-  size = mrb_fixnum(*vals);
-  if (size < 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "negative array size");
-  }
-  if (size > a->len) size = a->len;
-  if ((a->flags & MRB_ARY_SHARED) || size > ARY_DEFAULT_LEN) {
-    return ary_subseq(mrb, a, a->len - size, size);
-  }
-  return mrb_ary_new_from_values(mrb, size, a->ptr + a->len - size);
-}
-
-mrb_value
-mrb_ary_index_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value obj;
-  mrb_int i;
-
-  mrb_get_args(mrb, "o", &obj);
-  for (i = 0; i < RARRAY_LEN(self); i++) {
-    if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
-      return mrb_fixnum_value(i);
-    }
-  }
-  return mrb_nil_value();
-}
-
-mrb_value
-mrb_ary_rindex_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value obj;
-  mrb_int i;
-
-  mrb_get_args(mrb, "o", &obj);
-  for (i = RARRAY_LEN(self) - 1; i >= 0; i--) {
-    if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
-      return mrb_fixnum_value(i);
-    }
-  }
-  return mrb_nil_value();
-}
-
-mrb_value
-mrb_ary_splat(mrb_state *mrb, mrb_value v)
-{
-  if (mrb_array_p(v)) {
-    return v;
-  }
-  else {
-    return mrb_ary_new_from_values(mrb, 1, &v);
-  }
-}
-
-static mrb_value
-mrb_ary_size(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-
-  return mrb_fixnum_value(a->len);
-}
-
-mrb_value
-mrb_ary_clear(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-
-  ary_modify(mrb, a);
-  a->len = 0;
-  a->aux.capa = 0;
-  mrb_free(mrb, a->ptr);
-  a->ptr = 0;
-
-  return self;
-}
-
-mrb_value
-mrb_ary_empty_p(mrb_state *mrb, mrb_value self)
-{
-  struct RArray *a = mrb_ary_ptr(self);
-
-  return mrb_bool_value(a->len == 0);
-}
-
-mrb_value
-mrb_check_array_type(mrb_state *mrb, mrb_value ary)
-{
-    return mrb_check_convert_type(mrb, ary, MRB_TT_ARRAY, "Array", "to_ary");
-}
-
-mrb_value
-mrb_ary_entry(mrb_value ary, mrb_int offset)
-{
-  if (offset < 0) {
-    offset += RARRAY_LEN(ary);
-  }
-  return ary_elt(ary, offset);
-}
-
-static mrb_value
-inspect_ary(mrb_state *mrb, mrb_value ary, mrb_value list)
-{
-  mrb_int i;
-  mrb_value s, arystr;
-  char head[] = { '[' };
-  char sep[] = { ',', ' ' };
-  char tail[] = { ']' };
-
-  /* check recursive */
-  for(i=0; i<RARRAY_LEN(list); i++) {
-    if (mrb_obj_equal(mrb, ary, RARRAY_PTR(list)[i])) {
-      return mrb_str_new(mrb, "[...]", 5);
-    }
-  }
-
-  mrb_ary_push(mrb, list, ary);
-
-  arystr = mrb_str_buf_new(mrb, 64);
-  mrb_str_buf_cat(mrb, arystr, head, sizeof(head));
-
-  for(i=0; i<RARRAY_LEN(ary); i++) {
-    int ai = mrb_gc_arena_save(mrb);
-
-    if (i > 0) {
-      mrb_str_buf_cat(mrb, arystr, sep, sizeof(sep));
-    }
-    if (mrb_array_p(RARRAY_PTR(ary)[i])) {
-      s = inspect_ary(mrb, RARRAY_PTR(ary)[i], list);
-    }
-    else {
-      s = mrb_inspect(mrb, RARRAY_PTR(ary)[i]);
-    }
-    mrb_str_buf_cat(mrb, arystr, RSTRING_PTR(s), RSTRING_LEN(s));
-    mrb_gc_arena_restore(mrb, ai);
-  }
-
-  mrb_str_buf_cat(mrb, arystr, tail, sizeof(tail));
-  mrb_ary_pop(mrb, list);
-
-  return arystr;
-}
-
-/* 15.2.12.5.31 (x) */
-/*
- *  call-seq:
- *     ary.to_s -> string
- *     ary.inspect  -> string
- *
- *  Creates a string representation of +self+.
- */
-
-static mrb_value
-mrb_ary_inspect(mrb_state *mrb, mrb_value ary)
-{
-  if (RARRAY_LEN(ary) == 0) return mrb_str_new(mrb, "[]", 2);
-    return inspect_ary(mrb, ary, mrb_ary_new(mrb));
-}
-
-static mrb_value
-join_ary(mrb_state *mrb, mrb_value ary, mrb_value sep, mrb_value list)
-{
-  mrb_int i;
-  mrb_value result, val, tmp;
-
-  /* check recursive */
-  for(i=0; i<RARRAY_LEN(list); i++) {
-    if (mrb_obj_equal(mrb, ary, RARRAY_PTR(list)[i])) {
-      mrb_raise(mrb, E_ARGUMENT_ERROR, "recursive array join");
-    }
-  }
-
-  mrb_ary_push(mrb, list, ary);
-
-  result = mrb_str_buf_new(mrb, 64);
-
-  for(i=0; i<RARRAY_LEN(ary); i++) {
-    if (i > 0 && !mrb_nil_p(sep)) {
-      mrb_str_buf_cat(mrb, result, RSTRING_PTR(sep), RSTRING_LEN(sep));
-    }
-
-    val = RARRAY_PTR(ary)[i];
-    switch(mrb_type(val)) {
-    case MRB_TT_ARRAY:
-    ary_join:
-      val = join_ary(mrb, val, sep, list);
-      /* fall through */
-
-    case MRB_TT_STRING:
-    str_join:
-      mrb_str_buf_cat(mrb, result, RSTRING_PTR(val), RSTRING_LEN(val));
-      break;
-
-    default:
-      tmp = mrb_check_string_type(mrb, val);
-      if (!mrb_nil_p(tmp)) {
-        val = tmp;
-        goto str_join;
-      }
-      tmp = mrb_check_convert_type(mrb, val, MRB_TT_ARRAY, "Array", "to_ary");
-      if (!mrb_nil_p(tmp)) {
-        val = tmp;
-        goto ary_join;
-      }
-      val = mrb_obj_as_string(mrb, val);
-      goto str_join;
-    }
-  }
-
-  mrb_ary_pop(mrb, list);
-
-  return result;
-}
-
-mrb_value
-mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep)
-{
-  sep = mrb_obj_as_string(mrb, sep);
-  return join_ary(mrb, ary, sep, mrb_ary_new(mrb));
-}
-
-/*
- *  call-seq:
- *     ary.join(sep="")    -> str
- *
- *  Returns a string created by converting each element of the array to
- *  a string, separated by <i>sep</i>.
- *
- *     [ "a", "b", "c" ].join        #=> "abc"
- *     [ "a", "b", "c" ].join("-")   #=> "a-b-c"
- */
-
-static mrb_value
-mrb_ary_join_m(mrb_state *mrb, mrb_value ary)
-{
-  mrb_value sep = mrb_nil_value();
-
-  mrb_get_args(mrb, "|S", &sep);
-  return mrb_ary_join(mrb, ary, sep);
-}
-
-/* 15.2.12.5.33 (x) */
-/*
- *  call-seq:
- *     ary == other_ary   ->   bool
- *
- *  Equality---Two arrays are equal if they contain the same number
- *  of elements and if each element is equal to (according to
- *  Object.==) the corresponding element in the other array.
- *
- *     [ "a", "c" ]    == [ "a", "c", 7 ]     #=> false
- *     [ "a", "c", 7 ] == [ "a", "c", 7 ]     #=> true
- *     [ "a", "c", 7 ] == [ "a", "d", "f" ]   #=> false
- *
- */
-
-static mrb_value
-mrb_ary_equal(mrb_state *mrb, mrb_value ary1)
-{
-  mrb_value ary2;
-  mrb_int i;
-
-  mrb_get_args(mrb, "o", &ary2);
-  if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
-  if (mrb_special_const_p(ary2)) return mrb_false_value();
-  if (!mrb_array_p(ary2)) {
-    if (!mrb_respond_to(mrb, ary2, mrb_intern2(mrb, "to_ary", 6))) {
-      return mrb_false_value();
-    }
-    else {
-      return mrb_bool_value(mrb_equal(mrb, ary2, ary1));
-    }
-  }
-  if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
-  for (i=0; i<RARRAY_LEN(ary1); i++) {
-    if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
-      return mrb_false_value();
-    }
-  }
-  return mrb_true_value();
-}
-
-/* 15.2.12.5.34 (x) */
-/*
- *  call-seq:
- *     ary.eql?(other)  -> true or false
- *
- *  Returns <code>true</code> if +self+ and _other_ are the same object,
- *  or are both arrays with the same content.
- */
-
-static mrb_value
-mrb_ary_eql(mrb_state *mrb, mrb_value ary1)
-{
-  mrb_value ary2;
-  mrb_int i;
-
-  mrb_get_args(mrb, "o", &ary2);
-  if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
-  if (!mrb_array_p(ary2)) return mrb_false_value();
-  if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
-  for (i=0; i<RARRAY_LEN(ary1); i++) {
-    if (!mrb_eql(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
-      return mrb_false_value();
-    }
-  }
-  return mrb_true_value();
-}
-
-void
-mrb_init_array(mrb_state *mrb)
-{
-  struct RClass *a;
-
-  a = mrb->array_class = mrb_define_class(mrb, "Array", mrb->object_class);
-  MRB_SET_INSTANCE_TT(a, MRB_TT_ARRAY);
-  mrb_include_module(mrb, a, mrb_class_get(mrb, "Enumerable"));
-
-  mrb_define_class_method(mrb, a, "[]",        mrb_ary_s_create,     MRB_ARGS_ANY());  /* 15.2.12.4.1 */
-
-  mrb_define_method(mrb, a, "*",               mrb_ary_times,        MRB_ARGS_REQ(1)); /* 15.2.12.5.1  */
-  mrb_define_method(mrb, a, "+",               mrb_ary_plus,         MRB_ARGS_REQ(1)); /* 15.2.12.5.2  */
-  mrb_define_method(mrb, a, "<<",              mrb_ary_push_m,       MRB_ARGS_REQ(1)); /* 15.2.12.5.3  */
-  mrb_define_method(mrb, a, "[]",              mrb_ary_aget,         MRB_ARGS_ANY());  /* 15.2.12.5.4  */
-  mrb_define_method(mrb, a, "[]=",             mrb_ary_aset,         MRB_ARGS_ANY());  /* 15.2.12.5.5  */
-  mrb_define_method(mrb, a, "clear",           mrb_ary_clear,        MRB_ARGS_NONE()); /* 15.2.12.5.6  */
-  mrb_define_method(mrb, a, "concat",          mrb_ary_concat_m,     MRB_ARGS_REQ(1)); /* 15.2.12.5.8  */
-  mrb_define_method(mrb, a, "delete_at",       mrb_ary_delete_at,    MRB_ARGS_REQ(1)); /* 15.2.12.5.9  */
-  mrb_define_method(mrb, a, "empty?",          mrb_ary_empty_p,      MRB_ARGS_NONE()); /* 15.2.12.5.12 */
-  mrb_define_method(mrb, a, "first",           mrb_ary_first,        MRB_ARGS_OPT(1)); /* 15.2.12.5.13 */
-  mrb_define_method(mrb, a, "index",           mrb_ary_index_m,      MRB_ARGS_REQ(1)); /* 15.2.12.5.14 */
-  mrb_define_method(mrb, a, "initialize_copy", mrb_ary_replace_m,    MRB_ARGS_REQ(1)); /* 15.2.12.5.16 */
-  mrb_define_method(mrb, a, "join",            mrb_ary_join_m,       MRB_ARGS_ANY());  /* 15.2.12.5.17 */
-  mrb_define_method(mrb, a, "last",            mrb_ary_last,         MRB_ARGS_ANY());  /* 15.2.12.5.18 */
-  mrb_define_method(mrb, a, "length",          mrb_ary_size,         MRB_ARGS_NONE()); /* 15.2.12.5.19 */
-  mrb_define_method(mrb, a, "pop",             mrb_ary_pop,          MRB_ARGS_NONE()); /* 15.2.12.5.21 */
-  mrb_define_method(mrb, a, "push",            mrb_ary_push_m,       MRB_ARGS_ANY());  /* 15.2.12.5.22 */
-  mrb_define_method(mrb, a, "replace",         mrb_ary_replace_m,    MRB_ARGS_REQ(1)); /* 15.2.12.5.23 */
-  mrb_define_method(mrb, a, "reverse",         mrb_ary_reverse,      MRB_ARGS_NONE()); /* 15.2.12.5.24 */
-  mrb_define_method(mrb, a, "reverse!",        mrb_ary_reverse_bang, MRB_ARGS_NONE()); /* 15.2.12.5.25 */
-  mrb_define_method(mrb, a, "rindex",          mrb_ary_rindex_m,     MRB_ARGS_REQ(1)); /* 15.2.12.5.26 */
-  mrb_define_method(mrb, a, "shift",           mrb_ary_shift,        MRB_ARGS_NONE()); /* 15.2.12.5.27 */
-  mrb_define_method(mrb, a, "size",            mrb_ary_size,         MRB_ARGS_NONE()); /* 15.2.12.5.28 */
-  mrb_define_method(mrb, a, "slice",           mrb_ary_aget,         MRB_ARGS_ANY());  /* 15.2.12.5.29 */
-  mrb_define_method(mrb, a, "unshift",         mrb_ary_unshift_m,    MRB_ARGS_ANY());  /* 15.2.12.5.30 */
-
-  mrb_define_method(mrb, a, "inspect",         mrb_ary_inspect,      MRB_ARGS_NONE()); /* 15.2.12.5.31 (x) */
-  mrb_define_alias(mrb,  a, "to_s", "inspect");                                        /* 15.2.12.5.32 (x) */
-  mrb_define_method(mrb, a, "==",              mrb_ary_equal,        MRB_ARGS_REQ(1)); /* 15.2.12.5.33 (x) */
-  mrb_define_method(mrb, a, "eql?",            mrb_ary_eql,          MRB_ARGS_REQ(1)); /* 15.2.12.5.34 (x) */
-  mrb_define_method(mrb, a, "<=>",             mrb_ary_cmp,          MRB_ARGS_REQ(1)); /* 15.2.12.5.36 (x) */
-}

  Deleted: vendor/mruby-eeac4be/src/backtrace.c (+0 -143) 100644
===================================================================
--- vendor/mruby-eeac4be/src/backtrace.c    2014-06-08 19:01:14 +0900 (4ad792a)
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-** backtrace.c -
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/variable.h"
-#include "mruby/proc.h"
-#include "mruby/array.h"
-#include "mruby/string.h"
-#include "mruby/class.h"
-#include "mruby/debug.h"
-#include <stdarg.h>
-
-typedef void (*output_stream_func)(mrb_state*, void*, int, const char*, ...);
-
-#ifdef ENABLE_STDIO
-static void
-print_backtrace_i(mrb_state *mrb, void *stream, int level, const char *format, ...)
-{
-  va_list ap;
-
-  va_start(ap, format);
-  vfprintf((FILE*)stream, format, ap);
-  va_end(ap);
-}
-#endif
-
-#define MIN_BUFSIZE 127
-
-static void
-get_backtrace_i(mrb_state *mrb, void *stream, int level, const char *format, ...)
-{
-  va_list ap;
-  mrb_value ary, str;
-  int ai;
-
-  if (level > 0) {
-    return;
-  }
-
-  ai = mrb_gc_arena_save(mrb);
-  ary = mrb_obj_value((struct RArray*)stream);
-
-  va_start(ap, format);
-  str = mrb_str_new(mrb, 0, vsnprintf(NULL, 0, format, ap) + 1);
-  va_end(ap);
-
-  va_start(ap, format);
-  vsnprintf(RSTRING_PTR(str), RSTRING_LEN(str), format, ap);
-  va_end(ap);
-
-  mrb_str_resize(mrb, str, RSTRING_LEN(str) - 1);
-  mrb_ary_push(mrb, ary, str);
-  mrb_gc_arena_restore(mrb, ai);
-}
-
-static void
-mrb_output_backtrace(mrb_state *mrb, struct RObject *exc, output_stream_func func, void *stream)
-{
-  mrb_callinfo *ci;
-  mrb_int ciidx;
-  const char *filename, *method, *sep;
-  int i, line;
-
-  func(mrb, stream, 1, "trace:\n");
-  ciidx = mrb_fixnum(mrb_obj_iv_get(mrb, exc, mrb_intern2(mrb, "ciidx", 5)));
-  if (ciidx >= mrb->c->ciend - mrb->c->cibase)
-    ciidx = 10; /* ciidx is broken... */
-
-  for (i = ciidx; i >= 0; i--) {
-    ci = &mrb->c->cibase[i];
-    filename = NULL;
-    line = -1;
-
-    if (MRB_PROC_CFUNC_P(ci->proc)) {
-      continue;
-    }
-    if(!MRB_PROC_CFUNC_P(ci->proc)) {
-      mrb_irep *irep = ci->proc->body.irep;
-      mrb_code *pc;
-
-      if (i+1 <= ciidx) {
-        pc = mrb->c->cibase[i+1].pc;
-      }
-      else {
-        pc = (mrb_code*)mrb_cptr(mrb_obj_iv_get(mrb, exc, mrb_intern2(mrb, "lastpc", 6)));
-      }
-      filename = mrb_debug_get_filename(irep, pc - irep->iseq - 1);
-      line = mrb_debug_get_line(irep, pc - irep->iseq - 1);
-    }
-    if (line == -1) continue;
-    if (ci->target_class == ci->proc->target_class)
-      sep = ".";
-    else
-      sep = "#";
-
-    if (!filename) {
-      filename = "(unknown)";
-    }
-
-    method = mrb_sym2name(mrb, ci->mid);
-    if (method) {
-      const char *cn = mrb_class_name(mrb, ci->proc->target_class);
-
-      if (cn) {
-        func(mrb, stream, 1, "\t[%d] ", i);
-        func(mrb, stream, 0, "%s:%d:in %s%s%s", filename, line, cn, sep, method);
-        func(mrb, stream, 1, "\n");
-      }
-      else {
-        func(mrb, stream, 1, "\t[%d] ", i);
-        func(mrb, stream, 0, "%s:%d:in %s", filename, line, method);
-        func(mrb, stream, 1, "\n");
-      }
-    }
-    else {
-        func(mrb, stream, 1, "\t[%d] ", i);
-        func(mrb, stream, 0, "%s:%d", filename, line);
-        func(mrb, stream, 1, "\n");
-    }
-  }
-}
-
-void
-mrb_print_backtrace(mrb_state *mrb)
-{
-#ifdef ENABLE_STDIO
-  mrb_output_backtrace(mrb, mrb->exc, print_backtrace_i, (void*)stderr);
-#endif
-}
-
-mrb_value
-mrb_get_backtrace(mrb_state *mrb, mrb_value self)
-{
-  mrb_value ary;
-
-  ary = mrb_ary_new(mrb);
-  mrb_output_backtrace(mrb, mrb_obj_ptr(self), get_backtrace_i, (void*)mrb_ary_ptr(ary));
-
-  return ary;
-}

  Deleted: vendor/mruby-eeac4be/src/class.c (+0 -1936) 100644
===================================================================
--- vendor/mruby-eeac4be/src/class.c    2014-06-08 19:01:14 +0900 (2fc14b2)
+++ /dev/null
@@ -1,1936 +0,0 @@
-/*
-** class.c - Class class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include <stdarg.h>
-#include <ctype.h>
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/numeric.h"
-#include "mruby/proc.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-#include "error.h"
-
-KHASH_DEFINE(mt, mrb_sym, struct RProc*, 1, kh_int_hash_func, kh_int_hash_equal)
-
-void
-mrb_gc_mark_mt(mrb_state *mrb, struct RClass *c)
-{
-  khiter_t k;
-  khash_t(mt) *h = c->mt;
-
-  if (!h) return;
-  for (k = kh_begin(h); k != kh_end(h); k++) {
-    if (kh_exist(h, k)){
-      struct RProc *m = kh_value(h, k);
-      if (m) {
-        mrb_gc_mark(mrb, (struct RBasic*)m);
-      }
-    }
-  }
-}
-
-size_t
-mrb_gc_mark_mt_size(mrb_state *mrb, struct RClass *c)
-{
-  khash_t(mt) *h = c->mt;
-
-  if (!h) return 0;
-  return kh_size(h);
-}
-
-void
-mrb_gc_free_mt(mrb_state *mrb, struct RClass *c)
-{
-  kh_destroy(mt, c->mt);
-}
-
-void
-mrb_name_class(mrb_state *mrb, struct RClass *c, mrb_sym name)
-{
-  mrb_obj_iv_set(mrb, (struct RObject*)c,
-                 mrb_intern2(mrb, "__classid__", 11), mrb_symbol_value(name));
-}
-
-#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
-
-static void
-prepare_singleton_class(mrb_state *mrb, struct RBasic *o)
-{
-  struct RClass *sc, *c;
-
-  if (o->c->tt == MRB_TT_SCLASS) return;
-  sc = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_SCLASS, mrb->class_class);
-  sc->mt = 0;
-  sc->iv = 0;
-  if (o->tt == MRB_TT_CLASS) {
-    c = (struct RClass*)o;
-    if (!c->super) {
-      sc->super = mrb->class_class;
-    }
-    else {
-      sc->super = c->super->c;
-    }
-  }
-  else if (o->tt == MRB_TT_SCLASS) {
-    c = (struct RClass*)o;
-    while (c->super->tt == MRB_TT_ICLASS)
-      c = c->super;
-    make_metaclass(mrb, c->super);
-    sc->super = c->super->c;
-  }
-  else {
-    sc->super = o->c;
-  }
-  o->c = sc;
-  mrb_field_write_barrier(mrb, (struct RBasic*)o, (struct RBasic*)sc);
-  mrb_field_write_barrier(mrb, (struct RBasic*)sc, (struct RBasic*)o);
-  mrb_obj_iv_set(mrb, (struct RObject*)sc, mrb_intern2(mrb, "__attached__", 12), mrb_obj_value(o));
-}
-
-struct RClass*
-mrb_define_module_id(mrb_state *mrb, mrb_sym name)
-{
-  struct RClass *m = mrb_module_new(mrb);
-
-  mrb_obj_iv_set(mrb, (struct RObject*)mrb->object_class,
-             name, mrb_obj_value(m));
-  mrb_name_class(mrb, m, name);
-
-  return m;
-}
-
-struct RClass*
-mrb_define_module(mrb_state *mrb, const char *name)
-{
-  return mrb_define_module_id(mrb, mrb_intern_cstr(mrb, name));
-}
-
-static void
-setup_class(mrb_state *mrb, mrb_value outer, struct RClass *c, mrb_sym id)
-{
-  mrb_name_class(mrb, c, id);
-  mrb_const_set(mrb, outer, id, mrb_obj_value(c));
-  mrb_obj_iv_set(mrb, (struct RObject*)c,
-                 mrb_intern2(mrb, "__outer__", 9), outer);
-}
-
-struct RClass*
-mrb_class_outer_module(mrb_state *mrb, struct RClass *c)
-{
-  mrb_value outer;
-
-  outer = mrb_obj_iv_get(mrb, (struct RObject*)c, mrb_intern2(mrb, "__outer__", 9));
-  if (mrb_nil_p(outer)) return 0;
-  return mrb_class_ptr(outer);
-}
-
-struct RClass*
-mrb_vm_define_module(mrb_state *mrb, mrb_value outer, mrb_sym id)
-{
-  struct RClass *c;
-  mrb_value v;
-
-  if (mrb_const_defined(mrb, outer, id)) {
-    v = mrb_const_get(mrb, outer, id);
-    c = mrb_class_ptr(v);
-  }
-  else {
-    c = mrb_module_new(mrb);
-    setup_class(mrb, outer, c, id);
-  }
-  return c;
-}
-
-struct RClass*
-mrb_define_class_id(mrb_state *mrb, mrb_sym name, struct RClass *super)
-{
-  struct RClass *c = mrb_class_new(mrb, super);
-
-  mrb_obj_iv_set(mrb, (struct RObject*)mrb->object_class,
-                 name, mrb_obj_value(c));
-  mrb_name_class(mrb, c, name);
-
-  return c;
-}
-
-struct RClass*
-mrb_define_class(mrb_state *mrb, const char *name, struct RClass *super)
-{
-  return mrb_define_class_id(mrb, mrb_intern_cstr(mrb, name), super);
-}
-
-struct RClass*
-mrb_vm_define_class(mrb_state *mrb, mrb_value outer, mrb_value super, mrb_sym id)
-{
-  struct RClass *c, *s;
-
-  if (mrb_const_defined(mrb, outer, id)) {
-    mrb_value v = mrb_const_get(mrb, outer, id);
-
-    mrb_check_type(mrb, v, MRB_TT_CLASS);
-    c = mrb_class_ptr(v);
-    if (!mrb_nil_p(super)) {
-      if (mrb_type(super) != MRB_TT_CLASS) {
-        mrb_raisef(mrb, E_TYPE_ERROR, "superclass must be a Class (%S given)", super);
-      }
-
-      if (!c->super || mrb_class_ptr(super) != mrb_class_real(c->super)) {
-        mrb_raisef(mrb, E_TYPE_ERROR, "superclass mismatch for class %S", mrb_sym2str(mrb, id));
-      }
-    }
-    return c;
-  }
-
-  if (!mrb_nil_p(super)) {
-    if (mrb_type(super) != MRB_TT_CLASS) {
-      mrb_raisef(mrb, E_TYPE_ERROR, "superclass must be a Class (%S given)", super);
-    }
-    s = mrb_class_ptr(super);
-  }
-  else {
-    s = mrb->object_class;
-  }
-
-  c = mrb_class_new(mrb, s);
-  setup_class(mrb, outer, c, id);
-  mrb_funcall(mrb, mrb_obj_value(s), "inherited", 1, mrb_obj_value(c));
-
-  return c;
-}
-
-mrb_bool
-mrb_class_defined(mrb_state *mrb, const char *name)
-{
-  mrb_value sym = mrb_check_intern_cstr(mrb, name);
-  if (mrb_nil_p(sym)) {
-    return FALSE;
-  }
-  return mrb_const_defined(mrb, mrb_obj_value(mrb->object_class), mrb_symbol(sym));
-}
-
-static struct RClass *
-class_from_sym(mrb_state *mrb, struct RClass *klass, mrb_sym id)
-{
-  mrb_value c = mrb_const_get(mrb, mrb_obj_value(klass), id);
-
-  if (mrb_type(c) != MRB_TT_MODULE && mrb_type(c) != MRB_TT_CLASS) {
-    mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a class/module", mrb_sym2str(mrb, id));
-  }
-  return mrb_class_ptr(c);
-}
-
-struct RClass *
-mrb_class_get(mrb_state *mrb, const char *name)
-{
-  return mrb_class_get_under(mrb, mrb->object_class, name);
-}
-
-struct RClass *
-mrb_class_get_under(mrb_state *mrb, struct RClass *outer, const char *name)
-{
-  return class_from_sym(mrb, outer, mrb_intern_cstr(mrb, name));
-}
-
-/*!
- * Defines a class under the namespace of \a outer.
- * \param outer  a class which contains the new class.
- * \param id     name of the new class
- * \param super  a class from which the new class will derive.
- *               NULL means \c Object class.
- * \return the created class
- * \throw TypeError if the constant name \a name is already taken but
- *                  the constant is not a \c Class.
- * \throw NameError if the class is already defined but the class can not
- *                  be reopened because its superclass is not \a super.
- * \post top-level constant named \a name refers the returned class.
- *
- * \note if a class named \a name is already defined and its superclass is
- *       \a super, the function just returns the defined class.
- */
-struct RClass *
-mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super)
-{
-  struct RClass * c;
-  mrb_sym id = mrb_intern_cstr(mrb, name);
-
-  if (mrb_const_defined_at(mrb, outer, id)) {
-    c = class_from_sym(mrb, outer, id);
-    if (mrb_class_real(c->super) != super) {
-      mrb_name_error(mrb, id, "%S is already defined", name);
-    }
-    return c;
-  }
-  if (!super) {
-    mrb_warn(mrb, "no super class for `%S::%S', Object assumed", outer, name);
-  }
-  c = mrb_class_new(mrb, super);
-  setup_class(mrb, mrb_obj_value(outer), c, id);
-
-  return c;
-}
-
-struct RClass *
-mrb_define_module_under(mrb_state *mrb, struct RClass *outer, const char *name)
-{
-  struct RClass * c;
-  mrb_sym id = mrb_intern_cstr(mrb, name);
-
-  if (mrb_const_defined_at(mrb, outer, id)) {
-    c = class_from_sym(mrb, outer, id);
-    return c;
-  }
-  c = mrb_module_new(mrb);
-  setup_class(mrb, mrb_obj_value(outer), c, id);
-
-  return c;
-}
-
-void
-mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, struct RProc *p)
-{
-  khash_t(mt) *h = c->mt;
-  khiter_t k;
-
-  if (!h) h = c->mt = kh_init(mt, mrb);
-  k = kh_put(mt, h, mid);
-  kh_value(h, k) = p;
-  if (p) {
-    mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
-  }
-}
-
-void
-mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec)
-{
-  struct RProc *p;
-  int ai = mrb_gc_arena_save(mrb);
-
-  p = mrb_proc_new_cfunc(mrb, func);
-  p->target_class = c;
-  mrb_define_method_raw(mrb, c, mid, p);
-  mrb_gc_arena_restore(mrb, ai);
-}
-
-void
-mrb_define_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, mrb_aspec aspec)
-{
-  mrb_define_method_id(mrb, c, mrb_intern_cstr(mrb, name), func, aspec);
-}
-
-void
-mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value body)
-{
-  khash_t(mt) *h = c->mt;
-  khiter_t k;
-  struct RProc *p;
-
-  if (!h) h = c->mt = kh_init(mt, mrb);
-  k = kh_put(mt, h, name);
-  p = mrb_proc_ptr(body);
-  kh_value(h, k) = p;
-  if (p) {
-    mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
-  }
-}
-
-static mrb_value
-check_type(mrb_state *mrb, mrb_value val, enum mrb_vtype t, const char *c, const char *m)
-{
-  mrb_value tmp;
-
-  tmp = mrb_check_convert_type(mrb, val, t, c, m);
-  if (mrb_nil_p(tmp)) {
-    mrb_raisef(mrb, E_TYPE_ERROR, "expected %S", mrb_str_new_cstr(mrb, c));
-  }
-  return tmp;
-}
-
-static mrb_value
-to_str(mrb_state *mrb, mrb_value val)
-{
-  return check_type(mrb, val, MRB_TT_STRING, "String", "to_str");
-}
-
-static mrb_value
-to_ary(mrb_state *mrb, mrb_value val)
-{
-  return check_type(mrb, val, MRB_TT_ARRAY, "Array", "to_ary");
-}
-
-static mrb_value
-to_hash(mrb_state *mrb, mrb_value val)
-{
-  return check_type(mrb, val, MRB_TT_HASH, "Hash", "to_hash");
-}
-
-/*
-  retrieve arguments from mrb_state.
-
-  mrb_get_args(mrb, format, ...)
-
-  returns number of arguments parsed.
-
-  format specifiers:
-
-    string  mruby type     C type                 note
-    ----------------------------------------------------------------------------------------------
-    o:      Object         [mrb_value]
-    S:      String         [mrb_value]
-    A:      Array          [mrb_value]
-    H:      Hash           [mrb_value]
-    s:      String         [char*,int]            Receive two arguments.
-    z:      String         [char*]                NUL terminated string.
-    a:      Array          [mrb_value*,mrb_int]   Receive two arguments.
-    f:      Float          [mrb_float]
-    i:      Integer        [mrb_int]
-    b:      Boolean        [mrb_bool]
-    n:      Symbol         [mrb_sym]
-    &:      Block          [mrb_value]
-    *:      rest argument  [mrb_value*,int]       Receive the rest of the arguments as an array.
-    |:      optional                              Next argument of '|' and later are optional.
- */
-int
-mrb_get_args(mrb_state *mrb, const char *format, ...)
-{
-  char c;
-  int i = 0;
-  mrb_value *sp = mrb->c->stack + 1;
-  va_list ap;
-  int argc = mrb->c->ci->argc;
-  int opt = 0;
-
-  va_start(ap, format);
-  if (argc < 0) {
-    struct RArray *a = mrb_ary_ptr(mrb->c->stack[1]);
-
-    argc = a->len;
-    sp = a->ptr;
-  }
-  while ((c = *format++)) {
-    switch (c) {
-    case '|': case '*': case '&':
-      break;
-    default:
-      if (argc <= i && !opt) {
-        mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-      }
-      break;
-    }
-
-    switch (c) {
-    case 'o':
-      {
-        mrb_value *p;
-
-        p = va_arg(ap, mrb_value*);
-        if (i < argc) {
-          *p = *sp++;
-          i++;
-        }
-      }
-      break;
-    case 'S':
-      {
-        mrb_value *p;
-
-        p = va_arg(ap, mrb_value*);
-        if (i < argc) {
-          *p = to_str(mrb, *sp++);
-          i++;
-        }
-      }
-      break;
-    case 'A':
-      {
-        mrb_value *p;
-
-        p = va_arg(ap, mrb_value*);
-        if (i < argc) {
-          *p = to_ary(mrb, *sp++);
-          i++;
-        }
-      }
-      break;
-    case 'H':
-      {
-        mrb_value *p;
-
-        p = va_arg(ap, mrb_value*);
-        if (i < argc) {
-          *p = to_hash(mrb, *sp++);
-          i++;
-        }
-      }
-      break;
-    case 's':
-      {
-        mrb_value ss;
-        struct RString *s;
-        char **ps = 0;
-        int *pl = 0;
-
-        ps = va_arg(ap, char**);
-        pl = va_arg(ap, int*);
-        if (i < argc) {
-          ss = to_str(mrb, *sp++);
-          s = mrb_str_ptr(ss);
-          *ps = s->ptr;
-          *pl = s->len;
-          i++;
-        }
-      }
-      break;
-    case 'z':
-      {
-        mrb_value ss;
-        struct RString *s;
-        char **ps;
-        mrb_int len;
-
-        ps = va_arg(ap, char**);
-        if (i < argc) {
-          ss = to_str(mrb, *sp++);
-          s = mrb_str_ptr(ss);
-          len = (mrb_int)strlen(s->ptr);
-          if (len < s->len) {
-            mrb_raise(mrb, E_ARGUMENT_ERROR, "String contains NUL");
-          }
-          else if (len > s->len) {
-            mrb_str_modify(mrb, s);
-          }
-          *ps = s->ptr;
-          i++;
-        }
-      }
-      break;
-    case 'a':
-      {
-        mrb_value aa;
-        struct RArray *a;
-        mrb_value **pb;
-        mrb_int *pl;
-
-        pb = va_arg(ap, mrb_value**);
-        pl = va_arg(ap, mrb_int*);
-        if (i < argc) {
-          aa = to_ary(mrb, *sp++);
-          a = mrb_ary_ptr(aa);
-          *pb = a->ptr;
-          *pl = a->len;
-          i++;
-        }
-      }
-      break;
-    case 'f':
-      {
-        mrb_float *p;
-
-        p = va_arg(ap, mrb_float*);
-        if (i < argc) {
-          switch (mrb_type(*sp)) {
-            case MRB_TT_FLOAT:
-              *p = mrb_float(*sp);
-              break;
-            case MRB_TT_FIXNUM:
-              *p = (mrb_float)mrb_fixnum(*sp);
-              break;
-            case MRB_TT_STRING:
-              mrb_raise(mrb, E_TYPE_ERROR, "String can't be coerced into Float");
-              break;
-            default:
-              {
-                mrb_value tmp;
-
-                tmp = mrb_convert_type(mrb, *sp, MRB_TT_FLOAT, "Float", "to_f");
-                *p = mrb_float(tmp);
-              }
-              break;
-          }
-          sp++;
-          i++;
-        }
-      }
-      break;
-    case 'i':
-      {
-        mrb_int *p;
-
-        p = va_arg(ap, mrb_int*);
-        if (i < argc) {
-          switch (mrb_type(*sp)) {
-            case MRB_TT_FIXNUM:
-              *p = mrb_fixnum(*sp);
-              break;
-            case MRB_TT_FLOAT:
-              {
-                mrb_float f = mrb_float(*sp);
-
-                if (!FIXABLE(f)) {
-                  mrb_raise(mrb, E_RANGE_ERROR, "float too big for int");
-                }
-                *p = (mrb_int)f;
-              }
-              break;
-            case MRB_TT_FALSE:
-              *p = 0;
-              break;
-            default:
-              {
-                mrb_value tmp;
-
-                tmp = mrb_convert_type(mrb, *sp, MRB_TT_FIXNUM, "Integer", "to_int");
-                *p = mrb_fixnum(tmp);
-              }
-              break;
-          }
-          sp++;
-          i++;
-        }
-      }
-      break;
-    case 'b':
-      {
-        mrb_bool *boolp = va_arg(ap, mrb_bool*);
-
-        if (i < argc) {
-          mrb_value b = *sp++;
-          *boolp = mrb_test(b);
-          i++;
-        }
-      }
-      break;
-    case 'n':
-      {
-        mrb_sym *symp;
-
-        symp = va_arg(ap, mrb_sym*);
-        if (i < argc) {
-          mrb_value ss;
-
-          ss = *sp++;
-          if (mrb_type(ss) == MRB_TT_SYMBOL) {
-            *symp = mrb_symbol(ss);
-          }
-          else if (mrb_string_p(ss)) {
-            *symp = mrb_intern_str(mrb, to_str(mrb, ss));
-          }
-          else {
-            mrb_value obj = mrb_funcall(mrb, ss, "inspect", 0);
-            mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", obj);
-          }
-          i++;
-        }
-      }
-      break;
-
-    case '&':
-      {
-        mrb_value *p, *bp;
-
-        p = va_arg(ap, mrb_value*);
-        if (mrb->c->ci->argc < 0) {
-          bp = mrb->c->stack + 2;
-        }
-        else {
-          bp = mrb->c->stack + mrb->c->ci->argc + 1;
-        }
-        *p = *bp;
-      }
-      break;
-    case '|':
-      opt = 1;
-      break;
-
-    case '*':
-      {
-        mrb_value **var;
-        int *pl;
-
-        var = va_arg(ap, mrb_value**);
-        pl = va_arg(ap, int*);
-        if (argc > i) {
-          *pl = argc-i;
-          if (*pl > 0) {
-            *var = sp;
-          }
-          i = argc;
-          sp += *pl;
-        }
-        else {
-          *pl = 0;
-          *var = NULL;
-        }
-      }
-      break;
-    default:
-      mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid argument specifier %S", mrb_str_new(mrb, &c, 1));
-      break;
-    }
-  }
-  if (!c && argc > i) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-  }
-  va_end(ap);
-  return i;
-}
-
-static struct RClass*
-boot_defclass(mrb_state *mrb, struct RClass *super)
-{
-  struct RClass *c;
-
-  c = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_CLASS, mrb->class_class);
-  c->super = super ? super : mrb->object_class;
-  mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)super);
-  c->mt = kh_init(mt, mrb);
-  return c;
-}
-
-void
-mrb_include_module(mrb_state *mrb, struct RClass *c, struct RClass *m)
-{
-  struct RClass *ins_pos;
-
-  ins_pos = c;
-  while (m) {
-    struct RClass *p = c, *ic;
-    int superclass_seen = 0;
-
-    if (c->mt == m->mt) {
-      mrb_raise(mrb, E_ARGUMENT_ERROR, "cyclic include detected");
-    }
-    while (p) {
-      if (c != p && p->tt == MRB_TT_CLASS) {
-        superclass_seen = 1;
-      }
-      else if (p->mt == m->mt){
-        if (p->tt == MRB_TT_ICLASS && !superclass_seen) {
-          ins_pos = p;
-        }
-        goto skip;
-      }
-      p = p->super;
-    }
-    ic = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_ICLASS, mrb->class_class);
-    if (m->tt == MRB_TT_ICLASS) {
-      ic->c = m->c;
-    }
-    else {
-      ic->c = m;
-    }
-    ic->mt = m->mt;
-    ic->iv = m->iv;
-    ic->super = ins_pos->super;
-    ins_pos->super = ic;
-    mrb_field_write_barrier(mrb, (struct RBasic*)ins_pos, (struct RBasic*)ic);
-    ins_pos = ic;
-  skip:
-    m = m->super;
-  }
-}
-
-static mrb_value
-mrb_mod_append_features(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value klass;
-
-  mrb_check_type(mrb, mod, MRB_TT_MODULE);
-  mrb_get_args(mrb, "o", &klass);
-  mrb_include_module(mrb, mrb_class_ptr(klass), mrb_class_ptr(mod));
-  return mod;
-}
-
-static mrb_value
-mrb_mod_include(mrb_state *mrb, mrb_value klass)
-{
-  mrb_value *argv;
-  int argc, i;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  for (i=0; i<argc; i++) {
-    mrb_check_type(mrb, argv[i], MRB_TT_MODULE);
-  }
-  while (argc--) {
-    mrb_funcall(mrb, argv[argc], "append_features", 1, klass);
-    mrb_funcall(mrb, argv[argc], "included", 1, klass);
-  }
-
-  return klass;
-}
-
-/* 15.2.2.4.28 */
-/*
- *  call-seq:
- *     mod.include?(module)    -> true or false
- *
- *  Returns <code>true</code> if <i>module</i> is included in
- *  <i>mod</i> or one of <i>mod</i>'s ancestors.
- *
- *     module A
- *     end
- *     class B
- *       include A
- *     end
- *     class C < B
- *     end
- *     B.include?(A)   #=> true
- *     C.include?(A)   #=> true
- *     A.include?(A)   #=> false
- */
-static mrb_value
-mrb_mod_include_p(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value mod2;
-  struct RClass *c = mrb_class_ptr(mod);
-
-  mrb_get_args(mrb, "o", &mod2);
-  mrb_check_type(mrb, mod2, MRB_TT_MODULE);
-
-  while (c) {
-    if (c->tt == MRB_TT_ICLASS) {
-      if (c->c == mrb_class_ptr(mod2)) return mrb_true_value();
-    }
-    c = c->super;
-  }
-  return mrb_false_value();
-}
-
-static mrb_value
-mrb_mod_ancestors(mrb_state *mrb, mrb_value self)
-{
-  mrb_value result;
-  struct RClass *c = mrb_class_ptr(self);
-
-  result = mrb_ary_new(mrb);
-  mrb_ary_push(mrb, result, mrb_obj_value(c));
-  c = c->super;
-  while (c) {
-    if (c->tt == MRB_TT_ICLASS) {
-      mrb_ary_push(mrb, result, mrb_obj_value(c->c));
-    }
-    else if (c->tt != MRB_TT_SCLASS) {
-      mrb_ary_push(mrb, result, mrb_obj_value(c));
-    }
-    c = c->super;
-  }
-
-  return result;
-}
-
-static mrb_value
-mrb_mod_extend_object(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value obj;
-
-  mrb_check_type(mrb, mod, MRB_TT_MODULE);
-  mrb_get_args(mrb, "o", &obj);
-  mrb_include_module(mrb, mrb_class_ptr(mrb_singleton_class(mrb, obj)), mrb_class_ptr(mod));
-  return mod;
-}
-
-static mrb_value
-mrb_mod_included_modules(mrb_state *mrb, mrb_value self)
-{
-  mrb_value result;
-  struct RClass *c = mrb_class_ptr(self);
-
-  result = mrb_ary_new(mrb);
-  while (c) {
-    if (c->tt == MRB_TT_ICLASS) {
-      mrb_ary_push(mrb, result, mrb_obj_value(c->c));
-    }
-    c = c->super;
-  }
-
-  return result;
-}
-
-mrb_value class_instance_method_list(mrb_state*, mrb_bool, struct RClass*, int);
-
-/* 15.2.2.4.33 */
-/*
- *  call-seq:
- *     mod.instance_methods(include_super=true)   -> array
- *
- *  Returns an array containing the names of the public and protected instance
- *  methods in the receiver. For a module, these are the public and protected methods;
- *  for a class, they are the instance (not singleton) methods. With no
- *  argument, or with an argument that is <code>false</code>, the
- *  instance methods in <i>mod</i> are returned, otherwise the methods
- *  in <i>mod</i> and <i>mod</i>'s superclasses are returned.
- *
- *     module A
- *       def method1()  end
- *     end
- *     class B
- *       def method2()  end
- *     end
- *     class C < B
- *       def method3()  end
- *     end
- *
- *     A.instance_methods                #=> [:method1]
- *     B.instance_methods(false)         #=> [:method2]
- *     C.instance_methods(false)         #=> [:method3]
- *     C.instance_methods(true).length   #=> 43
- */
-
-static mrb_value
-mrb_mod_instance_methods(mrb_state *mrb, mrb_value mod)
-{
-  struct RClass *c = mrb_class_ptr(mod);
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return class_instance_method_list(mrb, recur, c, 0);
-}
-
-mrb_value mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c);
-
-/* 15.2.2.4.35 */
-/*
- *  call-seq:
- *     mod.class_eval {| | block }  -> obj
- *     mod.module_eval {| | block } -> obj
- *
- *  Evaluates block in the context of _mod_. This can
- *  be used to add methods to a class. <code>module_eval</code> returns
- *  the result of evaluating its argument.
- */
-
-mrb_value
-mrb_mod_module_eval(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value a, b;
-  struct RClass *c;
-
-  if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
-    mrb_raise(mrb, E_NOTIMP_ERROR, "module_eval/class_eval with string not implemented");
-  }
-  c = mrb_class_ptr(mod);
-  return mrb_yield_internal(mrb, b, 0, 0, mod, c);
-}
-
-mrb_value
-mrb_mod_dummy_visibility(mrb_state *mrb, mrb_value mod)
-{
-  return mod;
-}
-
-mrb_value
-mrb_singleton_class(mrb_state *mrb, mrb_value v)
-{
-  struct RBasic *obj;
-
-  switch (mrb_type(v)) {
-  case MRB_TT_FALSE:
-    if (mrb_nil_p(v))
-      return mrb_obj_value(mrb->nil_class);
-    return mrb_obj_value(mrb->false_class);
-  case MRB_TT_TRUE:
-    return mrb_obj_value(mrb->true_class);
-  case MRB_TT_CPTR:
-    return mrb_obj_value(mrb->object_class);
-  case MRB_TT_SYMBOL:
-  case MRB_TT_FIXNUM:
-  case MRB_TT_FLOAT:
-    mrb_raise(mrb, E_TYPE_ERROR, "can't define singleton");
-    return mrb_nil_value();    /* not reached */
-  default:
-    break;
-  }
-  obj = mrb_basic_ptr(v);
-  prepare_singleton_class(mrb, obj);
-  return mrb_obj_value(obj->c);
-}
-
-void
-mrb_define_singleton_method(mrb_state *mrb, struct RObject *o, const char *name, mrb_func_t func, mrb_aspec aspec)
-{
-  prepare_singleton_class(mrb, (struct RBasic*)o);
-  mrb_define_method_id(mrb, o->c, mrb_intern_cstr(mrb, name), func, aspec);
-}
-
-void
-mrb_define_class_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, mrb_aspec aspec)
-{
-  mrb_define_singleton_method(mrb, (struct RObject*)c, name, func, aspec);
-}
-
-void
-mrb_define_module_function(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, mrb_aspec aspec)
-{
-  mrb_define_class_method(mrb, c, name, func, aspec);
-  mrb_define_method(mrb, c, name, func, aspec);
-}
-
-struct RProc*
-mrb_method_search_vm(mrb_state *mrb, struct RClass **cp, mrb_sym mid)
-{
-  khiter_t k;
-  struct RProc *m;
-  struct RClass *c = *cp;
-
-  while (c) {
-    khash_t(mt) *h = c->mt;
-
-    if (h) {
-      k = kh_get(mt, h, mid);
-      if (k != kh_end(h)) {
-        m = kh_value(h, k);
-        if (!m) break;
-        *cp = c;
-        return m;
-      }
-    }
-    c = c->super;
-  }
-  return 0;                  /* no method */
-}
-
-struct RProc*
-mrb_method_search(mrb_state *mrb, struct RClass* c, mrb_sym mid)
-{
-  struct RProc *m;
-
-  m = mrb_method_search_vm(mrb, &c, mid);
-  if (!m) {
-    mrb_value inspect = mrb_funcall(mrb, mrb_obj_value(c), "inspect", 0);
-    if (RSTRING_LEN(inspect) > 64) {
-      inspect = mrb_any_to_s(mrb, mrb_obj_value(c));
-    }
-    mrb_name_error(mrb, mid, "undefined method '%S' for class %S",
-               mrb_sym2str(mrb, mid), inspect);
-  }
-  return m;
-}
-
-static mrb_value
-mrb_instance_alloc(mrb_state *mrb, mrb_value cv)
-{
-  struct RClass *c = mrb_class_ptr(cv);
-  struct RObject *o;
-  enum mrb_vtype ttype = MRB_INSTANCE_TT(c);
-
-  if (c->tt == MRB_TT_SCLASS)
-    mrb_raise(mrb, E_TYPE_ERROR, "can't create instance of singleton class");
-
-  if (ttype == 0) ttype = MRB_TT_OBJECT;
-  o = (struct RObject*)mrb_obj_alloc(mrb, ttype, c);
-  return mrb_obj_value(o);
-}
-
-/*
- *  call-seq:
- *     class.new(args, ...)    ->  obj
- *
- *  Calls <code>allocate</code> to create a new object of
- *  <i>class</i>'s class, then invokes that object's
- *  <code>initialize</code> method, passing it <i>args</i>.
- *  This is the method that ends up getting called whenever
- *  an object is constructed using .new.
- *
- */
-
-mrb_value
-mrb_instance_new(mrb_state *mrb, mrb_value cv)
-{
-  mrb_value obj, blk;
-  mrb_value *argv;
-  int argc;
-
-  obj = mrb_instance_alloc(mrb, cv);
-  mrb_get_args(mrb, "*&", &argv, &argc, &blk);
-  mrb_funcall_with_block(mrb, obj, mrb_intern(mrb, "initialize"), argc, argv, blk);
-
-  return obj;
-}
-
-mrb_value
-mrb_obj_new(mrb_state *mrb, struct RClass *c, int argc, mrb_value *argv)
-{
-  mrb_value obj;
-
-  obj = mrb_instance_alloc(mrb, mrb_obj_value(c));
-  mrb_funcall_argv(mrb, obj, mrb_intern(mrb, "initialize"), argc, argv);
-
-  return obj;
-}
-
-static mrb_value
-mrb_class_new_class(mrb_state *mrb, mrb_value cv)
-{
-  mrb_value super;
-  struct RClass *new_class;
-
-  if (mrb_get_args(mrb, "|o", &super) == 0) {
-    super = mrb_obj_value(mrb->object_class);
-  }
-  new_class = mrb_class_new(mrb, mrb_class_ptr(super));
-  mrb_funcall(mrb, super, "inherited", 1, mrb_obj_value(new_class));
-  return mrb_obj_value(new_class);
-}
-
-mrb_value
-mrb_class_superclass(mrb_state *mrb, mrb_value klass)
-{
-  struct RClass *c;
-
-  c = mrb_class_ptr(klass);
-  c = c->super;
-  while (c && c->tt == MRB_TT_ICLASS) {
-    c = c->super;
-  }
-  if (!c) return mrb_nil_value();
-  return mrb_obj_value(c);
-}
-
-static mrb_value
-mrb_bob_init(mrb_state *mrb, mrb_value cv)
-{
-  return mrb_nil_value();
-}
-
-static mrb_value
-mrb_bob_not(mrb_state *mrb, mrb_value cv)
-{
-  return mrb_bool_value(!mrb_test(cv));
-}
-
-/* 15.3.1.3.30 */
-/*
- *  call-seq:
- *     obj.method_missing(symbol [, *args] )   -> result
- *
- *  Invoked by Ruby when <i>obj</i> is sent a message it cannot handle.
- *  <i>symbol</i> is the symbol for the method called, and <i>args</i>
- *  are any arguments that were passed to it. By default, the interpreter
- *  raises an error when this method is called. However, it is possible
- *  to override the method to provide more dynamic behavior.
- *  If it is decided that a particular method should not be handled, then
- *  <i>super</i> should be called, so that ancestors can pick up the
- *  missing method.
- *  The example below creates
- *  a class <code>Roman</code>, which responds to methods with names
- *  consisting of roman numerals, returning the corresponding integer
- *  values.
- *
- *     class Roman
- *       def romanToInt(str)
- *         # ...
- *       end
- *       def method_missing(methId)
- *         str = methId.id2name
- *         romanToInt(str)
- *       end
- *     end
- *
- *     r = Roman.new
- *     r.iv      #=> 4
- *     r.xxiii   #=> 23
- *     r.mm      #=> 2000
- */
-static mrb_value
-mrb_bob_missing(mrb_state *mrb, mrb_value mod)
-{
-  mrb_sym name;
-  mrb_value *a;
-  int alen;
-  mrb_value inspect;
-
-  mrb_get_args(mrb, "n*", &name, &a, &alen);
-
-  if (mrb_respond_to(mrb,mod,mrb_intern2(mrb, "inspect",7))){
-    inspect = mrb_funcall(mrb, mod, "inspect", 0);
-    if (RSTRING_LEN(inspect) > 64) {
-      inspect = mrb_any_to_s(mrb, mod);
-    }
-  }
-  else {
-    inspect = mrb_any_to_s(mrb, mod);
-  }
-
-  mrb_raisef(mrb, E_NOMETHOD_ERROR, "undefined method '%S' for %S",
-             mrb_sym2str(mrb, name), inspect);
-  /* not reached */
-  return mrb_nil_value();
-}
-
-mrb_bool
-mrb_obj_respond_to(struct RClass* c, mrb_sym mid)
-{
-  khiter_t k;
-
-  while (c) {
-    khash_t(mt) *h = c->mt;
-
-    if (h) {
-      k = kh_get(mt, h, mid);
-      if (k != kh_end(h)) {
-        if (kh_value(h, k)) {
-          return TRUE;  /* method exists */
-        }
-        else {
-          return FALSE; /* undefined method */
-        }
-      }
-    }
-    c = c->super;
-  }
-  return FALSE;         /* no method */
-}
-
-mrb_bool
-mrb_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym mid)
-{
-  return mrb_obj_respond_to(mrb_class(mrb, obj), mid);
-}
-
-mrb_value
-mrb_class_path(mrb_state *mrb, struct RClass *c)
-{
-  mrb_value path;
-  const char *name;
-  size_t len;
-  mrb_sym classpath = mrb_intern2(mrb, "__classpath__", 13);
-
-  path = mrb_obj_iv_get(mrb, (struct RObject*)c, classpath);
-  if (mrb_nil_p(path)) {
-    struct RClass *outer = mrb_class_outer_module(mrb, c);
-    mrb_sym sym = mrb_class_sym(mrb, c, outer);
-    if (sym == 0) {
-      return mrb_nil_value();
-    }
-    else if (outer && outer != mrb->object_class) {
-      mrb_value base = mrb_class_path(mrb, outer);
-      path = mrb_str_plus(mrb, base, mrb_str_new(mrb, "::", 2));
-      name = mrb_sym2name_len(mrb, sym, &len);
-      mrb_str_concat(mrb, path, mrb_str_new(mrb, name, len));
-    }
-    else {
-      name = mrb_sym2name_len(mrb, sym, &len);
-      path = mrb_str_new(mrb, name, len);
-    }
-    mrb_obj_iv_set(mrb, (struct RObject*)c, classpath, path);
-  }
-  return path;
-}
-
-struct RClass *
-mrb_class_real(struct RClass* cl)
-{
-  while ((cl->tt == MRB_TT_SCLASS) || (cl->tt == MRB_TT_ICLASS)) {
-    cl = cl->super;
-  }
-  return cl;
-}
-
-const char*
-mrb_class_name(mrb_state *mrb, struct RClass* c)
-{
-  mrb_value path = mrb_class_path(mrb, c);
-  if (mrb_nil_p(path)) {
-    path = mrb_str_new(mrb, "#<Class:", 8);
-    mrb_str_concat(mrb, path, mrb_ptr_to_str(mrb, c));
-    mrb_str_cat(mrb, path, ">", 1);
-  }
-  return mrb_str_ptr(path)->ptr;
-}
-
-const char*
-mrb_obj_classname(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_class_name(mrb, mrb_obj_class(mrb, obj));
-}
-
-/*!
- * Ensures a class can be derived from super.
- *
- * \param super a reference to an object.
- * \exception TypeError if \a super is not a Class or \a super is a singleton class.
- */
-void
-mrb_check_inheritable(mrb_state *mrb, struct RClass *super)
-{
-  if (super->tt != MRB_TT_CLASS) {
-    mrb_raisef(mrb, E_TYPE_ERROR, "superclass must be a Class (%S given)", mrb_obj_value(super));
-  }
-  if (super->tt == MRB_TT_SCLASS) {
-    mrb_raise(mrb, E_TYPE_ERROR, "can't make subclass of singleton class");
-  }
-  if (super == mrb->class_class) {
-    mrb_raise(mrb, E_TYPE_ERROR, "can't make subclass of Class");
-  }
-}
-
-/*!
- * Creates a new class.
- * \param super     a class from which the new class derives.
- * \exception TypeError \a super is not inheritable.
- * \exception TypeError \a super is the Class class.
- */
-struct RClass *
-mrb_class_new(mrb_state *mrb, struct RClass *super)
-{
-  struct RClass *c;
-
-  if (super) {
-    mrb_check_inheritable(mrb, super);
-  }
-  c = boot_defclass(mrb, super);
-  if (super){
-    MRB_SET_INSTANCE_TT(c, MRB_INSTANCE_TT(super));
-  }
-  make_metaclass(mrb, c);
-
-  return c;
-}
-
-/*!
- * Creates a new module.
- */
-struct RClass *
-mrb_module_new(mrb_state *mrb)
-{
-  struct RClass *m = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_MODULE, mrb->module_class);
-  m->mt = kh_init(mt, mrb);
-
-  return m;
-}
-
-/*
- *  call-seq:
- *     obj.class    => class
- *
- *  Returns the class of <i>obj</i>, now preferred over
- *  <code>Object#type</code>, as an object's type in Ruby is only
- *  loosely tied to that object's class. This method must always be
- *  called with an explicit receiver, as <code>class</code> is also a
- *  reserved word in Ruby.
- *
- *     1.class      #=> Fixnum
- *     self.class   #=> Object
- */
-
-struct RClass*
-mrb_obj_class(mrb_state *mrb, mrb_value obj)
-{
-    return mrb_class_real(mrb_class(mrb, obj));
-}
-
-void
-mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b)
-{
-  struct RProc *m = mrb_method_search(mrb, c, b);
-
-  mrb_define_method_vm(mrb, c, a, mrb_obj_value(m));
-}
-
-/*!
- * Defines an alias of a method.
- * \param klass  the class which the original method belongs to
- * \param name1  a new name for the method
- * \param name2  the original name of the method
- */
-void
-mrb_define_alias(mrb_state *mrb, struct RClass *klass, const char *name1, const char *name2)
-{
-  mrb_alias_method(mrb, klass, mrb_intern_cstr(mrb, name1), mrb_intern_cstr(mrb, name2));
-}
-
-/*
- * call-seq:
- *   mod.to_s   -> string
- *
- * Return a string representing this module or class. For basic
- * classes and modules, this is the name. For singletons, we
- * show information on the thing we're attached to as well.
- */
-
-static mrb_value
-mrb_mod_to_s(mrb_state *mrb, mrb_value klass)
-{
-  mrb_value str;
-
-  if (mrb_type(klass) == MRB_TT_SCLASS) {
-    mrb_value v = mrb_iv_get(mrb, klass, mrb_intern2(mrb, "__attached__", 12));
-
-    str = mrb_str_new(mrb, "#<Class:", 8);
-
-    switch (mrb_type(v)) {
-      case MRB_TT_CLASS:
-      case MRB_TT_MODULE:
-      case MRB_TT_SCLASS:
-        mrb_str_append(mrb, str, mrb_inspect(mrb, v));
-        break;
-      default:
-        mrb_str_append(mrb, str, mrb_any_to_s(mrb, v));
-        break;
-    }
-    mrb_str_cat(mrb, str, ">", 1);
-  }
-  else {
-    struct RClass *c;
-    mrb_value path;
-
-    str = mrb_str_buf_new(mrb, 32);
-    c = mrb_class_ptr(klass);
-    path = mrb_class_path(mrb, c);
-
-    if (mrb_nil_p(path)) {
-      switch (mrb_type(klass)) {
-        case MRB_TT_CLASS:
-          mrb_str_cat(mrb, str, "#<Class:", 8);
-          break;
-
-        case MRB_TT_MODULE:
-          mrb_str_cat(mrb, str, "#<Module:", 9);
-          break;
-
-        default:
-          /* Shouldn't be happened? */
-          mrb_str_cat(mrb, str, "#<??????:", 9);
-          break;
-      }
-      mrb_str_concat(mrb, str, mrb_ptr_to_str(mrb, c));
-      mrb_str_cat(mrb, str, ">", 1);
-    }
-    else {
-      str = path;
-    }
-  }
-
-  return str;
-}
-
-mrb_value
-mrb_mod_alias(mrb_state *mrb, mrb_value mod)
-{
-  struct RClass *c = mrb_class_ptr(mod);
-  mrb_sym new_name, old_name;
-
-  mrb_get_args(mrb, "nn", &new_name, &old_name);
-  mrb_alias_method(mrb, c, new_name, old_name);
-  return mrb_nil_value();
-}
-
-static void
-undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a)
-{
-  mrb_value m;
-
-  if (!mrb_obj_respond_to(c, a)) {
-    mrb_name_error(mrb, a, "undefined method '%S' for class '%S'", mrb_sym2str(mrb, a), mrb_obj_value(c));
-  }
-  else {
-    MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
-    mrb_define_method_vm(mrb, c, a, m);
-  }
-}
-
-void
-mrb_undef_method(mrb_state *mrb, struct RClass *c, const char *name)
-{
-  undef_method(mrb, c, mrb_intern_cstr(mrb, name));
-}
-
-void
-mrb_undef_class_method(mrb_state *mrb, struct RClass *c, const char *name)
-{
-  mrb_undef_method(mrb,  mrb_class_ptr(mrb_singleton_class(mrb, mrb_obj_value(c))), name);
-}
-
-mrb_value
-mrb_mod_undef(mrb_state *mrb, mrb_value mod)
-{
-  struct RClass *c = mrb_class_ptr(mod);
-  int argc;
-  mrb_value *argv;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  while (argc--) {
-    undef_method(mrb, c, mrb_symbol(*argv));
-    argv++;
-  }
-  return mrb_nil_value();
-}
-
-static mrb_value
-mod_define_method(mrb_state *mrb, mrb_value self)
-{
-  struct RClass *c = mrb_class_ptr(self);
-  struct RProc *p;
-  mrb_sym mid;
-  mrb_value blk;
-
-  mrb_get_args(mrb, "n&", &mid, &blk);
-  if (mrb_nil_p(blk)) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
-  }
-  p = (struct RProc*)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb->proc_class);
-  mrb_proc_copy(p, mrb_proc_ptr(blk));
-  p->flags |= MRB_PROC_STRICT;
-  mrb_define_method_raw(mrb, c, mid, p);
-  return mrb_symbol_value(mid);
-}
-
-static void
-check_cv_name_sym(mrb_state *mrb, mrb_sym id)
-{
-  const char *s;
-  size_t len;
-
-  s = mrb_sym2name_len(mrb, id, &len);
-  if (len < 3 || !(s[0] == '@' && s[1] == '@')) {
-    mrb_name_error(mrb, id, "`%S' is not allowed as a class variable name", mrb_sym2str(mrb, id));
-  }
-}
-
-static void
-check_cv_name_str(mrb_state *mrb, mrb_value str)
-{
-  const char *s = RSTRING_PTR(str);
-  size_t const len = RSTRING_LEN(str);
-  if (len < 3 || !(s[0] == '@' && s[1] == '@')) {
-    mrb_name_error(mrb, mrb_intern_str(mrb, str), "`%S' is not allowed as a class variable name", str);
-  }
-}
-
-static mrb_value
-get_sym_or_str_arg(mrb_state *mrb)
-{
-  mrb_value sym_or_str;
-
-  mrb_get_args(mrb, "o", &sym_or_str);
-
-  if (mrb_symbol_p(sym_or_str) || mrb_string_p(sym_or_str)) {
-    return sym_or_str;
-  }
-  else {
-    mrb_value obj = mrb_funcall(mrb, sym_or_str, "inspect", 0);
-    mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", obj);
-    return mrb_nil_value();
-  }
-}
-
-/* 15.2.2.4.16 */
-/*
- *  call-seq:
- *     obj.class_variable_defined?(symbol)    -> true or false
- *
- *  Returns <code>true</code> if the given class variable is defined
- *  in <i>obj</i>.
- *
- *     class Fred
- *       @@foo = 99
- *     end
- *     Fred.class_variable_defined?(:@@foo)    #=> true
- *     Fred.class_variable_defined?(:@@bar)    #=> false
- */
-
-static mrb_value
-mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value id;
-  mrb_bool defined_p;
-
-  id = get_sym_or_str_arg(mrb);
-  if (mrb_symbol_p(id)) {
-    check_cv_name_sym(mrb, mrb_symbol(id));
-    defined_p = mrb_cv_defined(mrb, mod, mrb_symbol(id));
-  }
-  else {
-    mrb_value sym;
-    check_cv_name_str(mrb, id);
-    sym = mrb_check_intern_str(mrb, id);
-    if (mrb_nil_p(sym)) {
-      defined_p = FALSE;
-    }
-    else {
-      defined_p = mrb_cv_defined(mrb, mod, mrb_symbol(sym));
-    }
-  }
-  return mrb_bool_value(defined_p);
-}
-
-/* 15.2.2.4.17 */
-/*
- *  call-seq:
- *     mod.class_variable_get(symbol)    -> obj
- *
- *  Returns the value of the given class variable (or throws a
- *  <code>NameError</code> exception). The <code>@@</code> part of the
- *  variable name should be included for regular class variables
- *
- *     class Fred
- *       @@foo = 99
- *     end
- *     Fred.class_variable_get(:@@foo)     #=> 99
- */
-
-static mrb_value
-mrb_mod_cvar_get(mrb_state *mrb, mrb_value mod)
-{
-  mrb_sym id;
-
-  mrb_get_args(mrb, "n", &id);
-  check_cv_name_sym(mrb, id);
-  return mrb_cv_get(mrb, mod, id);
-}
-
-/* 15.2.2.4.18 */
-/*
- *  call-seq:
- *     obj.class_variable_set(symbol, obj)    -> obj
- *
- *  Sets the class variable names by <i>symbol</i> to
- *  <i>object</i>.
- *
- *     class Fred
- *       @@foo = 99
- *       def foo
- *         @@foo
- *       end
- *     end
- *     Fred.class_variable_set(:@@foo, 101)     #=> 101
- *     Fred.new.foo                             #=> 101
- */
-
-static mrb_value
-mrb_mod_cvar_set(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value value;
-  mrb_sym id;
-
-  mrb_get_args(mrb, "no", &id, &value);
-  check_cv_name_sym(mrb, id);
-  mrb_cv_set(mrb, mod, id, value);
-  return value;
-}
-
-/* 15.2.2.4.39 */
-/*
- *  call-seq:
- *     remove_class_variable(sym)    -> obj
- *
- *  Removes the definition of the <i>sym</i>, returning that
- *  constant's value.
- *
- *     class Dummy
- *       @@var = 99
- *       puts @@var
- *       p class_variables
- *       remove_class_variable(:@@var)
- *       p class_variables
- *     end
- *
- *  <em>produces:</em>
- *
- *     99
- *     [:@@var]
- *     []
- */
-
-mrb_value
-mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value val;
-  mrb_sym id;
-
-  mrb_get_args(mrb, "n", &id);
-  check_cv_name_sym(mrb, id);
-
-  val = mrb_iv_remove(mrb, mod, id);
-  if (!mrb_undef_p(val)) return val;
-
-  if (mrb_cv_defined(mrb, mod, id)){
-    mrb_name_error(mrb, id, "cannot remove %S for %S",
-                   mrb_sym2str(mrb, id), mod);
-  }
-
-  mrb_name_error(mrb, id, "class variable %S not defined for %S",
-                 mrb_sym2str(mrb, id), mod);
-
- /* not reached */
- return mrb_nil_value();
-}
-
-/* 15.2.2.4.34 */
-/*
- *  call-seq:
- *     mod.method_defined?(symbol)    -> true or false
- *
- *  Returns +true+ if the named method is defined by
- *  _mod_ (or its included modules and, if _mod_ is a class,
- *  its ancestors). Public and protected methods are matched.
- *
- *     module A
- *       def method1()  end
- *     end
- *     class B
- *       def method2()  end
- *     end
- *     class C < B
- *       include A
- *       def method3()  end
- *     end
- *
- *     A.method_defined? :method1    #=> true
- *     C.method_defined? "method1"   #=> true
- *     C.method_defined? "method2"   #=> true
- *     C.method_defined? "method3"   #=> true
- *     C.method_defined? "method4"   #=> false
- */
-
-static mrb_value
-mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value id;
-  mrb_bool method_defined_p;
-
-  id = get_sym_or_str_arg(mrb);
-  if (mrb_symbol_p(id)) {
-    method_defined_p = mrb_obj_respond_to(mrb_class_ptr(mod), mrb_symbol(id));
-  }
-  else {
-    mrb_value sym = mrb_check_intern_str(mrb, id);
-    if (mrb_nil_p(sym)) {
-      method_defined_p = FALSE;
-    }
-    else {
-      method_defined_p = mrb_obj_respond_to(mrb_class_ptr(mod), mrb_symbol(sym));
-    }
-  }
-  return mrb_bool_value(method_defined_p);
-}
-
-static void
-remove_method(mrb_state *mrb, mrb_value mod, mrb_sym mid)
-{
-  struct RClass *c = mrb_class_ptr(mod);
-  khash_t(mt) *h = c->mt;
-  khiter_t k;
-
-  if (h) {
-    k = kh_get(mt, h, mid);
-    if (k != kh_end(h)) {
-      kh_del(mt, h, k);
-      return;
-    }
-  }
-
-  mrb_name_error(mrb, mid, "method `%S' not defined in %S",
-    mrb_sym2str(mrb, mid), mod);
-}
-
-/* 15.2.2.4.41 */
-/*
- *  call-seq:
- *     remove_method(symbol)   -> self
- *
- *  Removes the method identified by _symbol_ from the current
- *  class. For an example, see <code>Module.undef_method</code>.
- */
-
-mrb_value
-mrb_mod_remove_method(mrb_state *mrb, mrb_value mod)
-{
-  int argc;
-  mrb_value *argv;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  while (argc--) {
-    remove_method(mrb, mod, mrb_symbol(*argv));
-    argv++;
-  }
-  return mod;
-}
-
-static void
-check_const_name_sym(mrb_state *mrb, mrb_sym id)
-{
-  const char *s;
-  size_t len;
-
-  s = mrb_sym2name_len(mrb, id, &len);
-  if (len < 1 || !ISUPPER(*s)) {
-    mrb_name_error(mrb, id, "wrong constant name %S", mrb_sym2str(mrb, id));
-  }
-}
-
-static void
-check_const_name_str(mrb_state *mrb, mrb_value str)
-{
-  if (RSTRING_LEN(str) < 1 || !ISUPPER(*RSTRING_PTR(str))) {
-    mrb_name_error(mrb, mrb_intern_str(mrb, str), "wrong constant name %S", str);
-  }
-}
-
-mrb_value
-mrb_mod_const_defined(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value id;
-  mrb_bool const_defined_p;
-
-  id = get_sym_or_str_arg(mrb);
-  if (mrb_type(id) == MRB_TT_SYMBOL) {
-    check_const_name_sym(mrb, mrb_symbol(id));
-    const_defined_p = mrb_const_defined(mrb, mod, mrb_symbol(id));
-  }
-  else {
-    mrb_value sym;
-    check_const_name_str(mrb, id);
-    sym = mrb_check_intern_str(mrb, id);
-    if (mrb_nil_p(sym)) {
-      const_defined_p = FALSE;
-    }
-    else {
-      const_defined_p = mrb_const_defined(mrb, mod, mrb_symbol(sym));
-    }
-  }
-
-  return mrb_bool_value(const_defined_p);
-}
-
-mrb_value
-mrb_mod_const_get(mrb_state *mrb, mrb_value mod)
-{
-  mrb_sym id;
-
-  mrb_get_args(mrb, "n", &id);
-  check_const_name_sym(mrb, id);
-  return mrb_const_get(mrb, mod, id);
-}
-
-mrb_value
-mrb_mod_const_set(mrb_state *mrb, mrb_value mod)
-{
-  mrb_sym id;
-  mrb_value value;
-
-  mrb_get_args(mrb, "no", &id, &value);
-  check_const_name_sym(mrb, id);
-  mrb_const_set(mrb, mod, id, value);
-  return value;
-}
-
-mrb_value
-mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
-{
-  mrb_sym id;
-  mrb_value val;
-
-  mrb_get_args(mrb, "n", &id);
-  check_const_name_sym(mrb, id);
-  val = mrb_iv_remove(mrb, mod, id);
-  if (mrb_undef_p(val)) {
-    mrb_name_error(mrb, id, "constant %S not defined", mrb_sym2str(mrb, id));
-  }
-  return val;
-}
-
-static mrb_value
-mrb_mod_s_constants(mrb_state *mrb, mrb_value mod)
-{
-  mrb_raise(mrb, E_NOTIMP_ERROR, "Module.constants not implemented");
-  return mrb_nil_value();       /* not reached */
-}
-
-static mrb_value
-mrb_mod_eqq(mrb_state *mrb, mrb_value mod)
-{
-  mrb_value obj;
-  mrb_bool eqq;
-
-  mrb_get_args(mrb, "o", &obj);
-  eqq = mrb_obj_is_kind_of(mrb, obj, mrb_class_ptr(mod));
-
-  return mrb_bool_value(eqq);
-}
-
-void
-mrb_init_class(mrb_state *mrb)
-{
-  struct RClass *bob;           /* BasicObject */
-  struct RClass *obj;           /* Object */
-  struct RClass *mod;           /* Module */
-  struct RClass *cls;           /* Class */
-  //struct RClass *krn;    /* Kernel */
-
-  /* boot class hierarchy */
-  bob = boot_defclass(mrb, 0);
-  obj = boot_defclass(mrb, bob); mrb->object_class = obj;
-  mod = boot_defclass(mrb, obj); mrb->module_class = mod;/* obj -> mod */
-  cls = boot_defclass(mrb, mod); mrb->class_class = cls; /* obj -> cls */
-  /* fix-up loose ends */
-  bob->c = obj->c = mod->c = cls->c = cls;
-  make_metaclass(mrb, bob);
-  make_metaclass(mrb, obj);
-  make_metaclass(mrb, mod);
-  make_metaclass(mrb, cls);
-
-  /* name basic classes */
-  mrb_define_const(mrb, bob, "BasicObject", mrb_obj_value(bob));
-  mrb_define_const(mrb, obj, "BasicObject", mrb_obj_value(bob));
-  mrb_define_const(mrb, obj, "Object",      mrb_obj_value(obj));
-  mrb_define_const(mrb, obj, "Module",      mrb_obj_value(mod));
-  mrb_define_const(mrb, obj, "Class",       mrb_obj_value(cls));
-
-  /* name each classes */
-  mrb_name_class(mrb, bob, mrb_intern2(mrb, "BasicObject", 11));
-  mrb_name_class(mrb, obj, mrb_intern2(mrb, "Object", 6));
-  mrb_name_class(mrb, mod, mrb_intern2(mrb, "Module", 6));
-  mrb_name_class(mrb, cls, mrb_intern2(mrb, "Class", 5));
-
-  MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS);
-  mrb_define_method(mrb, bob, "initialize",              mrb_bob_init,             MRB_ARGS_NONE());
-  mrb_define_method(mrb, bob, "!",                       mrb_bob_not,              MRB_ARGS_NONE());
-  mrb_define_method(mrb, bob, "method_missing",          mrb_bob_missing,          MRB_ARGS_ANY());  /* 15.3.1.3.30 */
-
-  mrb_define_class_method(mrb, cls, "new",               mrb_class_new_class,      MRB_ARGS_ANY());
-  mrb_define_method(mrb, cls, "superclass",              mrb_class_superclass,     MRB_ARGS_NONE()); /* 15.2.3.3.4 */
-  mrb_define_method(mrb, cls, "new",                     mrb_instance_new,         MRB_ARGS_ANY());  /* 15.2.3.3.3 */
-  mrb_define_method(mrb, cls, "inherited",               mrb_bob_init,             MRB_ARGS_REQ(1));
-
-  MRB_SET_INSTANCE_TT(mod, MRB_TT_MODULE);
-  mrb_define_method(mrb, mod, "class_variable_defined?", mrb_mod_cvar_defined,     MRB_ARGS_REQ(1)); /* 15.2.2.4.16 */
-  mrb_define_method(mrb, mod, "class_variable_get",      mrb_mod_cvar_get,         MRB_ARGS_REQ(1)); /* 15.2.2.4.17 */
-  mrb_define_method(mrb, mod, "class_variable_set",      mrb_mod_cvar_set,         MRB_ARGS_REQ(2)); /* 15.2.2.4.18 */
-  mrb_define_method(mrb, mod, "extend_object",           mrb_mod_extend_object,    MRB_ARGS_REQ(1)); /* 15.2.2.4.25 */
-  mrb_define_method(mrb, mod, "extended",                mrb_bob_init,             MRB_ARGS_REQ(1)); /* 15.2.2.4.26 */
-  mrb_define_method(mrb, mod, "include",                 mrb_mod_include,          MRB_ARGS_ANY());  /* 15.2.2.4.27 */
-  mrb_define_method(mrb, mod, "include?",                mrb_mod_include_p,        MRB_ARGS_REQ(1)); /* 15.2.2.4.28 */
-  mrb_define_method(mrb, mod, "append_features",         mrb_mod_append_features,  MRB_ARGS_REQ(1)); /* 15.2.2.4.10 */
-  mrb_define_method(mrb, mod, "class_eval",              mrb_mod_module_eval,      MRB_ARGS_ANY());  /* 15.2.2.4.15 */
-  mrb_define_method(mrb, mod, "included",                mrb_bob_init,             MRB_ARGS_REQ(1)); /* 15.2.2.4.29 */
-  mrb_define_method(mrb, mod, "included_modules",        mrb_mod_included_modules, MRB_ARGS_NONE()); /* 15.2.2.4.30 */
-  mrb_define_method(mrb, mod, "instance_methods",        mrb_mod_instance_methods, MRB_ARGS_ANY());  /* 15.2.2.4.33 */
-  mrb_define_method(mrb, mod, "method_defined?",         mrb_mod_method_defined,   MRB_ARGS_REQ(1)); /* 15.2.2.4.34 */
-  mrb_define_method(mrb, mod, "module_eval",             mrb_mod_module_eval,      MRB_ARGS_ANY());  /* 15.2.2.4.35 */
-  mrb_define_method(mrb, mod, "private",                 mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.36 */
-  mrb_define_method(mrb, mod, "protected",               mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.37 */
-  mrb_define_method(mrb, mod, "public",                  mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.38 */
-  mrb_define_method(mrb, mod, "remove_class_variable",   mrb_mod_remove_cvar,      MRB_ARGS_REQ(1)); /* 15.2.2.4.39 */
-  mrb_define_method(mrb, mod, "remove_method",           mrb_mod_remove_method,    MRB_ARGS_ANY());  /* 15.2.2.4.41 */
-  mrb_define_method(mrb, mod, "to_s",                    mrb_mod_to_s,             MRB_ARGS_NONE());
-  mrb_define_method(mrb, mod, "inspect",                 mrb_mod_to_s,             MRB_ARGS_NONE());
-  mrb_define_method(mrb, mod, "alias_method",            mrb_mod_alias,            MRB_ARGS_ANY());  /* 15.2.2.4.8 */
-  mrb_define_method(mrb, mod, "ancestors",               mrb_mod_ancestors,        MRB_ARGS_NONE()); /* 15.2.2.4.9 */
-  mrb_define_method(mrb, mod, "undef_method",            mrb_mod_undef,            MRB_ARGS_ANY());  /* 15.2.2.4.41 */
-  mrb_define_method(mrb, mod, "const_defined?",          mrb_mod_const_defined,    MRB_ARGS_REQ(1)); /* 15.2.2.4.20 */
-  mrb_define_method(mrb, mod, "const_get",               mrb_mod_const_get,        MRB_ARGS_REQ(1)); /* 15.2.2.4.21 */
-  mrb_define_method(mrb, mod, "const_set",               mrb_mod_const_set,        MRB_ARGS_REQ(2)); /* 15.2.2.4.23 */
-  mrb_define_method(mrb, mod, "constants",               mrb_mod_constants,        MRB_ARGS_NONE()); /* 15.2.2.4.24 */
-  mrb_define_method(mrb, mod, "remove_const",            mrb_mod_remove_const,     MRB_ARGS_REQ(1)); /* 15.2.2.4.40 */
-  mrb_define_method(mrb, mod, "define_method",           mod_define_method,        MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, mod, "class_variables",         mrb_mod_class_variables,  MRB_ARGS_NONE()); /* 15.2.2.4.19 */
-  mrb_define_method(mrb, mod, "===",                     mrb_mod_eqq,              MRB_ARGS_REQ(1));
-  mrb_define_class_method(mrb, mod, "constants",         mrb_mod_s_constants,      MRB_ARGS_ANY());  /* 15.2.2.3.1 */
-
-  mrb_undef_method(mrb, cls, "append_features");
-  mrb_undef_method(mrb, cls, "extend_object");
-}

  Deleted: vendor/mruby-eeac4be/src/codegen.c (+0 -2864) 100644
===================================================================
--- vendor/mruby-eeac4be/src/codegen.c    2014-06-08 19:01:14 +0900 (b77ead3)
+++ /dev/null
@@ -1,2864 +0,0 @@
-/*
-** codegen.c - mruby code generator
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include "mruby.h"
-#include "mruby/compile.h"
-#include "mruby/irep.h"
-#include "mruby/numeric.h"
-#include "mruby/string.h"
-#include "mruby/debug.h"
-#include "node.h"
-#include "opcode.h"
-#include "re.h"
-
-typedef mrb_ast_node node;
-typedef struct mrb_parser_state parser_state;
-
-enum looptype {
-  LOOP_NORMAL,
-  LOOP_BLOCK,
-  LOOP_FOR,
-  LOOP_BEGIN,
-  LOOP_RESCUE,
-} type;
-
-struct loopinfo {
-  enum looptype type;
-  int pc1, pc2, pc3, acc;
-  int ensure_level;
-  struct loopinfo *prev;
-};
-
-typedef struct scope {
-  mrb_state *mrb;
-  mrb_pool *mpool;
-  jmp_buf jmp;
-
-  struct scope *prev;
-
-  node *lv;
-
-  int sp;
-  int pc;
-  int lastlabel;
-  int ainfo:15;
-  mrb_bool mscope:1;
-
-  struct loopinfo *loop;
-  int ensure_level;
-  char const *filename;
-  uint16_t lineno;
-
-  mrb_code *iseq;
-  uint16_t *lines;
-  int icapa;
-
-  mrb_irep *irep;
-  size_t pcapa;
-  int scapa;
-
-  int nlocals;
-  int nregs;
-  int ai;
-
-  int idx;
-
-  int debug_start_pos;
-  uint16_t filename_index;
-  parser_state* parser;
-} codegen_scope;
-
-static codegen_scope* scope_new(mrb_state *mrb, codegen_scope *prev, node *lv);
-static void scope_finish(codegen_scope *s);
-static struct loopinfo *loop_push(codegen_scope *s, enum looptype t);
-static void loop_break(codegen_scope *s, node *tree);
-static void loop_pop(codegen_scope *s, int val);
-
-static void gen_assignment(codegen_scope *s, node *node, int sp, int val);
-static void gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val);
-
-static void codegen(codegen_scope *s, node *tree, int val);
-
-static void
-codegen_error(codegen_scope *s, const char *message)
-{
-  if (!s) return;
-  while (s->prev) {
-    mrb_pool_close(s->mpool);
-    s = s->prev;
-  }
-  mrb_pool_close(s->mpool);
-#ifdef ENABLE_STDIO
-  if (s->filename && s->lineno) {
-    fprintf(stderr, "codegen error:%s:%d: %s\n", s->filename, s->lineno, message);
-  }
-  else {
-    fprintf(stderr, "codegen error: %s\n", message);
-  }
-#endif
-  longjmp(s->jmp, 1);
-}
-
-static void*
-codegen_palloc(codegen_scope *s, size_t len)
-{
-  void *p = mrb_pool_alloc(s->mpool, len);
-
-  if (!p) codegen_error(s, "pool memory allocation");
-  return p;
-}
-
-void*
-codegen_malloc(codegen_scope *s, size_t len)
-{
-  void *p = mrb_malloc(s->mrb, len);
-
-  if (!p) codegen_error(s, "mrb_malloc");
-  return p;
-}
-
-void*
-codegen_realloc(codegen_scope *s, void *p, size_t len)
-{
-  p = mrb_realloc(s->mrb, p, len);
-
-  if (!p && len > 0) codegen_error(s, "mrb_realloc");
-  return p;
-}
-
-static int
-new_label(codegen_scope *s)
-{
-  s->lastlabel = s->pc;
-  return s->pc;
-}
-
-static inline void
-genop(codegen_scope *s, mrb_code i)
-{
-  if (s->pc == s->icapa) {
-    s->icapa *= 2;
-    s->iseq = (mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->icapa);
-    if (s->lines) {
-      s->lines = (uint16_t*)codegen_realloc(s, s->lines, sizeof(short)*s->icapa);
-      s->irep->lines = s->lines;
-    }
-  }
-  s->iseq[s->pc] = i;
-  if (s->lines) {
-    s->lines[s->pc] = s->lineno;
-  }
-  s->pc++;
-}
-
-#define NOVAL  0
-#define VAL    1
-
-static void
-genop_peep(codegen_scope *s, mrb_code i, int val)
-{
-  /* peephole optimization */
-  if (s->lastlabel != s->pc && s->pc > 0) {
-    mrb_code i0 = s->iseq[s->pc-1];
-    int c1 = GET_OPCODE(i);
-    int c0 = GET_OPCODE(i0);
-
-    switch (c1) {
-    case OP_MOVE:
-      if (GETARG_A(i) == GETARG_B(i)) {
-        /* skip useless OP_MOVE */
-        return;
-      }
-      if (val) break;
-      switch (c0) {
-      case OP_MOVE:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i) == GETARG_B(i0) && GETARG_A(i) >= s->nlocals) {
-          /* skip swapping OP_MOVE */
-          return;
-        }
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_AB(OP_MOVE, GETARG_A(i), GETARG_B(i0));
-          return;
-        }
-        break;
-      case OP_LOADI:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_AsBx(OP_LOADI, GETARG_A(i), GETARG_sBx(i0));
-          return;
-        }
-        break;
-      case OP_ARRAY:
-      case OP_HASH:
-      case OP_RANGE:
-      case OP_AREF:
-      case OP_GETUPVAR:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_ABC(c0, GETARG_A(i), GETARG_B(i0), GETARG_C(i0));
-          return;
-        }
-        break;
-      case OP_LOADSYM:
-      case OP_GETGLOBAL:
-      case OP_GETIV:
-      case OP_GETCV:
-      case OP_GETCONST:
-      case OP_GETSPECIAL:
-      case OP_LOADL:
-      case OP_STRING:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_ABx(c0, GETARG_A(i), GETARG_Bx(i0));
-          return;
-        }
-        break;
-      case OP_SCLASS:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_AB(c0, GETARG_A(i), GETARG_B(i0));
-          return;
-        }
-        break;
-      case OP_LOADNIL:
-      case OP_LOADSELF:
-      case OP_LOADT:
-      case OP_LOADF:
-      case OP_OCLASS:
-        if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) {
-          s->iseq[s->pc-1] = MKOP_A(c0, GETARG_A(i));
-          return;
-        }
-        break;
-      default:
-        break;
-      }
-      break;
-    case OP_SETIV:
-    case OP_SETCV:
-    case OP_SETCONST:
-    case OP_SETMCNST:
-    case OP_SETGLOBAL:
-      if (val) break;
-      if (c0 == OP_MOVE) {
-        if (GETARG_A(i) == GETARG_A(i0)) {
-          s->iseq[s->pc-1] = MKOP_ABx(c1, GETARG_B(i0), GETARG_Bx(i));
-          return;
-        }
-      }
-      break;
-    case OP_SETUPVAR:
-      if (val) break;
-      if (c0 == OP_MOVE) {
-        if (GETARG_A(i) == GETARG_A(i0)) {
-          s->iseq[s->pc-1] = MKOP_ABC(c1, GETARG_B(i0), GETARG_B(i), GETARG_C(i));
-          return;
-        }
-      }
-      break;
-    case OP_EPOP:
-      if (c0 == OP_EPOP) {
-        s->iseq[s->pc-1] = MKOP_A(OP_EPOP, GETARG_A(i0)+GETARG_A(i));
-        return;
-      }
-      break;
-    case OP_POPERR:
-      if (c0 == OP_POPERR) {
-        s->iseq[s->pc-1] = MKOP_A(OP_POPERR, GETARG_A(i0)+GETARG_A(i));
-        return;
-      }
-      break;
-    case OP_RETURN:
-      switch (c0) {
-      case OP_RETURN:
-        return;
-      case OP_MOVE:
-        s->iseq[s->pc-1] = MKOP_AB(OP_RETURN, GETARG_B(i0), OP_R_NORMAL);
-        return;
-      case OP_SETIV:
-      case OP_SETCV:
-      case OP_SETCONST:
-      case OP_SETMCNST:
-      case OP_SETUPVAR:
-      case OP_SETGLOBAL:
-        s->pc--;
-        genop_peep(s, i0, NOVAL);
-        i0 = s->iseq[s->pc-1];
-        genop(s, MKOP_AB(OP_RETURN, GETARG_A(i0), OP_R_NORMAL));
-        return;
-#if 0
-      case OP_SEND:
-        if (GETARG_B(i) == OP_R_NORMAL && GETARG_A(i) == GETARG_A(i0)) {
-          s->iseq[s->pc-1] = MKOP_ABC(OP_TAILCALL, GETARG_A(i0), GETARG_B(i0), GETARG_C(i0));
-          return;
-        }
-        break;
-#endif
-      default:
-        break;
-      }
-      break;
-    case OP_ADD:
-    case OP_SUB:
-      if (c0 == OP_LOADI) {
-        int c = GETARG_sBx(i0);
-
-        if (c1 == OP_SUB) c = -c;
-        if (c > 127 || c < -127) break;
-        if (0 <= c)
-          s->iseq[s->pc-1] = MKOP_ABC(OP_ADDI, GETARG_A(i), GETARG_B(i), c);
-        else
-          s->iseq[s->pc-1] = MKOP_ABC(OP_SUBI, GETARG_A(i), GETARG_B(i), -c);
-        return;
-      }
-    case OP_STRCAT:
-      if (c0 == OP_STRING) {
-        int i = GETARG_Bx(i0);
-
-        if (mrb_type(s->irep->pool[i]) == MRB_TT_STRING &&
-            RSTRING_LEN(s->irep->pool[i]) == 0) {
-          s->pc--;
-          return;
-        }
-      }
-      break;
-    default:
-      break;
-    }
-  }
-  genop(s, i);
-}
-
-static void
-scope_error(codegen_scope *s)
-{
-  exit(EXIT_FAILURE);
-}
-
-static inline void
-dispatch(codegen_scope *s, int pc)
-{
-  int diff = s->pc - pc;
-  mrb_code i = s->iseq[pc];
-  int c = GET_OPCODE(i);
-
-  s->lastlabel = s->pc;
-  switch (c) {
-  case OP_JMP:
-  case OP_JMPIF:
-  case OP_JMPNOT:
-  case OP_ONERR:
-    break;
-  default:
-#ifdef ENABLE_STDIO
-    fprintf(stderr, "bug: dispatch on non JMP op\n");
-#endif
-    scope_error(s);
-    break;
-  }
-  s->iseq[pc] = MKOP_AsBx(c, GETARG_A(i), diff);
-}
-
-static void
-dispatch_linked(codegen_scope *s, int pc)
-{
-  mrb_code i;
-  int pos;
-
-  if (!pc) return;
-  for (;;) {
-    i = s->iseq[pc];
-    pos = GETARG_sBx(i);
-    dispatch(s, pc);
-    if (!pos) break;
-    pc = pos;
-  }
-}
-
-#define nregs_update do {if (s->sp > s->nregs) s->nregs = s->sp;} while (0)
-static void
-push_(codegen_scope *s)
-{
-  if (s->sp > 511) {
-    codegen_error(s, "too complex expression");
-  }
-  s->sp++;
-  nregs_update;
-}
-
-#define push() push_(s)
-#define pop_(s) ((s)->sp--)
-#define pop() pop_(s)
-#define pop_n(n) (s->sp-=(n))
-#define cursp() (s->sp)
-
-static inline int
-new_lit(codegen_scope *s, mrb_value val)
-{
-  size_t i;
-
-  switch (mrb_type(val)) {
-  case MRB_TT_STRING:
-    for (i=0; i<s->irep->plen; i++) {
-      mrb_value pv = s->irep->pool[i];
-      mrb_int len;
-
-      if (mrb_type(pv) != MRB_TT_STRING) continue;
-      if ((len = RSTRING_LEN(pv)) != RSTRING_LEN(val)) continue;
-      if (memcmp(RSTRING_PTR(pv), RSTRING_PTR(val), len) == 0)
-        return i;
-    }
-    break;
-  case MRB_TT_FLOAT:
-  default:
-    for (i=0; i<s->irep->plen; i++) {
-      if (mrb_obj_equal(s->mrb, s->irep->pool[i], val)) return i;
-    }
-    break;
-  }
-
-  if (s->irep->plen == s->pcapa) {
-    s->pcapa *= 2;
-    s->irep->pool = (mrb_value *)codegen_realloc(s, s->irep->pool, sizeof(mrb_value)*s->pcapa);
-  }
-  s->irep->pool[s->irep->plen] = val;
-  i = s->irep->plen++;
-
-  return i;
-}
-
-static inline int
-new_msym(codegen_scope *s, mrb_sym sym)
-{
-  size_t i, len;
-
-  len = s->irep->slen;
-  if (len > 256) len = 256;
-  for (i=0; i<len; i++) {
-    if (s->irep->syms[i] == sym) return i;
-    if (s->irep->syms[i] == 0) break;
-  }
-  if (i == 256) {
-    codegen_error(s, "too many symbols (max 256)");
-  }
-  s->irep->syms[i] = sym;
-  if (i == s->irep->slen) s->irep->slen++;
-  return i;
-}
-
-static inline int
-new_sym(codegen_scope *s, mrb_sym sym)
-{
-  size_t i;
-
-  for (i=0; i<s->irep->slen; i++) {
-    if (s->irep->syms[i] == sym) return i;
-  }
-  if (s->irep->slen > 125 && s->irep->slen < 256) {
-    s->irep->syms = (mrb_sym *)codegen_realloc(s, s->irep->syms, sizeof(mrb_sym)*65536);
-    for (i = 0; i < 256 - s->irep->slen; i++) {
-      static const mrb_sym mrb_sym_zero = { 0 };
-      s->irep->syms[i + s->irep->slen] = mrb_sym_zero;
-    }
-    s->irep->slen = 256;
-  }
-  s->irep->syms[s->irep->slen] = sym;
-  return s->irep->slen++;
-}
-
-static int
-node_len(node *tree)
-{
-  int n = 0;
-
-  while (tree) {
-    n++;
-    tree = tree->cdr;
-  }
-  return n;
-}
-
-#define sym(x) ((mrb_sym)(intptr_t)(x))
-#define lv_name(lv) sym((lv)->car)
-static int
-lv_idx(codegen_scope *s, mrb_sym id)
-{
-  node *lv = s->lv;
-  int n = 1;
-
-  while (lv) {
-    if (lv_name(lv) == id) return n;
-    n++;
-    lv = lv->cdr;
-  }
-  return 0;
-}
-
-static void
-for_body(codegen_scope *s, node *tree)
-{
-  codegen_scope *prev = s;
-  int idx, base = s->idx;
-  struct loopinfo *lp;
-  node *n2;
-  mrb_code c;
-
-  // generate receiver
-  codegen(s, tree->cdr->car, VAL);
-  // generate loop-block
-  s = scope_new(s->mrb, s, tree->car);
-  idx = s->idx;
-
-  lp = loop_push(s, LOOP_FOR);
-  lp->pc1 = new_label(s);
-
-  // generate loop variable
-  n2 = tree->car;
-  if (n2->car && !n2->car->cdr && !n2->cdr) {
-    genop(s, MKOP_Ax(OP_ENTER, 0x40000));
-    gen_assignment(s, n2->car->car, 1, NOVAL);
-  }
-  else {
-    genop(s, MKOP_Ax(OP_ENTER, 0x40000));
-    gen_vmassignment(s, n2, 1, VAL);
-  }
-  codegen(s, tree->cdr->cdr->car, VAL);
-  pop();
-  if (s->pc > 0) {
-    c = s->iseq[s->pc-1];
-    if (GET_OPCODE(c) != OP_RETURN || GETARG_B(c) != OP_R_NORMAL || s->pc == s->lastlabel)
-      genop_peep(s, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL), NOVAL);
-  }
-  loop_pop(s, NOVAL);
-  scope_finish(s);
-  s = prev;
-  genop(s, MKOP_Abc(OP_LAMBDA, cursp(), idx - base, OP_L_BLOCK));
-  pop();
-  idx = new_msym(s, mrb_intern2(s->mrb, "each", 4));
-  genop(s, MKOP_ABC(OP_SENDB, cursp(), idx, 0));
-}
-
-static int
-lambda_body(codegen_scope *s, node *tree, int blk)
-{
-  int idx, base = s->idx;
-  mrb_code c;
-
-  s = scope_new(s->mrb, s, tree->car);
-  idx = s->idx;
-  s->mscope = !blk;
-
-  if (blk) {
-    struct loopinfo *lp = loop_push(s, LOOP_BLOCK);
-    lp->pc1 = new_label(s);
-  }
-  tree = tree->cdr;
-  if (tree->car) {
-    mrb_aspec a;
-    int ma, oa, ra, pa, ka, kd, ba;
-    int pos, i;
-    node *n, *opt;
-
-    ma = node_len(tree->car->car);
-    n = tree->car->car;
-    while (n) {
-      n = n->cdr;
-    }
-    oa = node_len(tree->car->cdr->car);
-    ra = tree->car->cdr->cdr->car ? 1 : 0;
-    pa = node_len(tree->car->cdr->cdr->cdr->car);
-    ka = kd = 0;
-    ba = tree->car->cdr->cdr->cdr->cdr ? 1 : 0;
-
-    a = ((mrb_aspec)(ma & 0x1f) << 18)
-      | ((mrb_aspec)(oa & 0x1f) << 13)
-      | ((ra & 1) << 12)
-      | ((pa & 0x1f) << 7)
-      | ((ka & 0x1f) << 2)
-      | ((kd & 1)<< 1)
-      | (ba & 1);
-    s->ainfo = (((ma+oa) & 0x3f) << 6) /* (12bits = 6:1:5) */
-      | ((ra & 1) << 5)
-      | (pa & 0x1f);
-    genop(s, MKOP_Ax(OP_ENTER, a));
-    pos = new_label(s);
-    for (i=0; i<oa; i++) {
-      new_label(s);
-      genop(s, MKOP_sBx(OP_JMP, 0));
-    }
-    if (oa > 0) {
-      genop(s, MKOP_sBx(OP_JMP, 0));
-    }
-    opt = tree->car->cdr->car;
-    i = 0;
-    while (opt) {
-      int idx;
-
-      dispatch(s, pos+i);
-      codegen(s, opt->car->cdr, VAL);
-      idx = lv_idx(s, (mrb_sym)(intptr_t)opt->car->car);
-      pop();
-      genop_peep(s, MKOP_AB(OP_MOVE, idx, cursp()), NOVAL);
-      i++;
-      opt = opt->cdr;
-    }
-    if (oa > 0) {
-      dispatch(s, pos+i);
-    }
-  }
-  codegen(s, tree->cdr->car, VAL);
-  pop();
-  if (s->pc > 0) {
-    c = s->iseq[s->pc-1];
-    if (GET_OPCODE(c) != OP_RETURN || GETARG_B(c) != OP_R_NORMAL || s->pc == s->lastlabel) {
-      if (s->nregs == 0) {
-        genop(s, MKOP_A(OP_LOADNIL, 0));
-        genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL));
-      }
-      else {
-        genop_peep(s, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL), NOVAL);
-      }
-    }
-  }
-  if (blk) {
-    loop_pop(s, NOVAL);
-  }
-  scope_finish(s);
-
-  return idx - base;
-}
-
-static int
-scope_body(codegen_scope *s, node *tree)
-{
-  codegen_scope *scope = scope_new(s->mrb, s, tree->car);
-  int idx = scope->idx;
-
-  codegen(scope, tree->cdr, VAL);
-  if (!s->iseq) {
-    genop(scope, MKOP_A(OP_STOP, 0));
-  }
-  else {
-    if (scope->nregs == 0) {
-      genop(scope, MKOP_A(OP_LOADNIL, 0));
-      genop(scope, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL));
-    }
-    else {
-      genop_peep(scope, MKOP_AB(OP_RETURN, scope->sp, OP_R_NORMAL), NOVAL);
-    }
-  }
-  scope_finish(scope);
-
-  return idx - s->idx;
-}
-
-static mrb_bool
-nosplat(node *t)
-{
-  while (t) {
-    if ((intptr_t)t->car->car == NODE_SPLAT) return FALSE;
-    t = t->cdr;
-  }
-  return TRUE;
-}
-
-static mrb_sym
-attrsym(codegen_scope *s, mrb_sym a)
-{
-  const char *name;
-  size_t len;
-  char *name2;
-
-  name = mrb_sym2name_len(s->mrb, a, &len);
-  name2 = (char *)codegen_palloc(s, len+1);
-  memcpy(name2, name, len);
-  name2[len] = '=';
-  name2[len+1] = '\0';
-
-  return mrb_intern2(s->mrb, name2, len+1);
-}
-
-static int
-gen_values(codegen_scope *s, node *t, int val)
-{
-  int n = 0;
-
-  while (t) {
-    if (n >= 127 || (intptr_t)t->car->car == NODE_SPLAT) { // splat mode
-      if (val) {
-        pop_n(n);
-        genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), n));
-        push();
-        codegen(s, t->car, VAL);
-        pop(); pop();
-        genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1));
-        t = t->cdr;
-        while (t) {
-          push();
-          codegen(s, t->car, VAL);
-          pop(); pop();
-          if ((intptr_t)t->car->car == NODE_SPLAT) {
-            genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1));
-          }
-          else {
-            genop(s, MKOP_AB(OP_ARYPUSH, cursp(), cursp()+1));
-          }
-          t = t->cdr;
-        }
-      }
-      else {
-        codegen(s, t->car->cdr, NOVAL);
-        t = t->cdr;
-        while (t) {
-          codegen(s, t->car, NOVAL);
-          t = t->cdr;
-        }
-      }
-      return -1;
-    }
-    // normal (no splat) mode
-    codegen(s, t->car, val);
-    n++;
-    t = t->cdr;
-  }
-  return n;
-}
-
-#define CALL_MAXARGS 127
-
-static void
-gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val)
-{
-  mrb_sym sym = name ? name : sym(tree->cdr->car);
-  int idx;
-  int n = 0, noop = 0, sendv = 0, blk = 0;
-
-  codegen(s, tree->car, VAL); /* receiver */
-  idx = new_msym(s, sym);
-  tree = tree->cdr->cdr->car;
-  if (tree) {
-    n = gen_values(s, tree->car, VAL);
-    if (n < 0) {
-      n = noop = sendv = 1;
-      push();
-    }
-  }
-  if (sp) {
-    if (sendv) {
-      pop();
-      genop(s, MKOP_AB(OP_ARYPUSH, cursp(), sp));
-      push();
-    }
-    else {
-      genop(s, MKOP_AB(OP_MOVE, cursp(), sp));
-      push();
-      n++;
-    }
-  }
-  if (tree && tree->cdr) {
-    noop = 1;
-    codegen(s, tree->cdr, VAL);
-    pop();
-  }
-  else {
-    blk = cursp();
-  }
-  pop_n(n+1);
-  {
-    size_t len;
-    const char *name = mrb_sym2name_len(s->mrb, sym, &len);
-
-    if (!noop && len == 1 && name[0] == '+')  {
-      genop_peep(s, MKOP_ABC(OP_ADD, cursp(), idx, n), val);
-    }
-    else if (!noop && len == 1 && name[0] == '-')  {
-      genop_peep(s, MKOP_ABC(OP_SUB, cursp(), idx, n), val);
-    }
-    else if (!noop && len == 1 && name[0] == '*')  {
-      genop(s, MKOP_ABC(OP_MUL, cursp(), idx, n));
-    }
-    else if (!noop && len == 1 && name[0] == '/')  {
-      genop(s, MKOP_ABC(OP_DIV, cursp(), idx, n));
-    }
-    else if (!noop && len == 1 && name[0] == '<')  {
-      genop(s, MKOP_ABC(OP_LT, cursp(), idx, n));
-    }
-    else if (!noop && len == 2 && name[0] == '<' && name[1] == '=')  {
-      genop(s, MKOP_ABC(OP_LE, cursp(), idx, n));
-    }
-    else if (!noop && len == 1 && name[0] == '>')  {
-      genop(s, MKOP_ABC(OP_GT, cursp(), idx, n));
-    }
-    else if (!noop && len == 2 && name[0] == '>' && name[1] == '=')  {
-      genop(s, MKOP_ABC(OP_GE, cursp(), idx, n));
-    }
-    else if (!noop && len == 2 && name[0] == '=' && name[1] == '=')  {
-      genop(s, MKOP_ABC(OP_EQ, cursp(), idx, n));
-    }
-    else {
-      if (sendv) n = CALL_MAXARGS;
-      if (blk > 0) {                   /* no block */
-        genop(s, MKOP_ABC(OP_SEND, cursp(), idx, n));
-      }
-      else {
-        genop(s, MKOP_ABC(OP_SENDB, cursp(), idx, n));
-      }
-    }
-  }
-  if (val) {
-    push();
-  }
-}
-
-static void
-gen_assignment(codegen_scope *s, node *node, int sp, int val)
-{
-  int idx;
-  int type = (intptr_t)node->car;
-
-  node = node->cdr;
-  switch ((intptr_t)type) {
-  case NODE_GVAR:
-    idx = new_sym(s, sym(node));
-    genop_peep(s, MKOP_ABx(OP_SETGLOBAL, sp, idx), val);
-    break;
-  case NODE_LVAR:
-    idx = lv_idx(s, sym(node));
-    if (idx > 0) {
-      if (idx != sp) {
-        genop_peep(s, MKOP_AB(OP_MOVE, idx, sp), val);
-      }
-      break;
-    }
-    else {                      /* upvar */
-      int lv = 0;
-      codegen_scope *up = s->prev;
-
-      while (up) {
-        idx = lv_idx(up, sym(node));
-        if (idx > 0) {
-          genop_peep(s, MKOP_ABC(OP_SETUPVAR, sp, idx, lv), val);
-          break;
-        }
-        lv++;
-        up = up->prev;
-      }
-    }
-    break;
-  case NODE_IVAR:
-    idx = new_sym(s, sym(node));
-    genop_peep(s, MKOP_ABx(OP_SETIV, sp, idx), val);
-    break;
-  case NODE_CVAR:
-    idx = new_sym(s, sym(node));
-    genop_peep(s, MKOP_ABx(OP_SETCV, sp, idx), val);
-    break;
-  case NODE_CONST:
-    idx = new_sym(s, sym(node));
-    genop_peep(s, MKOP_ABx(OP_SETCONST, sp, idx), val);
-    break;
-  case NODE_COLON2:
-    idx = new_sym(s, sym(node->cdr));
-    genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), NOVAL);
-    push();
-    codegen(s, node->car, VAL);
-    pop_n(2);
-    genop_peep(s, MKOP_ABx(OP_SETMCNST, cursp(), idx), val);
-    break;
-
-  case NODE_CALL:
-    push();
-    gen_call(s, node, attrsym(s, sym(node->cdr->car)), sp, NOVAL);
-    pop();
-    if (val) {
-      genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), val);
-    }
-    break;
-
-  default:
-#ifdef ENABLE_STDIO
-    printf("unknown lhs %d\n", type);
-#endif
-    break;
-  }
-  if (val) push();
-}
-
-static void
-gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val)
-{
-  int n = 0, post = 0;
-  node *t, *p;
-
-  if (tree->car) {              /* pre */
-    t = tree->car;
-    n = 0;
-    while (t) {
-      genop(s, MKOP_ABC(OP_AREF, cursp(), rhs, n));
-      gen_assignment(s, t->car, cursp(), NOVAL);
-      n++;
-      t = t->cdr;
-    }
-  }
-  t = tree->cdr;
-  if (t) {
-    if (t->cdr) {               /* post count */
-      p = t->cdr->car;
-      while (p) {
-        post++;
-        p = p->cdr;
-      }
-    }
-    if (val) {
-      genop(s, MKOP_AB(OP_MOVE, cursp(), rhs));
-      push();
-    }
-    pop();
-    genop(s, MKOP_ABC(OP_APOST, cursp(), n, post));
-    n = 1;
-    if (t->car) {               /* rest */
-      gen_assignment(s, t->car, cursp(), NOVAL);
-    }
-    if (t->cdr && t->cdr->car) {
-      t = t->cdr->car;
-      while (t) {
-        gen_assignment(s, t->car, cursp()+n, NOVAL);
-        t = t->cdr;
-        n++;
-      }
-    }
-  }
-  else {
-    pop();
-  }
-}
-
-static void
-gen_send_intern(codegen_scope *s)
-{
-  pop();
-  genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern2(s->mrb, "intern", 6)), 0));
-  push();
-}
-static void
-gen_literal_array(codegen_scope *s, node *tree, int sym, int val)
-{
-  if (val) {
-    int i = 0, j = 0;
-
-    while (tree) {
-      switch ((intptr_t)tree->car->car) {
-      case NODE_STR:
-        if ((tree->cdr == NULL) && ((intptr_t)tree->car->cdr->cdr == 0))
-          break;
-        /* fall through */
-      case NODE_BEGIN:
-        codegen(s, tree->car, VAL);
-        ++j;
-        break;
-
-      case NODE_LITERAL_DELIM:
-        if (j > 0) {
-          j = 0;
-          ++i;
-          if (sym)
-            gen_send_intern(s);
-        }
-        break;
-      }
-      if (j >= 2) {
-        pop(); pop();
-        genop_peep(s, MKOP_AB(OP_STRCAT, cursp(), cursp()+1), VAL);
-        push();
-        j = 1;
-      }
-      tree = tree->cdr;
-    }
-    if (j > 0) {
-      ++i;
-      if (sym)
-        gen_send_intern(s);
-    }
-    pop_n(i);
-    genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), i));
-    push();
-  }
-  else {
-    while (tree) {
-      switch ((intptr_t)tree->car->car) {
-      case NODE_BEGIN: case NODE_BLOCK:
-        codegen(s, tree->car, NOVAL);
-      }
-      tree = tree->cdr;
-    }
-  }
-}
-
-static void
-raise_error(codegen_scope *s, const char *msg)
-{
-  int idx = new_lit(s, mrb_str_new_cstr(s->mrb, msg));
-
-  genop(s, MKOP_ABx(OP_ERR, 1, idx));
-}
-
-static double
-readint_float(codegen_scope *s, const char *p, int base)
-{
-  const char *e = p + strlen(p);
-  double f = 0;
-  int n;
-
-  if (*p == '+') p++;
-  while (p < e) {
-    char c = *p;
-    c = tolower((unsigned char)c);
-    for (n=0; n<base; n++) {
-      if (mrb_digitmap[n] == c) {
-        f *= base;
-        f += n;
-        break;
-      }
-    }
-    if (n == base) {
-      codegen_error(s, "malformed readint input");
-    }
-    p++;
-  }
-  return f;
-}
-
-static mrb_int
-readint_mrb_int(codegen_scope *s, const char *p, int base, int neg, int *overflow)
-{
-  const char *e = p + strlen(p);
-  mrb_int result = 0;
-  int n;
-
-  if (*p == '+') p++;
-  while (p < e) {
-    char c = *p;
-    c = tolower((unsigned char)c);
-    for (n=0; n<base; n++) {
-      if (mrb_digitmap[n] == c) {
-        break;
-      }
-    }
-    if (n == base) {
-      codegen_error(s, "malformed readint input");
-    }
-
-    if (neg) {
-      if ((MRB_INT_MIN + n)/base > result) {
-        *overflow = TRUE;
-        return 0;
-      }
-      result *= base;
-      result -= n;
-    }
-    else {
-      if ((MRB_INT_MAX - n)/base < result) {
-        *overflow = TRUE;
-        return 0;
-      }
-      result *= base;
-      result += n;
-    }
-    p++;
-  }
-  *overflow = FALSE;
-  return result;
-}
-
-static void
-codegen(codegen_scope *s, node *tree, int val)
-{
-  int nt;
-
-  if (!tree) return;
-
-  if (s->irep && s->pc > 0 && s->filename_index != tree->filename_index) {
-    s->irep->filename = mrb_parser_get_filename(s->parser, s->filename_index);
-    mrb_debug_info_append_file(s->mrb, s->irep, s->debug_start_pos, s->pc);
-    s->debug_start_pos = s->pc;
-    s->filename_index = tree->filename_index;
-    s->filename = mrb_parser_get_filename(s->parser, tree->filename_index);
-  }
-
-  nt = (intptr_t)tree->car;
-  s->lineno = tree->lineno;
-  tree = tree->cdr;
-  switch (nt) {
-  case NODE_BEGIN:
-    if (val && !tree) {
-      genop(s, MKOP_A(OP_LOADNIL, cursp()));
-      push();
-    }
-    while (tree) {
-      codegen(s, tree->car, tree->cdr ? NOVAL : val);
-      tree = tree->cdr;
-    }
-    break;
-
-  case NODE_RESCUE:
-    {
-      int onerr, noexc, exend, pos1, pos2, tmp;
-      struct loopinfo *lp;
-
-      onerr = new_label(s);
-      genop(s, MKOP_Bx(OP_ONERR, 0));
-      lp = loop_push(s, LOOP_BEGIN);
-      lp->pc1 = onerr;
-      if (tree->car) {
-        codegen(s, tree->car, val);
-        if (val) pop();
-      }
-      lp->type = LOOP_RESCUE;
-      noexc = new_label(s);
-      genop(s, MKOP_Bx(OP_JMP, 0));
-      dispatch(s, onerr);
-      tree = tree->cdr;
-      exend = 0;
-      pos1 = 0;
-      if (tree->car) {
-        node *n2 = tree->car;
-        int exc = cursp();
-
-        genop(s, MKOP_A(OP_RESCUE, exc));
-        push();
-        while (n2) {
-          node *n3 = n2->car;
-          node *n4 = n3->car;
-
-          if (pos1) dispatch(s, pos1);
-          pos2 = 0;
-          do {
-            if (n4) {
-              codegen(s, n4->car, VAL);
-            }
-            else {
-              genop(s, MKOP_ABx(OP_GETCONST, cursp(), new_msym(s, mrb_intern2(s->mrb, "StandardError", 13))));
-              push();
-            }
-            genop(s, MKOP_AB(OP_MOVE, cursp(), exc));
-            pop();
-            genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern2(s->mrb, "===", 3)), 1));
-            tmp = new_label(s);
-            genop(s, MKOP_AsBx(OP_JMPIF, cursp(), pos2));
-            pos2 = tmp;
-            if (n4) {
-              n4 = n4->cdr;
-            }
-          } while (n4);
-          pos1 = new_label(s);
-          genop(s, MKOP_sBx(OP_JMP, 0));
-          dispatch_linked(s, pos2);
-
-          pop();
-          if (n3->cdr->car) {
-            gen_assignment(s, n3->cdr->car, exc, NOVAL);
-          }
-          if (n3->cdr->cdr->car) {
-            codegen(s, n3->cdr->cdr->car, val);
-            if (val) pop();
-          }
-          tmp = new_label(s);
-          genop(s, MKOP_sBx(OP_JMP, exend));
-          exend = tmp;
-          n2 = n2->cdr;
-          push();
-        }
-        if (pos1) {
-          dispatch(s, pos1);
-          genop(s, MKOP_A(OP_RAISE, exc));
-        }
-      }
-      pop();
-      tree = tree->cdr;
-      dispatch(s, noexc);
-      genop(s, MKOP_A(OP_POPERR, 1));
-      if (tree->car) {
-        codegen(s, tree->car, val);
-      }
-      else if (val) {
-        push();
-      }
-      dispatch_linked(s, exend);
-      loop_pop(s, NOVAL);
-    }
-    break;
-
-  case NODE_ENSURE:
-    {
-      int idx;
-      int epush = s->pc;
-
-      genop(s, MKOP_Bx(OP_EPUSH, 0));
-      s->ensure_level++;
-      codegen(s, tree->car, val);
-      idx = scope_body(s, tree->cdr);
-      s->iseq[epush] = MKOP_Bx(OP_EPUSH, idx);
-      s->ensure_level--;
-      genop_peep(s, MKOP_A(OP_EPOP, 1), NOVAL);
-    }
-    break;
-
-  case NODE_LAMBDA:
-    {
-      int idx = lambda_body(s, tree, 1);
-
-      genop(s, MKOP_Abc(OP_LAMBDA, cursp(), idx, OP_L_LAMBDA));
-      push();
-    }
-    break;
-
-  case NODE_BLOCK:
-    {
-      int idx = lambda_body(s, tree, 1);
-
-      genop(s, MKOP_Abc(OP_LAMBDA, cursp(), idx, OP_L_BLOCK));
-      push();
-    }
-    break;
-
-  case NODE_IF:
-    {
-      int pos1, pos2;
-      node *e = tree->cdr->cdr->car;
-
-      codegen(s, tree->car, VAL);
-      pop();
-      pos1 = new_label(s);
-      genop(s, MKOP_AsBx(OP_JMPNOT, cursp(), 0));
-
-      codegen(s, tree->cdr->car, val);
-      if (val && !(tree->cdr->car)) {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-        push();
-      }
-      if (e) {
-        if (val) pop();
-        pos2 = new_label(s);
-        genop(s, MKOP_sBx(OP_JMP, 0));
-       dispatch(s, pos1);
-        codegen(s, e, val);
-        dispatch(s, pos2);
-      }
-      else {
-        if (val) {
-          pop();
-          pos2 = new_label(s);
-          genop(s, MKOP_sBx(OP_JMP, 0));
-          dispatch(s, pos1);
-          genop(s, MKOP_A(OP_LOADNIL, cursp()));
-          dispatch(s, pos2);
-          push();
-        }
-        else {
-          dispatch(s, pos1);
-        }
-      }
-    }
-    break;
-
-  case NODE_AND:
-    {
-      int pos;
-
-      codegen(s, tree->car, VAL);
-      pos = new_label(s);
-      pop();
-      genop(s, MKOP_AsBx(OP_JMPNOT, cursp(), 0));
-      codegen(s, tree->cdr, val);
-      dispatch(s, pos);
-    }
-    break;
-
-  case NODE_OR:
-    {
-      int pos;
-
-      codegen(s, tree->car, VAL);
-      pos = new_label(s);
-      pop();
-      genop(s, MKOP_AsBx(OP_JMPIF, cursp(), 0));
-      codegen(s, tree->cdr, val);
-      dispatch(s, pos);
-    }
-    break;
-
-  case NODE_WHILE:
-    {
-      struct loopinfo *lp = loop_push(s, LOOP_NORMAL);
-
-      lp->pc1 = new_label(s);
-      genop(s, MKOP_sBx(OP_JMP, 0));
-      lp->pc2 = new_label(s);
-      codegen(s, tree->cdr, NOVAL);
-      dispatch(s, lp->pc1);
-      codegen(s, tree->car, VAL);
-      pop();
-      genop(s, MKOP_AsBx(OP_JMPIF, cursp(), lp->pc2 - s->pc));
-
-      loop_pop(s, val);
-    }
-    break;
-
-  case NODE_UNTIL:
-    {
-      struct loopinfo *lp = loop_push(s, LOOP_NORMAL);
-
-      lp->pc1 = new_label(s);
-      genop(s, MKOP_sBx(OP_JMP, 0));
-      lp->pc2 = new_label(s);
-      codegen(s, tree->cdr, NOVAL);
-      dispatch(s, lp->pc1);
-      codegen(s, tree->car, VAL);
-      pop();
-      genop(s, MKOP_AsBx(OP_JMPNOT, cursp(), lp->pc2 - s->pc));
-
-      loop_pop(s, val);
-    }
-    break;
-
-  case NODE_FOR:
-    for_body(s, tree);
-    if (val) push();
-    break;
-
-  case NODE_CASE:
-    {
-      int head = 0;
-      int pos1, pos2, pos3, tmp;
-      node *n;
-
-      pos3 = 0;
-      if (tree->car) {
-        head = cursp();
-        codegen(s, tree->car, VAL);
-      }
-      tree = tree->cdr;
-      while (tree) {
-        n = tree->car->car;
-        pos1 = pos2 = 0;
-        while (n) {
-          codegen(s, n->car, VAL);
-          if (head) {
-            genop(s, MKOP_AB(OP_MOVE, cursp(), head));
-            pop();
-            genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern2(s->mrb, "===", 3)), 1));
-          }
-          else {
-            pop();
-          }
-          tmp = new_label(s);
-          genop(s, MKOP_AsBx(OP_JMPIF, cursp(), pos2));
-          pos2 = tmp;
-          n = n->cdr;
-        }
-        if (tree->car->car) {
-          pos1 = new_label(s);
-          genop(s, MKOP_sBx(OP_JMP, 0));
-          dispatch_linked(s, pos2);
-        }
-        codegen(s, tree->car->cdr, val);
-        if (val) pop();
-        tmp = new_label(s);
-        genop(s, MKOP_sBx(OP_JMP, pos3));
-        pos3 = tmp;
-        if (pos1) dispatch(s, pos1);
-        tree = tree->cdr;
-      }
-      if (val) {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-        push();
-      }
-      if (pos3) dispatch_linked(s, pos3);
-    }
-    break;
-
-  case NODE_SCOPE:
-    scope_body(s, tree);
-    break;
-
-  case NODE_FCALL:
-  case NODE_CALL:
-    gen_call(s, tree, 0, 0, val);
-    break;
-
-  case NODE_DOT2:
-    codegen(s, tree->car, val);
-    codegen(s, tree->cdr, val);
-    if (val) {
-      pop(); pop();
-      genop(s, MKOP_ABC(OP_RANGE, cursp(), cursp(), 0));
-      push();
-    }
-    break;
-
-  case NODE_DOT3:
-    codegen(s, tree->car, val);
-    codegen(s, tree->cdr, val);
-    if (val) {
-      pop(); pop();
-      genop(s, MKOP_ABC(OP_RANGE, cursp(), cursp(), 1));
-      push();
-    }
-    break;
-
-  case NODE_COLON2:
-    {
-      int sym = new_sym(s, sym(tree->cdr));
-
-      codegen(s, tree->car, VAL);
-      pop();
-      genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
-      if (val) push();
-    }
-    break;
-
-  case NODE_COLON3:
-    {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_A(OP_OCLASS, cursp()));
-      genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
-      if (val) push();
-    }
-    break;
-
-  case NODE_ARRAY:
-    {
-      int n;
-
-      n = gen_values(s, tree, val);
-      if (n >= 0) {
-        if (val) {
-          pop_n(n);
-          genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), n));
-          push();
-        }
-      }
-      else if (val) {
-        push();
-      }
-    }
-    break;
-
-  case NODE_HASH:
-    {
-      int len = 0;
-
-      while (tree) {
-        codegen(s, tree->car->car, val);
-        codegen(s, tree->car->cdr, val);
-        len++;
-        tree = tree->cdr;
-      }
-      if (val) {
-        pop_n(len*2);
-        genop(s, MKOP_ABC(OP_HASH, cursp(), cursp(), len));
-        push();
-      }
-    }
-    break;
-
-  case NODE_SPLAT:
-    codegen(s, tree, VAL);
-    break;
-
-  case NODE_ASGN:
-    codegen(s, tree->cdr, VAL);
-    pop();
-    gen_assignment(s, tree->car, cursp(), val);
-    break;
-
-  case NODE_MASGN:
-    {
-      int len = 0, n = 0, post = 0;
-      node *t = tree->cdr, *p;
-      int rhs = cursp();
-
-      if ((intptr_t)t->car == NODE_ARRAY && nosplat(t->cdr)) {
-        // fixed rhs
-        t = t->cdr;
-        while (t) {
-          codegen(s, t->car, VAL);
-          len++;
-          t = t->cdr;
-        }
-        tree = tree->car;
-        if (tree->car) {                /* pre */
-          t = tree->car;
-          n = 0;
-          while (t) {
-            gen_assignment(s, t->car, rhs+n, NOVAL);
-            n++;
-            t = t->cdr;
-          }
-        }
-        t = tree->cdr;
-        if (t) {
-          if (t->cdr) {         /* post count */
-            p = t->cdr->car;
-            while (p) {
-              post++;
-              p = p->cdr;
-            }
-          }
-          if (t->car) {         /* rest (len - pre - post) */
-            int rn = len - post - n;
-
-            genop(s, MKOP_ABC(OP_ARRAY, cursp(), rhs+n, rn));
-            gen_assignment(s, t->car, cursp(), NOVAL);
-            n += rn;
-          }
-          if (t->cdr && t->cdr->car) {
-            t = t->cdr->car;
-            while (n<len) {
-              gen_assignment(s, t->car, rhs+n, NOVAL);
-              t = t->cdr;
-              n++;
-            }
-          }
-        }
-        pop_n(len);
-        if (val) {
-          genop(s, MKOP_ABC(OP_ARRAY, rhs, rhs, len));
-          push();
-        }
-      }
-      else {
-        // variable rhs
-        codegen(s, t, VAL);
-        gen_vmassignment(s, tree->car, rhs, val);
-      }
-    }
-    break;
-
-  case NODE_OP_ASGN:
-    {
-      mrb_sym sym = sym(tree->cdr->car);
-      size_t len;
-      const char *name = mrb_sym2name_len(s->mrb, sym, &len);
-      int idx;
-
-      codegen(s, tree->car, VAL);
-      if (len == 2 &&
-          ((name[0] == '|' && name[1] == '|') ||
-           (name[0] == '&' && name[1] == '&'))) {
-        int pos;
-
-        pop();
-        pos = new_label(s);
-        genop(s, MKOP_AsBx(name[0] == '|' ? OP_JMPIF : OP_JMPNOT, cursp(), 0));
-        codegen(s, tree->cdr->cdr->car, VAL);
-        pop();
-        gen_assignment(s, tree->car, cursp(), val);
-        dispatch(s, pos);
-        break;
-      }
-      codegen(s, tree->cdr->cdr->car, VAL);
-      pop(); pop();
-
-      idx = new_msym(s, sym);
-      if (len == 1 && name[0] == '+')  {
-        genop_peep(s, MKOP_ABC(OP_ADD, cursp(), idx, 1), val);
-      }
-      else if (len == 1 && name[0] == '-')  {
-        genop_peep(s, MKOP_ABC(OP_SUB, cursp(), idx, 1), val);
-      }
-      else if (len == 1 && name[0] == '*')  {
-        genop(s, MKOP_ABC(OP_MUL, cursp(), idx, 1));
-      }
-      else if (len == 1 && name[0] == '/')  {
-        genop(s, MKOP_ABC(OP_DIV, cursp(), idx, 1));
-      }
-      else if (len == 1 && name[0] == '<')  {
-        genop(s, MKOP_ABC(OP_LT, cursp(), idx, 1));
-      }
-      else if (len == 2 && name[0] == '<' && name[1] == '=')  {
-        genop(s, MKOP_ABC(OP_LE, cursp(), idx, 1));
-      }
-      else if (len == 1 && name[0] == '>')  {
-        genop(s, MKOP_ABC(OP_GT, cursp(), idx, 1));
-      }
-      else if (len == 2 && name[0] == '>' && name[1] == '=')  {
-        genop(s, MKOP_ABC(OP_GE, cursp(), idx, 1));
-      }
-      else {
-        genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 1));
-      }
-    }
-    gen_assignment(s, tree->car, cursp(), val);
-    break;
-
-  case NODE_SUPER:
-    {
-      int n = 0, noop = 0, sendv = 0;
-
-      push();        /* room for receiver */
-      if (tree) {
-        node *args = tree->car;
-        if (args) {
-          n = gen_values(s, args, VAL);
-          if (n < 0) {
-            n = noop = sendv = 1;
-            push();
-          }
-        }
-      }
-      if (tree && tree->cdr) {
-        codegen(s, tree->cdr, VAL);
-        pop();
-      }
-      else {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-      }
-      pop_n(n+1);
-      if (sendv) n = CALL_MAXARGS;
-      genop(s, MKOP_ABC(OP_SUPER, cursp(), 0, n));
-      if (val) push();
-    }
-    break;
-
-  case NODE_ZSUPER:
-    {
-      codegen_scope *s2 = s;
-      int lv = 0, ainfo = 0;
-
-      push();        /* room for receiver */
-      while (!s2->mscope) {
-        lv++;
-        s2 = s2->prev;
-        if (!s2) break;
-      }
-      if (s2) ainfo = s2->ainfo;
-      genop(s, MKOP_ABx(OP_ARGARY, cursp(), (ainfo<<4)|(lv & 0xf)));
-      if (tree && tree->cdr) {
-        push();
-        codegen(s, tree->cdr, VAL);
-        pop_n(2);
-      }
-      pop();
-      genop(s, MKOP_ABC(OP_SUPER, cursp(), 0, CALL_MAXARGS));
-      if (val) push();
-    }
-    break;
-
-  case NODE_RETURN:
-    if (tree) {
-      codegen(s, tree, VAL);
-      pop();
-    }
-    else {
-      genop(s, MKOP_A(OP_LOADNIL, cursp()));
-    }
-    if (s->loop) {
-      genop(s, MKOP_AB(OP_RETURN, cursp(), OP_R_RETURN));
-    }
-    else {
-      genop_peep(s, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL), NOVAL);
-    }
-    if (val) push();
-    break;
-
-  case NODE_YIELD:
-    {
-      codegen_scope *s2 = s;
-      int lv = 0, ainfo = 0;
-      int n = 0, sendv = 0;
-
-      while (!s2->mscope) {
-        lv++;
-        s2 = s2->prev;
-        if (!s2) break;
-      }
-      if (s2) ainfo = s2->ainfo;
-      genop(s, MKOP_ABx(OP_BLKPUSH, cursp(), (ainfo<<4)|(lv & 0xf)));
-      push();
-      if (tree) {
-        n = gen_values(s, tree, VAL);
-        if (n < 0) {
-          n = sendv = 1;
-          push();
-        }
-      }
-      pop_n(n+1);
-      if (sendv) n = CALL_MAXARGS;
-      genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern2(s->mrb, "call", 4)), n));
-      if (val) push();
-    }
-    break;
-
-  case NODE_BREAK:
-    loop_break(s, tree);
-    if (val) push();
-    break;
-
-  case NODE_NEXT:
-    if (!s->loop) {
-      raise_error(s, "unexpected next");
-    }
-    else if (s->loop->type == LOOP_NORMAL) {
-      if (s->ensure_level > s->loop->ensure_level) {
-        genop_peep(s, MKOP_A(OP_EPOP, s->ensure_level - s->loop->ensure_level), NOVAL);
-      }
-      codegen(s, tree, NOVAL);
-      genop(s, MKOP_sBx(OP_JMP, s->loop->pc1 - s->pc));
-    }
-    else {
-      if (tree) {
-        codegen(s, tree, VAL);
-        pop();
-      }
-      else {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-      }
-      genop_peep(s, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL), NOVAL);
-    }
-    if (val) push();
-    break;
-
-  case NODE_REDO:
-    if (!s->loop) {
-      raise_error(s, "unexpected redo");
-    }
-    else {
-      if (s->ensure_level > s->loop->ensure_level) {
-        genop_peep(s, MKOP_A(OP_EPOP, s->ensure_level - s->loop->ensure_level), NOVAL);
-      }
-      genop(s, MKOP_sBx(OP_JMP, s->loop->pc2 - s->pc));
-    }
-    break;
-
-  case NODE_RETRY:
-    {
-      const char *msg = "unexpected retry";
-
-      if (!s->loop) {
-        raise_error(s, msg);
-      }
-      else {
-        struct loopinfo *lp = s->loop;
-        int n = 0;
-
-        while (lp && lp->type != LOOP_RESCUE) {
-          if (lp->type == LOOP_BEGIN) {
-            n++;
-          }
-          lp = lp->prev;
-        }
-        if (!lp) {
-          raise_error(s, msg);
-        }
-        else {
-          if (n > 0) {
-            while (n--) {
-              genop_peep(s, MKOP_A(OP_POPERR, 1), NOVAL);
-            }
-          }
-          if (s->ensure_level > lp->ensure_level) {
-            genop_peep(s, MKOP_A(OP_EPOP, s->ensure_level - lp->ensure_level), NOVAL);
-          }
-          genop(s, MKOP_sBx(OP_JMP, lp->pc1 - s->pc));
-        }
-      }
-    }
-    break;
-
-  case NODE_LVAR:
-    if (val) {
-      int idx = lv_idx(s, sym(tree));
-
-      if (idx > 0) {
-        genop(s, MKOP_AB(OP_MOVE, cursp(), idx));
-      }
-      else {
-        int lv = 0;
-        codegen_scope *up = s->prev;
-
-        while (up) {
-          idx = lv_idx(up, sym(tree));
-          if (idx > 0) {
-            genop(s, MKOP_ABC(OP_GETUPVAR, cursp(), idx, lv));
-            break;
-          }
-          lv++;
-          up = up->prev;
-        }
-      }
-      push();
-    }
-    break;
-
-  case NODE_GVAR:
-    {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_IVAR:
-    {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_ABx(OP_GETIV, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_CVAR:
-    {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_ABx(OP_GETCV, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_CONST:
-    {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_ABx(OP_GETCONST, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_DEFINED:
-    codegen(s, tree, VAL);
-    break;
-
-  case NODE_BACK_REF:
-    {
-      char buf[2] = { '$' };
-      mrb_value str;
-      int sym;
-
-      buf[1] = (char)(intptr_t)tree;
-      str = mrb_str_new(s->mrb, buf, 2);
-      sym = new_sym(s, mrb_intern_str(s->mrb, str));
-      genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_NTH_REF:
-    {
-      int sym;
-      mrb_state *mrb = s->mrb;
-      mrb_value fix = mrb_fixnum_value((intptr_t)tree);
-      mrb_value str = mrb_str_buf_new(mrb, 4);
-
-      mrb_str_buf_cat(mrb, str, "$", 1);
-      mrb_str_buf_append(mrb, str, mrb_fixnum_to_str(mrb, fix, 10));
-      sym = new_sym(s, mrb_intern_str(mrb, str));
-      genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_ARG:
-    // should not happen
-    break;
-
-  case NODE_BLOCK_ARG:
-    codegen(s, tree, VAL);
-    break;
-
-  case NODE_INT:
-    if (val) {
-      char *p = (char*)tree->car;
-      int base = (intptr_t)tree->cdr->car;
-      mrb_int i;
-      mrb_code co;
-      int overflow;
-
-      i = readint_mrb_int(s, p, base, FALSE, &overflow);
-      if (overflow) {
-        double f = readint_float(s, p, base);
-        int off = new_lit(s, mrb_float_value(s->mrb, f));
-
-        genop(s, MKOP_ABx(OP_LOADL, cursp(), off));
-      }
-      else {
-        if (i < MAXARG_sBx && i > -MAXARG_sBx) {
-          co = MKOP_AsBx(OP_LOADI, cursp(), i);
-        }
-        else {
-          int off = new_lit(s, mrb_fixnum_value(i));
-          co = MKOP_ABx(OP_LOADL, cursp(), off);
-        }
-        genop(s, co);
-      }
-      push();
-    }
-    break;
-
-  case NODE_FLOAT:
-    if (val) {
-      char *p = (char*)tree;
-      mrb_float f = str_to_mrb_float(p);
-      int off = new_lit(s, mrb_float_value(s->mrb, f));
-
-      genop(s, MKOP_ABx(OP_LOADL, cursp(), off));
-      push();
-    }
-    break;
-
-  case NODE_NEGATE:
-    {
-      nt = (intptr_t)tree->car;
-      tree = tree->cdr;
-      switch (nt) {
-      case NODE_FLOAT:
-        {
-          char *p = (char*)tree;
-          mrb_float f = str_to_mrb_float(p);
-          int off = new_lit(s, mrb_float_value(s->mrb, -f));
-
-          genop(s, MKOP_ABx(OP_LOADL, cursp(), off));
-          push();
-        }
-        break;
-
-      case NODE_INT:
-        {
-          char *p = (char*)tree->car;
-          int base = (intptr_t)tree->cdr->car;
-          mrb_int i;
-          mrb_code co;
-          int overflow;
-
-          i = readint_mrb_int(s, p, base, TRUE, &overflow);
-          if (overflow) {
-            double f = readint_float(s, p, base);
-            int off = new_lit(s, mrb_float_value(s->mrb, -f));
-
-            genop(s, MKOP_ABx(OP_LOADL, cursp(), off));
-          }
-          else {
-            if (i < MAXARG_sBx && i > -MAXARG_sBx) {
-              co = MKOP_AsBx(OP_LOADI, cursp(), i);
-            }
-            else {
-              int off = new_lit(s, mrb_fixnum_value(i));
-              co = MKOP_ABx(OP_LOADL, cursp(), off);
-            }
-            genop(s, co);
-          }
-          push();
-        }
-        break;
-
-      default:
-        {
-          int sym = new_msym(s, mrb_intern2(s->mrb, "-", 1));
-
-          genop(s, MKOP_ABx(OP_LOADI, cursp(), 0));
-          push();
-          codegen(s, tree, VAL);
-          pop(); pop();
-          genop(s, MKOP_ABC(OP_SUB, cursp(), sym, 2));
-        }
-        break;
-      }
-    }
-    break;
-
-  case NODE_STR:
-    if (val) {
-      char *p = (char*)tree->car;
-      size_t len = (intptr_t)tree->cdr;
-      int ai = mrb_gc_arena_save(s->mrb);
-      int off = new_lit(s, mrb_str_new(s->mrb, p, len));
-
-      mrb_gc_arena_restore(s->mrb, ai);
-      genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-      push();
-    }
-    break;
-
-  case NODE_HEREDOC:
-    tree = ((struct mrb_parser_heredoc_info *)tree)->doc;
-    /* fall through */
-  case NODE_DSTR:
-    if (val) {
-      node *n = tree;
-
-      codegen(s, n->car, VAL);
-      n = n->cdr;
-      while (n) {
-        codegen(s, n->car, VAL);
-        pop(); pop();
-        genop_peep(s, MKOP_AB(OP_STRCAT, cursp(), cursp()+1), VAL);
-        push();
-        n = n->cdr;
-      }
-    }
-    else {
-      node *n = tree;
-
-      while (n) {
-        if ((intptr_t)n->car->car != NODE_STR) {
-          codegen(s, n->car, NOVAL);
-        }
-        n = n->cdr;
-      }
-    }
-    break;
-
-  case NODE_WORDS:
-    gen_literal_array(s, tree, FALSE, val);
-    break;
-
-  case NODE_SYMBOLS:
-    gen_literal_array(s, tree, TRUE, val);
-    break;
-
-  case NODE_XSTR:
-    if (val) {
-      char *p = (char*)tree->car;
-      size_t len = (intptr_t)tree->cdr;
-      int ai = mrb_gc_arena_save(s->mrb);
-      int sym = new_sym(s, mrb_intern2(s->mrb, "Kernel", 6));
-      int off = new_lit(s, mrb_str_new(s->mrb, p, len));
-
-      genop(s, MKOP_A(OP_OCLASS, cursp()));
-      genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
-      push();
-      genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-      pop();
-      sym = new_sym(s, mrb_intern2(s->mrb, "`", 1));
-      genop(s, MKOP_ABC(OP_SEND, cursp(), sym, 1));
-      mrb_gc_arena_restore(s->mrb, ai);
-      push();
-    }
-    break;
-
-  case NODE_REGX:
-    if (val) {
-      char *p1 = (char*)tree->car;
-      char *p2 = (char*)tree->cdr;
-      int ai = mrb_gc_arena_save(s->mrb);
-      int sym = new_sym(s, mrb_intern2(s->mrb, REGEXP_CLASS, REGEXP_CLASS_CSTR_LEN));
-      int off = new_lit(s, mrb_str_new(s->mrb, p1, strlen(p1)));
-      int argc = 1;
-
-      genop(s, MKOP_A(OP_OCLASS, cursp()));
-      genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
-      push();
-      genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-      if (p2) {
-        push();
-        off = new_lit(s, mrb_str_new(s->mrb, p2, strlen(p2)));
-        genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-        argc++;
-        pop();
-      }
-      pop();
-      sym = new_sym(s, mrb_intern2(s->mrb, "compile", 7));
-      genop(s, MKOP_ABC(OP_SEND, cursp(), sym, argc));
-      mrb_gc_arena_restore(s->mrb, ai);
-      push();
-    }
-    break;
-
-  case NODE_DREGX:
-    if (val) {
-      node *n = tree->car;
-      int ai = mrb_gc_arena_save(s->mrb);
-      int sym = new_sym(s, mrb_intern2(s->mrb, REGEXP_CLASS, REGEXP_CLASS_CSTR_LEN));
-      int argc = 1;
-      int off;
-      char *p;
-
-      genop(s, MKOP_A(OP_OCLASS, cursp()));
-      genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
-      push();
-      codegen(s, n->car, VAL);
-      n = n->cdr;
-      while (n) {
-        codegen(s, n->car, VAL);
-        pop(); pop();
-        genop_peep(s, MKOP_AB(OP_STRCAT, cursp(), cursp()+1), VAL);
-        push();
-        n = n->cdr;
-      }
-      n = tree->cdr->cdr;
-      if (n->car) {
-        p = (char*)n->car;
-        off = new_lit(s, mrb_str_new(s->mrb, p, strlen(p)));
-        codegen(s, tree->car, VAL);
-        genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-        pop();
-        genop_peep(s, MKOP_AB(OP_STRCAT, cursp(), cursp()+1), VAL);
-      }
-      if (n->cdr) {
-        char *p2 = (char*)n->cdr;
-        int off;
-
-        push();
-        off = new_lit(s, mrb_str_new(s->mrb, p2, strlen(p2)));
-        genop(s, MKOP_ABx(OP_STRING, cursp(), off));
-        argc++;
-        pop();
-      }
-      pop();
-      sym = new_sym(s, mrb_intern2(s->mrb, "compile", 7));
-      genop(s, MKOP_ABC(OP_SEND, cursp(), sym, argc));
-      mrb_gc_arena_restore(s->mrb, ai);
-      push();
-    }
-    else {
-      node *n = tree->car;
-
-      while (n) {
-        if ((intptr_t)n->car->car != NODE_STR) {
-          codegen(s, n->car, NOVAL);
-        }
-        n = n->cdr;
-      }
-    }
-    break;
-
-  case NODE_SYM:
-    if (val) {
-      int sym = new_sym(s, sym(tree));
-
-      genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
-      push();
-    }
-    break;
-
-  case NODE_DSYM:
-    codegen(s, tree, val);
-    if (val) {
-      gen_send_intern(s);
-    }
-    break;
-
-  case NODE_SELF:
-    if (val) {
-      genop(s, MKOP_A(OP_LOADSELF, cursp()));
-      push();
-    }
-    break;
-
-  case NODE_NIL:
-    if (val) {
-      genop(s, MKOP_A(OP_LOADNIL, cursp()));
-      push();
-    }
-    break;
-
-  case NODE_TRUE:
-    if (val) {
-      genop(s, MKOP_A(OP_LOADT, cursp()));
-      push();
-    }
-    break;
-
-  case NODE_FALSE:
-    if (val) {
-      genop(s, MKOP_A(OP_LOADF, cursp()));
-      push();
-    }
-    break;
-
-  case NODE_ALIAS:
-    {
-      int a = new_msym(s, sym(tree->car));
-      int b = new_msym(s, sym(tree->cdr));
-      int c = new_msym(s, mrb_intern2(s->mrb, "alias_method", 12));
-
-      genop(s, MKOP_A(OP_TCLASS, cursp()));
-      push();
-      genop(s, MKOP_ABx(OP_LOADSYM, cursp(), a));
-      push();
-      genop(s, MKOP_ABx(OP_LOADSYM, cursp(), b));
-      push();
-      genop(s, MKOP_A(OP_LOADNIL, cursp()));
-      pop_n(3);
-      genop(s, MKOP_ABC(OP_SEND, cursp(), c, 2));
-      if (val) {
-        push();
-      }
-    }
-   break;
-
-  case NODE_UNDEF:
-    {
-      int undef = new_msym(s, mrb_intern2(s->mrb, "undef_method", 12));
-      int num = 0;
-      node *t = tree;
-
-      genop(s, MKOP_A(OP_TCLASS, cursp()));
-      push();
-      while (t) {
-        int symbol = new_msym(s, sym(t->car));
-        genop(s, MKOP_ABx(OP_LOADSYM, cursp(), symbol));
-        push();
-        t = t->cdr;
-        num++;
-      }
-      pop_n(num + 1);
-      genop(s, MKOP_ABC(OP_SEND, cursp(), undef, num));
-      if (val) {
-        push();
-      }
-    }
-    break;
-
-  case NODE_CLASS:
-    {
-      int idx;
-
-      if (tree->car->car == (node*)0) {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-        push();
-      }
-      else if (tree->car->car == (node*)1) {
-        genop(s, MKOP_A(OP_OCLASS, cursp()));
-        push();
-      }
-      else {
-        codegen(s, tree->car->car, VAL);
-      }
-      if (tree->cdr->car) {
-        codegen(s, tree->cdr->car, VAL);
-      }
-      else {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-        push();
-      }
-      pop(); pop();
-      idx = new_msym(s, sym(tree->car->cdr));
-      genop(s, MKOP_AB(OP_CLASS, cursp(), idx));
-      idx = scope_body(s, tree->cdr->cdr->car);
-      genop(s, MKOP_ABx(OP_EXEC, cursp(), idx));
-      if (val) {
-        push();
-      }
-    }
-    break;
-
-  case NODE_MODULE:
-    {
-      int idx;
-
-      if (tree->car->car == (node*)0) {
-        genop(s, MKOP_A(OP_LOADNIL, cursp()));
-        push();
-      }
-      else if (tree->car->car == (node*)1) {
-        genop(s, MKOP_A(OP_OCLASS, cursp()));
-        push();
-      }
-      else {
-        codegen(s, tree->car->car, VAL);
-      }
-      pop();
-      idx = new_msym(s, sym(tree->car->cdr));
-      genop(s, MKOP_AB(OP_MODULE, cursp(), idx));
-      idx = scope_body(s, tree->cdr->car);
-      genop(s, MKOP_ABx(OP_EXEC, cursp(), idx));
-      if (val) {
-        push();
-      }
-    }
-    break;
-
-  case NODE_SCLASS:
-    {
-      int idx;
-
-      codegen(s, tree->car, VAL);
-      pop();
-      genop(s, MKOP_AB(OP_SCLASS, cursp(), cursp()));
-      idx = scope_body(s, tree->cdr->car);
-      genop(s, MKOP_ABx(OP_EXEC, cursp(), idx));
-      if (val) {
-        push();
-      }
-    }
-    break;
-
-  case NODE_DEF:
-    {
-      int sym = new_msym(s, sym(tree->car));
-      int idx = lambda_body(s, tree->cdr, 0);
-
-      genop(s, MKOP_A(OP_TCLASS, cursp()));
-      push();
-      genop(s, MKOP_Abc(OP_LAMBDA, cursp(), idx, OP_L_METHOD));
-      pop();
-      genop(s, MKOP_AB(OP_METHOD, cursp(), sym));
-      if (val) {
-        genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
-        push();
-      }
-    }
-    break;
-
-  case NODE_SDEF:
-    {
-      node *recv = tree->car;
-      int sym = new_msym(s, sym(tree->cdr->car));
-      int idx = lambda_body(s, tree->cdr->cdr, 0);
-
-      codegen(s, recv, VAL);
-      pop();
-      genop(s, MKOP_AB(OP_SCLASS, cursp(), cursp()));
-      push();
-      genop(s, MKOP_Abc(OP_LAMBDA, cursp(), idx, OP_L_METHOD));
-      pop();
-      genop(s, MKOP_AB(OP_METHOD, cursp(), sym));
-      if (val) {
-        genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
-        push();
-      }
-    }
-    break;
-
-  case NODE_POSTEXE:
-    codegen(s, tree, NOVAL);
-    break;
-
-  default:
-    break;
-  }
-}
-
-static codegen_scope*
-scope_new(mrb_state *mrb, codegen_scope *prev, node *lv)
-{
-  static const codegen_scope codegen_scope_zero = { 0 };
-  mrb_pool *pool = mrb_pool_open(mrb);
-  codegen_scope *p = (codegen_scope *)mrb_pool_alloc(pool, sizeof(codegen_scope));
-
-  if (!p) return 0;
-  *p = codegen_scope_zero;
-  p->mrb = mrb;
-  p->mpool = pool;
-  if (!prev) return p;
-  p->prev = prev;
-  p->ainfo = -1;
-  p->mscope = 0;
-
-  p->irep = mrb_add_irep(mrb);
-  p->idx = p->irep->idx;
-
-  p->icapa = 1024;
-  p->iseq = (mrb_code*)mrb_malloc(mrb, sizeof(mrb_code)*p->icapa);
-
-  p->pcapa = 32;
-  p->irep->pool = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value)*p->pcapa);
-  p->irep->plen = 0;
-
-  p->scapa = 256;
-  p->irep->syms = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym)*256);
-  p->irep->slen = 0;
-
-  p->lv = lv;
-  p->sp += node_len(lv)+1;        /* add self */
-  p->nlocals = p->sp;
-  p->ai = mrb_gc_arena_save(mrb);
-
-  p->filename = prev->filename;
-  if (p->filename) {
-    p->lines = (uint16_t*)mrb_malloc(mrb, sizeof(short)*p->icapa);
-  }
-  p->lineno = prev->lineno;
-
-  // debug setting
-  p->debug_start_pos = 0;
-  if(p->filename) {
-    mrb_debug_info_alloc(mrb, p->irep);
-    p->irep->filename = p->filename;
-    p->irep->lines = p->lines;
-  }
-  else {
-    p->irep->debug_info = NULL;
-  }
-  p->parser = prev->parser;
-  p->filename_index = prev->filename_index;
-
-  return p;
-}
-
-static void
-scope_finish(codegen_scope *s)
-{
-  mrb_state *mrb = s->mrb;
-  mrb_irep *irep = s->irep;
-  size_t fname_len;
-  char *fname;
-
-  irep->flags = 0;
-  if (s->iseq) {
-    irep->iseq = (mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc);
-    irep->ilen = s->pc;
-    if (s->lines) {
-      irep->lines = (uint16_t *)codegen_realloc(s, s->lines, sizeof(uint16_t)*s->pc);
-    }
-    else {
-      irep->lines = 0;
-    }
-  }
-  irep->pool = (mrb_value *)codegen_realloc(s, irep->pool, sizeof(mrb_value)*irep->plen);
-  irep->syms = (mrb_sym *)codegen_realloc(s, irep->syms, sizeof(mrb_sym)*irep->slen);
-  if (s->filename) {
-    s->irep->filename = mrb_parser_get_filename(s->parser, s->filename_index);
-    mrb_debug_info_append_file(mrb, s->irep, s->debug_start_pos, s->pc);
-
-    fname_len = strlen(s->filename);
-    fname = codegen_malloc(s, fname_len + 1);
-    memcpy(fname, s->filename, fname_len);
-    fname[fname_len] = '\0';
-    irep->filename = fname;
-  }
-
-  irep->nlocals = s->nlocals;
-  irep->nregs = s->nregs;
-
-  mrb_gc_arena_restore(mrb, s->ai);
-  mrb_pool_close(s->mpool);
-}
-
-static struct loopinfo*
-loop_push(codegen_scope *s, enum looptype t)
-{
-  struct loopinfo *p = (struct loopinfo *)codegen_palloc(s, sizeof(struct loopinfo));
-
-  p->type = t;
-  p->pc1 = p->pc2 = p->pc3 = 0;
-  p->prev = s->loop;
-  p->ensure_level = s->ensure_level;
-  p->acc = cursp();
-  s->loop = p;
-
-  return p;
-}
-
-static void
-loop_break(codegen_scope *s, node *tree)
-{
-  if (!s->loop) {
-    codegen(s, tree, NOVAL);
-    raise_error(s, "unexpected break");
-  }
-  else {
-    struct loopinfo *loop;
-
-    if (tree) {
-      codegen(s, tree, VAL);
-      pop();
-    }
-
-    loop = s->loop;
-    while (loop->type == LOOP_BEGIN) {
-      genop_peep(s, MKOP_A(OP_POPERR, 1), NOVAL);
-      loop = loop->prev;
-    }
-    while (loop->type == LOOP_RESCUE) {
-      loop = loop->prev;
-    }
-    if (loop->type == LOOP_NORMAL) {
-      int tmp;
-
-      if (s->ensure_level > s->loop->ensure_level) {
-        genop_peep(s, MKOP_A(OP_EPOP, s->ensure_level - s->loop->ensure_level), NOVAL);
-      }
-      if (tree) {
-        genop_peep(s, MKOP_AB(OP_MOVE, loop->acc, cursp()), NOVAL);
-      }
-      tmp = new_label(s);
-      genop(s, MKOP_sBx(OP_JMP, loop->pc3));
-      loop->pc3 = tmp;
-    }
-    else {
-      genop(s, MKOP_AB(OP_RETURN, cursp(), OP_R_BREAK));
-    }
-  }
-}
-
-static void
-loop_pop(codegen_scope *s, int val)
-{
-  if (val) {
-    genop(s, MKOP_A(OP_LOADNIL, cursp()));
-  }
-  dispatch_linked(s, s->loop->pc3);
-  s->loop = s->loop->prev;
-  if (val) push();
-}
-
-static void
-codedump(mrb_state *mrb, int n)
-{
-#ifdef ENABLE_STDIO
-  mrb_irep *irep = mrb->irep[n];
-  uint32_t i;
-  int ai;
-  mrb_code c;
-
-  if (!irep) return;
-  printf("irep %d nregs=%d nlocals=%d pools=%d syms=%d\n", n,
-         irep->nregs, irep->nlocals, (int)irep->plen, (int)irep->slen);
-  for (i=0; i<irep->ilen; i++) {
-    ai = mrb_gc_arena_save(mrb);
-    printf("%03d ", i);
-    c = irep->iseq[i];
-    switch (GET_OPCODE(c)) {
-    case OP_NOP:
-      printf("OP_NOP\n");
-      break;
-    case OP_MOVE:
-      printf("OP_MOVE\tR%d\tR%d\n", GETARG_A(c), GETARG_B(c));
-      break;
-    case OP_LOADL:
-      printf("OP_LOADL\tR%d\tL(%d)\n", GETARG_A(c), GETARG_Bx(c));
-      break;
-    case OP_LOADI:
-      printf("OP_LOADI\tR%d\t%d\n", GETARG_A(c), GETARG_sBx(c));
-      break;
-    case OP_LOADSYM:
-      printf("OP_LOADSYM\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_LOADNIL:
-      printf("OP_LOADNIL\tR%d\n", GETARG_A(c));
-      break;
-    case OP_LOADSELF:
-      printf("OP_LOADSELF\tR%d\n", GETARG_A(c));
-      break;
-    case OP_LOADT:
-      printf("OP_LOADT\tR%d\n", GETARG_A(c));
-      break;
-    case OP_LOADF:
-      printf("OP_LOADF\tR%d\n", GETARG_A(c));
-      break;
-    case OP_GETGLOBAL:
-      printf("OP_GETGLOBAL\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_SETGLOBAL:
-      printf("OP_SETGLOBAL\t:%s\tR%d\n",
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
-             GETARG_A(c));
-      break;
-    case OP_GETCONST:
-      printf("OP_GETCONST\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_SETCONST:
-      printf("OP_SETCONST\t:%s\tR%d\n",
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
-             GETARG_A(c));
-      break;
-    case OP_GETMCNST:
-      printf("OP_GETMCNST\tR%d\tR%d::%s\n", GETARG_A(c), GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_SETMCNST:
-      printf("OP_SETMCNST\tR%d::%s\tR%d\n", GETARG_A(c)+1,
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
-             GETARG_A(c));
-      break;
-    case OP_GETIV:
-      printf("OP_GETIV\tR%d\t%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_SETIV:
-      printf("OP_SETIV\t%s\tR%d\n",
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
-             GETARG_A(c));
-      break;
-    case OP_GETUPVAR:
-      printf("OP_GETUPVAR\tR%d\t%d\t%d\n",
-             GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_SETUPVAR:
-      printf("OP_SETUPVAR\tR%d\t%d\t%d\n",
-             GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_GETCV:
-      printf("OP_GETCV\tR%d\t%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]));
-      break;
-    case OP_SETCV:
-      printf("OP_SETCV\t%s\tR%d\n",
-             mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
-             GETARG_A(c));
-      break;
-    case OP_JMP:
-      printf("OP_JMP\t\t%03d\n", i+GETARG_sBx(c));
-      break;
-    case OP_JMPIF:
-      printf("OP_JMPIF\tR%d\t%03d\n", GETARG_A(c), i+GETARG_sBx(c));
-      break;
-    case OP_JMPNOT:
-      printf("OP_JMPNOT\tR%d\t%03d\n", GETARG_A(c), i+GETARG_sBx(c));
-      break;
-    case OP_SEND:
-      printf("OP_SEND\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_SENDB:
-      printf("OP_SENDB\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_TAILCALL:
-      printf("OP_TAILCALL\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_SUPER:
-      printf("OP_SUPER\tR%d\t%d\n", GETARG_A(c),
-             GETARG_C(c));
-      break;
-    case OP_ARGARY:
-      printf("OP_ARGARY\tR%d\t%d:%d:%d:%d\n", GETARG_A(c),
-             (GETARG_Bx(c)>>10)&0x3f,
-             (GETARG_Bx(c)>>9)&0x1,
-             (GETARG_Bx(c)>>4)&0x1f,
-             (GETARG_Bx(c)>>0)&0xf);
-      break;
-
-    case OP_ENTER:
-      printf("OP_ENTER\t%d:%d:%d:%d:%d:%d:%d\n",
-             (GETARG_Ax(c)>>18)&0x1f,
-             (GETARG_Ax(c)>>13)&0x1f,
-             (GETARG_Ax(c)>>12)&0x1,
-             (GETARG_Ax(c)>>7)&0x1f,
-             (GETARG_Ax(c)>>2)&0x1f,
-             (GETARG_Ax(c)>>1)&0x1,
-             GETARG_Ax(c) & 0x1);
-      break;
-    case OP_RETURN:
-      printf("OP_RETURN\tR%d", GETARG_A(c));
-      switch (GETARG_B(c)) {
-      case OP_R_NORMAL:
-        printf("\n"); break;
-      case OP_R_RETURN:
-        printf("\treturn\n"); break;
-      case OP_R_BREAK:
-        printf("\tbreak\n"); break;
-      default:
-        printf("\tbroken\n"); break;
-        break;
-      }
-      break;
-    case OP_BLKPUSH:
-      printf("OP_BLKPUSH\tR%d\t%d:%d:%d:%d\n", GETARG_A(c),
-             (GETARG_Bx(c)>>10)&0x3f,
-             (GETARG_Bx(c)>>9)&0x1,
-             (GETARG_Bx(c)>>4)&0x1f,
-             (GETARG_Bx(c)>>0)&0xf);
-      break;
-
-    case OP_LAMBDA:
-      printf("OP_LAMBDA\tR%d\tI(%+d)\t%d\n", GETARG_A(c), GETARG_b(c), GETARG_c(c));
-      break;
-    case OP_RANGE:
-      printf("OP_RANGE\tR%d\tR%d\t%d\n", GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_METHOD:
-      printf("OP_METHOD\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]));
-      break;
-
-    case OP_ADD:
-      printf("OP_ADD\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_ADDI:
-      printf("OP_ADDI\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_SUB:
-      printf("OP_SUB\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_SUBI:
-      printf("OP_SUBI\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_MUL:
-      printf("OP_MUL\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_DIV:
-      printf("OP_DIV\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_LT:
-      printf("OP_LT\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_LE:
-      printf("OP_LE\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_GT:
-      printf("OP_GT\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_GE:
-      printf("OP_GE\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-    case OP_EQ:
-      printf("OP_EQ\tR%d\t:%s\t%d\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]),
-             GETARG_C(c));
-      break;
-
-    case OP_STOP:
-      printf("OP_STOP\n");
-      break;
-
-    case OP_ARRAY:
-      printf("OP_ARRAY\tR%d\tR%d\t%d\n", GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_ARYCAT:
-      printf("OP_ARYCAT\tR%d\tR%d\n", GETARG_A(c), GETARG_B(c));
-      break;
-    case OP_ARYPUSH:
-      printf("OP_ARYPUSH\tR%d\tR%d\n", GETARG_A(c), GETARG_B(c));
-      break;
-    case OP_AREF:
-      printf("OP_AREF\tR%d\tR%d\t%d\n", GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_APOST:
-      printf("OP_APOST\tR%d\t%d\t%d\n", GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    case OP_STRING:
-      {
-        mrb_value s = irep->pool[GETARG_Bx(c)];
-
-        s = mrb_str_dump(mrb, s);
-        printf("OP_STRING\tR%d\t%s\n", GETARG_A(c), RSTRING_PTR(s));
-      }
-      break;
-    case OP_STRCAT:
-      printf("OP_STRCAT\tR%d\tR%d\n", GETARG_A(c), GETARG_B(c));
-      break;
-    case OP_HASH:
-      printf("OP_HASH\tR%d\tR%d\t%d\n", GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-
-    case OP_OCLASS:
-      printf("OP_OCLASS\tR%d\n", GETARG_A(c));
-      break;
-    case OP_CLASS:
-      printf("OP_CLASS\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]));
-      break;
-    case OP_MODULE:
-      printf("OP_MODULE\tR%d\t:%s\n", GETARG_A(c),
-             mrb_sym2name(mrb, irep->syms[GETARG_B(c)]));
-      break;
-    case OP_EXEC:
-      printf("OP_EXEC\tR%d\tI(%d)\n", GETARG_A(c), n+GETARG_Bx(c));
-      break;
-    case OP_SCLASS:
-      printf("OP_SCLASS\tR%d\tR%d\n", GETARG_A(c), GETARG_B(c));
-      break;
-    case OP_TCLASS:
-      printf("OP_TCLASS\tR%d\n", GETARG_A(c));
-      break;
-    case OP_ERR:
-      printf("OP_ERR\tL(%d)\n", GETARG_Bx(c));
-      break;
-    case OP_EPUSH:
-      printf("OP_EPUSH\t:I(%d)\n", n+GETARG_Bx(c));
-      break;
-    case OP_ONERR:
-      printf("OP_ONERR\t%03d\n", i+GETARG_sBx(c));
-      break;
-    case OP_RESCUE:
-      printf("OP_RESCUE\tR%d\n", GETARG_A(c));
-      break;
-    case OP_RAISE:
-      printf("OP_RAISE\tR%d\n", GETARG_A(c));
-      break;
-    case OP_POPERR:
-      printf("OP_POPERR\t%d\n", GETARG_A(c));
-      break;
-    case OP_EPOP:
-      printf("OP_EPOP\t%d\n", GETARG_A(c));
-      break;
-
-    default:
-      printf("OP_unknown %d\t%d\t%d\t%d\n", GET_OPCODE(c),
-             GETARG_A(c), GETARG_B(c), GETARG_C(c));
-      break;
-    }
-    mrb_gc_arena_restore(mrb, ai);
-  }
-  printf("\n");
-#endif
-}
-
-void
-codedump_all(mrb_state *mrb, int start)
-{
-  size_t i;
-
-  for (i=start; i<mrb->irep_len; i++) {
-    codedump(mrb, i);
-  }
-}
-static int
-codegen_start(mrb_state *mrb, parser_state *p)
-{
-  codegen_scope *scope = scope_new(mrb, 0, 0);
-
-  if (!scope) {
-    return -1;
-  }
-  scope->mrb = mrb;
-  scope->parser = p;
-  scope->filename = p->filename;
-  scope->filename_index = p->current_filename_index;
-  if (setjmp(scope->jmp) == 0) {
-    // prepare irep
-    codegen(scope, p->tree, NOVAL);
-    mrb_pool_close(scope->mpool);
-    return 0;
-  }
-  else {
-    return -1;
-  }
-}
-
-int
-mrb_generate_code(mrb_state *mrb, parser_state *p)
-{
-  int start = mrb->irep_len;
-  int n;
-
-  n = codegen_start(mrb, p);
-  if (n < 0) return n;
-
-  return start;
-}

  Deleted: vendor/mruby-eeac4be/src/compar.c (+0 -13) 100644
===================================================================
--- vendor/mruby-eeac4be/src/compar.c    2014-06-08 19:01:14 +0900 (1614d23)
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-** compar.c - Comparable module
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-
-void
-mrb_init_comparable(mrb_state *mrb)
-{
-  mrb_define_module(mrb, "Comparable");
-}

  Deleted: vendor/mruby-eeac4be/src/crc.c (+0 -38) 100644
===================================================================
--- vendor/mruby-eeac4be/src/crc.c    2014-06-08 19:01:14 +0900 (3bda7bc)
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-** crc.c - calculate CRC
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <limits.h>
-#include <stdint.h>
-#include <stddef.h>
-
-// Calculate CRC (CRC-16-CCITT)
-//
-//  0000_0000_0000_0000_0000_0000_0000_0000
-//          ^|------- CRC -------|- work --|
-//        carry
-#define  CRC_16_CCITT       0x11021ul        //x^16+x^12+x^5+1
-#define  CRC_XOR_PATTERN    (CRC_16_CCITT << 8)
-#define  CRC_CARRY_BIT      (0x01000000)
-
-uint16_t
-calc_crc_16_ccitt(const uint8_t *src, size_t nbytes, uint16_t crc)
-{
-  size_t ibyte;
-  uint32_t ibit;
-  uint32_t crcwk = crc << 8;
-
-  for (ibyte = 0; ibyte < nbytes; ibyte++) {
-    crcwk |= *src++;
-    for (ibit = 0; ibit < CHAR_BIT; ibit++) {
-      crcwk <<= 1;
-      if (crcwk & CRC_CARRY_BIT) {
-        crcwk ^= CRC_XOR_PATTERN;
-      }
-    }
-  }
-  return (uint16_t)(crcwk >> 8);
-}
-

  Deleted: vendor/mruby-eeac4be/src/debug.c (+0 -214) 100644
===================================================================
--- vendor/mruby-eeac4be/src/debug.c    2014-06-08 19:01:14 +0900 (8e4311f)
+++ /dev/null
@@ -1,214 +0,0 @@
-#include <string.h>
-#include "mruby.h"
-#include "mruby/irep.h"
-#include "mruby/debug.h"
-
-static mrb_irep_debug_info_file *
-get_file(mrb_irep_debug_info *info, uint32_t pc)
-{
-  mrb_irep_debug_info_file **ret;
-  int32_t count;
-
-  if(pc >= info->pc_count) { return NULL; }
-  // get upper bound
-  ret = info->files;
-  count =  info->flen;
-  while (count > 0) {
-    int32_t step = count / 2;
-    mrb_irep_debug_info_file **it = ret + step;
-    if (!(pc < (*it)->start_pos)) {
-      ret = it + 1;
-      count -= step + 1;
-    } else { count = step; }
-  }
-
-  --ret;
-
-  // check returning file exists inside debug info
-  mrb_assert(info->files <= ret && ret < (info->files + info->flen));
-  // check pc is within the range of returning file
-  mrb_assert((*ret)->start_pos <= pc &&
-             pc < (((ret + 1 - info->files) < info->flen)
-                   ? (*(ret+1))->start_pos : info->pc_count));
-
-  return *ret;
-}
-
-static mrb_debug_line_type
-select_line_type(const uint16_t *lines, size_t lines_len)
-{
-  size_t line_count = 0;
-  int prev_line = -1;
-  size_t i;
-  for (i = 0; i < lines_len; ++i) {
-    if (lines[i] != prev_line) {
-      ++line_count;
-    }
-  }
-  return (sizeof(uint16_t) * lines_len) <= (sizeof(mrb_irep_debug_info_line) * line_count)
-      ? mrb_debug_line_ary : mrb_debug_line_flat_map;
-}
-
-char const*
-mrb_debug_get_filename(mrb_irep *irep, uint32_t pc)
-{
-  if (irep && pc < irep->ilen) {
-    mrb_irep_debug_info_file* f = NULL;
-    if (!irep->debug_info) { return irep->filename; }
-    else if ((f = get_file(irep->debug_info, pc))) {
-      return f->filename;
-    }
-  }
-  return NULL;
-}
-
-int32_t
-mrb_debug_get_line(mrb_irep *irep, uint32_t pc)
-{
-  if (irep && pc < irep->ilen) {
-    mrb_irep_debug_info_file* f = NULL;
-    if (!irep->debug_info) {
-      return irep->lines? irep->lines[pc] : -1;
-    }
-    else if ((f = get_file(irep->debug_info, pc))) {
-      switch(f->line_type) {
-        case mrb_debug_line_ary:
-          mrb_assert(f->start_pos <= pc && pc < (f->start_pos + f->line_entry_count));
-          return f->line_ary[pc - f->start_pos];
-
-        case mrb_debug_line_flat_map: {
-          // get upper bound
-          mrb_irep_debug_info_line *ret = f->line_flat_map;
-          uint32_t count = f->line_entry_count;
-          while (count > 0) {
-            int32_t step = count / 2;
-            mrb_irep_debug_info_line *it = ret + step;
-            if (!(pc < it->start_pos)) {
-              ret = it + 1;
-              count -= step + 1;
-            } else { count = step; }
-          }
-
-          --ret;
-
-          // check line entry pointer range
-          mrb_assert(f->line_flat_map <= ret && ret < (f->line_flat_map + f->line_entry_count));
-          // check pc range
-          mrb_assert(ret->start_pos <= pc &&
-                     pc < (((ret + 1 - f->line_flat_map) < f->line_entry_count)
-                           ? (ret+1)->start_pos : irep->debug_info->pc_count));
-
-          return ret->line;
-        }
-      }
-    }
-  }
-  return -1;
-}
-
-mrb_irep_debug_info *
-mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep)
-{
-  static const mrb_irep_debug_info initial = { 0, 0, NULL };
-  mrb_irep_debug_info *ret;
-
-  mrb_assert(!irep->debug_info);
-  ret = (mrb_irep_debug_info *)mrb_malloc(mrb, sizeof(*ret));
-  *ret = initial;
-  irep->debug_info = ret;
-  return ret;
-}
-
-mrb_irep_debug_info_file *
-mrb_debug_info_append_file(mrb_state *mrb, mrb_irep *irep,
-                           uint32_t start_pos, uint32_t end_pos)
-{
-  mrb_irep_debug_info *info;
-  mrb_irep_debug_info_file *ret;
-  uint32_t file_pc_count;
-  size_t fn_len;
-  size_t len;
-  uint32_t i;
-
-  if (!irep->debug_info) { return NULL; }
-
-  mrb_assert(irep->filename);
-  mrb_assert(irep->lines);
-
-  info = irep->debug_info;
-
-  if (info->flen > 0 && strcmp(irep->filename, info->files[info->flen - 1]->filename) == 0) {
-    return NULL;
-  }
-
-  ret = (mrb_irep_debug_info_file *)mrb_malloc(mrb, sizeof(*ret));
-  info->files =
-      (mrb_irep_debug_info_file*)info->files
-      ? mrb_realloc(mrb, info->files, sizeof(mrb_irep_debug_info_file*) * (info->flen + 1))
-      : mrb_malloc(mrb, sizeof(mrb_irep_debug_info_file*));
-  info->files[info->flen++] = ret;
-
-  file_pc_count = end_pos - start_pos;
-
-  ret->start_pos = start_pos;
-  info->pc_count = end_pos;
-
-  fn_len = strlen(irep->filename);
-  ret->filename_sym = mrb_intern2(mrb, irep->filename, fn_len);
-  len = 0;
-  ret->filename = mrb_sym2name_len(mrb, ret->filename_sym, &len);
-
-  ret->line_type = select_line_type(irep->lines + start_pos, end_pos - start_pos);
-  ret->line_ptr = NULL;
-
-  switch(ret->line_type) {
-    case mrb_debug_line_ary:
-      ret->line_entry_count = file_pc_count;
-      ret->line_ary = mrb_malloc(mrb, sizeof(uint16_t) * file_pc_count);
-      for(i = 0; i < file_pc_count; ++i) {
-        ret->line_ary[i] = irep->lines[start_pos + i];
-      }
-      break;
-
-    case mrb_debug_line_flat_map: {
-      uint16_t prev_line = 0;
-      mrb_irep_debug_info_line m;
-      ret->line_flat_map = mrb_malloc(mrb, sizeof(mrb_irep_debug_info_line) * 1);
-      ret->line_entry_count = 0;
-      for(i = 0; i < file_pc_count; ++i) {
-        if(irep->lines[start_pos + i] == prev_line) { continue; }
-
-        ret->line_flat_map = mrb_realloc(
-            mrb, ret->line_flat_map,
-            sizeof(mrb_irep_debug_info_line) * (ret->line_entry_count + 1));
-        m.start_pos = start_pos + i;
-        m.line = irep->lines[start_pos + i];
-        ret->line_flat_map[ret->line_entry_count] = m;
-
-        // update
-        ++ret->line_entry_count;
-        prev_line = irep->lines[start_pos + i];
-      }
-    } break;
-
-    default: mrb_assert(0); break;
-  }
-
-  return ret;
-}
-
-void
-mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d)
-{
-  uint32_t i;
-
-  if(!d) { return; }
-
-  for(i = 0; i < d->flen; ++i) {
-    mrb_assert(d->files[i]);
-    mrb_free(mrb, d->files[i]->line_ptr);
-    mrb_free(mrb, d->files[i]);
-  }
-  mrb_free(mrb, d->files);
-  mrb_free(mrb, d);
-}

  Deleted: vendor/mruby-eeac4be/src/dump.c (+0 -770) 100644
===================================================================
--- vendor/mruby-eeac4be/src/dump.c    2014-06-08 19:01:14 +0900 (73c3ed5)
+++ /dev/null
@@ -1,770 +0,0 @@
-/*
-** dump.c - mruby binary dumper (mrbc binary format)
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <string.h>
-#include "mruby/dump.h"
-#include <ctype.h>
-
-#include "mruby/string.h"
-#include "mruby/irep.h"
-#include "mruby/numeric.h"
-#include "mruby/debug.h"
-
-static size_t get_irep_record_size(mrb_state *mrb, mrb_irep *irep);
-
-static uint32_t
-get_irep_header_size(mrb_state *mrb)
-{
-  uint32_t size = 0;
-
-  size += sizeof(uint32_t) * 1;
-  size += sizeof(uint16_t) * 2;
-
-  return size;
-}
-
-static size_t
-write_irep_header(mrb_state *mrb, mrb_irep *irep, uint8_t *buf)
-{
-  uint8_t *cur = buf;
-
-  cur += uint32_to_bin(get_irep_record_size(mrb, irep), cur);  /* record size */
-  cur += uint16_to_bin((uint16_t)irep->nlocals, cur);  /* number of local variable */
-  cur += uint16_to_bin((uint16_t)irep->nregs, cur);  /* number of register variable */
-
-  return (cur - buf);
-}
-
-
-static uint32_t
-get_iseq_block_size(mrb_state *mrb, mrb_irep *irep)
-{
-  uint32_t size = 0;
-  size += sizeof(uint32_t); /* ilen */
-  size += sizeof(uint32_t) * irep->ilen; /* iseq(n) */
-  return size;
-}
-
-static int
-write_iseq_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf)
-{
-  uint8_t *cur = buf;
-  size_t iseq_no;
-
-  cur += uint32_to_bin(irep->ilen, cur); /* number of opcode */
-  for (iseq_no = 0; iseq_no < irep->ilen; iseq_no++) {
-    cur += uint32_to_bin(irep->iseq[iseq_no], cur); /* opcode */
-  }
-
-  return (cur - buf);
-}
-
-
-static size_t
-get_pool_block_size(mrb_state *mrb, mrb_irep *irep)
-{
-  size_t size = 0;
-  size_t pool_no;
-  int len;
-  mrb_value str;
-  char buf[32];
-
-  size += sizeof(uint32_t); /* plen */
-  size += irep->plen * (sizeof(uint8_t) + sizeof(uint16_t)); /* len(n) */
-
-  for (pool_no = 0; pool_no < irep->plen; pool_no++) {
-    int ai = mrb_gc_arena_save(mrb);
-
-    switch (mrb_type(irep->pool[pool_no])) {
-    case MRB_TT_FIXNUM:
-      str = mrb_fixnum_to_str(mrb, irep->pool[pool_no], 10);
-      size += RSTRING_LEN(str);
-      break;
-
-    case MRB_TT_FLOAT:
-      len = mrb_float_to_str(buf, mrb_float(irep->pool[pool_no]));
-      size += len;
-      break;
-
-    case MRB_TT_STRING:
-      str = mrb_str_to_str(mrb, irep->pool[pool_no]);
-      size += RSTRING_LEN(str);
-      break;
-
-    default:
-      break;
-    }
-
-    mrb_gc_arena_restore(mrb, ai);
-  }
-
-  return size;
-}
-
-static int
-write_pool_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf)
-{
-  size_t pool_no;
-  uint8_t *cur = buf;
-  size_t len;
-  mrb_value str;
-  const char *char_ptr;
-  char char_buf[30];
-
-  cur += uint32_to_bin(irep->plen, cur); /* number of pool */
-
-  for (pool_no = 0; pool_no < irep->plen; pool_no++) {
-    int ai = mrb_gc_arena_save(mrb);
-
-    cur += uint8_to_bin(mrb_type(irep->pool[pool_no]), cur); /* data type */
-
-    switch (mrb_type(irep->pool[pool_no])) {
-    case MRB_TT_FIXNUM:
-      str = mrb_fixnum_to_str(mrb, irep->pool[pool_no], 10);
-      char_ptr = RSTRING_PTR(str);
-      len = RSTRING_LEN(str);
-      break;
-
-    case MRB_TT_FLOAT:
-      len = mrb_float_to_str(char_buf, mrb_float(irep->pool[pool_no]));
-      char_ptr = &char_buf[0];
-      break;
-
-    case MRB_TT_STRING:
-      str = irep->pool[pool_no];
-      char_ptr = RSTRING_PTR(str);
-      len = RSTRING_LEN(str);
-      break;
-
-    default:
-      continue;
-    }
-
-    cur += uint16_to_bin(len, cur); /* data length */
-    memcpy(cur, char_ptr, len);
-    cur += len;
-
-    mrb_gc_arena_restore(mrb, ai);
-  }
-
-  return (int)(cur - buf);
-}
-
-
-static size_t
-get_syms_block_size(mrb_state *mrb, mrb_irep *irep)
-{
-  size_t size = 0;
-  size_t sym_no;
-  size_t len;
-
-  size += sizeof(uint32_t); /* slen */
-  for (sym_no = 0; sym_no < irep->slen; sym_no++) {
-    size += sizeof(uint16_t); /* snl(n) */
-    if (irep->syms[sym_no] != 0) {
-      mrb_sym2name_len(mrb, irep->syms[sym_no], &len);
-      size += len + 1; /* sn(n) + null char */
-    }
-  }
-
-  return size;
-}
-
-static int
-write_syms_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf)
-{
-  size_t sym_no;
-  uint8_t *cur = buf;
-  const char *name;
-
-  cur += uint32_to_bin(irep->slen, cur); /* number of symbol */
-
-  for (sym_no = 0; sym_no < irep->slen; sym_no++) {
-    if (irep->syms[sym_no] != 0) {
-      size_t len;
-
-      name = mrb_sym2name_len(mrb, irep->syms[sym_no], &len);
-      if (len > UINT16_MAX) {
-        return MRB_DUMP_GENERAL_FAILURE;
-      }
-
-      cur += uint16_to_bin((uint16_t)len, cur); /* length of symbol name */
-      memcpy(cur, name, len); /* symbol name */
-      cur += (uint16_t)len;
-      *cur++ = '\0';
-    }
-    else {
-      cur += uint16_to_bin(MRB_DUMP_NULL_SYM_LEN, cur); /* length of symbol name */
-    }
-  }
-
-  return (int)(cur - buf);
-}
-
-
-
-static size_t
-get_irep_record_size(mrb_state *mrb, mrb_irep *irep)
-{
-  uint32_t size = 0;
-
-  //size += sizeof(uint16_t); /* rlen */
-  size += get_irep_header_size(mrb);
-  size += get_iseq_block_size(mrb, irep);
-  size += get_pool_block_size(mrb, irep);
-  size += get_syms_block_size(mrb, irep);
-
-  return size;
-}
-
-static int
-write_irep_record(mrb_state *mrb, mrb_irep *irep, uint8_t* bin, uint32_t *irep_record_size)
-{
-  if (irep == NULL) {
-    return MRB_DUMP_INVALID_IREP;
-  }
-
-  *irep_record_size = get_irep_record_size(mrb, irep);
-  if (*irep_record_size == 0) {
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-
-  memset(bin, 0, *irep_record_size);
-
-  //bin += uint16_to_bin(*irep_record_size, bin);
-  bin += write_irep_header(mrb, irep, bin);
-  bin += write_iseq_block(mrb, irep, bin);
-  bin += write_pool_block(mrb, irep, bin);
-  bin += write_syms_block(mrb, irep, bin);
-
-  return MRB_DUMP_OK;
-}
-
-static size_t
-mrb_write_eof(mrb_state *mrb, uint8_t *bin)
-{
-  struct rite_binary_footer footer;
-
-  memcpy(footer.section_identify, RITE_BINARY_EOF, sizeof(footer.section_identify));
-  uint32_to_bin(sizeof(struct rite_binary_footer), footer.section_size);
-  memcpy(bin, &footer, sizeof(struct rite_binary_footer));
-
-  return sizeof(struct rite_binary_footer);
-}
-
-
-static int
-mrb_write_section_irep_header(mrb_state *mrb, uint32_t section_size, uint16_t nirep, uint16_t sirep, uint8_t *bin)
-{
-  struct rite_section_irep_header *header = (struct rite_section_irep_header*)bin;
-
-  memcpy(header->section_identify, RITE_SECTION_IREP_IDENTIFIER, sizeof(header->section_identify));
-  uint32_to_bin(section_size, header->section_size);
-  memcpy(header->rite_version, RITE_VM_VER, sizeof(header->rite_version));
-  uint16_to_bin(nirep, header->nirep);
-  uint16_to_bin(sirep, header->sirep);
-
-  return MRB_DUMP_OK;
-}
-
-static int
-mrb_write_section_irep(mrb_state *mrb, size_t start_index, uint8_t *bin)
-{
-  int result;
-  size_t irep_no;
-  uint32_t section_size = 0, rlen = 0; /* size of irep record */
-  uint8_t *cur = bin;
-
-  if (mrb == NULL || start_index >= mrb->irep_len || bin == NULL) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  cur += sizeof(struct rite_section_irep_header);
-  section_size += sizeof(struct rite_section_irep_header);
-
-  for (irep_no = start_index; irep_no < mrb->irep_len; irep_no++) {
-    result = write_irep_record(mrb, mrb->irep[irep_no], cur, &rlen);
-    if (result != MRB_DUMP_OK) {
-      return result;
-    }
-    cur += rlen;
-    section_size += rlen;
-  }
-
-  mrb_write_section_irep_header(mrb, section_size, mrb->irep_len - start_index, start_index, bin);
-
-  return MRB_DUMP_OK;
-}
-
-static int
-mrb_write_section_lineno_header(mrb_state *mrb, uint32_t section_size, uint16_t nirep, uint16_t sirep, uint8_t *bin)
-{
-  struct rite_section_lineno_header *header = (struct rite_section_lineno_header*)bin;
-
-  // TODO
-  memcpy(header->section_identify, RITE_SECTION_LINENO_IDENTIFIER, sizeof(header->section_identify));
-  uint32_to_bin(section_size, header->section_size);
-  uint16_to_bin(nirep, header->nirep);
-  uint16_to_bin(sirep, header->sirep);
-
-  return MRB_DUMP_OK;
-}
-
-static size_t
-get_lineno_record_size(mrb_state *mrb, mrb_irep *irep)
-{
-  size_t size = 0;
-
-  size += sizeof(uint32_t); // record size
-  size += sizeof(uint16_t); // filename size
-  if (irep->filename) {
-    size += strlen(irep->filename); // filename
-  }
-  size += sizeof(uint32_t); // niseq
-  if (irep->lines) {
-    size += sizeof(uint16_t) * irep->ilen; // lineno
-  }
-
-  return size;
-}
-
-static int
-write_lineno_record(mrb_state *mrb, mrb_irep *irep, uint8_t* bin)
-{
-  uint8_t *cur = bin;
-  size_t filename_len = 0, iseq_no;
-
-  cur += sizeof(uint32_t); /* record size */
-
-  if (irep->filename) {
-    filename_len = strlen(irep->filename);
-  }
-  cur += uint16_to_bin(filename_len, cur); /* filename size */
-
-  if (filename_len) {
-    memcpy(cur, irep->filename, filename_len);
-    cur += filename_len; /* filename */
-  }
-
-  if (irep->lines) {
-    cur += uint32_to_bin(irep->ilen, cur); /* niseq */
-    for (iseq_no = 0; iseq_no < irep->ilen; iseq_no++) {
-      cur += uint16_to_bin(irep->lines[iseq_no], cur); /* opcode */
-    }
-  }
-  else {
-    cur += uint32_to_bin(0, cur); /* niseq */
-  }
-
-  uint32_to_bin(cur - bin, bin); /* record size */
-
-  return (cur - bin);
-}
-
-static int
-mrb_write_section_lineno(mrb_state *mrb, size_t start_index, uint8_t *bin)
-{
-  size_t irep_no;
-  uint32_t section_size = 0, rlen = 0; /* size of irep record */
-  uint8_t *cur = bin;
-
-  if (mrb == NULL || start_index >= mrb->irep_len || bin == NULL) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  cur += sizeof(struct rite_section_lineno_header);
-  section_size += sizeof(struct rite_section_lineno_header);
-
-  for (irep_no = start_index; irep_no < mrb->irep_len; irep_no++) {
-    rlen = write_lineno_record(mrb, mrb->irep[irep_no], cur);
-    cur += rlen;
-    section_size += rlen;
-  }
-
-  mrb_write_section_lineno_header(mrb, section_size, mrb->irep_len - start_index, start_index, bin);
-
-  return MRB_DUMP_OK;
-}
-
-static size_t
-get_debug_record_size(mrb_state *mrb, mrb_irep *irep)
-{
-  size_t ret = 0;
-  uint32_t f_idx;
-
-  ret += sizeof(uint32_t); // record size
-  ret += sizeof(uint16_t); // file count
-
-  for(f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
-    mrb_irep_debug_info_file const* file = irep->debug_info->files[f_idx];
-
-    ret += sizeof(uint32_t); // position
-    ret += sizeof(uint16_t); // filename index
-
-    // lines
-    ret += sizeof(uint32_t); // entry count
-    ret += sizeof(uint8_t); // line type
-    switch(file->line_type) {
-      case mrb_debug_line_ary:
-        ret += sizeof(uint16_t) * file->line_entry_count;
-        break;
-
-      case mrb_debug_line_flat_map:
-        ret += (sizeof(uint32_t) + sizeof(uint16_t)) * file->line_entry_count;
-        break;
-
-      default: mrb_assert(0); break;
-    }
-  }
-
-  return ret;
-}
-
-static int
-find_filename_index(const mrb_sym *ary, size_t ary_len, mrb_sym s)
-{
-  size_t i;
-
-  for(i = 0; i < ary_len; ++i) {
-    if(ary[i] == s) { return i; }
-  }
-  return -1;
-}
-
-static int
-write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len)
-{
-  uint8_t *cur;
-  uint32_t f_idx;
-  size_t ret;
-
-  cur = bin + sizeof(uint32_t); // skip record size
-  cur += uint16_to_bin(irep->debug_info->flen, cur); // file count
-
-  for(f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
-    int filename_idx;
-    const mrb_irep_debug_info_file *file = irep->debug_info->files[f_idx];
-
-    // position
-    cur += uint32_to_bin(file->start_pos, cur);
-
-    // filename index
-    filename_idx = find_filename_index(filenames, filenames_len,
-                                                 file->filename_sym);
-    mrb_assert(filename_idx != -1);
-    cur += uint16_to_bin(filename_idx, cur);
-
-    // lines
-    cur += uint32_to_bin(file->line_entry_count, cur);
-    cur += uint8_to_bin(file->line_type, cur);
-    switch(file->line_type) {
-      case mrb_debug_line_ary: {
-        size_t l;
-        for(l = 0; l < file->line_entry_count; ++l) {
-          cur += uint16_to_bin(file->line_ary[l], cur);
-        }
-      } break;
-
-      case mrb_debug_line_flat_map: {
-        uint32_t line;
-        for(line = 0; line < file->line_entry_count; ++line) {
-          cur += uint32_to_bin(file->line_flat_map[line].start_pos, cur);
-          cur += uint16_to_bin(file->line_flat_map[line].line, cur);
-        }
-      } break;
-
-      default: mrb_assert(0); break;
-    }
-  }
-
-  ret = cur - bin;
-  uint32_to_bin(ret, bin);
-
-  mrb_assert((cur - bin) == (int)get_debug_record_size(mrb, irep));
-
-  return ret;
-}
-
-static int
-mrb_write_section_debug(mrb_state *mrb, size_t start_index, uint8_t *cur)
-{
-  uint32_t section_size = 0;
-  const uint8_t *bin = cur;
-  struct rite_section_debug_header *header;
-  mrb_sym *filenames;
-  size_t filenames_len;
-  uint8_t *filenames_len_out;
-  size_t irep_i;
-  size_t file_i;
-  uint16_t fn_len;
-  size_t i;
-
-  if (mrb == NULL || start_index >= mrb->irep_len || cur == NULL) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  header = (struct rite_section_debug_header *)bin;
-  cur += sizeof(struct rite_section_debug_header);
-  section_size += sizeof(struct rite_section_debug_header);
-
-  // filename table
-  filenames = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym *) * 1);
-  filenames_len = 0;
-  filenames_len_out = cur;
-  cur += sizeof(uint16_t);
-  section_size += sizeof(uint16_t);
-  for (irep_i = start_index; irep_i < mrb->irep_len; ++irep_i) {
-    mrb_irep_debug_info *debug_info = mrb->irep[irep_i]->debug_info;
-
-    for(file_i = 0; file_i < debug_info->flen; ++file_i) {
-      mrb_irep_debug_info_file *file = debug_info->files[file_i];
-      if(find_filename_index(filenames, filenames_len, file->filename_sym) != -1) continue;
-
-      // register filename
-      filenames = (mrb_sym*)mrb_realloc(mrb, filenames, sizeof(mrb_sym*) * ++filenames_len);
-      filenames[filenames_len - 1] = file->filename_sym;
-
-      // filename
-      fn_len = (uint16_t)strlen(file->filename);
-      cur += uint16_to_bin(fn_len, cur);
-      memcpy(cur, file->filename, fn_len);
-      cur += fn_len;
-
-      section_size += sizeof(uint16_t) + fn_len;
-    }
-  }
-  uint16_to_bin(filenames_len, filenames_len_out);
-
-  // records
-  for (i = start_index; i < mrb->irep_len; ++i) {
-    uint32_t rlen = write_debug_record(mrb, mrb->irep[i], cur, filenames, filenames_len);
-    cur += rlen;
-    section_size += rlen;
-  }
-
-  memcpy(header->section_identify, RITE_SECTION_DEBUG_IDENTIFIER, sizeof(header->section_identify));
-  uint32_to_bin(section_size, header->section_size);
-  uint16_to_bin(mrb->irep_len - start_index, header->nirep);
-  uint16_to_bin(start_index, header->sirep);
-
-  mrb_free(mrb, filenames);
-
-  return MRB_DUMP_OK;
-}
-
-static int
-write_rite_binary_header(mrb_state *mrb, size_t binary_size, uint8_t *bin)
-{
-  struct rite_binary_header *header = (struct rite_binary_header *)bin;
-  uint16_t crc;
-  size_t offset;
-
-  memcpy(header->binary_identify, RITE_BINARY_IDENTIFIER, sizeof(header->binary_identify));
-  memcpy(header->binary_version, RITE_BINARY_FORMAT_VER, sizeof(header->binary_version));
-  memcpy(header->compiler_name, RITE_COMPILER_NAME, sizeof(header->compiler_name));
-  memcpy(header->compiler_version, RITE_COMPILER_VERSION, sizeof(header->compiler_version));
-  uint32_to_bin(binary_size, header->binary_size);
-
-  offset = (&(header->binary_crc[0]) - bin) + sizeof(uint16_t);
-  crc = calc_crc_16_ccitt(bin + offset, binary_size - offset, 0);
-  uint16_to_bin(crc, header->binary_crc);
-
-  return MRB_DUMP_OK;
-}
-
-mrb_bool is_debug_info_defined(mrb_state *mrb, size_t const start_index)
-{
-  size_t i;
-  for (i = start_index; i < mrb->irep_len; ++i) {
-    if (!mrb->irep[i]->debug_info) { return 0; }
-  }
-  return 1;
-}
-
-static int
-mrb_dump_irep(mrb_state *mrb, size_t start_index, int debug_info, uint8_t **bin, size_t *bin_size)
-{
-  int result = MRB_DUMP_GENERAL_FAILURE;
-  size_t section_size = 0;
-  size_t section_irep_size;
-  size_t section_lineno_size = 0;
-  size_t irep_no;
-  uint8_t *cur = NULL;
-
-  mrb_bool const debug_info_defined = is_debug_info_defined(mrb, start_index);
-
-  if (mrb == NULL || start_index >= mrb->irep_len) {
-    *bin = NULL;
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-
-  section_irep_size = sizeof(struct rite_section_irep_header);
-  for (irep_no = start_index; irep_no < mrb->irep_len; irep_no++) {
-    section_irep_size += get_irep_record_size(mrb, mrb->irep[irep_no]);
-  }
-  section_size += section_irep_size;
-
-  /* DEBUG section size */
-  if (debug_info) {
-    if (debug_info_defined) {
-      mrb_sym *filenames;
-      size_t filenames_len;
-      size_t irep_i;
-      size_t file_i;
-
-      section_lineno_size += sizeof(struct rite_section_debug_header);
-
-      // filename table
-      filenames = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym *) + 1);
-      filenames_len = 0;
-      // filename table size
-      section_lineno_size += sizeof(uint16_t);
-      for (irep_i = start_index; irep_i < mrb->irep_len; ++irep_i) {
-        mrb_irep_debug_info *di = mrb->irep[irep_i]->debug_info;
-
-        for(file_i = 0; file_i < di->flen; ++file_i) {
-          mrb_irep_debug_info_file *file;
-          size_t filename_len;
-
-          file = di->files[file_i];
-          if(find_filename_index(filenames, filenames_len, file->filename_sym) != -1) continue;
-
-          // register filename
-          filenames = (mrb_sym *)mrb_realloc(mrb, filenames, sizeof(mrb_sym*) * ++filenames_len);
-          filenames[filenames_len - 1] = file->filename_sym;
-
-          // filename
-          mrb_sym2name_len(mrb, file->filename_sym, &filename_len);
-          section_lineno_size += sizeof(uint16_t) + filename_len;
-        }
-      }
-      mrb_free(mrb, filenames);
-
-      for(irep_no = start_index; irep_no < mrb->irep_len; ++irep_no) {
-        section_lineno_size += get_debug_record_size(mrb, mrb->irep[irep_no]);
-      }
-      section_size += section_lineno_size;
-    }
-    else {
-      section_lineno_size += sizeof(struct rite_section_lineno_header);
-      for (irep_no = start_index; irep_no < mrb->irep_len; irep_no++) {
-        section_lineno_size += get_lineno_record_size(mrb, mrb->irep[irep_no]);
-      }
-      section_size += section_lineno_size;
-    }
-  }
-
-  *bin_size += sizeof(struct rite_binary_header) + section_size + sizeof(struct rite_binary_footer);
-  cur = *bin = (uint8_t *)mrb_malloc(mrb, *bin_size);
-  if (cur == NULL) {
-    goto error_exit;
-  }
-
-  cur += sizeof(struct rite_binary_header);
-
-  result = mrb_write_section_irep(mrb, start_index, cur);
-  if (result != MRB_DUMP_OK) {
-    goto error_exit;
-  }
-
-  cur += section_irep_size;
-
-  /* write DEBUG section */
-  if (debug_info) {
-    if(debug_info_defined) {
-      result = mrb_write_section_debug(mrb, start_index, cur);
-      if(result != MRB_DUMP_OK) {
-        goto error_exit;
-      }
-      cur += section_lineno_size;
-    }
-    else {
-      result = mrb_write_section_lineno(mrb, start_index, cur);
-      if (result != MRB_DUMP_OK) {
-        goto error_exit;
-      }
-      cur += section_lineno_size;
-    }
-  }
-
-  mrb_write_eof(mrb, cur);
-
-  result = write_rite_binary_header(mrb, *bin_size, *bin);
-
-error_exit:
-  if (result != MRB_DUMP_OK) {
-    mrb_free(mrb, *bin);
-    *bin = NULL;
-  }
-  return result;
-}
-
-
-#ifdef ENABLE_STDIO
-
-int
-mrb_dump_irep_binary(mrb_state *mrb, size_t start_index, int debug_info, FILE* fp)
-{
-  uint8_t *bin = NULL;
-  size_t bin_size = 0;
-  int result;
-
-  if (fp == NULL) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  result = mrb_dump_irep(mrb, start_index, debug_info, &bin, &bin_size);
-  if (result == MRB_DUMP_OK) {
-    fwrite(bin, bin_size, 1, fp);
-  }
-
-  mrb_free(mrb, bin);
-  return result;
-}
-
-static int
-is_valid_c_symbol_name(const char *name)
-{
-   const char *c = NULL;
-
-   if (name == NULL || name[0] == '\0') return 0;
-   if (!ISALPHA(name[0]) && name[0] != '_') return 0;
-
-   c = &name[1];
-   for (; *c != '\0'; ++c) {
-     if (!ISALNUM(*c) && *c != '_') return 0;
-   }
-
-   return 1;
-}
-
-int
-mrb_dump_irep_cfunc(mrb_state *mrb, size_t start_index, int debug_info, FILE *fp, const char *initname)
-{
-  uint8_t *bin = NULL;
-  size_t bin_size = 0, bin_idx = 0;
-  int result;
-
-  if (fp == NULL || initname == NULL || !is_valid_c_symbol_name(initname)) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  result = mrb_dump_irep(mrb, start_index, debug_info, &bin, &bin_size);
-  if (result == MRB_DUMP_OK) {
-    fprintf(fp, "#include <stdint.h>\n"); // for uint8_t under at least Darwin
-    fprintf(fp, "const uint8_t %s[] = {", initname);
-    while (bin_idx < bin_size) {
-      if (bin_idx % 16 == 0 ) fputs("\n", fp);
-      fprintf(fp, "0x%02x,", bin[bin_idx++]);
-    }
-    fputs("\n};\n", fp);
-  }
-
-  mrb_free(mrb, bin);
-  return result;
-}
-
-#endif /* ENABLE_STDIO */

  Deleted: vendor/mruby-eeac4be/src/enum.c (+0 -14) 100644
===================================================================
--- vendor/mruby-eeac4be/src/enum.c    2014-06-08 19:01:14 +0900 (0a58cc5)
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
-** enum.c - Enumerable module
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-
-void
-mrb_init_enumerable(mrb_state *mrb)
-{
-  mrb_define_module(mrb, "Enumerable");
-}
-

  Deleted: vendor/mruby-eeac4be/src/error.c (+0 -462) 100644
===================================================================
--- vendor/mruby-eeac4be/src/error.c    2014-06-08 19:01:14 +0900 (4ce2b4a)
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
-** error.c - Exception class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <errno.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/irep.h"
-#include "mruby/proc.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-#include "mruby/debug.h"
-#include "error.h"
-
-mrb_value
-mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, long len)
-{
-  return mrb_funcall(mrb, mrb_obj_value(c), "new", 1, mrb_str_new(mrb, ptr, len));
-}
-
-mrb_value
-mrb_exc_new3(mrb_state *mrb, struct RClass* c, mrb_value str)
-{
-  str = mrb_str_to_str(mrb, str);
-  return mrb_funcall(mrb, mrb_obj_value(c), "new", 1, str);
-}
-
-/*
- * call-seq:
- *    Exception.new(msg = nil)   ->  exception
- *
- *  Construct a new Exception object, optionally passing in
- *  a message.
- */
-
-static mrb_value
-exc_initialize(mrb_state *mrb, mrb_value exc)
-{
-  mrb_value mesg;
-
-  if (mrb_get_args(mrb, "|o", &mesg) == 1) {
-    mrb_iv_set(mrb, exc, mrb_intern2(mrb, "mesg", 4), mesg);
-  }
-  return exc;
-}
-
-/*
- *  Document-method: exception
- *
- *  call-seq:
- *     exc.exception(string)  ->  an_exception or exc
- *
- *  With no argument, or if the argument is the same as the receiver,
- *  return the receiver. Otherwise, create a new
- *  exception object of the same class as the receiver, but with a
- *  message equal to <code>string.to_str</code>.
- *
- */
-
-static mrb_value
-exc_exception(mrb_state *mrb, mrb_value self)
-{
-  mrb_value exc;
-  mrb_value a;
-  int argc;
-
-  argc = mrb_get_args(mrb, "|o", &a);
-  if (argc == 0) return self;
-  if (mrb_obj_equal(mrb, self, a)) return self;
-  exc = mrb_obj_clone(mrb, self);
-  mrb_iv_set(mrb, exc, mrb_intern2(mrb, "mesg", 4), a);
-
-  return exc;
-}
-
-/*
- * call-seq:
- *   exception.to_s   ->  string
- *
- * Returns exception's message (or the name of the exception if
- * no message is set).
- */
-
-static mrb_value
-exc_to_s(mrb_state *mrb, mrb_value exc)
-{
-  mrb_value mesg = mrb_attr_get(mrb, exc, mrb_intern2(mrb, "mesg", 4));
-
-  if (mrb_nil_p(mesg)) return mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc));
-  return mesg;
-}
-
-/*
- * call-seq:
- *   exception.message   ->  string
- *
- * Returns the result of invoking <code>exception.to_s</code>.
- * Normally this returns the exception's message or name. By
- * supplying a to_str method, exceptions are agreeing to
- * be used where Strings are expected.
- */
-
-static mrb_value
-exc_message(mrb_state *mrb, mrb_value exc)
-{
-  return mrb_funcall(mrb, exc, "to_s", 0);
-}
-
-/*
- * call-seq:
- *   exception.inspect   -> string
- *
- * Return this exception's class name an message
- */
-
-static mrb_value
-exc_inspect(mrb_state *mrb, mrb_value exc)
-{
-  mrb_value str, mesg, file, line;
-
-  mesg = mrb_attr_get(mrb, exc, mrb_intern2(mrb, "mesg", 4));
-  file = mrb_attr_get(mrb, exc, mrb_intern2(mrb, "file", 4));
-  line = mrb_attr_get(mrb, exc, mrb_intern2(mrb, "line", 4));
-
-  if (!mrb_nil_p(file) && !mrb_nil_p(line)) {
-    str = file;
-    mrb_str_cat(mrb, str, ":", 1);
-    mrb_str_append(mrb, str, line);
-    mrb_str_cat(mrb, str, ": ", 2);
-    if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) {
-      mrb_str_append(mrb, str, mesg);
-      mrb_str_cat(mrb, str, " (", 2);
-    }
-    mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc));
-    if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) {
-      mrb_str_cat(mrb, str, ")", 1);
-    }
-  }
-  else {
-    str = mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc));
-    if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) {
-      mrb_str_cat(mrb, str, ": ", 2);
-      mrb_str_append(mrb, str, mesg);
-    }
-    else {
-      mrb_str_cat(mrb, str, ": ", 2);
-      mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc));
-    }
-  }
-  return str;
-}
-
-
-static mrb_value
-exc_equal(mrb_state *mrb, mrb_value exc)
-{
-  mrb_value obj;
-  mrb_value mesg;
-  mrb_bool equal_p;
-  mrb_sym id_mesg = mrb_intern2(mrb, "mesg", 4);
-
-  mrb_get_args(mrb, "o", &obj);
-  if (mrb_obj_equal(mrb, exc, obj)) {
-    equal_p = 1;
-  }
-  else {
-    if (mrb_obj_class(mrb, exc) != mrb_obj_class(mrb, obj)) {
-      if (mrb_respond_to(mrb, obj, mrb_intern2(mrb, "message", 7))) {
-        mesg = mrb_funcall(mrb, obj, "message", 0);
-      }
-      else
-        return mrb_false_value();
-    }
-    else {
-      mesg = mrb_attr_get(mrb, obj, id_mesg);
-    }
-
-    equal_p = mrb_equal(mrb, mrb_attr_get(mrb, exc, id_mesg), mesg);
-  }
-
-  return mrb_bool_value(equal_p);
-}
-
-static void
-exc_debug_info(mrb_state *mrb, struct RObject *exc)
-{
-  mrb_callinfo *ci = mrb->c->ci;
-  mrb_code *pc = ci->pc;
-
-  mrb_obj_iv_set(mrb, exc, mrb_intern2(mrb, "ciidx", 5), mrb_fixnum_value(ci - mrb->c->cibase));
-  ci--;
-  while (ci >= mrb->c->cibase) {
-    if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc)) {
-      mrb_irep *irep = ci->proc->body.irep;
-
-      int32_t const line = mrb_debug_get_line(irep, pc - irep->iseq - 1);
-      char const* file = mrb_debug_get_filename(irep, pc - irep->iseq - 1);
-      if(line != -1 && file) {
-        mrb_obj_iv_set(mrb, exc, mrb_intern2(mrb, "file", 4), mrb_str_new_cstr(mrb, file));
-        mrb_obj_iv_set(mrb, exc, mrb_intern2(mrb, "line", 4), mrb_fixnum_value(line));
-        return;
-      }
-    }
-    pc = ci->pc;
-    ci--;
-  }
-}
-
-void
-mrb_exc_raise(mrb_state *mrb, mrb_value exc)
-{
-  mrb->exc = mrb_obj_ptr(exc);
-  exc_debug_info(mrb, mrb->exc);
-  if (!mrb->jmp) {
-    mrb_p(mrb, exc);
-    abort();
-  }
-  mrb_longjmp(mrb);
-}
-
-void
-mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg)
-{
-  mrb_value mesg;
-  mesg = mrb_str_new_cstr(mrb, msg);
-  mrb_exc_raise(mrb, mrb_exc_new3(mrb, c, mesg));
-}
-
-mrb_value
-mrb_vformat(mrb_state *mrb, const char *format, va_list ap)
-{
-  const char *p = format;
-  const char *b = p;
-  ptrdiff_t size;
-  mrb_value ary = mrb_ary_new_capa(mrb, 4);
-
-  while (*p) {
-    const char c = *p++;
-
-    if (c == '%') {
-      if (*p == 'S') {
-        size = p - b - 1;
-        mrb_ary_push(mrb, ary, mrb_str_new(mrb, b, size));
-        mrb_ary_push(mrb, ary, va_arg(ap, mrb_value));
-        b = p + 1;
-      }
-    }
-    else if (c == '\\') {
-      if (*p) {
-        size = p - b - 1;
-        mrb_ary_push(mrb, ary, mrb_str_new(mrb, b, size));
-        mrb_ary_push(mrb, ary, mrb_str_new(mrb, p, 1));
-        b = ++p;
-      }
-      else {
-        break;
-      }
-    }
-  }
-  if (b == format) {
-    return mrb_str_new_cstr(mrb, format);
-  }
-  else {
-    size = p - b;
-    mrb_ary_push(mrb, ary, mrb_str_new(mrb, b, size));
-    return mrb_ary_join(mrb, ary, mrb_str_new(mrb,NULL,0));
-  }
-}
-
-mrb_value
-mrb_format(mrb_state *mrb, const char *format, ...)
-{
-  va_list ap;
-  mrb_value str;
-
-  va_start(ap, format);
-  str = mrb_vformat(mrb, format, ap);
-  va_end(ap);
-
-  return str;
-}
-
-void
-mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...)
-{
-  va_list args;
-  mrb_value mesg;
-
-  va_start(args, fmt);
-  mesg = mrb_vformat(mrb, fmt, args);
-  va_end(args);
-  mrb_exc_raise(mrb, mrb_exc_new3(mrb, c, mesg));
-}
-
-void
-mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...)
-{
-  mrb_value exc;
-  mrb_value argv[2];
-  va_list args;
-
-  va_start(args, fmt);
-  argv[0] = mrb_vformat(mrb, fmt, args);
-  va_end(args);
-
-  argv[1] = mrb_symbol_value(id);
-  exc = mrb_obj_new(mrb, E_NAME_ERROR, 2, argv);
-  mrb_exc_raise(mrb, exc);
-}
-
-void
-mrb_warn(mrb_state *mrb, const char *fmt, ...)
-{
-#ifdef ENABLE_STDIO
-  va_list ap;
-  mrb_value str;
-
-  va_start(ap, fmt);
-  str = mrb_vformat(mrb, fmt, ap);
-  fputs("warning: ", stderr);
-  fwrite(RSTRING_PTR(str), RSTRING_LEN(str), 1, stderr);
-  va_end(ap);
-#endif
-}
-
-void
-mrb_bug(mrb_state *mrb, const char *fmt, ...)
-{
-#ifdef ENABLE_STDIO
-  va_list ap;
-  mrb_value str;
-
-  va_start(ap, fmt);
-  str = mrb_vformat(mrb, fmt, ap);
-  fputs("bug: ", stderr);
-  fwrite(RSTRING_PTR(str), RSTRING_LEN(str), 1, stderr);
-  va_end(ap);
-#endif
-  exit(EXIT_FAILURE);
-}
-
-int
-sysexit_status(mrb_state *mrb, mrb_value err)
-{
-  mrb_value st = mrb_iv_get(mrb, err, mrb_intern2(mrb, "status", 6));
-  return mrb_fixnum(st);
-}
-
-static void
-set_backtrace(mrb_state *mrb, mrb_value info, mrb_value bt)
-{
-  mrb_funcall(mrb, info, "set_backtrace", 1, bt);
-}
-
-mrb_value
-make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr)
-{
-  mrb_value mesg;
-  int n;
-
-  mesg = mrb_nil_value();
-  switch (argc) {
-    case 0:
-    break;
-    case 1:
-      if (mrb_nil_p(argv[0]))
-        break;
-      if (isstr) {
-        mesg = mrb_check_string_type(mrb, argv[0]);
-        if (!mrb_nil_p(mesg)) {
-          mesg = mrb_exc_new3(mrb, E_RUNTIME_ERROR, mesg);
-          break;
-        }
-      }
-      n = 0;
-      goto exception_call;
-
-    case 2:
-    case 3:
-      n = 1;
-exception_call:
-      {
-        mrb_sym exc = mrb_intern2(mrb, "exception", 9);
-        if (mrb_respond_to(mrb, argv[0], exc)) {
-          mesg = mrb_funcall_argv(mrb, argv[0], exc, n, argv+1);
-        }
-        else {
-          /* undef */
-          mrb_raise(mrb, E_TYPE_ERROR, "exception class/object expected");
-        }
-      }
-
-      break;
-    default:
-      mrb_raisef(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (%S for 0..3)", mrb_fixnum_value(argc));
-      break;
-  }
-  if (argc > 0) {
-    if (!mrb_obj_is_kind_of(mrb, mesg, mrb->eException_class))
-      mrb_raise(mrb, E_TYPE_ERROR, "exception object expected");
-    if (argc > 2)
-        set_backtrace(mrb, mesg, argv[2]);
-  }
-
-  return mesg;
-}
-
-mrb_value
-mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv)
-{
-  return make_exception(mrb, argc, argv, TRUE);
-}
-
-void
-mrb_sys_fail(mrb_state *mrb, const char *mesg)
-{
-  struct RClass *sce;
-  mrb_int no;
-
-  no = (mrb_int)errno;
-  if (mrb_class_defined(mrb, "SystemCallError")) {
-    sce = mrb_class_get(mrb, "SystemCallError");
-    if (mesg != NULL) {
-      mrb_funcall(mrb, mrb_obj_value(sce), "_sys_fail", 2, mrb_fixnum_value(no), mrb_str_new_cstr(mrb, mesg));
-    }
-    else {
-      mrb_funcall(mrb, mrb_obj_value(sce), "_sys_fail", 1, mrb_fixnum_value(no));
-    }
-  }
-  else {
-    mrb_raise(mrb, E_RUNTIME_ERROR, mesg);
-  }
-}
-
-mrb_value mrb_get_backtrace(mrb_state*, mrb_value);
-
-void
-mrb_init_exception(mrb_state *mrb)
-{
-  struct RClass *e;
-
-  mrb->eException_class = e = mrb_define_class(mrb, "Exception",           mrb->object_class);         /* 15.2.22 */
-  mrb_define_class_method(mrb, e, "exception", mrb_instance_new, MRB_ARGS_ANY());
-  mrb_define_method(mrb, e, "exception", exc_exception, MRB_ARGS_ANY());
-  mrb_define_method(mrb, e, "initialize", exc_initialize, MRB_ARGS_ANY());
-  mrb_define_method(mrb, e, "==", exc_equal, MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, e, "to_s", exc_to_s, MRB_ARGS_NONE());
-  mrb_define_method(mrb, e, "message", exc_message, MRB_ARGS_NONE());
-  mrb_define_method(mrb, e, "inspect", exc_inspect, MRB_ARGS_NONE());
-  mrb_define_method(mrb, e, "backtrace", mrb_get_backtrace, MRB_ARGS_NONE());
-
-  mrb->eStandardError_class     = mrb_define_class(mrb, "StandardError",       mrb->eException_class); /* 15.2.23 */
-  mrb_define_class(mrb, "RuntimeError", mrb->eStandardError_class);                                    /* 15.2.28 */
-  e = mrb_define_class(mrb, "ScriptError",  mrb->eException_class);                                    /* 15.2.37 */
-  mrb_define_class(mrb, "SyntaxError",  e);                                                            /* 15.2.38 */
-}

  Deleted: vendor/mruby-eeac4be/src/error.h (+0 -19) 100644
===================================================================
--- vendor/mruby-eeac4be/src/error.h    2014-06-08 19:01:14 +0900 (5aa4ca3)
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-** error.h - Exception class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef MRUBY_ERROR_H
-#define MRUBY_ERROR_H
-
-void mrb_sys_fail(mrb_state *mrb, const char *mesg);
-int sysexit_status(mrb_state *mrb, mrb_value err);
-mrb_value mrb_exc_new3(mrb_state *mrb, struct RClass* c, mrb_value str);
-mrb_value make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr);
-mrb_value mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv);
-mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
-void mrb_exc_print(mrb_state *mrb, struct RObject *exc);
-void mrb_longjmp(mrb_state *mrb);
-
-#endif  /* MRUBY_ERROR_H */

  Deleted: vendor/mruby-eeac4be/src/etc.c (+0 -211) 100644
===================================================================
--- vendor/mruby-eeac4be/src/etc.c    2014-06-08 19:01:14 +0900 (70b22cf)
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-** etc.c -
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/string.h"
-#include "error.h"
-#include "mruby/numeric.h"
-#include "mruby/data.h"
-#include "mruby/class.h"
-
-struct RData*
-mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const mrb_data_type *type)
-{
-  struct RData *data;
-
-  data = (struct RData*)mrb_obj_alloc(mrb, MRB_TT_DATA, klass);
-  data->data = ptr;
-  data->type = (mrb_data_type*) type;
-
-  return data;
-}
-
-void
-mrb_data_check_type(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
-{
-  if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) {
-    mrb_check_type(mrb, obj, MRB_TT_DATA);
-  }
-  if (DATA_TYPE(obj) != type) {
-    const mrb_data_type *t2 = DATA_TYPE(obj);
-
-    if (t2) {
-      mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %S (expected %S)",
-                 mrb_str_new_cstr(mrb, t2->struct_name), mrb_str_new_cstr(mrb, type->struct_name));
-    }
-    else {
-      struct RClass *c = mrb_class(mrb, obj);
-
-      mrb_raisef(mrb, E_TYPE_ERROR, "uninitialized %S (expected %S)",
-                 mrb_obj_value(c), mrb_str_new_cstr(mrb, type->struct_name));
-    }
-  }
-}
-
-void *
-mrb_data_check_get_ptr(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
-{
-  if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) {
-    return NULL;
-  }
-  if (DATA_TYPE(obj) != type) {
-    return NULL;
-  }
-  return DATA_PTR(obj);
-}
-
-void *
-mrb_data_get_ptr(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
-{
-  mrb_data_check_type(mrb, obj, type);
-  return DATA_PTR(obj);
-}
-
-mrb_value
-mrb_lastline_get(mrb_state *mrb)
-{
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  if (argc < 1) {
-    return mrb_nil_value();
-  }
-  else
-  {
-    return argv[0];
-  }
-}
-
-/* ------------------------------------------------ */
-/*
- * Calls func(obj, arg, recursive), where recursive is non-zero if the
- * current method is called recursively on obj
- */
-
-mrb_value
-mrb_exec_recursive(mrb_state *mrb, mrb_value (*func) (mrb_state *, mrb_value, mrb_value, int), mrb_value obj, void *arg)
-{
-  return func(mrb, obj, *(mrb_value*)arg, 0);
-}
-
-mrb_sym
-mrb_obj_to_sym(mrb_state *mrb, mrb_value name)
-{
-  mrb_value tmp;
-  mrb_sym id;
-
-  switch (mrb_type(name)) {
-    default:
-      tmp = mrb_check_string_type(mrb, name);
-      if (mrb_nil_p(tmp)) {
-        tmp = mrb_inspect(mrb, name);
-        mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", tmp);
-      }
-      name = tmp;
-      /* fall through */
-    case MRB_TT_STRING:
-      name = mrb_str_intern(mrb, name);
-      /* fall through */
-    case MRB_TT_SYMBOL:
-      return mrb_symbol(name);
-  }
-  return id;
-}
-
-/*
- * call-seq:
- *   proc   { |...| block }  -> a_proc
- *
- * Equivalent to <code>Proc.new</code>.
- */
-
-mrb_value
-mrb_block_proc(void)
-{
-  return mrb_nil_value();
-}
-
-static mrb_int
-float_id(mrb_float f)
-{
-  const char *p = (const char*)&f;
-  int len = sizeof(f);
-  mrb_int id = 0;
-
-  while (len--) {
-    id = id*65599 + *p;
-    p++;
-  }
-  id = id + (id>>5);
-
-  return id;
-}
-
-mrb_int
-mrb_obj_id(mrb_value obj)
-{
-  mrb_int tt = mrb_type(obj);
-
-#define MakeID2(p,t) (((intptr_t)(p))^(t))
-#define MakeID(p)    MakeID2(p,tt)
-
-  switch (tt) {
-  case  MRB_TT_FREE:
-  case  MRB_TT_UNDEF:
-    return MakeID(0); /* not define */
-  case  MRB_TT_FALSE:
-    if (mrb_nil_p(obj))
-      return MakeID(1);
-    return MakeID(0);
-  case  MRB_TT_TRUE:
-    return MakeID(1);
-  case  MRB_TT_SYMBOL:
-    return MakeID(mrb_symbol(obj));
-  case  MRB_TT_FIXNUM:
-    return MakeID2(float_id((mrb_float)mrb_fixnum(obj)), MRB_TT_FLOAT);
-  case  MRB_TT_FLOAT:
-    return MakeID(float_id(mrb_float(obj)));
-  case  MRB_TT_STRING:
-  case  MRB_TT_OBJECT:
-  case  MRB_TT_CLASS:
-  case  MRB_TT_MODULE:
-  case  MRB_TT_ICLASS:
-  case  MRB_TT_SCLASS:
-  case  MRB_TT_PROC:
-  case  MRB_TT_ARRAY:
-  case  MRB_TT_HASH:
-  case  MRB_TT_RANGE:
-  case  MRB_TT_EXCEPTION:
-  case  MRB_TT_FILE:
-  case  MRB_TT_DATA:
-  default:
-    return MakeID(mrb_ptr(obj));
-  }
-}
-
-#ifdef MRB_WORD_BOXING
-mrb_value
-mrb_float_value(mrb_state *mrb, mrb_float f)
-{
-  mrb_value v;
-
-  v.value.p = mrb_obj_alloc(mrb, MRB_TT_FLOAT, mrb->float_class);
-  v.value.fp->f = f;
-  return v;
-}
-
-mrb_value
-mrb_cptr_value(mrb_state *mrb, void *p)
-{
-  mrb_value v;
-
-  v.value.p = mrb_obj_alloc(mrb, MRB_TT_CPTR, mrb->object_class);
-  v.value.vp->p = p;
-  return v;
-}
-#endif  /* MRB_WORD_BOXING */
-

  Deleted: vendor/mruby-eeac4be/src/ext/.gitkeep (+0 -0) 100644
===================================================================
--- vendor/mruby-eeac4be/src/ext/.gitkeep    2014-06-08 19:01:14 +0900 (e69de29)
+++ /dev/null

  Deleted: vendor/mruby-eeac4be/src/gc.c (+0 -1577) 100644
===================================================================
--- vendor/mruby-eeac4be/src/gc.c    2014-06-08 19:01:14 +0900 (16d187e)
+++ /dev/null
@@ -1,1577 +0,0 @@
-/*
-** gc.c - garbage collector for mruby
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef SIZE_MAX
- /* Some versions of VC++
-  * has SIZE_MAX in stdint.h
-  */
-# include <limits.h>
-#endif
-#include <string.h>
-#include <stdlib.h>
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/data.h"
-#include "mruby/hash.h"
-#include "mruby/proc.h"
-#include "mruby/range.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-#include "mruby/gc.h"
-
-/*
-  = Tri-color Incremental Garbage Collection
-
-  mruby's GC is Tri-color Incremental GC with Mark & Sweep.
-  Algorithm details are omitted.
-  Instead, the part about the implementation described below.
-
-  == Object's Color
-
-  Each object to be painted in three colors.
-
-    * White - Unmarked.
-    * Gray - Marked, But the child objects are unmarked.
-    * Black - Marked, the child objects are also marked.
-
-  == Two White Types
-
-  There're two white color types in a flip-flop fassion: White-A and White-B,
-  which respectively represent the Current White color (the newly allocated
-  objects in the current GC cycle) and the Sweep Target White color (the
-  dead objects to be swept).
-
-  A and B will be switched just at the beginning of the next GC cycle. At
-  that time, all the dead objects have been swept, while the newly created
-  objects in the current GC cycle which finally remains White are now
-  regarded as dead objects. Instead of traversing all the White-A objects and
-  paint them as White-B, just switch the meaning of White-A and White-B would
-  be much cheaper.
-
-  As a result, the objects we sweep in the current GC cycle are always
-  left from the previous GC cycle. This allows us to sweep objects
-  incrementally, without the disturbance of the newly created objects.
-
-  == Execution Timing
-
-  GC Execution Time and Each step interval are decided by live objects count.
-  List of Adjustment API:
-
-    * gc_interval_ratio_set
-    * gc_step_ratio_set
-
-  For details, see the comments for each function.
-
-  == Write Barrier
-
-  mruby implementer, C extension library writer must write a write
-  barrier when writing a pointer to an object on object's field.
-  Two different write barrier:
-
-    * mrb_field_write_barrier
-    * mrb_write_barrier
-
-  == Generational Mode
-
-  mruby's GC offers an Generational Mode while re-using the tri-color GC
-  infrastructure. It will treat the Black objects as Old objects after each
-  sweep phase, instead of paint them to White. The key idea are still same as
-  the traditional generational GC:
-
-    * Minor GC - just traverse the Young objects (Gray objects) in the mark
-                 phase, then only sweep the newly created objects, and leave
-                 the Old objects live.
-
-    * Major GC - same as a full regular GC cycle.
-
-  the difference between "tranditional" generational GC is that, the major GC
-  in mruby is triggered incrementally in a tri-color manner.
-
-
-  For details, see the comments for each function.
-
-*/
-
-struct free_obj {
-  MRB_OBJECT_HEADER;
-  struct RBasic *next;
-};
-
-typedef struct {
-  union {
-    struct free_obj free;
-    struct RBasic basic;
-    struct RObject object;
-    struct RClass klass;
-    struct RString string;
-    struct RArray array;
-    struct RHash hash;
-    struct RRange range;
-    struct RData data;
-    struct RProc proc;
-  } as;
-} RVALUE;
-
-#ifdef GC_PROFILE
-#include <stdio.h>
-#include <sys/time.h>
-
-static double program_invoke_time = 0;
-static double gc_time = 0;
-static double gc_total_time = 0;
-
-static double
-gettimeofday_time(void)
-{
-    struct timeval tv;
-    gettimeofday(&tv, NULL);
-    return tv.tv_sec + tv.tv_usec * 1e-6;
-}
-
-#define GC_INVOKE_TIME_REPORT(with) do {\
-  fprintf(stderr, "%s\n", with);\
-  fprintf(stderr, "gc_invoke: %19.3f\n", gettimeofday_time() - program_invoke_time);\
-  fprintf(stderr, "is_generational: %d\n", is_generational(mrb));\
-  fprintf(stderr, "is_major_gc: %d\n", is_major_gc(mrb));\
-} while(0)
-
-#define GC_TIME_START do {\
-  gc_time = gettimeofday_time();\
-} while(0)
-
-#define GC_TIME_STOP_AND_REPORT do {\
-  gc_time = gettimeofday_time() - gc_time;\
-  gc_total_time += gc_time;\
-  fprintf(stderr, "gc_state: %d\n", mrb->gc_state);\
-  fprintf(stderr, "live: %zu\n", mrb->live);\
-  fprintf(stderr, "majorgc_old_threshold: %zu\n", mrb->majorgc_old_threshold);\
-  fprintf(stderr, "gc_threshold: %zu\n", mrb->gc_threshold);\
-  fprintf(stderr, "gc_time: %30.20f\n", gc_time);\
-  fprintf(stderr, "gc_total_time: %30.20f\n\n", gc_total_time);\
-} while(0)
-#else
-#define GC_INVOKE_TIME_REPORT(s)
-#define GC_TIME_START
-#define GC_TIME_STOP_AND_REPORT
-#endif
-
-#ifdef GC_DEBUG
-#define DEBUG(x) (x)
-#else
-#define DEBUG(x)
-#endif
-
-#define GC_STEP_SIZE 1024
-
-
-void*
-mrb_realloc_simple(mrb_state *mrb, void *p,  size_t len)
-{
-  void *p2;
-
-  p2 = (mrb->allocf)(mrb, p, len, mrb->ud);
-  if (!p2 && len > 0 && mrb->heaps) {
-    mrb_full_gc(mrb);
-    p2 = (mrb->allocf)(mrb, p, len, mrb->ud);
-  }
-
-  return p2;
-}
-
-
-void*
-mrb_realloc(mrb_state *mrb, void *p, size_t len)
-{
-  void *p2;
-
-  p2 = mrb_realloc_simple(mrb, p, len);
-  if (!p2 && len) {
-    if (mrb->out_of_memory) {
-      /* mrb_panic(mrb); */
-    }
-    else {
-      mrb->out_of_memory = TRUE;
-      mrb_raise(mrb, E_RUNTIME_ERROR, "Out of memory");
-    }
-  }
-  else {
-    mrb->out_of_memory = FALSE;
-  }
-
-  return p2;
-}
-
-void*
-mrb_malloc(mrb_state *mrb, size_t len)
-{
-  return mrb_realloc(mrb, 0, len);
-}
-
-void*
-mrb_malloc_simple(mrb_state *mrb, size_t len)
-{
-  return mrb_realloc_simple(mrb, 0, len);
-}
-
-void*
-mrb_calloc(mrb_state *mrb, size_t nelem, size_t len)
-{
-  void *p;
-
-  if (nelem > 0 && len > 0 &&
-      nelem <= SIZE_MAX / len) {
-    size_t size;
-    size = nelem * len;
-    p = mrb_realloc(mrb, 0, size);
-
-    if (p) {
-      memset(p, 0, size);
-    }
-  }
-  else {
-    p = NULL;
-  }
-
-  return p;
-}
-
-void
-mrb_free(mrb_state *mrb, void *p)
-{
-  (mrb->allocf)(mrb, p, 0, mrb->ud);
-}
-
-#ifndef MRB_HEAP_PAGE_SIZE
-#define MRB_HEAP_PAGE_SIZE 1024
-#endif
-
-struct heap_page {
-  struct RBasic *freelist;
-  struct heap_page *prev;
-  struct heap_page *next;
-  struct heap_page *free_next;
-  struct heap_page *free_prev;
-  mrb_bool old:1;
-  RVALUE objects[MRB_HEAP_PAGE_SIZE];
-};
-
-static void
-link_heap_page(mrb_state *mrb, struct heap_page *page)
-{
-  page->next = mrb->heaps;
-  if (mrb->heaps)
-    mrb->heaps->prev = page;
-  mrb->heaps = page;
-}
-
-static void
-unlink_heap_page(mrb_state *mrb, struct heap_page *page)
-{
-  if (page->prev)
-    page->prev->next = page->next;
-  if (page->next)
-    page->next->prev = page->prev;
-  if (mrb->heaps == page)
-    mrb->heaps = page->next;
-  page->prev = NULL;
-  page->next = NULL;
-}
-
-static void
-link_free_heap_page(mrb_state *mrb, struct heap_page *page)
-{
-  page->free_next = mrb->free_heaps;
-  if (mrb->free_heaps) {
-    mrb->free_heaps->free_prev = page;
-  }
-  mrb->free_heaps = page;
-}
-
-static void
-unlink_free_heap_page(mrb_state *mrb, struct heap_page *page)
-{
-  if (page->free_prev)
-    page->free_prev->free_next = page->free_next;
-  if (page->free_next)
-    page->free_next->free_prev = page->free_prev;
-  if (mrb->free_heaps == page)
-    mrb->free_heaps = page->free_next;
-  page->free_prev = NULL;
-  page->free_next = NULL;
-}
-
-static void
-add_heap(mrb_state *mrb)
-{
-  struct heap_page *page = (struct heap_page *)mrb_calloc(mrb, 1, sizeof(struct heap_page));
-  RVALUE *p, *e;
-  struct RBasic *prev = NULL;
-
-  for (p = page->objects, e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
-    p->as.free.tt = MRB_TT_FREE;
-    p->as.free.next = prev;
-    prev = &p->as.basic;
-  }
-  page->freelist = prev;
-
-  link_heap_page(mrb, page);
-  link_free_heap_page(mrb, page);
-}
-
-#define DEFAULT_GC_INTERVAL_RATIO 200
-#define DEFAULT_GC_STEP_RATIO 200
-#define DEFAULT_MAJOR_GC_INC_RATIO 200
-#define is_generational(mrb) ((mrb)->is_generational_gc_mode)
-#define is_major_gc(mrb) (is_generational(mrb) && (mrb)->gc_full)
-#define is_minor_gc(mrb) (is_generational(mrb) && !(mrb)->gc_full)
-
-void
-mrb_init_heap(mrb_state *mrb)
-{
-  mrb->heaps = NULL;
-  mrb->free_heaps = NULL;
-  add_heap(mrb);
-  mrb->gc_interval_ratio = DEFAULT_GC_INTERVAL_RATIO;
-  mrb->gc_step_ratio = DEFAULT_GC_STEP_RATIO;
-#ifndef MRB_GC_TURN_OFF_GENERATIONAL
-  mrb->is_generational_gc_mode = TRUE;
-  mrb->gc_full = TRUE;
-#endif
-
-#ifdef GC_PROFILE
-  program_invoke_time = gettimeofday_time();
-#endif
-}
-
-static void obj_free(mrb_state *mrb, struct RBasic *obj);
-
-void
-mrb_free_heap(mrb_state *mrb)
-{
-  struct heap_page *page = mrb->heaps;
-  struct heap_page *tmp;
-  RVALUE *p, *e;
-
-  while (page) {
-    tmp = page;
-    page = page->next;
-    for (p = tmp->objects, e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
-      if (p->as.free.tt != MRB_TT_FREE)
-        obj_free(mrb, &p->as.basic);
-    }
-    mrb_free(mrb, tmp);
-  }
-}
-
-static void
-gc_protect(mrb_state *mrb, struct RBasic *p)
-{
-  if (mrb->arena_idx >= MRB_ARENA_SIZE) {
-    /* arena overflow error */
-    mrb->arena_idx = MRB_ARENA_SIZE - 4; /* force room in arena */
-    mrb_raise(mrb, E_RUNTIME_ERROR, "arena overflow error");
-  }
-  mrb->arena[mrb->arena_idx++] = p;
-}
-
-void
-mrb_gc_protect(mrb_state *mrb, mrb_value obj)
-{
-  if (mrb_special_const_p(obj)) return;
-  gc_protect(mrb, mrb_basic_ptr(obj));
-}
-
-struct RBasic*
-mrb_obj_alloc(mrb_state *mrb, enum mrb_vtype ttype, struct RClass *cls)
-{
-  struct RBasic *p;
-  static const RVALUE RVALUE_zero = { { { MRB_TT_FALSE } } };
-
-#ifdef MRB_GC_STRESS
-  mrb_full_gc(mrb);
-#endif
-  if (mrb->gc_threshold < mrb->live) {
-    mrb_incremental_gc(mrb);
-  }
-  if (mrb->free_heaps == NULL) {
-    add_heap(mrb);
-  }
-
-  p = mrb->free_heaps->freelist;
-  mrb->free_heaps->freelist = ((struct free_obj*)p)->next;
-  if (mrb->free_heaps->freelist == NULL) {
-    unlink_free_heap_page(mrb, mrb->free_heaps);
-  }
-
-  mrb->live++;
-  gc_protect(mrb, p);
-  *(RVALUE *)p = RVALUE_zero;
-  p->tt = ttype;
-  p->c = cls;
-  paint_partial_white(mrb, p);
-  return p;
-}
-
-static inline void
-add_gray_list(mrb_state *mrb, struct RBasic *obj)
-{
-#ifdef MRB_GC_STRESS
-  if (obj->tt > MRB_TT_MAXDEFINE) {
-    abort();
-  }
-#endif
-  paint_gray(obj);
-  obj->gcnext = mrb->gray_list;
-  mrb->gray_list = obj;
-}
-
-static void
-mark_context_stack(mrb_state *mrb, struct mrb_context *c)
-{
-  size_t i;
-  size_t e;
-
-  e = c->stack - c->stbase;
-  if (c->ci) e += c->ci->nregs;
-  if (c->stbase + e > c->stend) e = c->stend - c->stbase;
-  for (i=0; i<e; i++) {
-    mrb_gc_mark_value(mrb, c->stbase[i]);
-  }
-}
-
-static void
-mark_context(mrb_state *mrb, struct mrb_context *c)
-{
-  size_t i;
-  size_t e;
-  mrb_callinfo *ci;
-
-  /* mark stack */
-  mark_context_stack(mrb, c);
-
-  /* mark ensure stack */
-  e = (c->ci) ? c->ci->eidx : 0;
-  for (i=0; i<e; i++) {
-    mrb_gc_mark(mrb, (struct RBasic*)c->ensure[i]);
-  }
-  /* mark closure */
-  for (ci = c->cibase; ci <= c->ci; ci++) {
-    if (!ci) continue;
-    mrb_gc_mark(mrb, (struct RBasic*)ci->env);
-    mrb_gc_mark(mrb, (struct RBasic*)ci->proc);
-    mrb_gc_mark(mrb, (struct RBasic*)ci->target_class);
-  }
-  if (c->prev && c->prev->fib) {
-    mrb_gc_mark(mrb, (struct RBasic*)c->prev->fib);
-  }
-}
-
-static void
-gc_mark_children(mrb_state *mrb, struct RBasic *obj)
-{
-  mrb_assert(is_gray(obj));
-  paint_black(obj);
-  mrb->gray_list = obj->gcnext;
-  mrb_gc_mark(mrb, (struct RBasic*)obj->c);
-  switch (obj->tt) {
-  case MRB_TT_ICLASS:
-    mrb_gc_mark(mrb, (struct RBasic*)((struct RClass*)obj)->super);
-    break;
-
-  case MRB_TT_CLASS:
-  case MRB_TT_MODULE:
-  case MRB_TT_SCLASS:
-    {
-      struct RClass *c = (struct RClass*)obj;
-
-      mrb_gc_mark_mt(mrb, c);
-      mrb_gc_mark(mrb, (struct RBasic*)c->super);
-    }
-    /* fall through */
-
-  case MRB_TT_OBJECT:
-  case MRB_TT_DATA:
-    mrb_gc_mark_iv(mrb, (struct RObject*)obj);
-    break;
-
-  case MRB_TT_PROC:
-    {
-      struct RProc *p = (struct RProc*)obj;
-
-      mrb_gc_mark(mrb, (struct RBasic*)p->env);
-      mrb_gc_mark(mrb, (struct RBasic*)p->target_class);
-    }
-    break;
-
-  case MRB_TT_ENV:
-    {
-      struct REnv *e = (struct REnv*)obj;
-
-      if (e->cioff < 0) {
-        int i, len;
-
-        len = (int)e->flags;
-        for (i=0; i<len; i++) {
-          mrb_gc_mark_value(mrb, e->stack[i]);
-        }
-      }
-    }
-    break;
-
-  case MRB_TT_FIBER:
-    {
-      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
-
-      mark_context(mrb, c);
-    }
-    break;
-
-  case MRB_TT_ARRAY:
-    {
-      struct RArray *a = (struct RArray*)obj;
-      size_t i, e;
-
-      for (i=0,e=a->len; i<e; i++) {
-        mrb_gc_mark_value(mrb, a->ptr[i]);
-      }
-    }
-    break;
-
-  case MRB_TT_HASH:
-    mrb_gc_mark_iv(mrb, (struct RObject*)obj);
-    mrb_gc_mark_hash(mrb, (struct RHash*)obj);
-    break;
-
-  case MRB_TT_STRING:
-    break;
-
-  case MRB_TT_RANGE:
-    {
-      struct RRange *r = (struct RRange*)obj;
-
-      if (r->edges) {
-        mrb_gc_mark_value(mrb, r->edges->beg);
-        mrb_gc_mark_value(mrb, r->edges->end);
-      }
-    }
-    break;
-
-  default:
-    break;
-  }
-}
-
-void
-mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
-{
-  if (obj == 0) return;
-  if (!is_white(obj)) return;
-  mrb_assert((obj)->tt != MRB_TT_FREE);
-  add_gray_list(mrb, obj);
-}
-
-static void
-obj_free(mrb_state *mrb, struct RBasic *obj)
-{
-  DEBUG(printf("obj_free(%p,tt=%d)\n",obj,obj->tt));
-  switch (obj->tt) {
-    /* immediate - no mark */
-  case MRB_TT_TRUE:
-  case MRB_TT_FIXNUM:
-  case MRB_TT_SYMBOL:
-    /* cannot happen */
-    return;
-
-  case MRB_TT_FLOAT:
-#ifdef MRB_WORD_BOXING
-    break;
-#else
-    return;
-#endif
-
-  case MRB_TT_OBJECT:
-    mrb_gc_free_iv(mrb, (struct RObject*)obj);
-    break;
-
-  case MRB_TT_CLASS:
-  case MRB_TT_MODULE:
-  case MRB_TT_SCLASS:
-    mrb_gc_free_mt(mrb, (struct RClass*)obj);
-    mrb_gc_free_iv(mrb, (struct RObject*)obj);
-    break;
-
-  case MRB_TT_ENV:
-    {
-      struct REnv *e = (struct REnv*)obj;
-
-      if (e->cioff < 0) {
-        mrb_free(mrb, e->stack);
-        e->stack = NULL;
-      }
-    }
-    break;
-
-  case MRB_TT_FIBER:
-    {
-      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
-
-      mrb_free_context(mrb, c);
-    }
-    break;
-
-  case MRB_TT_ARRAY:
-    if (obj->flags & MRB_ARY_SHARED)
-      mrb_ary_decref(mrb, ((struct RArray*)obj)->aux.shared);
-    else
-      mrb_free(mrb, ((struct RArray*)obj)->ptr);
-    break;
-
-  case MRB_TT_HASH:
-    mrb_gc_free_iv(mrb, (struct RObject*)obj);
-    mrb_gc_free_hash(mrb, (struct RHash*)obj);
-    break;
-
-  case MRB_TT_STRING:
-    mrb_gc_free_str(mrb, (struct RString*)obj);
-    break;
-
-  case MRB_TT_RANGE:
-    mrb_free(mrb, ((struct RRange*)obj)->edges);
-    break;
-
-  case MRB_TT_DATA:
-    {
-      struct RData *d = (struct RData*)obj;
-      if (d->type && d->type->dfree) {
-        d->type->dfree(mrb, d->data);
-      }
-      mrb_gc_free_iv(mrb, (struct RObject*)obj);
-    }
-    break;
-
-  default:
-    break;
-  }
-  obj->tt = MRB_TT_FREE;
-}
-
-static void
-root_scan_phase(mrb_state *mrb)
-{
-  size_t i, e, j;
-
-  if (!is_minor_gc(mrb)) {
-    mrb->gray_list = NULL;
-    mrb->atomic_gray_list = NULL;
-  }
-
-  mrb_gc_mark_gv(mrb);
-  /* mark arena */
-  for (i=0,e=mrb->arena_idx; i<e; i++) {
-    mrb_gc_mark(mrb, mrb->arena[i]);
-  }
-  /* mark class hierarchy */
-  mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class);
-  /* mark top_self */
-  mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self);
-  /* mark exception */
-  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
-
-  mark_context(mrb, mrb->root_c);
-  if (mrb->root_c != mrb->c) {
-    mark_context(mrb, mrb->c);
-  }
-
-  /* mark irep pool */
-  if (mrb->irep) {
-    size_t len = mrb->irep_len;
-    if (len > mrb->irep_capa) len = mrb->irep_capa;
-    for (i=0; i<len; i++) {
-      mrb_irep *irep = mrb->irep[i];
-      if (!irep) continue;
-      for (j=0; j<irep->plen; j++) {
-        mrb_gc_mark_value(mrb, irep->pool[j]);
-      }
-    }
-  }
-}
-
-static size_t
-gc_gray_mark(mrb_state *mrb, struct RBasic *obj)
-{
-  size_t children = 0;
-
-  gc_mark_children(mrb, obj);
-
-  switch (obj->tt) {
-  case MRB_TT_ICLASS:
-    children++;
-    break;
-
-  case MRB_TT_CLASS:
-  case MRB_TT_SCLASS:
-  case MRB_TT_MODULE:
-    {
-      struct RClass *c = (struct RClass*)obj;
-
-      children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
-      children += mrb_gc_mark_mt_size(mrb, c);
-      children++;
-    }
-    break;
-
-  case MRB_TT_OBJECT:
-  case MRB_TT_DATA:
-    children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
-    break;
-
-  case MRB_TT_ENV:
-    children += (int)obj->flags;
-    break;
-
-  case MRB_TT_FIBER:
-    {
-      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
-      size_t i;
-      mrb_callinfo *ci;
-
-      /* mark stack */
-      i = c->stack - c->stbase;
-      if (c->ci) i += c->ci->nregs;
-      if (c->stbase + i > c->stend) i = c->stend - c->stbase;
-      children += i;
-
-      /* mark ensure stack */
-      children += (c->ci) ? c->ci->eidx : 0;
-
-      /* mark closure */
-      if (c->cibase) {
-        for (i=0, ci = c->cibase; ci <= c->ci; i++, ci++)
-          ;
-      }
-      children += i;
-    }
-    break;
-
-  case MRB_TT_ARRAY:
-    {
-      struct RArray *a = (struct RArray*)obj;
-      children += a->len;
-    }
-    break;
-
-  case MRB_TT_HASH:
-    children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
-    children += mrb_gc_mark_hash_size(mrb, (struct RHash*)obj);
-    break;
-
-  case MRB_TT_PROC:
-  case MRB_TT_RANGE:
-    children+=2;
-    break;
-
-  default:
-    break;
-  }
-  return children;
-}
-
-
-static void
-gc_mark_gray_list(mrb_state *mrb) {
-  while (mrb->gray_list) {
-    if (is_gray(mrb->gray_list))
-      gc_mark_children(mrb, mrb->gray_list);
-    else
-      mrb->gray_list = mrb->gray_list->gcnext;
-  }
-}
-
-
-static size_t
-incremental_marking_phase(mrb_state *mrb, size_t limit)
-{
-  size_t tried_marks = 0;
-
-  while (mrb->gray_list && tried_marks < limit) {
-    tried_marks += gc_gray_mark(mrb, mrb->gray_list);
-  }
-
-  return tried_marks;
-}
-
-static void
-final_marking_phase(mrb_state *mrb)
-{
-  mark_context_stack(mrb, mrb->root_c);
-  gc_mark_gray_list(mrb);
-  mrb_assert(mrb->gray_list == NULL);
-  mrb->gray_list = mrb->atomic_gray_list;
-  mrb->atomic_gray_list = NULL;
-  gc_mark_gray_list(mrb);
-  mrb_assert(mrb->gray_list == NULL);
-}
-
-static void
-prepare_incremental_sweep(mrb_state *mrb)
-{
-  mrb->gc_state = GC_STATE_SWEEP;
-  mrb->sweeps = mrb->heaps;
-  mrb->gc_live_after_mark = mrb->live;
-}
-
-static size_t
-incremental_sweep_phase(mrb_state *mrb, size_t limit)
-{
-  struct heap_page *page = mrb->sweeps;
-  size_t tried_sweep = 0;
-
-  while (page && (tried_sweep < limit)) {
-    RVALUE *p = page->objects;
-    RVALUE *e = p + MRB_HEAP_PAGE_SIZE;
-    size_t freed = 0;
-    int dead_slot = 1;
-    int full = (page->freelist == NULL);
-
-    if (is_minor_gc(mrb) && page->old) {
-      /* skip a slot which doesn't contain any young object */
-      p = e;
-      dead_slot = 0;
-    }
-    while (p<e) {
-      if (is_dead(mrb, &p->as.basic)) {
-        if (p->as.basic.tt != MRB_TT_FREE) {
-          obj_free(mrb, &p->as.basic);
-          p->as.free.next = page->freelist;
-          page->freelist = (struct RBasic*)p;
-          freed++;
-        }
-      }
-      else {
-        if (!is_generational(mrb))
-          paint_partial_white(mrb, &p->as.basic); /* next gc target */
-        dead_slot = 0;
-      }
-      p++;
-    }
-
-    /* free dead slot */
-    if (dead_slot && freed < MRB_HEAP_PAGE_SIZE) {
-      struct heap_page *next = page->next;
-
-      unlink_heap_page(mrb, page);
-      unlink_free_heap_page(mrb, page);
-      mrb_free(mrb, page);
-      page = next;
-    }
-    else {
-      if (full && freed > 0) {
-        link_free_heap_page(mrb, page);
-      }
-      if (page->freelist == NULL && is_minor_gc(mrb))
-        page->old = TRUE;
-      else
-        page->old = FALSE;
-      page = page->next;
-    }
-    tried_sweep += MRB_HEAP_PAGE_SIZE;
-    mrb->live -= freed;
-    mrb->gc_live_after_mark -= freed;
-  }
-  mrb->sweeps = page;
-  return tried_sweep;
-}
-
-static size_t
-incremental_gc(mrb_state *mrb, size_t limit)
-{
-  switch (mrb->gc_state) {
-  case GC_STATE_NONE:
-    root_scan_phase(mrb);
-    mrb->gc_state = GC_STATE_MARK;
-    flip_white_part(mrb);
-    return 0;
-  case GC_STATE_MARK:
-    if (mrb->gray_list) {
-      return incremental_marking_phase(mrb, limit);
-    }
-    else {
-      final_marking_phase(mrb);
-      prepare_incremental_sweep(mrb);
-      return 0;
-    }
-  case GC_STATE_SWEEP: {
-     size_t tried_sweep = 0;
-     tried_sweep = incremental_sweep_phase(mrb, limit);
-     if (tried_sweep == 0)
-       mrb->gc_state = GC_STATE_NONE;
-     return tried_sweep;
-  }
-  default:
-    /* unknown state */
-    mrb_assert(0);
-    return 0;
-  }
-}
-
-static void
-incremental_gc_until(mrb_state *mrb, enum gc_state to_state)
-{
-  do {
-    incremental_gc(mrb, ~0);
-  } while (mrb->gc_state != to_state);
-}
-
-static void
-incremental_gc_step(mrb_state *mrb)
-{
-  size_t limit = 0, result = 0;
-  limit = (GC_STEP_SIZE/100) * mrb->gc_step_ratio;
-  while (result < limit) {
-    result += incremental_gc(mrb, limit);
-    if (mrb->gc_state == GC_STATE_NONE)
-      break;
-  }
-
-  mrb->gc_threshold = mrb->live + GC_STEP_SIZE;
-}
-
-static void
-clear_all_old(mrb_state *mrb)
-{
-  size_t origin_mode = mrb->is_generational_gc_mode;
-
-  mrb_assert(is_generational(mrb));
-  if (is_major_gc(mrb)) {
-    /* finish the half baked GC */
-    incremental_gc_until(mrb, GC_STATE_NONE);
-  }
-
-  /* Sweep the dead objects, then reset all the live objects
-   * (including all the old objects, of course) to white. */
-  mrb->is_generational_gc_mode = FALSE;
-  prepare_incremental_sweep(mrb);
-  incremental_gc_until(mrb, GC_STATE_NONE);
-  mrb->is_generational_gc_mode = origin_mode;
-
-  /* The gray objects has already been painted as white */
-  mrb->atomic_gray_list = mrb->gray_list = NULL;
-}
-
-void
-mrb_incremental_gc(mrb_state *mrb)
-{
-  if (mrb->gc_disabled) return;
-
-  GC_INVOKE_TIME_REPORT("mrb_incremental_gc()");
-  GC_TIME_START;
-
-  if (is_minor_gc(mrb)) {
-    incremental_gc_until(mrb, GC_STATE_NONE);
-  }
-  else {
-    incremental_gc_step(mrb);
-  }
-
-  if (mrb->gc_state == GC_STATE_NONE) {
-    mrb_assert(mrb->live >= mrb->gc_live_after_mark);
-    mrb->gc_threshold = (mrb->gc_live_after_mark/100) * mrb->gc_interval_ratio;
-    if (mrb->gc_threshold < GC_STEP_SIZE) {
-      mrb->gc_threshold = GC_STEP_SIZE;
-    }
-
-    if (is_major_gc(mrb)) {
-      mrb->majorgc_old_threshold = mrb->gc_live_after_mark/100 * DEFAULT_MAJOR_GC_INC_RATIO;
-      mrb->gc_full = FALSE;
-    }
-    else if (is_minor_gc(mrb)) {
-      if (mrb->live > mrb->majorgc_old_threshold) {
-        clear_all_old(mrb);
-        mrb->gc_full = TRUE;
-      }
-    }
-  }
-
-  GC_TIME_STOP_AND_REPORT;
-}
-
-/* Perform a full gc cycle */
-void
-mrb_full_gc(mrb_state *mrb)
-{
-  if (mrb->gc_disabled) return;
-  GC_INVOKE_TIME_REPORT("mrb_full_gc()");
-  GC_TIME_START;
-
-  if (is_generational(mrb)) {
-    /* clear all the old objects back to young */
-    clear_all_old(mrb);
-    mrb->gc_full = TRUE;
-  }
-  else if (mrb->gc_state != GC_STATE_NONE) {
-    /* finish half baked GC cycle */
-    incremental_gc_until(mrb, GC_STATE_NONE);
-  }
-
-  incremental_gc_until(mrb, GC_STATE_NONE);
-  mrb->gc_threshold = (mrb->gc_live_after_mark/100) * mrb->gc_interval_ratio;
-
-  if (is_generational(mrb)) {
-    mrb->majorgc_old_threshold = mrb->gc_live_after_mark/100 * DEFAULT_MAJOR_GC_INC_RATIO;
-    mrb->gc_full = FALSE;
-  }
-
-  GC_TIME_STOP_AND_REPORT;
-}
-
-void
-mrb_garbage_collect(mrb_state *mrb)
-{
-  mrb_full_gc(mrb);
-}
-
-int
-mrb_gc_arena_save(mrb_state *mrb)
-{
-  return mrb->arena_idx;
-}
-
-void
-mrb_gc_arena_restore(mrb_state *mrb, int idx)
-{
-  mrb->arena_idx = idx;
-}
-
-/*
- * Field write barrier
- *   Paint obj(Black) -> value(White) to obj(Black) -> value(Gray).
- */
-
-void
-mrb_field_write_barrier(mrb_state *mrb, struct RBasic *obj, struct RBasic *value)
-{
-  if (!is_black(obj)) return;
-  if (!is_white(value)) return;
-
-  mrb_assert(!is_dead(mrb, value) && !is_dead(mrb, obj));
-  mrb_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE);
-
-  if (is_generational(mrb) || mrb->gc_state == GC_STATE_MARK) {
-    add_gray_list(mrb, value);
-  }
-  else {
-    mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
-    paint_partial_white(mrb, obj); /* for never write barriers */
-  }
-}
-
-/*
- * Write barrier
- *   Paint obj(Black) to obj(Gray).
- *
- *   The object that is painted gray will be traversed atomically in final
- *   mark phase. So you use this write barrier if it's frequency written spot.
- *   e.g. Set element on Array.
- */
-
-void
-mrb_write_barrier(mrb_state *mrb, struct RBasic *obj)
-{
-  if (!is_black(obj)) return;
-
-  mrb_assert(!is_dead(mrb, obj));
-  mrb_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE);
-  paint_gray(obj);
-  obj->gcnext = mrb->atomic_gray_list;
-  mrb->atomic_gray_list = obj;
-}
-
-/*
- *  call-seq:
- *     GC.start                     -> nil
- *
- *  Initiates full garbage collection.
- *
- */
-
-static mrb_value
-gc_start(mrb_state *mrb, mrb_value obj)
-{
-  mrb_full_gc(mrb);
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     GC.enable    -> true or false
- *
- *  Enables garbage collection, returning <code>true</code> if garbage
- *  collection was previously disabled.
- *
- *     GC.disable   #=> false
- *     GC.enable    #=> true
- *     GC.enable    #=> false
- *
- */
-
-static mrb_value
-gc_enable(mrb_state *mrb, mrb_value obj)
-{
-  int old = mrb->gc_disabled;
-
-  mrb->gc_disabled = FALSE;
-
-  return mrb_bool_value(old);
-}
-
-/*
- *  call-seq:
- *     GC.disable    -> true or false
- *
- *  Disables garbage collection, returning <code>true</code> if garbage
- *  collection was already disabled.
- *
- *     GC.disable   #=> false
- *     GC.disable   #=> true
- *
- */
-
-static mrb_value
-gc_disable(mrb_state *mrb, mrb_value obj)
-{
-  int old = mrb->gc_disabled;
-
-  mrb->gc_disabled = TRUE;
-
-  return mrb_bool_value(old);
-}
-
-/*
- *  call-seq:
- *     GC.interval_ratio      -> fixnum
- *
- *  Returns ratio of GC interval. Default value is 200(%).
- *
- */
-
-static mrb_value
-gc_interval_ratio_get(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_fixnum_value(mrb->gc_interval_ratio);
-}
-
-/*
- *  call-seq:
- *     GC.interval_ratio = fixnum    -> nil
- *
- *  Updates ratio of GC interval. Default value is 200(%).
- *  GC start as soon as after end all step of GC if you set 100(%).
- *
- */
-
-static mrb_value
-gc_interval_ratio_set(mrb_state *mrb, mrb_value obj)
-{
-  mrb_int ratio;
-
-  mrb_get_args(mrb, "i", &ratio);
-  mrb->gc_interval_ratio = ratio;
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     GC.step_ratio    -> fixnum
- *
- *  Returns step span ratio of Incremental GC. Default value is 200(%).
- *
- */
-
-static mrb_value
-gc_step_ratio_get(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_fixnum_value(mrb->gc_step_ratio);
-}
-
-/*
- *  call-seq:
- *     GC.step_ratio = fixnum   -> nil
- *
- *  Updates step span ratio of Incremental GC. Default value is 200(%).
- *  1 step of incrementalGC becomes long if a rate is big.
- *
- */
-
-static mrb_value
-gc_step_ratio_set(mrb_state *mrb, mrb_value obj)
-{
-  mrb_int ratio;
-
-  mrb_get_args(mrb, "i", &ratio);
-  mrb->gc_step_ratio = ratio;
-  return mrb_nil_value();
-}
-
-static void
-change_gen_gc_mode(mrb_state *mrb, mrb_int enable)
-{
-  if (is_generational(mrb) && !enable) {
-    clear_all_old(mrb);
-    mrb_assert(mrb->gc_state == GC_STATE_NONE);
-    mrb->gc_full = FALSE;
-  }
-  else if (!is_generational(mrb) && enable) {
-    incremental_gc_until(mrb, GC_STATE_NONE);
-    mrb->majorgc_old_threshold = mrb->gc_live_after_mark/100 * DEFAULT_MAJOR_GC_INC_RATIO;
-    mrb->gc_full = FALSE;
-  }
-  mrb->is_generational_gc_mode = enable;
-}
-
-/*
- *  call-seq:
- *     GC.generational_mode -> true or false
- *
- *  Returns generational or normal gc mode.
- *
- */
-
-static mrb_value
-gc_generational_mode_get(mrb_state *mrb, mrb_value self)
-{
-  return mrb_bool_value(mrb->is_generational_gc_mode);
-}
-
-/*
- *  call-seq:
- *     GC.generational_mode = true or false -> true or false
- *
- *  Changes to generational or normal gc mode.
- *
- */
-
-static mrb_value
-gc_generational_mode_set(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool enable;
-
-  mrb_get_args(mrb, "b", &enable);
-  if (mrb->is_generational_gc_mode != enable)
-    change_gen_gc_mode(mrb, enable);
-
-  return mrb_bool_value(enable);
-}
-
-void
-mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data)
-{
-    struct heap_page* page = mrb->heaps;
-
-    while (page != NULL) {
-        RVALUE *p, *pend;
-
-        p = page->objects;
-        pend = p + MRB_HEAP_PAGE_SIZE;
-        for (;p < pend; p++) {
-           (*callback)(mrb, &p->as.basic, data);
-        }
-
-        page = page->next;
-    }
-}
-
-#ifdef GC_TEST
-#ifdef GC_DEBUG
-static mrb_value gc_test(mrb_state *, mrb_value);
-#endif
-#endif
-
-void
-mrb_init_gc(mrb_state *mrb)
-{
-  struct RClass *gc;
-
-  gc = mrb_define_module(mrb, "GC");
-
-  mrb_define_class_method(mrb, gc, "start", gc_start, MRB_ARGS_NONE());
-  mrb_define_class_method(mrb, gc, "enable", gc_enable, MRB_ARGS_NONE());
-  mrb_define_class_method(mrb, gc, "disable", gc_disable, MRB_ARGS_NONE());
-  mrb_define_class_method(mrb, gc, "interval_ratio", gc_interval_ratio_get, MRB_ARGS_NONE());
-  mrb_define_class_method(mrb, gc, "interval_ratio=", gc_interval_ratio_set, MRB_ARGS_REQ(1));
-  mrb_define_class_method(mrb, gc, "step_ratio", gc_step_ratio_get, MRB_ARGS_NONE());
-  mrb_define_class_method(mrb, gc, "step_ratio=", gc_step_ratio_set, MRB_ARGS_REQ(1));
-  mrb_define_class_method(mrb, gc, "generational_mode=", gc_generational_mode_set, MRB_ARGS_REQ(1));
-  mrb_define_class_method(mrb, gc, "generational_mode", gc_generational_mode_get, MRB_ARGS_NONE());
-#ifdef GC_TEST
-#ifdef GC_DEBUG
-  mrb_define_class_method(mrb, gc, "test", gc_test, MRB_ARGS_NONE());
-#endif
-#endif
-}
-
-#ifdef GC_TEST
-#ifdef GC_DEBUG
-void
-test_mrb_field_write_barrier(void)
-{
-  mrb_state *mrb = mrb_open();
-  struct RBasic *obj, *value;
-
-  puts("test_mrb_field_write_barrier");
-  mrb->is_generational_gc_mode = FALSE;
-  obj = mrb_basic_ptr(mrb_ary_new(mrb));
-  value = mrb_basic_ptr(mrb_str_new_cstr(mrb, "value"));
-  paint_black(obj);
-  paint_partial_white(mrb,value);
-
-
-  puts("  in GC_STATE_MARK");
-  mrb->gc_state = GC_STATE_MARK;
-  mrb_field_write_barrier(mrb, obj, value);
-
-  mrb_assert(is_gray(value));
-
-
-  puts("  in GC_STATE_SWEEP");
-  paint_partial_white(mrb,value);
-  mrb->gc_state = GC_STATE_SWEEP;
-  mrb_field_write_barrier(mrb, obj, value);
-
-  mrb_assert(obj->color & mrb->current_white_part);
-  mrb_assert(value->color & mrb->current_white_part);
-
-
-  puts("  fail with black");
-  mrb->gc_state = GC_STATE_MARK;
-  paint_white(obj);
-  paint_partial_white(mrb,value);
-  mrb_field_write_barrier(mrb, obj, value);
-
-  mrb_assert(obj->color & mrb->current_white_part);
-
-
-  puts("  fail with gray");
-  mrb->gc_state = GC_STATE_MARK;
-  paint_black(obj);
-  paint_gray(value);
-  mrb_field_write_barrier(mrb, obj, value);
-
-  mrb_assert(is_gray(value));
-
-
-  {
-    puts("test_mrb_field_write_barrier_value");
-    obj = mrb_basic_ptr(mrb_ary_new(mrb));
-    mrb_value value = mrb_str_new_cstr(mrb, "value");
-    paint_black(obj);
-    paint_partial_white(mrb, mrb_basic_ptr(value));
-
-    mrb->gc_state = GC_STATE_MARK;
-    mrb_field_write_barrier_value(mrb, obj, value);
-
-    mrb_assert(is_gray(mrb_basic_ptr(value)));
-  }
-
-  mrb_close(mrb);
-}
-
-void
-test_mrb_write_barrier(void)
-{
-  mrb_state *mrb = mrb_open();
-  struct RBasic *obj;
-
-  puts("test_mrb_write_barrier");
-  obj = mrb_basic_ptr(mrb_ary_new(mrb));
-  paint_black(obj);
-
-  puts("  in GC_STATE_MARK");
-  mrb->gc_state = GC_STATE_MARK;
-  mrb_write_barrier(mrb, obj);
-
-  mrb_assert(is_gray(obj));
-  mrb_assert(mrb->atomic_gray_list == obj);
-
-
-  puts("  fail with gray");
-  paint_gray(obj);
-  mrb_write_barrier(mrb, obj);
-
-  mrb_assert(is_gray(obj));
-
-  mrb_close(mrb);
-}
-
-void
-test_add_gray_list(void)
-{
-  mrb_state *mrb = mrb_open();
-  struct RBasic *obj1, *obj2;
-
-  puts("test_add_gray_list");
-  change_gen_gc_mode(mrb, FALSE);
-  mrb_assert(mrb->gray_list == NULL);
-  obj1 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test"));
-  add_gray_list(mrb, obj1);
-  mrb_assert(mrb->gray_list == obj1);
-  mrb_assert(is_gray(obj1));
-
-  obj2 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test"));
-  add_gray_list(mrb, obj2);
-  mrb_assert(mrb->gray_list == obj2);
-  mrb_assert(mrb->gray_list->gcnext == obj1);
-  mrb_assert(is_gray(obj2));
-
-  mrb_close(mrb);
-}
-
-void
-test_gc_gray_mark(void)
-{
-  mrb_state *mrb = mrb_open();
-  mrb_value obj_v, value_v;
-  struct RBasic *obj;
-  size_t gray_num = 0;
-
-  puts("test_gc_gray_mark");
-
-  puts("  in MRB_TT_CLASS");
-  obj = (struct RBasic*)mrb->object_class;
-  paint_gray(obj);
-  gray_num = gc_gray_mark(mrb, obj);
-  mrb_assert(is_black(obj));
-  mrb_assert(gray_num > 1);
-
-  puts("  in MRB_TT_ARRAY");
-  obj_v = mrb_ary_new(mrb);
-  value_v = mrb_str_new_cstr(mrb, "test");
-  paint_gray(mrb_basic_ptr(obj_v));
-  paint_partial_white(mrb, mrb_basic_ptr(value_v));
-  mrb_ary_push(mrb, obj_v, value_v);
-  gray_num = gc_gray_mark(mrb, mrb_basic_ptr(obj_v));
-  mrb_assert(is_black(mrb_basic_ptr(obj_v)));
-  mrb_assert(is_gray(mrb_basic_ptr(value_v)));
-  mrb_assert(gray_num == 1);
-
-  mrb_close(mrb);
-}
-
-void
-test_incremental_gc(void)
-{
-  mrb_state *mrb = mrb_open();
-  size_t max = ~0, live = 0, total = 0, freed = 0;
-  RVALUE *free;
-  struct heap_page *page;
-
-  puts("test_incremental_gc");
-  change_gen_gc_mode(mrb, FALSE);
-
-  puts("  in mrb_full_gc");
-  mrb_full_gc(mrb);
-
-  mrb_assert(mrb->gc_state == GC_STATE_NONE);
-  puts("  in GC_STATE_NONE");
-  incremental_gc(mrb, max);
-  mrb_assert(mrb->gc_state == GC_STATE_MARK);
-  puts("  in GC_STATE_MARK");
-  incremental_gc_until(mrb, GC_STATE_SWEEP);
-  mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
-
-  puts("  in GC_STATE_SWEEP");
-  page = mrb->heaps;
-  while (page) {
-    RVALUE *p = page->objects;
-    RVALUE *e = p + MRB_HEAP_PAGE_SIZE;
-    while (p<e) {
-      if (is_black(&p->as.basic)) {
-        live++;
-      }
-      if (is_gray(&p->as.basic) && !is_dead(mrb, &p->as.basic)) {
-        printf("%p\n", &p->as.basic);
-      }
-      p++;
-    }
-    page = page->next;
-    total += MRB_HEAP_PAGE_SIZE;
-  }
-
-  mrb_assert(mrb->gray_list == NULL);
-
-  incremental_gc(mrb, max);
-  mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
-
-  incremental_gc(mrb, max);
-  mrb_assert(mrb->gc_state == GC_STATE_NONE);
-
-  free = (RVALUE*)mrb->heaps->freelist;
-  while (free) {
-   freed++;
-   free = (RVALUE*)free->as.free.next;
-  }
-
-  mrb_assert(mrb->live == live);
-  mrb_assert(mrb->live == total-freed);
-
-  puts("test_incremental_gc(gen)");
-  incremental_gc_until(mrb, GC_STATE_SWEEP);
-  change_gen_gc_mode(mrb, TRUE);
-
-  mrb_assert(mrb->gc_full == FALSE);
-  mrb_assert(mrb->gc_state == GC_STATE_NONE);
-
-  puts("  in minor");
-  mrb_assert(is_minor_gc(mrb));
-  mrb_assert(mrb->majorgc_old_threshold > 0);
-  mrb->majorgc_old_threshold = 0;
-  mrb_incremental_gc(mrb);
-  mrb_assert(mrb->gc_full == TRUE);
-  mrb_assert(mrb->gc_state == GC_STATE_NONE);
-
-  puts("  in major");
-  mrb_assert(is_major_gc(mrb));
-  do {
-    mrb_incremental_gc(mrb);
-  } while (mrb->gc_state != GC_STATE_NONE);
-  mrb_assert(mrb->gc_full == FALSE);
-
-  mrb_close(mrb);
-}
-
-void
-test_incremental_sweep_phase(void)
-{
-  mrb_state *mrb = mrb_open();
-
-  puts("test_incremental_sweep_phase");
-
-  add_heap(mrb);
-  mrb->sweeps = mrb->heaps;
-
-  mrb_assert(mrb->heaps->next->next == NULL);
-  mrb_assert(mrb->free_heaps->next->next == NULL);
-  incremental_sweep_phase(mrb, MRB_HEAP_PAGE_SIZE*3);
-
-  mrb_assert(mrb->heaps->next == NULL);
-  mrb_assert(mrb->heaps == mrb->free_heaps);
-
-  mrb_close(mrb);
-}
-
-static mrb_value
-gc_test(mrb_state *mrb, mrb_value self)
-{
-  test_mrb_field_write_barrier();
-  test_mrb_write_barrier();
-  test_add_gray_list();
-  test_gc_gray_mark();
-  test_incremental_gc();
-  test_incremental_sweep_phase();
-  return mrb_nil_value();
-}
-#endif
-#endif

  Deleted: vendor/mruby-eeac4be/src/hash.c (+0 -1261) 100644
===================================================================
--- vendor/mruby-eeac4be/src/hash.c    2014-06-08 19:01:14 +0900 (3684b3b)
+++ /dev/null
@@ -1,1261 +0,0 @@
-/*
-** hash.c - Hash class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/hash.h"
-#include "mruby/khash.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-
-static inline khint_t
-mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key)
-{
-  khint_t h = (khint_t)mrb_type(key) << 24;
-  mrb_value h2;
-
-  h2 = mrb_funcall(mrb, key, "hash", 0, 0);
-  h ^= h2.value.i;
-  return h;
-}
-
-static inline khint_t
-mrb_hash_ht_hash_equal(mrb_state *mrb, mrb_value a, mrb_value b)
-{
-  return mrb_eql(mrb, a, b);
-}
-
-KHASH_DECLARE(ht, mrb_value, mrb_value, 1)
-KHASH_DEFINE (ht, mrb_value, mrb_value, 1, mrb_hash_ht_hash_func, mrb_hash_ht_hash_equal)
-
-static void mrb_hash_modify(mrb_state *mrb, mrb_value hash);
-
-static inline mrb_value
-mrb_hash_ht_key(mrb_state *mrb, mrb_value key)
-{
-  if (mrb_string_p(key))
-    return mrb_str_dup(mrb, key);
-  else
-    return key;
-}
-
-#define KEY(key) mrb_hash_ht_key(mrb, key)
-
-void
-mrb_gc_mark_hash(mrb_state *mrb, struct RHash *hash)
-{
-  khiter_t k;
-  khash_t(ht) *h = hash->ht;
-
-  if (!h) return;
-  for (k = kh_begin(h); k != kh_end(h); k++) {
-    if (kh_exist(h, k)) {
-      mrb_value key = kh_key(h, k);
-      mrb_value val = kh_value(h, k);
-
-      mrb_gc_mark_value(mrb, key);
-      mrb_gc_mark_value(mrb, val);
-    }
-  }
-}
-
-size_t
-mrb_gc_mark_hash_size(mrb_state *mrb, struct RHash *hash)
-{
-  if (!hash->ht) return 0;
-  return kh_size(hash->ht)*2;
-}
-
-void
-mrb_gc_free_hash(mrb_state *mrb, struct RHash *hash)
-{
-  if (hash->ht) kh_destroy(ht, hash->ht);
-}
-
-
-mrb_value
-mrb_hash_new_capa(mrb_state *mrb, int capa)
-{
-  struct RHash *h;
-
-  h = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class);
-  h->ht = kh_init(ht, mrb);
-  if (capa > 0) {
-    kh_resize(ht, h->ht, capa);
-  }
-  h->iv = 0;
-  return mrb_obj_value(h);
-}
-
-mrb_value
-mrb_hash_new(mrb_state *mrb)
-{
-  return mrb_hash_new_capa(mrb, 0);
-}
-
-mrb_value
-mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-
-  if (h) {
-    k = kh_get(ht, h, key);
-    if (k != kh_end(h))
-      return kh_value(h, k);
-  }
-
-  /* not found */
-  if (MRB_RHASH_PROCDEFAULT_P(hash)) {
-    return mrb_funcall(mrb, RHASH_PROCDEFAULT(hash), "call", 2, hash, key);
-  }
-  return RHASH_IFNONE(hash);
-}
-
-mrb_value
-mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-
-  if (h) {
-    k = kh_get(ht, h, key);
-    if (k != kh_end(h))
-      return kh_value(h, k);
-  }
-
-  /* not found */
-  return def;
-}
-
-void
-mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val) /* mrb_hash_aset */
-{
-  khash_t(ht) *h;
-  khiter_t k;
-
-  mrb_hash_modify(mrb, hash);
-  h = RHASH_TBL(hash);
-
-  if (!h) h = RHASH_TBL(hash) = kh_init(ht, mrb);
-  k = kh_get(ht, h, key);
-  if (k == kh_end(h)) {
-    /* expand */
-    int ai = mrb_gc_arena_save(mrb);
-    k = kh_put(ht, h, KEY(key));
-    mrb_gc_arena_restore(mrb, ai);
-  }
-
-  kh_value(h, k) = val;
-  mrb_write_barrier(mrb, (struct RBasic*)RHASH(hash));
-  return;
-}
-
-mrb_value
-mrb_hash_dup(mrb_state *mrb, mrb_value hash)
-{
-  struct RHash* ret;
-  khash_t(ht) *h, *ret_h;
-  khiter_t k, ret_k;
-
-  h = RHASH_TBL(hash);
-  ret = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class);
-  ret->ht = kh_init(ht, mrb);
-
-  if (kh_size(h) > 0) {
-    ret_h = ret->ht;
-
-    for (k = kh_begin(h); k != kh_end(h); k++) {
-      if (kh_exist(h,k)) {
-        int ai = mrb_gc_arena_save(mrb);
-        ret_k = kh_put(ht, ret_h, KEY(kh_key(h,k)));
-        mrb_gc_arena_restore(mrb, ai);
-        kh_val(ret_h, ret_k) = kh_val(h,k);
-      }
-    }
-  }
-
-  return mrb_obj_value(ret);
-}
-
-mrb_value
-mrb_check_hash_type(mrb_state *mrb, mrb_value hash)
-{
-  return mrb_check_convert_type(mrb, hash, MRB_TT_HASH, "Hash", "to_hash");
-}
-
-khash_t(ht) *
-mrb_hash_tbl(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-
-  if (!h) {
-    RHASH_TBL(hash) = kh_init(ht, mrb);
-  }
-  return h;
-}
-
-static void
-mrb_hash_modify(mrb_state *mrb, mrb_value hash)
-{
-  mrb_hash_tbl(mrb, hash);
-}
-
-/* 15.2.13.4.16 */
-/*
- *  call-seq:
- *     Hash.new                          -> new_hash
- *     Hash.new(obj)                     -> new_hash
- *     Hash.new {|hash, key| block }     -> new_hash
- *
- *  Returns a new, empty hash. If this hash is subsequently accessed by
- *  a key that doesn't correspond to a hash entry, the value returned
- *  depends on the style of <code>new</code> used to create the hash. In
- *  the first form, the access returns <code>nil</code>. If
- *  <i>obj</i> is specified, this single object will be used for
- *  all <em>default values</em>. If a block is specified, it will be
- *  called with the hash object and the key, and should return the
- *  default value. It is the block's responsibility to store the value
- *  in the hash if required.
- *
- *     h = Hash.new("Go Fish")
- *     h["a"] = 100
- *     h["b"] = 200
- *     h["a"]           #=> 100
- *     h["c"]           #=> "Go Fish"
- *     # The following alters the single default object
- *     h["c"].upcase!   #=> "GO FISH"
- *     h["d"]           #=> "GO FISH"
- *     h.keys           #=> ["a", "b"]
- *
- *     # While this creates a new default object each time
- *     h = Hash.new { |hash, key| hash[key] = "Go Fish: #{key}" }
- *     h["c"]           #=> "Go Fish: c"
- *     h["c"].upcase!   #=> "GO FISH: C"
- *     h["d"]           #=> "Go Fish: d"
- *     h.keys           #=> ["c", "d"]
- *
- */
-
-static mrb_value
-mrb_hash_init_core(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value block, ifnone;
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "o*", &block, &argv, &argc);
-  mrb_hash_modify(mrb, hash);
-  if (mrb_nil_p(block)) {
-    if (argc > 0) {
-      if (argc != 1) mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-      ifnone = argv[0];
-    }
-    else {
-      ifnone = mrb_nil_value();
-    }
-  }
-  else {
-    if (argc > 0) {
-      mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-    }
-    RHASH(hash)->flags |= MRB_HASH_PROC_DEFAULT;
-    ifnone = block;
-  }
-  mrb_iv_set(mrb, hash, mrb_intern2(mrb, "ifnone", 6), ifnone);
-  return hash;
-}
-
-/*
- *  call-seq:
- *     Hash[ key, value, ... ]         -> new_hash
- *     Hash[ [ [key, value], ... ] ]   -> new_hash
- *     Hash[ object ]                  -> new_hash
- *
- *  Creates a new hash populated with the given objects. Equivalent to
- *  the literal <code>{ <i>key</i> => <i>value</i>, ... }</code>. In the first
- *  form, keys and values occur in pairs, so there must be an even number of arguments.
- *  The second and third form take a single argument which is either
- *  an array of key-value pairs or an object convertible to a hash.
- *
- *     Hash["a", 100, "b", 200]             #=> {"a"=>100, "b"=>200}
- *     Hash[ [ ["a", 100], ["b", 200] ] ]   #=> {"a"=>100, "b"=>200}
- *     Hash["a" => 100, "b" => 200]         #=> {"a"=>100, "b"=>200}
- */
-
-static mrb_value
-to_hash(mrb_state *mrb, mrb_value hash)
-{
-  return mrb_convert_type(mrb, hash, MRB_TT_HASH, "Hash", "to_hash");
-}
-
-/*
- *  call-seq:
- *     Hash.try_convert(obj) -> hash or nil
- *
- *  Try to convert <i>obj</i> into a hash, using to_hash method.
- *  Returns converted hash or nil if <i>obj</i> cannot be converted
- *  for any reason.
- *
- *     Hash.try_convert({1=>2})   # => {1=>2}
- *     Hash.try_convert("1=>2")   # => nil
- */
-
-/* 15.2.13.4.2  */
-/*
- *  call-seq:
- *     hsh[key]    ->  value
- *
- *  Element Reference---Retrieves the <i>value</i> object corresponding
- *  to the <i>key</i> object. If not found, returns the default value (see
- *  <code>Hash::new</code> for details).
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h["a"]   #=> 100
- *     h["c"]   #=> nil
- *
- */
-mrb_value
-mrb_hash_aget(mrb_state *mrb, mrb_value self)
-{
-  mrb_value key;
-
-  mrb_get_args(mrb, "o", &key);
-  return mrb_hash_get(mrb, self, key);
-}
-
-/*
- *  call-seq:
- *     hsh.fetch(key [, default] )       -> obj
- *     hsh.fetch(key) {| key | block }   -> obj
- *
- *  Returns a value from the hash for the given key. If the key can't be
- *  found, there are several options: With no other arguments, it will
- *  raise an <code>KeyError</code> exception; if <i>default</i> is
- *  given, then that will be returned; if the optional code block is
- *  specified, then that will be run and its result returned.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.fetch("a")                            #=> 100
- *     h.fetch("z", "go fish")                 #=> "go fish"
- *     h.fetch("z") { |el| "go fish, #{el}"}   #=> "go fish, z"
- *
- *  The following example shows that an exception is raised if the key
- *  is not found and a default value is not supplied.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.fetch("z")
- *
- *  <em>produces:</em>
- *
- *     prog.rb:2:in `fetch': key not found (KeyError)
- *      from prog.rb:2
- *
- */
-
-/* 15.2.13.4.5  */
-/*
- *  call-seq:
- *     hsh.default(key=nil)   -> obj
- *
- *  Returns the default value, the value that would be returned by
- *  <i>hsh</i>[<i>key</i>] if <i>key</i> did not exist in <i>hsh</i>.
- *  See also <code>Hash::new</code> and <code>Hash#default=</code>.
- *
- *     h = Hash.new                            #=> {}
- *     h.default                               #=> nil
- *     h.default(2)                            #=> nil
- *
- *     h = Hash.new("cat")                     #=> {}
- *     h.default                               #=> "cat"
- *     h.default(2)                            #=> "cat"
- *
- *     h = Hash.new {|h,k| h[k] = k.to_i*10}   #=> {}
- *     h.default                               #=> nil
- *     h.default(2)                            #=> 20
- */
-
-static mrb_value
-mrb_hash_default(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value *argv;
-  int argc;
-  mrb_value key;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  if (MRB_RHASH_PROCDEFAULT_P(hash)) {
-    if (argc == 0) return mrb_nil_value();
-    key = argv[0];
-    return mrb_funcall(mrb, RHASH_PROCDEFAULT(hash), "call", 2, hash, key);
-  }
-  else {
-    return RHASH_IFNONE(hash);
-  }
-}
-
-/* 15.2.13.4.6  */
-/*
- *  call-seq:
- *     hsh.default = obj     -> obj
- *
- *  Sets the default value, the value returned for a key that does not
- *  exist in the hash. It is not possible to set the default to a
- *  <code>Proc</code> that will be executed on each key lookup.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.default = "Go fish"
- *     h["a"]     #=> 100
- *     h["z"]     #=> "Go fish"
- *     # This doesn't do what you might hope...
- *     h.default = proc do |hash, key|
- *       hash[key] = key + key
- *     end
- *     h[2]       #=> #<Proc:0x401b3948 �� -:6>
- *     h["cat"]   #=> #<Proc:0x401b3948 �� -:6>
- */
-
-static mrb_value
-mrb_hash_set_default(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value ifnone;
-
-  mrb_get_args(mrb, "o", &ifnone);
-  mrb_hash_modify(mrb, hash);
-  mrb_iv_set(mrb, hash, mrb_intern2(mrb, "ifnone", 6), ifnone);
-  RHASH(hash)->flags &= ~(MRB_HASH_PROC_DEFAULT);
-
-  return ifnone;
-}
-
-/* 15.2.13.4.7  */
-/*
- *  call-seq:
- *     hsh.default_proc -> anObject
- *
- *  If <code>Hash::new</code> was invoked with a block, return that
- *  block, otherwise return <code>nil</code>.
- *
- *     h = Hash.new {|h,k| h[k] = k*k }   #=> {}
- *     p = h.default_proc                 #=> #<Proc:0x401b3d08 �� -:1>
- *     a = []                             #=> []
- *     p.call(a, 2)
- *     a                                  #=> [nil, nil, 4]
- */
-
-
-static mrb_value
-mrb_hash_default_proc(mrb_state *mrb, mrb_value hash)
-{
-  if (MRB_RHASH_PROCDEFAULT_P(hash)) {
-    return RHASH_PROCDEFAULT(hash);
-  }
-  return mrb_nil_value();
-}
-
-/*
- *  call-seq:
- *     hsh.default_proc = proc_obj     -> proc_obj
- *
- *  Sets the default proc to be executed on each key lookup.
- *
- *     h.default_proc = proc do |hash, key|
- *       hash[key] = key + key
- *     end
- *     h[2]       #=> 4
- *     h["cat"]   #=> "catcat"
- */
-
-static mrb_value
-mrb_hash_set_default_proc(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value ifnone;
-
-  mrb_get_args(mrb, "o", &ifnone);
-  mrb_hash_modify(mrb, hash);
-  mrb_iv_set(mrb, hash, mrb_intern2(mrb, "ifnone", 6), ifnone);
-  RHASH(hash)->flags |= MRB_HASH_PROC_DEFAULT;
-
-  return ifnone;
-}
-
-mrb_value
-mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-  mrb_value delVal;
-
-  if (h) {
-    k = kh_get(ht, h, key);
-    if (k != kh_end(h)) {
-      delVal = kh_value(h, k);
-      kh_del(ht, h, k);
-      return delVal;
-    }
-  }
-
-  /* not found */
-  return mrb_nil_value();
-}
-
-/* 15.2.13.4.8  */
-/*
- *  call-seq:
- *     hsh.delete(key)                   -> value
- *     hsh.delete(key) {| key | block }  -> value
- *
- *  Deletes and returns a key-value pair from <i>hsh</i> whose key is
- *  equal to <i>key</i>. If the key is not found, returns the
- *  <em>default value</em>. If the optional code block is given and the
- *  key is not found, pass in the key and return the result of
- *  <i>block</i>.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.delete("a")                              #=> 100
- *     h.delete("z")                              #=> nil
- *     h.delete("z") { |el| "#{el} not found" }   #=> "z not found"
- *
- */
-mrb_value
-mrb_hash_delete(mrb_state *mrb, mrb_value self)
-{
-  mrb_value key;
-
-  mrb_get_args(mrb, "o", &key);
-  return mrb_hash_delete_key(mrb, self, key);
-}
-
-/* 15.2.13.4.24 */
-/*
- *  call-seq:
- *     hsh.shift -> anArray or obj
- *
- *  Removes a key-value pair from <i>hsh</i> and returns it as the
- *  two-item array <code>[</code> <i>key, value</i> <code>]</code>, or
- *  the hash's default value if the hash is empty.
- *
- *     h = { 1 => "a", 2 => "b", 3 => "c" }
- *     h.shift   #=> [1, "a"]
- *     h         #=> {2=>"b", 3=>"c"}
- */
-
-static mrb_value
-mrb_hash_shift(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-  mrb_value delKey, delVal;
-
-  mrb_hash_modify(mrb, hash);
-  if (h) {
-    if (kh_size(h) > 0) {
-      for (k = kh_begin(h); k != kh_end(h); k++) {
-        if (!kh_exist(h,k)) continue;
-
-        delKey = kh_key(h,k);
-        mrb_gc_protect(mrb, delKey);
-        delVal = mrb_hash_delete_key(mrb, hash, delKey);
-        mrb_gc_protect(mrb, delVal);
-
-        return mrb_assoc_new(mrb, delKey, delVal);
-      }
-    }
-  }
-
-  if (MRB_RHASH_PROCDEFAULT_P(hash)) {
-    return mrb_funcall(mrb, RHASH_PROCDEFAULT(hash), "call", 2, hash, mrb_nil_value());
-  }
-  else {
-    return RHASH_IFNONE(hash);
-  }
-}
-
-/*
- *  call-seq:
- *     hsh.delete_if {| key, value | block }  -> hsh
- *     hsh.delete_if                          -> an_enumerator
- *
- *  Deletes every key-value pair from <i>hsh</i> for which <i>block</i>
- *  evaluates to <code>true</code>.
- *
- *  If no block is given, an enumerator is returned instead.
- *
- *     h = { "a" => 100, "b" => 200, "c" => 300 }
- *     h.delete_if {|key, value| key >= "b" }   #=> {"a"=>100}
- *
- */
-
-/*
- *  call-seq:
- *     hsh.reject! {| key, value | block }  -> hsh or nil
- *     hsh.reject!                          -> an_enumerator
- *
- *  Equivalent to <code>Hash#delete_if</code>, but returns
- *  <code>nil</code> if no changes were made.
- */
-
-/*
- *  call-seq:
- *     hsh.reject {| key, value | block }  -> a_hash
- *
- *  Same as <code>Hash#delete_if</code>, but works on (and returns) a
- *  copy of the <i>hsh</i>. Equivalent to
- *  <code><i>hsh</i>.dup.delete_if</code>.
- *
- */
-
-/*
- *  call-seq:
- *     hsh.select {|key, value| block}   -> a_hash
- *     hsh.select                        -> an_enumerator
- *
- *  Returns a new hash consisting of entries for which the block returns true.
- *
- *  If no block is given, an enumerator is returned instead.
- *
- *     h = { "a" => 100, "b" => 200, "c" => 300 }
- *     h.select {|k,v| k > "a"}  #=> {"b" => 200, "c" => 300}
- *     h.select {|k,v| v < 200}  #=> {"a" => 100}
- */
-
-/*
- *  call-seq:
- *     hsh.select! {| key, value | block }  -> hsh or nil
- *     hsh.select!                          -> an_enumerator
- *
- *  Equivalent to <code>Hash#keep_if</code>, but returns
- *  <code>nil</code> if no changes were made.
- */
-
-/*
- *  call-seq:
- *     hsh.keep_if {| key, value | block }  -> hsh
- *     hsh.keep_if                          -> an_enumerator
- *
- *  Deletes every key-value pair from <i>hsh</i> for which <i>block</i>
- *  evaluates to false.
- *
- *  If no block is given, an enumerator is returned instead.
- *
- */
-
-/* 15.2.13.4.4  */
-/*
- *  call-seq:
- *     hsh.clear -> hsh
- *
- *  Removes all key-value pairs from <i>hsh</i>.
- *
- *     h = { "a" => 100, "b" => 200 }   #=> {"a"=>100, "b"=>200}
- *     h.clear                          #=> {}
- *
- */
-
-mrb_value
-mrb_hash_clear(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-
-  if (h) kh_clear(ht, h);
-  return hash;
-}
-
-/* 15.2.13.4.3  */
-/* 15.2.13.4.26 */
-/*
- *  call-seq:
- *     hsh[key] = value        -> value
- *     hsh.store(key, value)   -> value
- *
- *  Element Assignment---Associates the value given by
- *  <i>value</i> with the key given by <i>key</i>.
- *  <i>key</i> should not have its value changed while it is in
- *  use as a key (a <code>String</code> passed as a key will be
- *  duplicated and frozen).
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h["a"] = 9
- *     h["c"] = 4
- *     h   #=> {"a"=>9, "b"=>200, "c"=>4}
- *
- */
-mrb_value
-mrb_hash_aset(mrb_state *mrb, mrb_value self)
-{
-  mrb_value key, val;
-
-  mrb_get_args(mrb, "oo", &key, &val);
-  mrb_hash_set(mrb, self, key, val);
-  return val;
-}
-
-/* 15.2.13.4.17 */
-/* 15.2.13.4.23 */
-/*
- *  call-seq:
- *     hsh.replace(other_hash) -> hsh
- *
- *  Replaces the contents of <i>hsh</i> with the contents of
- *  <i>other_hash</i>.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.replace({ "c" => 300, "d" => 400 })   #=> {"c"=>300, "d"=>400}
- *
- */
-
-static mrb_value
-mrb_hash_replace(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value hash2, ifnone;
-  khash_t(ht) *h2;
-  khiter_t k;
-
-  mrb_get_args(mrb, "o", &hash2);
-  hash2 = to_hash(mrb, hash2);
-  if (mrb_obj_equal(mrb, hash, hash2)) return hash;
-  mrb_hash_clear(mrb, hash);
-
-  h2 = RHASH_TBL(hash2);
-  if (h2) {
-    for (k = kh_begin(h2); k != kh_end(h2); k++) {
-      if (kh_exist(h2, k))
-        mrb_hash_set(mrb, hash, kh_key(h2, k), kh_value(h2, k));
-    }
-  }
-
-  if (MRB_RHASH_PROCDEFAULT_P(hash2)) {
-    RHASH(hash)->flags |= MRB_HASH_PROC_DEFAULT;
-    ifnone = RHASH_PROCDEFAULT(hash2);
-  }
-  else {
-    ifnone = RHASH_IFNONE(hash2);
-  }
-  mrb_iv_set(mrb, hash, mrb_intern2(mrb, "ifnone", 6), ifnone);
-
-  return hash;
-}
-
-/* 15.2.13.4.20 */
-/* 15.2.13.4.25 */
-/*
- *  call-seq:
- *     hsh.length    ->  fixnum
- *     hsh.size      ->  fixnum
- *
- *  Returns the number of key-value pairs in the hash.
- *
- *     h = { "d" => 100, "a" => 200, "v" => 300, "e" => 400 }
- *     h.length        #=> 4
- *     h.delete("a")   #=> 200
- *     h.length        #=> 3
- */
-static mrb_value
-mrb_hash_size_m(mrb_state *mrb, mrb_value self)
-{
-  khash_t(ht) *h = RHASH_TBL(self);
-
-  if (!h) return mrb_fixnum_value(0);
-  return mrb_fixnum_value(kh_size(h));
-}
-
-/* 15.2.13.4.12 */
-/*
- *  call-seq:
- *     hsh.empty?    -> true or false
- *
- *  Returns <code>true</code> if <i>hsh</i> contains no key-value pairs.
- *
- *     {}.empty?   #=> true
- *
- */
-mrb_value
-mrb_hash_empty_p(mrb_state *mrb, mrb_value self)
-{
-  khash_t(ht) *h = RHASH_TBL(self);
-
-  if (h) return mrb_bool_value(kh_size(h) == 0);
-  return mrb_true_value();
-}
-
-static mrb_value
-inspect_hash(mrb_state *mrb, mrb_value hash, int recur)
-{
-  mrb_value str, str2;
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-
-  if (recur) return mrb_str_new(mrb, "{...}", 5);
-
-  str = mrb_str_new(mrb, "{", 1);
-  if (h && kh_size(h) > 0) {
-    for (k = kh_begin(h); k != kh_end(h); k++) {
-      int ai;
-
-      if (!kh_exist(h,k)) continue;
-
-      ai = mrb_gc_arena_save(mrb);
-
-      if (RSTRING_LEN(str) > 1) mrb_str_cat(mrb, str, ", ", 2);
-
-      str2 = mrb_inspect(mrb, kh_key(h,k));
-      mrb_str_append(mrb, str, str2);
-      mrb_str_buf_cat(mrb, str, "=>", 2);
-      str2 = mrb_inspect(mrb, kh_value(h,k));
-      mrb_str_append(mrb, str, str2);
-
-      mrb_gc_arena_restore(mrb, ai);
-    }
-  }
-  mrb_str_buf_cat(mrb, str, "}", 1);
-
-  return str;
-}
-
-/* 15.2.13.4.30 (x)*/
-/*
- * call-seq:
- *   hsh.to_s     -> string
- *   hsh.inspect  -> string
- *
- * Return the contents of this hash as a string.
- *
- *     h = { "c" => 300, "a" => 100, "d" => 400, "c" => 300  }
- *     h.to_s   #=> "{\"c\"=>300, \"a\"=>100, \"d\"=>400}"
- */
-
-static mrb_value
-mrb_hash_inspect(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-
-  if (!h || kh_size(h) == 0)
-    return mrb_str_new(mrb, "{}", 2);
-  return inspect_hash(mrb, hash, 0);
-}
-
-/* 15.2.13.4.29 (x)*/
-/*
- * call-seq:
- *    hsh.to_hash   => hsh
- *
- * Returns +self+.
- */
-
-static mrb_value
-mrb_hash_to_hash(mrb_state *mrb, mrb_value hash)
-{
-    return hash;
-}
-
-/* 15.2.13.4.19 */
-/*
- *  call-seq:
- *     hsh.keys    -> array
- *
- *  Returns a new array populated with the keys from this hash. See also
- *  <code>Hash#values</code>.
- *
- *     h = { "a" => 100, "b" => 200, "c" => 300, "d" => 400 }
- *     h.keys   #=> ["a", "b", "c", "d"]
- *
- */
-
-mrb_value
-mrb_hash_keys(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-  mrb_value ary;
-
-  if (!h) return mrb_ary_new(mrb);
-  ary = mrb_ary_new_capa(mrb, kh_size(h));
-  for (k = kh_begin(h); k != kh_end(h); k++) {
-    if (kh_exist(h, k)) {
-      mrb_value v = kh_key(h,k);
-      mrb_ary_push(mrb, ary, v);
-    }
-  }
-  return ary;
-}
-
-/* 15.2.13.4.28 */
-/*
- *  call-seq:
- *     hsh.values    -> array
- *
- *  Returns a new array populated with the values from <i>hsh</i>. See
- *  also <code>Hash#keys</code>.
- *
- *     h = { "a" => 100, "b" => 200, "c" => 300 }
- *     h.values   #=> [100, 200, 300]
- *
- */
-
-static mrb_value
-mrb_hash_values(mrb_state *mrb, mrb_value hash)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-  mrb_value ary;
-
-  if (!h) return mrb_ary_new(mrb);
-  ary = mrb_ary_new_capa(mrb, kh_size(h));
-  for (k = kh_begin(h); k != kh_end(h); k++) {
-    if (kh_exist(h, k)){
-      mrb_value v = kh_value(h,k);
-      mrb_ary_push(mrb, ary, v);
-    }
-  }
-  return ary;
-}
-
-static mrb_value
-mrb_hash_has_keyWithKey(mrb_state *mrb, mrb_value hash, mrb_value key)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-
-  if (h) {
-    k = kh_get(ht, h, key);
-    return mrb_bool_value(k != kh_end(h));
-  }
-  return mrb_false_value();
-}
-
-/* 15.2.13.4.13 */
-/* 15.2.13.4.15 */
-/* 15.2.13.4.18 */
-/* 15.2.13.4.21 */
-/*
- *  call-seq:
- *     hsh.has_key?(key)    -> true or false
- *     hsh.include?(key)    -> true or false
- *     hsh.key?(key)        -> true or false
- *     hsh.member?(key)     -> true or false
- *
- *  Returns <code>true</code> if the given key is present in <i>hsh</i>.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.has_key?("a")   #=> true
- *     h.has_key?("z")   #=> false
- *
- */
-
-static mrb_value
-mrb_hash_has_key(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value key;
-
-  mrb_get_args(mrb, "o", &key);
-  return mrb_hash_has_keyWithKey(mrb, hash, key);
-}
-
-static mrb_value
-mrb_hash_has_valueWithvalue(mrb_state *mrb, mrb_value hash, mrb_value value)
-{
-  khash_t(ht) *h = RHASH_TBL(hash);
-  khiter_t k;
-
-  if (h) {
-    for (k = kh_begin(h); k != kh_end(h); k++) {
-      if (!kh_exist(h, k)) continue;
-
-      if (mrb_equal(mrb, kh_value(h,k), value)) {
-        return mrb_true_value();
-      }
-    }
-  }
-
-  return mrb_false_value();
-}
-
-/* 15.2.13.4.14 */
-/* 15.2.13.4.27 */
-/*
- *  call-seq:
- *     hsh.has_value?(value)    -> true or false
- *     hsh.value?(value)        -> true or false
- *
- *  Returns <code>true</code> if the given value is present for some key
- *  in <i>hsh</i>.
- *
- *     h = { "a" => 100, "b" => 200 }
- *     h.has_value?(100)   #=> true
- *     h.has_value?(999)   #=> false
- */
-
-static mrb_value
-mrb_hash_has_value(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value val;
-
-  mrb_get_args(mrb, "o", &val);
-  return mrb_hash_has_valueWithvalue(mrb, hash, val);
-}
-
-static mrb_value
-hash_equal(mrb_state *mrb, mrb_value hash1, mrb_value hash2, int eql)
-{
-  khash_t(ht) *h1, *h2;
-
-  if (mrb_obj_equal(mrb, hash1, hash2)) return mrb_true_value();
-  if (!mrb_hash_p(hash2)) {
-      if (!mrb_respond_to(mrb, hash2, mrb_intern2(mrb, "to_hash", 7))) {
-          return mrb_false_value();
-      }
-      if (eql)
-          return mrb_fixnum_value(mrb_eql(mrb, hash2, hash1));
-      else
-          return mrb_fixnum_value(mrb_equal(mrb, hash2, hash1));
-  }
-  h1 = RHASH_TBL(hash1);
-  h2 = RHASH_TBL(hash2);
-  if (!h1) {
-    return mrb_bool_value(!h2);
-  }
-  if (!h2) return mrb_false_value();
-  if (kh_size(h1) != kh_size(h2)) return mrb_false_value();
-  else {
-    khiter_t k1, k2;
-    mrb_value key;
-
-    for (k1 = kh_begin(h1); k1 != kh_end(h1); k1++) {
-      if (!kh_exist(h1, k1)) continue;
-      key = kh_key(h1,k1);
-      k2 = kh_get(ht, h2, key);
-      if (k2 != kh_end(h2)) {
-        if (mrb_equal(mrb, kh_value(h1,k1), kh_value(h2,k2))) {
-          continue; /* next key */
-        }
-      }
-      return mrb_false_value();
-    }
-  }
-  return mrb_true_value();
-}
-
-/* 15.2.13.4.1  */
-/*
- *  call-seq:
- *     hsh == other_hash    -> true or false
- *
- *  Equality---Two hashes are equal if they each contain the same number
- *  of keys and if each key-value pair is equal to (according to
- *  <code>Object#==</code>) the corresponding elements in the other
- *  hash.
- *
- *     h1 = { "a" => 1, "c" => 2 }
- *     h2 = { 7 => 35, "c" => 2, "a" => 1 }
- *     h3 = { "a" => 1, "c" => 2, 7 => 35 }
- *     h4 = { "a" => 1, "d" => 2, "f" => 35 }
- *     h1 == h2   #=> false
- *     h2 == h3   #=> true
- *     h3 == h4   #=> false
- *
- */
-
-static mrb_value
-mrb_hash_equal(mrb_state *mrb, mrb_value hash1)
-{
-  mrb_value hash2;
-
-  mrb_get_args(mrb, "o", &hash2);
-  return hash_equal(mrb, hash1, hash2, FALSE);
-}
-
-/* 15.2.13.4.32 (x)*/
-/*
- *  call-seq:
- *     hash.eql?(other)  -> true or false
- *
- *  Returns <code>true</code> if <i>hash</i> and <i>other</i> are
- *  both hashes with the same content.
- */
-
-static mrb_value
-mrb_hash_eql(mrb_state *mrb, mrb_value hash1)
-{
-  mrb_value hash2;
-
-  mrb_get_args(mrb, "o", &hash2);
-  return hash_equal(mrb, hash1, hash2, TRUE);
-}
-
-/*
- *  call-seq:
- *     hsh.merge!(other_hash)                                 -> hsh
- *     hsh.update(other_hash)                                 -> hsh
- *     hsh.merge!(other_hash){|key, oldval, newval| block}    -> hsh
- *     hsh.update(other_hash){|key, oldval, newval| block}    -> hsh
- *
- *  Adds the contents of <i>other_hash</i> to <i>hsh</i>.  If no
- *  block is specified, entries with duplicate keys are overwritten
- *  with the values from <i>other_hash</i>, otherwise the value
- *  of each duplicate key is determined by calling the block with
- *  the key, its value in <i>hsh</i> and its value in <i>other_hash</i>.
- *
- *     h1 = { "a" => 100, "b" => 200 }
- *     h2 = { "b" => 254, "c" => 300 }
- *     h1.merge!(h2)   #=> {"a"=>100, "b"=>254, "c"=>300}
- *
- *     h1 = { "a" => 100, "b" => 200 }
- *     h2 = { "b" => 254, "c" => 300 }
- *     h1.merge!(h2) { |key, v1, v2| v1 }
- *                     #=> {"a"=>100, "b"=>200, "c"=>300}
- */
-
-/* 15.2.13.4.22 */
-/*
- *  call-seq:
- *     hsh.merge(other_hash)                              -> new_hash
- *     hsh.merge(other_hash){|key, oldval, newval| block} -> new_hash
- *
- *  Returns a new hash containing the contents of <i>other_hash</i> and
- *  the contents of <i>hsh</i>. If no block is specified, the value for
- *  entries with duplicate keys will be that of <i>other_hash</i>. Otherwise
- *  the value for each duplicate key is determined by calling the block
- *  with the key, its value in <i>hsh</i> and its value in <i>other_hash</i>.
- *
- *     h1 = { "a" => 100, "b" => 200 }
- *     h2 = { "b" => 254, "c" => 300 }
- *     h1.merge(h2)   #=> {"a"=>100, "b"=>254, "c"=>300}
- *     h1.merge(h2){|key, oldval, newval| newval - oldval}
- *                    #=> {"a"=>100, "b"=>54,  "c"=>300}
- *     h1             #=> {"a"=>100, "b"=>200}
- *
- */
-
-/*
- *  call-seq:
- *     hash.assoc(obj)   ->  an_array  or  nil
- *
- *  Searches through the hash comparing _obj_ with the key using <code>==</code>.
- *  Returns the key-value pair (two elements array) or +nil+
- *  if no match is found.  See <code>Array#assoc</code>.
- *
- *     h = {"colors"  => ["red", "blue", "green"],
- *          "letters" => ["a", "b", "c" ]}
- *     h.assoc("letters")  #=> ["letters", ["a", "b", "c"]]
- *     h.assoc("foo")      #=> nil
- */
-
-mrb_value
-mrb_hash_assoc(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value key, value, has_key;
-
-  mrb_get_args(mrb, "o", &key);
-  if (mrb_nil_p(key))
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
-
-  has_key = mrb_hash_has_keyWithKey(mrb, hash, key);
-  if (mrb_test(has_key)) {
-    value = mrb_hash_get(mrb, hash, key);
-    return mrb_assoc_new(mrb, key, value);
-  }
-  else {
-    return mrb_nil_value();
-  }
-}
-
-/*
- *  call-seq:
- *     hash.rassoc(key) -> an_array or nil
- *
- *  Searches through the hash comparing _obj_ with the value using <code>==</code>.
- *  Returns the first key-value pair (two-element array) that matches. See
- *  also <code>Array#rassoc</code>.
- *
- *     a = {1=> "one", 2 => "two", 3 => "three", "ii" => "two"}
- *     a.rassoc("two")    #=> [2, "two"]
- *     a.rassoc("four")   #=> nil
- */
-
-mrb_value
-mrb_hash_rassoc(mrb_state *mrb, mrb_value hash)
-{
-  mrb_value key, value, has_key;
-
-  mrb_get_args(mrb, "o", &key);
-  has_key = mrb_hash_has_keyWithKey(mrb, hash, key);
-  if (mrb_test(has_key)) {
-    value = mrb_hash_get(mrb, hash, key);
-    return mrb_assoc_new(mrb, value, key);
-  }
-  else {
-    return mrb_nil_value();
-  }
-}
-
-/*
- *  call-seq:
- *     hash.flatten -> an_array
- *     hash.flatten(level) -> an_array
- *
- *  Returns a new array that is a one-dimensional flattening of this
- *  hash. That is, for every key or value that is an array, extract
- *  its elements into the new array.  Unlike Array#flatten, this
- *  method does not flatten recursively by default.  The optional
- *  <i>level</i> argument determines the level of recursion to flatten.
- *
- *     a =  {1=> "one", 2 => [2,"two"], 3 => "three"}
- *     a.flatten    # => [1, "one", 2, [2, "two"], 3, "three"]
- *     a.flatten(2) # => [1, "one", 2, 2, "two", 3, "three"]
- */
-
-/*
- *  A <code>Hash</code> is a collection of key-value pairs. It is
- *  similar to an <code>Array</code>, except that indexing is done via
- *  arbitrary keys of any object type, not an integer index. Hashes enumerate
- *  their values in the order that the corresponding keys were inserted.
- *
- *  Hashes have a <em>default value</em> that is returned when accessing
- *  keys that do not exist in the hash. By default, that value is
- *  <code>nil</code>.
- *
- */
-
-void
-mrb_init_hash(mrb_state *mrb)
-{
-  struct RClass *h;
-
-  h = mrb->hash_class = mrb_define_class(mrb, "Hash", mrb->object_class);
-  MRB_SET_INSTANCE_TT(h, MRB_TT_HASH);
-
-  mrb_include_module(mrb, h, mrb_class_get(mrb, "Enumerable"));
-  mrb_define_method(mrb, h, "==",              mrb_hash_equal,       MRB_ARGS_REQ(1)); /* 15.2.13.4.1  */
-  mrb_define_method(mrb, h, "[]",              mrb_hash_aget,        MRB_ARGS_REQ(1)); /* 15.2.13.4.2  */
-  mrb_define_method(mrb, h, "[]=",             mrb_hash_aset,        MRB_ARGS_REQ(2)); /* 15.2.13.4.3  */
-  mrb_define_method(mrb, h, "clear",           mrb_hash_clear,       MRB_ARGS_NONE()); /* 15.2.13.4.4  */
-  mrb_define_method(mrb, h, "default",         mrb_hash_default,     MRB_ARGS_ANY());  /* 15.2.13.4.5  */
-  mrb_define_method(mrb, h, "default=",        mrb_hash_set_default, MRB_ARGS_REQ(1)); /* 15.2.13.4.6  */
-  mrb_define_method(mrb, h, "default_proc",    mrb_hash_default_proc,MRB_ARGS_NONE()); /* 15.2.13.4.7  */
-  mrb_define_method(mrb, h, "default_proc=",   mrb_hash_set_default_proc,MRB_ARGS_REQ(1)); /* 15.2.13.4.7  */
-  mrb_define_method(mrb, h, "__delete",        mrb_hash_delete,      MRB_ARGS_REQ(1)); /* core of 15.2.13.4.8  */
-  mrb_define_method(mrb, h, "empty?",          mrb_hash_empty_p,     MRB_ARGS_NONE()); /* 15.2.13.4.12 */
-  mrb_define_method(mrb, h, "has_key?",        mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.13 */
-  mrb_define_method(mrb, h, "has_value?",      mrb_hash_has_value,   MRB_ARGS_REQ(1)); /* 15.2.13.4.14 */
-  mrb_define_method(mrb, h, "include?",        mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.15 */
-  mrb_define_method(mrb, h, "__init_core",     mrb_hash_init_core,   MRB_ARGS_ANY());  /* core of 15.2.13.4.16 */
-  mrb_define_method(mrb, h, "initialize_copy", mrb_hash_replace,     MRB_ARGS_REQ(1)); /* 15.2.13.4.17 */
-  mrb_define_method(mrb, h, "key?",            mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.18 */
-  mrb_define_method(mrb, h, "keys",            mrb_hash_keys,        MRB_ARGS_NONE()); /* 15.2.13.4.19 */
-  mrb_define_method(mrb, h, "length",          mrb_hash_size_m,      MRB_ARGS_NONE()); /* 15.2.13.4.20 */
-  mrb_define_method(mrb, h, "member?",         mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.21 */
-  mrb_define_method(mrb, h, "replace",         mrb_hash_replace,     MRB_ARGS_REQ(1)); /* 15.2.13.4.23 */
-  mrb_define_method(mrb, h, "shift",           mrb_hash_shift,       MRB_ARGS_NONE()); /* 15.2.13.4.24 */
-  mrb_define_method(mrb, h, "size",            mrb_hash_size_m,      MRB_ARGS_NONE()); /* 15.2.13.4.25 */
-  mrb_define_method(mrb, h, "store",           mrb_hash_aset,        MRB_ARGS_REQ(2)); /* 15.2.13.4.26 */
-  mrb_define_method(mrb, h, "value?",          mrb_hash_has_value,   MRB_ARGS_REQ(1)); /* 15.2.13.4.27 */
-  mrb_define_method(mrb, h, "values",          mrb_hash_values,      MRB_ARGS_NONE()); /* 15.2.13.4.28 */
-
-  mrb_define_method(mrb, h, "to_hash",         mrb_hash_to_hash,     MRB_ARGS_NONE()); /* 15.2.13.4.29 (x)*/
-  mrb_define_method(mrb, h, "inspect",         mrb_hash_inspect,     MRB_ARGS_NONE()); /* 15.2.13.4.30 (x)*/
-  mrb_define_alias(mrb,  h, "to_s",            "inspect");                             /* 15.2.13.4.31 (x)*/
-  mrb_define_method(mrb, h, "eql?",            mrb_hash_eql,         MRB_ARGS_REQ(1)); /* 15.2.13.4.32 (x)*/
-}

  Deleted: vendor/mruby-eeac4be/src/init.c (+0 -62) 100644
===================================================================
--- vendor/mruby-eeac4be/src/init.c    2014-06-08 19:01:14 +0900 (e97c72d)
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-** init.c - initialize mruby core
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-
-void mrb_init_symtbl(mrb_state*);
-void mrb_init_class(mrb_state*);
-void mrb_init_object(mrb_state*);
-void mrb_init_kernel(mrb_state*);
-void mrb_init_comparable(mrb_state*);
-void mrb_init_enumerable(mrb_state*);
-void mrb_init_symbol(mrb_state*);
-void mrb_init_exception(mrb_state*);
-void mrb_init_proc(mrb_state*);
-void mrb_init_string(mrb_state*);
-void mrb_init_array(mrb_state*);
-void mrb_init_hash(mrb_state*);
-void mrb_init_numeric(mrb_state*);
-void mrb_init_range(mrb_state*);
-void mrb_init_gc(mrb_state*);
-void mrb_init_math(mrb_state*);
-void mrb_init_mrblib(mrb_state*);
-void mrb_init_mrbgems(mrb_state*);
-void mrb_final_mrbgems(mrb_state*);
-
-#define DONE mrb_gc_arena_restore(mrb, 0);
-void
-mrb_init_core(mrb_state *mrb)
-{
-  mrb_init_symtbl(mrb); DONE;
-
-  mrb_init_class(mrb); DONE;
-  mrb_init_object(mrb); DONE;
-  mrb_init_kernel(mrb); DONE;
-  mrb_init_comparable(mrb); DONE;
-  mrb_init_enumerable(mrb); DONE;
-
-  mrb_init_symbol(mrb); DONE;
-  mrb_init_exception(mrb); DONE;
-  mrb_init_proc(mrb); DONE;
-  mrb_init_string(mrb); DONE;
-  mrb_init_array(mrb); DONE;
-  mrb_init_hash(mrb); DONE;
-  mrb_init_numeric(mrb); DONE;
-  mrb_init_range(mrb); DONE;
-  mrb_init_gc(mrb); DONE;
-  mrb_init_mrblib(mrb); DONE;
-#ifndef DISABLE_GEMS
-  mrb_init_mrbgems(mrb); DONE;
-#endif
-}
-
-void
-mrb_final_core(mrb_state *mrb)
-{
-#ifndef DISABLE_GEMS
-  mrb_final_mrbgems(mrb); DONE;
-#endif
-}

  Deleted: vendor/mruby-eeac4be/src/kernel.c (+0 -1133) 100644
===================================================================
--- vendor/mruby-eeac4be/src/kernel.c    2014-06-08 19:01:14 +0900 (bd58078)
+++ /dev/null
@@ -1,1133 +0,0 @@
-/*
-** kernel.c - Kernel module
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/proc.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-#include "error.h"
-
-typedef enum {
-    NOEX_PUBLIC    = 0x00,
-    NOEX_NOSUPER   = 0x01,
-    NOEX_PRIVATE   = 0x02,
-    NOEX_PROTECTED = 0x04,
-    NOEX_MASK      = 0x06,
-    NOEX_BASIC     = 0x08,
-    NOEX_UNDEF     = NOEX_NOSUPER,
-    NOEX_MODFUNC   = 0x12,
-    NOEX_SUPER     = 0x20,
-    NOEX_VCALL     = 0x40,
-    NOEX_RESPONDS  = 0x80
-} mrb_method_flag_t;
-
-mrb_bool
-mrb_obj_basic_to_s_p(mrb_state *mrb, mrb_value obj)
-{
-    struct RProc *me = mrb_method_search(mrb, mrb_class(mrb, obj), mrb_intern2(mrb, "to_s", 4));
-    if (me && MRB_PROC_CFUNC_P(me) && (me->body.func == mrb_any_to_s))
-      return TRUE;
-    return FALSE;
-}
-
-/* 15.3.1.3.17 */
-/*
- *  call-seq:
- *     obj.inspect   -> string
- *
- *  Returns a string containing a human-readable representation of
- *  <i>obj</i>. If not overridden and no instance variables, uses the
- *  <code>to_s</code> method to generate the string.
- *  <i>obj</i>.  If not overridden, uses the <code>to_s</code> method to
- *  generate the string.
- *
- *     [ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
- *     Time.new.inspect                 #=> "2008-03-08 19:43:39 +0900"
- */
-mrb_value
-mrb_obj_inspect(mrb_state *mrb, mrb_value obj)
-{
-  if ((mrb_type(obj) == MRB_TT_OBJECT) && mrb_obj_basic_to_s_p(mrb, obj)) {
-    return mrb_obj_iv_inspect(mrb, mrb_obj_ptr(obj));
-  }
-  return mrb_any_to_s(mrb, obj);
-}
-
-/* 15.3.1.3.1  */
-/* 15.3.1.3.10 */
-/* 15.3.1.3.11 */
-/*
- *  call-seq:
- *     obj == other        -> true or false
- *     obj.equal?(other)   -> true or false
- *     obj.eql?(other)     -> true or false
- *
- *  Equality---At the <code>Object</code> level, <code>==</code> returns
- *  <code>true</code> only if <i>obj</i> and <i>other</i> are the
- *  same object. Typically, this method is overridden in descendant
- *  classes to provide class-specific meaning.
- *
- *  Unlike <code>==</code>, the <code>equal?</code> method should never be
- *  overridden by subclasses: it is used to determine object identity
- *  (that is, <code>a.equal?(b)</code> iff <code>a</code> is the same
- *  object as <code>b</code>).
- *
- *  The <code>eql?</code> method returns <code>true</code> if
- *  <i>obj</i> and <i>anObject</i> have the same value. Used by
- *  <code>Hash</code> to test members for equality.  For objects of
- *  class <code>Object</code>, <code>eql?</code> is synonymous with
- *  <code>==</code>. Subclasses normally continue this tradition, but
- *  there are exceptions. <code>Numeric</code> types, for example,
- *  perform type conversion across <code>==</code>, but not across
- *  <code>eql?</code>, so:
- *
- *     1 == 1.0     #=> true
- *     1.eql? 1.0   #=> false
- */
-static mrb_value
-mrb_obj_equal_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value arg;
-  mrb_bool eql_p;
-
-  mrb_get_args(mrb, "o", &arg);
-  eql_p = mrb_obj_equal(mrb, self, arg);
-
-  return mrb_bool_value(eql_p);
-}
-
-static mrb_value
-mrb_obj_not_equal_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value arg;
-  mrb_bool eql_p;
-
-  mrb_get_args(mrb, "o", &arg);
-  eql_p = mrb_equal(mrb, self, arg);
-
-  return mrb_bool_value(!eql_p);
-}
-
-/* 15.3.1.3.2  */
-/*
- *  call-seq:
- *     obj === other   -> true or false
- *
- *  Case Equality---For class <code>Object</code>, effectively the same
- *  as calling  <code>#==</code>, but typically overridden by descendants
- *  to provide meaningful semantics in <code>case</code> statements.
- */
-static mrb_value
-mrb_equal_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value arg;
-  mrb_bool equal_p;
-
-  mrb_get_args(mrb, "o", &arg);
-  equal_p = mrb_equal(mrb, self, arg);
-
-  return mrb_bool_value(equal_p);
-}
-
-/* 15.3.1.3.3  */
-/* 15.3.1.3.33 */
-/*
- *  Document-method: __id__
- *  Document-method: object_id
- *
- *  call-seq:
- *     obj.__id__       -> fixnum
- *     obj.object_id    -> fixnum
- *
- *  Returns an integer identifier for <i>obj</i>. The same number will
- *  be returned on all calls to <code>id</code> for a given object, and
- *  no two active objects will share an id.
- *  <code>Object#object_id</code> is a different concept from the
- *  <code>:name</code> notation, which returns the symbol id of
- *  <code>name</code>. Replaces the deprecated <code>Object#id</code>.
- */
-static mrb_value
-mrb_obj_id_m(mrb_state *mrb, mrb_value self)
-{
-  return mrb_fixnum_value(mrb_obj_id(self));
-}
-
-/* 15.3.1.3.4  */
-/* 15.3.1.3.44 */
-/*
- *  call-seq:
- *     obj.send(symbol [, args...])        -> obj
- *     obj.__send__(symbol [, args...])      -> obj
- *
- *  Invokes the method identified by _symbol_, passing it any
- *  arguments specified. You can use <code>__send__</code> if the name
- *  +send+ clashes with an existing method in _obj_.
- *
- *     class Klass
- *       def hello(*args)
- *         "Hello " + args.join(' ')
- *       end
- *     end
- *     k = Klass.new
- *     k.send :hello, "gentle", "readers"   #=> "Hello gentle readers"
- */
-static mrb_value
-mrb_f_send(mrb_state *mrb, mrb_value self)
-{
-  mrb_sym name;
-  mrb_value block, *argv;
-  int argc;
-
-  mrb_get_args(mrb, "n*&", &name, &argv, &argc, &block);
-  return mrb_funcall_with_block(mrb,self, name, argc, argv, block);
-}
-
-/* 15.3.1.2.2  */
-/* 15.3.1.2.5  */
-/* 15.3.1.3.6  */
-/* 15.3.1.3.25 */
-/*
- *  call-seq:
- *     block_given?   -> true or false
- *     iterator?      -> true or false
- *
- *  Returns <code>true</code> if <code>yield</code> would execute a
- *  block in the current context. The <code>iterator?</code> form
- *  is mildly deprecated.
- *
- *     def try
- *       if block_given?
- *         yield
- *       else
- *         "no block"
- *       end
- *     end
- *     try                  #=> "no block"
- *     try { "hello" }      #=> "hello"
- *     try do "hello" end   #=> "hello"
- */
-static mrb_value
-mrb_f_block_given_p_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_callinfo *ci = mrb->c->ci;
-  mrb_value *bp;
-  mrb_bool given_p;
-
-  bp = mrb->c->stbase + ci->stackidx + 1;
-  ci--;
-  if (ci <= mrb->c->cibase) {
-    given_p = 0;
-  }
-  else {
-    /* block_given? called within block; check upper scope */
-    if (ci->proc->env && ci->proc->env->stack) {
-      given_p = !(ci->proc->env->stack == mrb->c->stbase ||
-                  mrb_nil_p(ci->proc->env->stack[1]));
-    }
-    else {
-      if (ci->argc > 0) {
-        bp += ci->argc;
-      }
-      given_p = !mrb_nil_p(*bp);
-    }
-  }
-
-  return mrb_bool_value(given_p);
-}
-
-/* 15.3.1.3.7  */
-/*
- *  call-seq:
- *     obj.class    -> class
- *
- *  Returns the class of <i>obj</i>. This method must always be
- *  called with an explicit receiver, as <code>class</code> is also a
- *  reserved word in Ruby.
- *
- *     1.class      #=> Fixnum
- *     self.class   #=> Object
- */
-static mrb_value
-mrb_obj_class_m(mrb_state *mrb, mrb_value self)
-{
-  return mrb_obj_value(mrb_obj_class(mrb, self));
-}
-
-struct RClass*
-mrb_singleton_class_clone(mrb_state *mrb, mrb_value obj)
-{
-  struct RClass *klass = mrb_basic_ptr(obj)->c;
-
-  if (klass->tt != MRB_TT_SCLASS)
-    return klass;
-  else {
-    /* copy singleton(unnamed) class */
-    struct RClass *clone = (struct RClass*)mrb_obj_alloc(mrb, klass->tt, mrb->class_class);
-
-    if ((mrb_type(obj) == MRB_TT_CLASS) ||
-      (mrb_type(obj) == MRB_TT_SCLASS)) { /* BUILTIN_TYPE(obj) == T_CLASS */
-      clone->c = clone;
-    }
-    else {
-      clone->c = mrb_singleton_class_clone(mrb, mrb_obj_value(klass));
-    }
-
-    clone->super = klass->super;
-    if (klass->iv) {
-      mrb_iv_copy(mrb, mrb_obj_value(clone), mrb_obj_value(klass));
-      mrb_obj_iv_set(mrb, (struct RObject*)clone, mrb_intern2(mrb, "__attached__", 12), obj);
-    }
-    if (klass->mt) {
-      clone->mt = kh_copy(mt, mrb, klass->mt);
-    }
-    else {
-      clone->mt = kh_init(mt, mrb);
-    }
-    clone->tt = MRB_TT_SCLASS;
-    return clone;
-  }
-}
-
-static void
-init_copy(mrb_state *mrb, mrb_value dest, mrb_value obj)
-{
-    switch (mrb_type(obj)) {
-      case MRB_TT_OBJECT:
-      case MRB_TT_CLASS:
-      case MRB_TT_MODULE:
-      case MRB_TT_SCLASS:
-      case MRB_TT_HASH:
-      case MRB_TT_DATA:
-        mrb_iv_copy(mrb, dest, obj);
-        break;
-
-      default:
-        break;
-    }
-    mrb_funcall(mrb, dest, "initialize_copy", 1, obj);
-}
-
-/* 15.3.1.3.8  */
-/*
- *  call-seq:
- *     obj.clone -> an_object
- *
- *  Produces a shallow copy of <i>obj</i>---the instance variables of
- *  <i>obj</i> are copied, but not the objects they reference. Copies
- *  the frozen state of <i>obj</i>. See also the discussion
- *  under <code>Object#dup</code>.
- *
- *     class Klass
- *        attr_accessor :str
- *     end
- *     s1 = Klass.new      #=> #<Klass:0x401b3a38>
- *     s1.str = "Hello"    #=> "Hello"
- *     s2 = s1.clone       #=> #<Klass:0x401b3998 @str="Hello">
- *     s2.str[1,4] = "i"   #=> "i"
- *     s1.inspect          #=> "#<Klass:0x401b3a38 @str=\"Hi\">"
- *     s2.inspect          #=> "#<Klass:0x401b3998 @str=\"Hi\">"
- *
- *  This method may have class-specific behavior.  If so, that
- *  behavior will be documented under the #+initialize_copy+ method of
- *  the class.
- *
- *  Some Class(True False Nil Symbol Fixnum Float) Object  cannot clone.
- */
-mrb_value
-mrb_obj_clone(mrb_state *mrb, mrb_value self)
-{
-  struct RObject *p;
-  mrb_value clone;
-
-  if (mrb_special_const_p(self)) {
-      mrb_raisef(mrb, E_TYPE_ERROR, "can't clone %S", self);
-  }
-  p = (struct RObject*)mrb_obj_alloc(mrb, mrb_type(self), mrb_obj_class(mrb, self));
-  p->c = mrb_singleton_class_clone(mrb, self);
-  clone = mrb_obj_value(p);
-  init_copy(mrb, clone, self);
-
-  return clone;
-}
-
-/* 15.3.1.3.9  */
-/*
- *  call-seq:
- *     obj.dup -> an_object
- *
- *  Produces a shallow copy of <i>obj</i>---the instance variables of
- *  <i>obj</i> are copied, but not the objects they reference.
- *  <code>dup</code> copies the frozen state of <i>obj</i>. See also
- *  the discussion under <code>Object#clone</code>. In general,
- *  <code>clone</code> and <code>dup</code> may have different semantics
- *  in descendant classes. While <code>clone</code> is used to duplicate
- *  an object, including its internal state, <code>dup</code> typically
- *  uses the class of the descendant object to create the new instance.
- *
- *  This method may have class-specific behavior.  If so, that
- *  behavior will be documented under the #+initialize_copy+ method of
- *  the class.
- */
-
-mrb_value
-mrb_obj_dup(mrb_state *mrb, mrb_value obj)
-{
-    struct RBasic *p;
-    mrb_value dup;
-
-    if (mrb_special_const_p(obj)) {
-        mrb_raisef(mrb, E_TYPE_ERROR, "can't dup %S", obj);
-    }
-    p = mrb_obj_alloc(mrb, mrb_type(obj), mrb_obj_class(mrb, obj));
-    dup = mrb_obj_value(p);
-    init_copy(mrb, dup, obj);
-
-    return dup;
-}
-
-static mrb_value
-mrb_obj_extend(mrb_state *mrb, int argc, mrb_value *argv, mrb_value obj)
-{
-  int i;
-
-  if (argc == 0) {
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (at least 1)");
-  }
-  for (i = 0; i < argc; i++) {
-    mrb_check_type(mrb, argv[i], MRB_TT_MODULE);
-  }
-  while (argc--) {
-    mrb_funcall(mrb, argv[argc], "extend_object", 1, obj);
-    mrb_funcall(mrb, argv[argc], "extended", 1, obj);
-  }
-  return obj;
-}
-
-/* 15.3.1.3.13 */
-/*
- *  call-seq:
- *     obj.extend(module, ...)    -> obj
- *
- *  Adds to _obj_ the instance methods from each module given as a
- *  parameter.
- *
- *     module Mod
- *       def hello
- *         "Hello from Mod.\n"
- *       end
- *     end
- *
- *     class Klass
- *       def hello
- *         "Hello from Klass.\n"
- *       end
- *     end
- *
- *     k = Klass.new
- *     k.hello         #=> "Hello from Klass.\n"
- *     k.extend(Mod)   #=> #<Klass:0x401b3bc8>
- *     k.hello         #=> "Hello from Mod.\n"
- */
-mrb_value
-mrb_obj_extend_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv;
-  int argc;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  return mrb_obj_extend(mrb, argc, argv, self);
-}
-
-/* 15.3.1.3.15 */
-/*
- *  call-seq:
- *     obj.hash    -> fixnum
- *
- *  Generates a <code>Fixnum</code> hash value for this object. This
- *  function must have the property that <code>a.eql?(b)</code> implies
- *  <code>a.hash == b.hash</code>. The hash value is used by class
- *  <code>Hash</code>. Any hash value that exceeds the capacity of a
- *  <code>Fixnum</code> will be truncated before being used.
- */
-mrb_value
-mrb_obj_hash(mrb_state *mrb, mrb_value self)
-{
-  return mrb_fixnum_value(mrb_obj_id(self));
-}
-
-/* 15.3.1.3.16 */
-mrb_value
-mrb_obj_init_copy(mrb_state *mrb, mrb_value self)
-{
-  mrb_value orig;
-
-  mrb_get_args(mrb, "o", &orig);
-  if (mrb_obj_equal(mrb, self, orig)) return self;
-  if ((mrb_type(self) != mrb_type(orig)) || (mrb_obj_class(mrb, self) != mrb_obj_class(mrb, orig))) {
-      mrb_raise(mrb, E_TYPE_ERROR, "initialize_copy should take same class object");
-  }
-  return self;
-}
-
-mrb_value mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c);
-
-/* 15.3.1.3.18 */
-/*
- *  call-seq:
- *     obj.instance_eval {| | block }                       -> obj
- *
- *  Evaluates the given block,within  the context of the receiver (_obj_).
- *  In order to set the context, the variable +self+ is set to _obj_ while
- *  the code is executing, giving the code access to _obj_'s
- *  instance variables. In the version of <code>instance_eval</code>
- *  that takes a +String+, the optional second and third
- *  parameters supply a filename and starting line number that are used
- *  when reporting compilation errors.
- *
- *     class KlassWithSecret
- *       def initialize
- *         @secret = 99
- *       end
- *     end
- *     k = KlassWithSecret.new
- *     k.instance_eval { @secret }   #=> 99
- */
-mrb_value
-mrb_obj_instance_eval(mrb_state *mrb, mrb_value self)
-{
-  mrb_value a, b;
-  mrb_value cv;
-  struct RClass *c;
-
-  if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
-    mrb_raise(mrb, E_NOTIMP_ERROR, "instance_eval with string not implemented");
-  }
-  switch (mrb_type(self)) {
-  case MRB_TT_SYMBOL:
-  case MRB_TT_FIXNUM:
-  case MRB_TT_FLOAT:
-    c = 0;
-    break;
-  default:
-    cv = mrb_singleton_class(mrb, self);
-    c = mrb_class_ptr(cv);
-    break;
-  }
-  return mrb_yield_internal(mrb, b, 0, 0, self, c);
-}
-
-mrb_bool
-mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c)
-{
-  if (mrb_obj_class(mrb, obj) == c) return TRUE;
-  return FALSE;
-}
-
-/* 15.3.1.3.19 */
-/*
- *  call-seq:
- *     obj.instance_of?(class)    -> true or false
- *
- *  Returns <code>true</code> if <i>obj</i> is an instance of the given
- *  class. See also <code>Object#kind_of?</code>.
- */
-static mrb_value
-obj_is_instance_of(mrb_state *mrb, mrb_value self)
-{
-  mrb_value arg;
-  mrb_bool instance_of_p;
-
-  mrb_get_args(mrb, "o", &arg);
-  instance_of_p = mrb_obj_is_instance_of(mrb, self, mrb_class_ptr(arg));
-
-  return mrb_bool_value(instance_of_p);
-}
-
-static void
-valid_iv_name(mrb_state *mrb, mrb_sym iv_name_id, const char* s, size_t len)
-{
-  if (len < 2 || !(s[0] == '@' && s[1] != '@')) {
-    mrb_name_error(mrb, iv_name_id, "`%S' is not allowed as an instance variable name", mrb_sym2str(mrb, iv_name_id));
-  }
-}
-
-static void
-check_iv_name(mrb_state *mrb, mrb_sym iv_name_id)
-{
-  const char *s;
-  size_t len;
-
-  s = mrb_sym2name_len(mrb, iv_name_id, &len);
-  valid_iv_name(mrb, iv_name_id, s, len);
-}
-
-static mrb_sym
-get_valid_iv_sym(mrb_state *mrb, mrb_value iv_name)
-{
-  mrb_sym iv_name_id;
-
-  mrb_assert(mrb_symbol_p(iv_name) || mrb_string_p(iv_name));
-
-  if (mrb_string_p(iv_name)) {
-    iv_name_id = mrb_intern_cstr(mrb, RSTRING_PTR(iv_name));
-    valid_iv_name(mrb, iv_name_id, RSTRING_PTR(iv_name), RSTRING_LEN(iv_name));
-  }
-  else {
-    iv_name_id = mrb_symbol(iv_name);
-    check_iv_name(mrb, iv_name_id);
-  }
-
-  return iv_name_id;
-}
-
-/* 15.3.1.3.20 */
-/*
- *  call-seq:
- *     obj.instance_variable_defined?(symbol)    -> true or false
- *
- *  Returns <code>true</code> if the given instance variable is
- *  defined in <i>obj</i>.
- *
- *     class Fred
- *       def initialize(p1, p2)
- *         @a, @b = p1, p2
- *       end
- *     end
- *     fred = Fred.new('cat', 99)
- *     fred.instance_variable_defined?(:@a)    #=> true
- *     fred.instance_variable_defined?("@b")   #=> true
- *     fred.instance_variable_defined?("@c")   #=> false
- */
-mrb_value
-mrb_obj_ivar_defined(mrb_state *mrb, mrb_value self)
-{
-  mrb_sym mid;
-  mrb_value sym;
-  mrb_bool defined_p;
-
-  mrb_get_args(mrb, "o", &sym);
-  mid = get_valid_iv_sym(mrb, sym);
-  defined_p = mrb_obj_iv_defined(mrb, mrb_obj_ptr(self), mid);
-
-  return mrb_bool_value(defined_p);
-}
-
-/* 15.3.1.3.21 */
-/*
- *  call-seq:
- *     obj.instance_variable_get(symbol)    -> obj
- *
- *  Returns the value of the given instance variable, or nil if the
- *  instance variable is not set. The <code>@</code> part of the
- *  variable name should be included for regular instance
- *  variables. Throws a <code>NameError</code> exception if the
- *  supplied symbol is not valid as an instance variable name.
- *
- *     class Fred
- *       def initialize(p1, p2)
- *         @a, @b = p1, p2
- *       end
- *     end
- *     fred = Fred.new('cat', 99)
- *     fred.instance_variable_get(:@a)    #=> "cat"
- *     fred.instance_variable_get("@b")   #=> 99
- */
-mrb_value
-mrb_obj_ivar_get(mrb_state *mrb, mrb_value self)
-{
-  mrb_sym iv_name_id;
-  mrb_value iv_name;
-
-  mrb_get_args(mrb, "o", &iv_name);
-
-  iv_name_id = get_valid_iv_sym(mrb, iv_name);
-  return mrb_iv_get(mrb, self, iv_name_id);
-}
-
-/* 15.3.1.3.22 */
-/*
- *  call-seq:
- *     obj.instance_variable_set(symbol, obj)    -> obj
- *
- *  Sets the instance variable names by <i>symbol</i> to
- *  <i>object</i>, thereby frustrating the efforts of the class's
- *  author to attempt to provide proper encapsulation. The variable
- *  did not have to exist prior to this call.
- *
- *     class Fred
- *       def initialize(p1, p2)
- *         @a, @b = p1, p2
- *       end
- *     end
- *     fred = Fred.new('cat', 99)
- *     fred.instance_variable_set(:@a, 'dog')   #=> "dog"
- *     fred.instance_variable_set(:@c, 'cat')   #=> "cat"
- *     fred.inspect                             #=> "#<Fred:0x401b3da8 @a=\"dog\", @b=99, @c=\"cat\">"
- */
-mrb_value
-mrb_obj_ivar_set(mrb_state *mrb, mrb_value self)
-{
-  mrb_sym iv_name_id;
-  mrb_value iv_name, val;
-
-  mrb_get_args(mrb, "oo", &iv_name, &val);
-
-  iv_name_id = get_valid_iv_sym(mrb, iv_name);
-  mrb_iv_set(mrb, self, iv_name_id, val);
-  return val;
-}
-
-/* 15.3.1.3.24 */
-/* 15.3.1.3.26 */
-/*
- *  call-seq:
- *     obj.is_a?(class)       -> true or false
- *     obj.kind_of?(class)    -> true or false
- *
- *  Returns <code>true</code> if <i>class</i> is the class of
- *  <i>obj</i>, or if <i>class</i> is one of the superclasses of
- *  <i>obj</i> or modules included in <i>obj</i>.
- *
- *     module M;    end
- *     class A
- *       include M
- *     end
- *     class B < A; end
- *     class C < B; end
- *     b = B.new
- *     b.instance_of? A   #=> false
- *     b.instance_of? B   #=> true
- *     b.instance_of? C   #=> false
- *     b.instance_of? M   #=> false
- *     b.kind_of? A       #=> true
- *     b.kind_of? B       #=> true
- *     b.kind_of? C       #=> false
- *     b.kind_of? M       #=> true
- */
-mrb_value
-mrb_obj_is_kind_of_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_value arg;
-  mrb_bool kind_of_p;
-
-  mrb_get_args(mrb, "o", &arg);
-  kind_of_p = mrb_obj_is_kind_of(mrb, self, mrb_class_ptr(arg));
-
-  return mrb_bool_value(kind_of_p);
-}
-
-static void
-method_entry_loop(mrb_state *mrb, struct RClass* klass, mrb_value ary)
-{
-  khint_t i;
-
-  khash_t(mt) *h = klass->mt;
-  if (!h) return;
-  for (i=0;i<kh_end(h);i++) {
-    if (kh_exist(h, i)) {
-      mrb_ary_push(mrb, ary, mrb_symbol_value(kh_key(h,i)));
-    }
-  }
-}
-
-mrb_value
-class_instance_method_list(mrb_state *mrb, mrb_bool recur, struct RClass* klass, int obj)
-{
-  mrb_value ary;
-  struct RClass* oldklass;
-
-  ary = mrb_ary_new(mrb);
-  oldklass = 0;
-  while (klass && (klass != oldklass)) {
-    method_entry_loop(mrb, klass, ary);
-    if ((klass->tt == MRB_TT_ICLASS) ||
-        (klass->tt == MRB_TT_SCLASS)) {
-    }
-    else {
-      if (!recur) break;
-    }
-    oldklass = klass;
-    klass = klass->super;
-  }
-
-  return ary;
-}
-
-mrb_value
-mrb_obj_singleton_methods(mrb_state *mrb, mrb_bool recur, mrb_value obj)
-{
-  mrb_value ary;
-  struct RClass* klass;
-
-  klass = mrb_class(mrb, obj);
-  ary = mrb_ary_new(mrb);
-  if (klass && (klass->tt == MRB_TT_SCLASS)) {
-      method_entry_loop(mrb, klass, ary);
-      klass = klass->super;
-  }
-  if (recur) {
-      while (klass && ((klass->tt == MRB_TT_SCLASS) || (klass->tt == MRB_TT_ICLASS))) {
-        method_entry_loop(mrb, klass, ary);
-        klass = klass->super;
-      }
-  }
-
-  return ary;
-}
-
-mrb_value
-mrb_obj_methods(mrb_state *mrb, mrb_bool recur, mrb_value obj, mrb_method_flag_t flag)
-{
-  if (recur)
-      return class_instance_method_list(mrb, recur, mrb_class(mrb, obj), 0);
-  else
-      return mrb_obj_singleton_methods(mrb, recur, obj);
-}
-/* 15.3.1.3.31 */
-/*
- *  call-seq:
- *     obj.methods    -> array
- *
- *  Returns a list of the names of methods publicly accessible in
- *  <i>obj</i>. This will include all the methods accessible in
- *  <i>obj</i>'s ancestors.
- *
- *     class Klass
- *       def kMethod()
- *       end
- *     end
- *     k = Klass.new
- *     k.methods[0..9]    #=> [:kMethod, :respond_to?, :nil?, :is_a?,
- *                        #    :class, :instance_variable_set,
- *                        #    :methods, :extend, :__send__, :instance_eval]
- *     k.methods.length   #=> 42
- */
-mrb_value
-mrb_obj_methods_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return mrb_obj_methods(mrb, recur, self, (mrb_method_flag_t)0); /* everything but private */
-}
-
-/* 15.3.1.3.32 */
-/*
- * call_seq:
- *   nil.nil?               -> true
- *   <anything_else>.nil?   -> false
- *
- * Only the object <i>nil</i> responds <code>true</code> to <code>nil?</code>.
- */
-mrb_value
-mrb_false(mrb_state *mrb, mrb_value self)
-{
-  return mrb_false_value();
-}
-
-/* 15.3.1.3.36 */
-/*
- *  call-seq:
- *     obj.private_methods(all=true)   -> array
- *
- *  Returns the list of private methods accessible to <i>obj</i>. If
- *  the <i>all</i> parameter is set to <code>false</code>, only those methods
- *  in the receiver will be listed.
- */
-mrb_value
-mrb_obj_private_methods(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return mrb_obj_methods(mrb, recur, self, NOEX_PRIVATE); /* private attribute not define */
-}
-
-/* 15.3.1.3.37 */
-/*
- *  call-seq:
- *     obj.protected_methods(all=true)   -> array
- *
- *  Returns the list of protected methods accessible to <i>obj</i>. If
- *  the <i>all</i> parameter is set to <code>false</code>, only those methods
- *  in the receiver will be listed.
- */
-mrb_value
-mrb_obj_protected_methods(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return mrb_obj_methods(mrb, recur, self, NOEX_PROTECTED); /* protected attribute not define */
-}
-
-/* 15.3.1.3.38 */
-/*
- *  call-seq:
- *     obj.public_methods(all=true)   -> array
- *
- *  Returns the list of public methods accessible to <i>obj</i>. If
- *  the <i>all</i> parameter is set to <code>false</code>, only those methods
- *  in the receiver will be listed.
- */
-mrb_value
-mrb_obj_public_methods(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return mrb_obj_methods(mrb, recur, self, NOEX_PUBLIC); /* public attribute not define */
-}
-
-/* 15.3.1.2.12  */
-/* 15.3.1.3.40 */
-/*
- *  call-seq:
- *     raise
- *     raise(string)
- *     raise(exception [, string])
- *
- *  With no arguments, raises a <code>RuntimeError</code>
- *  With a single +String+ argument, raises a
- *  +RuntimeError+ with the string as a message. Otherwise,
- *  the first parameter should be the name of an +Exception+
- *  class (or an object that returns an +Exception+ object when sent
- *  an +exception+ message). The optional second parameter sets the
- *  message associated with the exception, and the third parameter is an
- *  array of callback information. Exceptions are caught by the
- *  +rescue+ clause of <code>begin...end</code> blocks.
- *
- *     raise "Failed to create socket"
- *     raise ArgumentError, "No parameters", caller
- */
-mrb_value
-mrb_f_raise(mrb_state *mrb, mrb_value self)
-{
-  mrb_value a[2], exc;
-  int argc;
-
-
-  argc = mrb_get_args(mrb, "|oo", &a[0], &a[1]);
-  switch (argc) {
-  case 0:
-    mrb_raise(mrb, E_RUNTIME_ERROR, "");
-    break;
-  case 1:
-    a[1] = mrb_check_string_type(mrb, a[0]);
-    if (!mrb_nil_p(a[1])) {
-      argc = 2;
-      a[0] = mrb_obj_value(E_RUNTIME_ERROR);
-    }
-    /* fall through */
-  default:
-    exc = mrb_make_exception(mrb, argc, a);
-    mrb_obj_iv_set(mrb, mrb_obj_ptr(exc), mrb_intern2(mrb, "lastpc", 6), mrb_cptr_value(mrb, mrb->c->ci->pc));
-    mrb_exc_raise(mrb, exc);
-    break;
-  }
-  return mrb_nil_value();            /* not reached */
-}
-
-/* 15.3.1.3.41 */
-/*
- *  call-seq:
- *     obj.remove_instance_variable(symbol)    -> obj
- *
- *  Removes the named instance variable from <i>obj</i>, returning that
- *  variable's value.
- *
- *     class Dummy
- *       attr_reader :var
- *       def initialize
- *         @var = 99
- *       end
- *       def remove
- *         remove_instance_variable(:@var)
- *       end
- *     end
- *     d = Dummy.new
- *     d.var      #=> 99
- *     d.remove   #=> 99
- *     d.var      #=> nil
- */
-mrb_value
-mrb_obj_remove_instance_variable(mrb_state *mrb, mrb_value self)
-{
-  mrb_sym sym;
-  mrb_value val;
-
-  mrb_get_args(mrb, "n", &sym);
-  check_iv_name(mrb, sym);
-  val = mrb_iv_remove(mrb, self, sym);
-  if (mrb_undef_p(val)) {
-    mrb_name_error(mrb, sym, "instance variable %S not defined", mrb_sym2str(mrb, sym));
-  }
-  return val;
-}
-
-static inline mrb_bool
-basic_obj_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym id, int pub)
-{
-  return mrb_respond_to(mrb, obj, id);
-}
-/* 15.3.1.3.43 */
-/*
- *  call-seq:
- *     obj.respond_to?(symbol, include_private=false) -> true or false
- *
- *  Returns +true+ if _obj_ responds to the given
- *  method. Private methods are included in the search only if the
- *  optional second parameter evaluates to +true+.
- *
- *  If the method is not implemented,
- *  as Process.fork on Windows, File.lchmod on GNU/Linux, etc.,
- *  false is returned.
- *
- *  If the method is not defined, <code>respond_to_missing?</code>
- *  method is called and the result is returned.
- */
-mrb_value
-obj_respond_to(mrb_state *mrb, mrb_value self)
-{
-  mrb_value *argv;
-  int argc;
-  mrb_value mid, priv;
-  mrb_sym id, rtm_id;
-  mrb_bool respond_to_p = TRUE;
-
-  mrb_get_args(mrb, "*", &argv, &argc);
-  mid = argv[0];
-  if (argc > 1) priv = argv[1];
-  else priv = mrb_nil_value();
-
-  if (mrb_symbol_p(mid)) {
-    id = mrb_symbol(mid);
-  }
-  else {
-    mrb_value tmp;
-    if (!mrb_string_p(mid)) {
-      tmp = mrb_check_string_type(mrb, mid);
-      if (mrb_nil_p(tmp)) {
-        tmp = mrb_inspect(mrb, mid);
-        mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", tmp);
-      }
-    }
-    tmp = mrb_check_intern_str(mrb, mid);
-    if (mrb_nil_p(tmp)) {
-      respond_to_p = FALSE;
-    }
-    else {
-      id = mrb_symbol(tmp);
-    }
-  }
-
-  if (respond_to_p) {
-    respond_to_p = basic_obj_respond_to(mrb, self, id, !mrb_test(priv));
-  }
-
-  if (!respond_to_p) {
-    rtm_id = mrb_intern2(mrb, "respond_to_missing?", 19);
-    if (basic_obj_respond_to(mrb, self, rtm_id, !mrb_test(priv))) {
-      return mrb_funcall_argv(mrb, self, rtm_id, argc, argv);
-    }
-  }
-  return mrb_bool_value(respond_to_p);
-}
-
-/* 15.3.1.3.45 */
-/*
- *  call-seq:
- *     obj.singleton_methods(all=true)    -> array
- *
- *  Returns an array of the names of singleton methods for <i>obj</i>.
- *  If the optional <i>all</i> parameter is true, the list will include
- *  methods in modules included in <i>obj</i>.
- *  Only public and protected singleton methods are returned.
- *
- *     module Other
- *       def three() end
- *     end
- *
- *     class Single
- *       def Single.four() end
- *     end
- *
- *     a = Single.new
- *
- *     def a.one()
- *     end
- *
- *     class << a
- *       include Other
- *       def two()
- *       end
- *     end
- *
- *     Single.singleton_methods    #=> [:four]
- *     a.singleton_methods(false)  #=> [:two, :one]
- *     a.singleton_methods         #=> [:two, :one, :three]
- */
-mrb_value
-mrb_obj_singleton_methods_m(mrb_state *mrb, mrb_value self)
-{
-  mrb_bool recur = TRUE;
-  mrb_get_args(mrb, "|b", &recur);
-  return mrb_obj_singleton_methods(mrb, recur, self);
-}
-
-void
-mrb_init_kernel(mrb_state *mrb)
-{
-  struct RClass *krn;
-
-  krn = mrb->kernel_module = mrb_define_module(mrb, "Kernel");
-  mrb_define_class_method(mrb, krn, "block_given?",         mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.2.2  */
-  mrb_define_class_method(mrb, krn, "global_variables",     mrb_f_global_variables,          MRB_ARGS_NONE());    /* 15.3.1.2.4  */
-  mrb_define_class_method(mrb, krn, "iterator?",            mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.2.5  */
-;     /* 15.3.1.2.11 */
-  mrb_define_class_method(mrb, krn, "raise",                mrb_f_raise,                     MRB_ARGS_ANY());     /* 15.3.1.2.12 */
-
-  mrb_define_method(mrb, krn, "singleton_class",            mrb_singleton_class,             MRB_ARGS_NONE());
-
-  mrb_define_method(mrb, krn, "==",                         mrb_obj_equal_m,                 MRB_ARGS_REQ(1));    /* 15.3.1.3.1  */
-  mrb_define_method(mrb, krn, "!=",                         mrb_obj_not_equal_m,             MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, krn, "===",                        mrb_equal_m,                     MRB_ARGS_REQ(1));    /* 15.3.1.3.2  */
-  mrb_define_method(mrb, krn, "__id__",                     mrb_obj_id_m,                    MRB_ARGS_NONE());    /* 15.3.1.3.3  */
-  mrb_define_method(mrb, krn, "__send__",                   mrb_f_send,                      MRB_ARGS_ANY());     /* 15.3.1.3.4  */
-  mrb_define_method(mrb, krn, "block_given?",               mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.3.6  */
-  mrb_define_method(mrb, krn, "class",                      mrb_obj_class_m,                 MRB_ARGS_NONE());    /* 15.3.1.3.7  */
-  mrb_define_method(mrb, krn, "clone",                      mrb_obj_clone,                   MRB_ARGS_NONE());    /* 15.3.1.3.8  */
-  mrb_define_method(mrb, krn, "dup",                        mrb_obj_dup,                     MRB_ARGS_NONE());    /* 15.3.1.3.9  */
-  mrb_define_method(mrb, krn, "eql?",                       mrb_obj_equal_m,                 MRB_ARGS_REQ(1));    /* 15.3.1.3.10 */
-  mrb_define_method(mrb, krn, "equal?",                     mrb_obj_equal_m,                 MRB_ARGS_REQ(1));    /* 15.3.1.3.11 */
-  mrb_define_method(mrb, krn, "extend",                     mrb_obj_extend_m,                MRB_ARGS_ANY());     /* 15.3.1.3.13 */
-  mrb_define_method(mrb, krn, "global_variables",           mrb_f_global_variables,          MRB_ARGS_NONE());    /* 15.3.1.3.14 */
-  mrb_define_method(mrb, krn, "hash",                       mrb_obj_hash,                    MRB_ARGS_NONE());    /* 15.3.1.3.15 */
-  mrb_define_method(mrb, krn, "initialize_copy",            mrb_obj_init_copy,               MRB_ARGS_REQ(1));    /* 15.3.1.3.16 */
-  mrb_define_method(mrb, krn, "inspect",                    mrb_obj_inspect,                 MRB_ARGS_NONE());    /* 15.3.1.3.17 */
-  mrb_define_method(mrb, krn, "instance_eval",              mrb_obj_instance_eval,           MRB_ARGS_ANY());     /* 15.3.1.3.18 */
-  mrb_define_method(mrb, krn, "instance_of?",               obj_is_instance_of,              MRB_ARGS_REQ(1));    /* 15.3.1.3.19 */
-  mrb_define_method(mrb, krn, "instance_variable_defined?", mrb_obj_ivar_defined,            MRB_ARGS_REQ(1));    /* 15.3.1.3.20 */
-  mrb_define_method(mrb, krn, "instance_variable_get",      mrb_obj_ivar_get,                MRB_ARGS_REQ(1));    /* 15.3.1.3.21 */
-  mrb_define_method(mrb, krn, "instance_variable_set",      mrb_obj_ivar_set,                MRB_ARGS_REQ(2));    /* 15.3.1.3.22 */
-  mrb_define_method(mrb, krn, "instance_variables",         mrb_obj_instance_variables,      MRB_ARGS_NONE());    /* 15.3.1.3.23 */
-  mrb_define_method(mrb, krn, "is_a?",                      mrb_obj_is_kind_of_m,            MRB_ARGS_REQ(1));    /* 15.3.1.3.24 */
-  mrb_define_method(mrb, krn, "iterator?",                  mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.3.25 */
-  mrb_define_method(mrb, krn, "kind_of?",                   mrb_obj_is_kind_of_m,            MRB_ARGS_REQ(1));    /* 15.3.1.3.26 */
-  mrb_define_method(mrb, krn, "methods",                    mrb_obj_methods_m,               MRB_ARGS_OPT(1));    /* 15.3.1.3.31 */
-  mrb_define_method(mrb, krn, "nil?",                       mrb_false,                       MRB_ARGS_NONE());    /* 15.3.1.3.32 */
-  mrb_define_method(mrb, krn, "object_id",                  mrb_obj_id_m,                    MRB_ARGS_NONE());    /* 15.3.1.3.33 */
-  mrb_define_method(mrb, krn, "private_methods",            mrb_obj_private_methods,         MRB_ARGS_OPT(1));    /* 15.3.1.3.36 */
-  mrb_define_method(mrb, krn, "protected_methods",          mrb_obj_protected_methods,       MRB_ARGS_OPT(1));    /* 15.3.1.3.37 */
-  mrb_define_method(mrb, krn, "public_methods",             mrb_obj_public_methods,          MRB_ARGS_OPT(1));    /* 15.3.1.3.38 */
-  mrb_define_method(mrb, krn, "raise",                      mrb_f_raise,                     MRB_ARGS_ANY());     /* 15.3.1.3.40 */
-  mrb_define_method(mrb, krn, "remove_instance_variable",   mrb_obj_remove_instance_variable,MRB_ARGS_REQ(1));    /* 15.3.1.3.41 */
-  mrb_define_method(mrb, krn, "respond_to?",                obj_respond_to,                  MRB_ARGS_ANY());     /* 15.3.1.3.43 */
-  mrb_define_method(mrb, krn, "send",                       mrb_f_send,                      MRB_ARGS_ANY());     /* 15.3.1.3.44 */
-  mrb_define_method(mrb, krn, "singleton_methods",          mrb_obj_singleton_methods_m,     MRB_ARGS_OPT(1));    /* 15.3.1.3.45 */
-  mrb_define_method(mrb, krn, "to_s",                       mrb_any_to_s,                    MRB_ARGS_NONE());    /* 15.3.1.3.46 */
-
-  mrb_include_module(mrb, mrb->object_class, mrb->kernel_module);
-  mrb_alias_method(mrb, mrb->module_class, mrb_intern2(mrb, "dup", 3), mrb_intern2(mrb, "clone", 5));
-}

  Deleted: vendor/mruby-eeac4be/src/keywords (+0 -50) 100644
===================================================================
--- vendor/mruby-eeac4be/src/keywords    2014-06-08 19:01:14 +0900 (9cb8660)
+++ /dev/null
@@ -1,50 +0,0 @@
-%{
-struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;};
-const struct kwtable *mrb_reserved_word(const char *, unsigned int);
-static const struct kwtable *reserved_word(const char *, unsigned int);
-#define mrb_reserved_word(str, len) reserved_word(str, len)
-%}
-
-struct kwtable;
-%%
-__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
-__FILE__,     {keyword__FILE__,     keyword__FILE__},     EXPR_END
-__LINE__,     {keyword__LINE__,     keyword__LINE__},     EXPR_END
-BEGIN,        {keyword_BEGIN,       keyword_BEGIN},       EXPR_END
-END,          {keyword_END,         keyword_END},         EXPR_END
-alias,        {keyword_alias,       keyword_alias},       EXPR_FNAME
-and,          {keyword_and,         keyword_and},         EXPR_VALUE
-begin,        {keyword_begin,       keyword_begin},       EXPR_BEG
-break,        {keyword_break,       keyword_break},       EXPR_MID
-case,         {keyword_case,        keyword_case},        EXPR_VALUE
-class,        {keyword_class,       keyword_class},       EXPR_CLASS
-def,          {keyword_def,         keyword_def},         EXPR_FNAME
-do,           {keyword_do,          keyword_do},          EXPR_BEG
-else,         {keyword_else,        keyword_else},        EXPR_BEG
-elsif,        {keyword_elsif,       keyword_elsif},       EXPR_VALUE
-end,          {keyword_end,         keyword_end},         EXPR_END
-ensure,       {keyword_ensure,      keyword_ensure},      EXPR_BEG
-false,        {keyword_false,       keyword_false},       EXPR_END
-for,          {keyword_for,         keyword_for},         EXPR_VALUE
-if,           {keyword_if,          modifier_if},         EXPR_VALUE
-in,           {keyword_in,          keyword_in},          EXPR_VALUE
-module,       {keyword_module,      keyword_module},      EXPR_VALUE
-next,         {keyword_next,        keyword_next},        EXPR_MID
-nil,          {keyword_nil,         keyword_nil},         EXPR_END
-not,          {keyword_not,         keyword_not},         EXPR_ARG
-or,           {keyword_or,          keyword_or},          EXPR_VALUE
-redo,         {keyword_redo,        keyword_redo},        EXPR_END
-rescue,       {keyword_rescue,      modifier_rescue},     EXPR_MID
-retry,        {keyword_retry,       keyword_retry},       EXPR_END
-return,       {keyword_return,      keyword_return},      EXPR_MID
-self,         {keyword_self,        keyword_self},        EXPR_END
-super,        {keyword_super,       keyword_super},       EXPR_ARG
-then,         {keyword_then,        keyword_then},        EXPR_BEG
-true,         {keyword_true,        keyword_true},        EXPR_END
-undef,        {keyword_undef,       keyword_undef},       EXPR_FNAME
-unless,       {keyword_unless,      modifier_unless},     EXPR_VALUE
-until,        {keyword_until,       modifier_until},      EXPR_VALUE
-when,         {keyword_when,        keyword_when},        EXPR_VALUE
-while,        {keyword_while,       modifier_while},      EXPR_VALUE
-yield,        {keyword_yield,       keyword_yield},       EXPR_ARG
-%%

  Deleted: vendor/mruby-eeac4be/src/lex.def (+0 -212) 100644
===================================================================
--- vendor/mruby-eeac4be/src/lex.def    2014-06-08 19:01:14 +0900 (ea456a8)
+++ /dev/null
@@ -1,212 +0,0 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$' src/keywords  */
-
-#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-/* The character set is not based on ISO-646.  */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf �� gnu.org>."
-#endif
-
-#line 1 "src/keywords"
-
-struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;};
-const struct kwtable *mrb_reserved_word(const char *, unsigned int);
-static const struct kwtable *reserved_word(const char *, unsigned int);
-#define mrb_reserved_word(str, len) reserved_word(str, len)
-#line 8 "src/keywords"
-struct kwtable;
-
-#define TOTAL_KEYWORDS 40
-#define MIN_WORD_LENGTH 2
-#define MAX_WORD_LENGTH 12
-#define MIN_HASH_VALUE 8
-#define MAX_HASH_VALUE 50
-/* maximum key range = 43, duplicates = 0 */
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static unsigned int
-hash (register const char *str, register unsigned int len)
-{
-  static const unsigned char asso_values[] =
-    {
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 14, 51, 16,  8,
-      11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 11, 51, 13,  1, 26,
-       4,  1,  8, 28, 51, 23, 51,  1,  1, 27,
-       5, 19, 21, 51,  8,  3,  3, 11, 51, 21,
-      24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-      51, 51, 51, 51, 51, 51
-    };
-  register int hval = len;
-
-  switch (hval)
-    {
-      default:
-        hval += asso_values[(unsigned char)str[2]];
-      /*FALLTHROUGH*/
-      case 2:
-      case 1:
-        hval += asso_values[(unsigned char)str[0]];
-        break;
-    }
-  return hval + asso_values[(unsigned char)str[len - 1]];
-}
-
-#ifdef __GNUC__
-__inline
-#ifdef __GNUC_STDC_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
-const struct kwtable *
-mrb_reserved_word (register const char *str, register unsigned int len)
-{
-  static const struct kwtable wordlist[] =
-    {
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 18 "src/keywords"
-      {"break",        {keyword_break,       keyword_break},       EXPR_MID},
-#line 23 "src/keywords"
-      {"else",         {keyword_else,        keyword_else},        EXPR_BEG},
-#line 33 "src/keywords"
-      {"nil",          {keyword_nil,         keyword_nil},         EXPR_END},
-#line 26 "src/keywords"
-      {"ensure",       {keyword_ensure,      keyword_ensure},      EXPR_BEG},
-#line 25 "src/keywords"
-      {"end",          {keyword_end,         keyword_end},         EXPR_END},
-#line 42 "src/keywords"
-      {"then",         {keyword_then,        keyword_then},        EXPR_BEG},
-#line 34 "src/keywords"
-      {"not",          {keyword_not,         keyword_not},         EXPR_ARG},
-#line 27 "src/keywords"
-      {"false",        {keyword_false,       keyword_false},       EXPR_END},
-#line 40 "src/keywords"
-      {"self",         {keyword_self,        keyword_self},        EXPR_END},
-#line 24 "src/keywords"
-      {"elsif",        {keyword_elsif,       keyword_elsif},       EXPR_VALUE},
-#line 37 "src/keywords"
-      {"rescue",       {keyword_rescue,      modifier_rescue},     EXPR_MID},
-#line 43 "src/keywords"
-      {"true",         {keyword_true,        keyword_true},        EXPR_END},
-#line 46 "src/keywords"
-      {"until",        {keyword_until,       modifier_until},      EXPR_VALUE},
-#line 45 "src/keywords"
-      {"unless",       {keyword_unless,      modifier_unless},     EXPR_VALUE},
-#line 39 "src/keywords"
-      {"return",       {keyword_return,      keyword_return},      EXPR_MID},
-#line 21 "src/keywords"
-      {"def",          {keyword_def,         keyword_def},         EXPR_FNAME},
-#line 16 "src/keywords"
-      {"and",          {keyword_and,         keyword_and},         EXPR_VALUE},
-#line 22 "src/keywords"
-      {"do",           {keyword_do,          keyword_do},          EXPR_BEG},
-#line 49 "src/keywords"
-      {"yield",        {keyword_yield,       keyword_yield},       EXPR_ARG},
-#line 28 "src/keywords"
-      {"for",          {keyword_for,         keyword_for},         EXPR_VALUE},
-#line 44 "src/keywords"
-      {"undef",        {keyword_undef,       keyword_undef},       EXPR_FNAME},
-#line 35 "src/keywords"
-      {"or",           {keyword_or,          keyword_or},          EXPR_VALUE},
-#line 30 "src/keywords"
-      {"in",           {keyword_in,          keyword_in},          EXPR_VALUE},
-#line 47 "src/keywords"
-      {"when",         {keyword_when,        keyword_when},        EXPR_VALUE},
-#line 38 "src/keywords"
-      {"retry",        {keyword_retry,       keyword_retry},       EXPR_END},
-#line 29 "src/keywords"
-      {"if",           {keyword_if,          modifier_if},         EXPR_VALUE},
-#line 19 "src/keywords"
-      {"case",         {keyword_case,        keyword_case},        EXPR_VALUE},
-#line 36 "src/keywords"
-      {"redo",         {keyword_redo,        keyword_redo},        EXPR_END},
-#line 32 "src/keywords"
-      {"next",         {keyword_next,        keyword_next},        EXPR_MID},
-#line 41 "src/keywords"
-      {"super",        {keyword_super,       keyword_super},       EXPR_ARG},
-#line 31 "src/keywords"
-      {"module",       {keyword_module,      keyword_module},      EXPR_VALUE},
-#line 17 "src/keywords"
-      {"begin",        {keyword_begin,       keyword_begin},       EXPR_BEG},
-#line 12 "src/keywords"
-      {"__LINE__",     {keyword__LINE__,     keyword__LINE__},     EXPR_END},
-#line 11 "src/keywords"
-      {"__FILE__",     {keyword__FILE__,     keyword__FILE__},     EXPR_END},
-#line 10 "src/keywords"
-      {"__ENCODING__", {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END},
-#line 14 "src/keywords"
-      {"END",          {keyword_END,         keyword_END},         EXPR_END},
-#line 15 "src/keywords"
-      {"alias",        {keyword_alias,       keyword_alias},       EXPR_FNAME},
-#line 13 "src/keywords"
-      {"BEGIN",        {keyword_BEGIN,       keyword_BEGIN},       EXPR_END},
-      {""},
-#line 20 "src/keywords"
-      {"class",        {keyword_class,       keyword_class},       EXPR_CLASS},
-      {""}, {""},
-#line 48 "src/keywords"
-      {"while",        {keyword_while,       modifier_while},      EXPR_VALUE}
-    };
-
-  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-    {
-      register int key = hash (str, len);
-
-      if (key <= MAX_HASH_VALUE && key >= 0)
-        {
-          register const char *s = wordlist[key].name;
-
-          if (*str == *s && !strcmp (str + 1, s + 1))
-            return &wordlist[key];
-        }
-    }
-  return 0;
-}
-#line 50 "src/keywords"
-

  Deleted: vendor/mruby-eeac4be/src/load.c (+0 -765) 100644
===================================================================
--- vendor/mruby-eeac4be/src/load.c    2014-06-08 19:01:14 +0900 (e2f74d5)
+++ /dev/null
@@ -1,765 +0,0 @@
-/*
-** load.c - mruby binary loader
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef SIZE_MAX
- /* Some versions of VC++
-  * has SIZE_MAX in stdint.h
-  */
-# include <limits.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include "mruby/dump.h"
-#include "mruby/irep.h"
-#include "mruby/proc.h"
-#include "mruby/string.h"
-#include "mruby/debug.h"
-
-#if !defined(_WIN32) && SIZE_MAX < UINT32_MAX
-# define SIZE_ERROR_MUL(x, y) ((x) > SIZE_MAX / (y))
-# define SIZE_ERROR(x) ((x) > SIZE_MAX)
-#else
-# define SIZE_ERROR_MUL(x, y) (0)
-# define SIZE_ERROR(x) (0)
-#endif
-
-#if CHAR_BIT != 8
-# error This code assumes CHAR_BIT == 8
-#endif
-
-static void
-irep_free(size_t sirep, mrb_state *mrb)
-{
-  size_t i;
-  void *p;
-
-  for (i = sirep; i < mrb->irep_len; i++) {
-    if (mrb->irep[i]) {
-      p = mrb->irep[i]->iseq;
-      if (p)
-        mrb_free(mrb, p);
-
-      p = mrb->irep[i]->pool;
-      if (p)
-        mrb_free(mrb, p);
-
-      p = mrb->irep[i]->syms;
-      if (p)
-        mrb_free(mrb, p);
-
-      mrb_free(mrb, mrb->irep[i]);
-    }
-  }
-}
-
-static size_t
-offset_crc_body(void)
-{
-  struct rite_binary_header header;
-  return ((uint8_t *)header.binary_crc - (uint8_t *)&header) + sizeof(header.binary_crc);
-}
-
-static int
-read_rite_irep_record(mrb_state *mrb, const uint8_t *bin, uint32_t *len)
-{
-  int ret;
-  size_t i;
-  const uint8_t *src = bin;
-  uint16_t tt, pool_data_len, snl;
-  size_t plen;
-  int ai = mrb_gc_arena_save(mrb);
-  mrb_irep *irep = mrb_add_irep(mrb);
-
-  // skip record size
-  src += sizeof(uint32_t);
-
-  // number of local variable
-  irep->nlocals = bin_to_uint16(src);
-  src += sizeof(uint16_t);
-
-  // number of register variable
-  irep->nregs = bin_to_uint16(src);
-  src += sizeof(uint16_t);
-
-  // Binary Data Section
-  // ISEQ BLOCK
-  irep->ilen = bin_to_uint32(src);
-  src += sizeof(uint32_t);
-  if (irep->ilen > 0) {
-    if (SIZE_ERROR_MUL(sizeof(mrb_code), irep->ilen)) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    irep->iseq = (mrb_code *)mrb_malloc(mrb, sizeof(mrb_code) * irep->ilen);
-    if (irep->iseq == NULL) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    for (i = 0; i < irep->ilen; i++) {
-      irep->iseq[i] = bin_to_uint32(src);     //iseq
-      src += sizeof(uint32_t);
-    }
-  }
-
-  //POOL BLOCK
-  plen = bin_to_uint32(src); /* number of pool */
-  src += sizeof(uint32_t);
-  if (plen > 0) {
-    if (SIZE_ERROR_MUL(sizeof(mrb_value), plen)) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    irep->pool = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value) * plen);
-    if (irep->pool == NULL) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-
-    for (i = 0; i < plen; i++) {
-      mrb_value s;
-      tt = *src++; //pool TT
-      pool_data_len = bin_to_uint16(src); //pool data length
-      src += sizeof(uint16_t);
-      s = mrb_str_new(mrb, (char *)src, pool_data_len);
-      src += pool_data_len;
-      switch (tt) { //pool data
-      case MRB_TT_FIXNUM:
-        irep->pool[i] = mrb_str_to_inum(mrb, s, 10, FALSE);
-        break;
-
-      case MRB_TT_FLOAT:
-        irep->pool[i] = mrb_float_value(mrb, mrb_str_to_dbl(mrb, s, FALSE));
-        break;
-
-      case MRB_TT_STRING:
-        irep->pool[i] = s;
-        break;
-
-      default:
-        irep->pool[i] = mrb_nil_value();
-        break;
-      }
-      irep->plen++;
-      mrb_gc_arena_restore(mrb, ai);
-    }
-  }
-
-  //SYMS BLOCK
-  irep->slen = bin_to_uint32(src);  //syms length
-  src += sizeof(uint32_t);
-  if (irep->slen > 0) {
-    if (SIZE_ERROR_MUL(sizeof(mrb_sym), irep->slen)) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    irep->syms = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym) * irep->slen);
-    if (irep->syms == NULL) {
-      ret = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-
-    for (i = 0; i < irep->slen; i++) {
-      snl = bin_to_uint16(src);               //symbol name length
-      src += sizeof(uint16_t);
-
-      if (snl == MRB_DUMP_NULL_SYM_LEN) {
-        irep->syms[i] = 0;
-        continue;
-      }
-
-      irep->syms[i] = mrb_intern2(mrb, (char *)src, snl);
-      src += snl + 1;
-
-      mrb_gc_arena_restore(mrb, ai);
-    }
-  }
-  *len = src - bin;
-
-  ret = MRB_DUMP_OK;
-error_exit:
-  return ret;
-}
-
-static int
-read_rite_section_irep(mrb_state *mrb, const uint8_t *bin)
-{
-  int result;
-  size_t sirep;
-  uint32_t len;
-  uint16_t nirep;
-  uint16_t n;
-  const struct rite_section_irep_header *header;
-
-  header = (const struct rite_section_irep_header*)bin;
-  bin += sizeof(struct rite_section_irep_header);
-
-  sirep = mrb->irep_len;
-  nirep = bin_to_uint16(header->nirep);
-
-  //Read Binary Data Section
-  for (n = 0; n < nirep; n++) {
-    result = read_rite_irep_record(mrb, bin, &len);
-    if (result != MRB_DUMP_OK)
-      goto error_exit;
-    bin += len;
-  }
-
-  result = nirep;
-error_exit:
-  if (result < MRB_DUMP_OK) {
-    irep_free(sirep, mrb);
-  }
-  return result;
-}
-
-static int
-read_rite_lineno_record(mrb_state *mrb, const uint8_t *bin, size_t irepno, uint32_t *len)
-{
-  int ret;
-  size_t i, fname_len, niseq;
-  char *fname;
-  uint16_t *lines;
-
-  ret = MRB_DUMP_OK;
-  *len = 0;
-  bin += sizeof(uint32_t); // record size
-  *len += sizeof(uint32_t);
-  fname_len = bin_to_uint16(bin);
-  bin += sizeof(uint16_t);
-  *len += sizeof(uint16_t);
-  if (SIZE_ERROR(fname_len + 1)) {
-    ret = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-  fname = (char *)mrb_malloc(mrb, fname_len + 1);
-  if (fname == NULL) {
-    ret = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-  memcpy(fname, bin, fname_len);
-  fname[fname_len] = '\0';
-  bin += fname_len;
-  *len += fname_len;
-
-  niseq = bin_to_uint32(bin);
-  bin += sizeof(uint32_t); // niseq
-  *len += sizeof(uint32_t);
-
-  if (SIZE_ERROR_MUL(niseq, sizeof(uint16_t))) {
-    ret = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-  lines = (uint16_t *)mrb_malloc(mrb, niseq * sizeof(uint16_t));
-  if (lines == NULL) {
-    ret = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-  for (i = 0; i < niseq; i++) {
-    lines[i] = bin_to_uint16(bin);
-    bin += sizeof(uint16_t); // niseq
-    *len += sizeof(uint16_t);
- }
-
-  mrb->irep[irepno]->filename = fname;
-  mrb->irep[irepno]->lines = lines;
-
-error_exit:
-
-  return ret;
-}
-
-static int
-read_rite_section_lineno(mrb_state *mrb, const uint8_t *bin, size_t sirep)
-{
-  int result;
-  size_t i;
-  uint32_t len;
-  uint16_t nirep;
-  uint16_t n;
-  const struct rite_section_lineno_header *header;
-
-  len = 0;
-  header = (const struct rite_section_lineno_header*)bin;
-  bin += sizeof(struct rite_section_lineno_header);
-
-  nirep = bin_to_uint16(header->nirep);
-
-  //Read Binary Data Section
-  for (n = 0, i = sirep; n < nirep; n++, i++) {
-    result = read_rite_lineno_record(mrb, bin, i, &len);
-    if (result != MRB_DUMP_OK)
-      goto error_exit;
-    bin += len;
-  }
-
-  result = sirep + bin_to_uint16(header->sirep);
-error_exit:
-  return result;
-}
-
-static int
-read_rite_debug_record(mrb_state *mrb, const uint8_t *start, size_t irepno, uint32_t *len, const mrb_sym *filenames, size_t filenames_len)
-{
-  const uint8_t *bin = start;
-  mrb_irep *irep = mrb->irep[irepno];
-  size_t record_size;
-  uint16_t f_idx;
-
-  if(irep->debug_info) { return MRB_DUMP_INVALID_IREP; }
-
-  irep->debug_info = (mrb_irep_debug_info*)mrb_malloc(mrb, sizeof(mrb_irep_debug_info));
-  irep->debug_info->pc_count = irep->ilen;
-
-  record_size = bin_to_uint32(bin);
-  bin += sizeof(uint32_t);
-
-  irep->debug_info->flen = bin_to_uint16(bin);
-  irep->debug_info->files = (mrb_irep_debug_info_file**)mrb_malloc(mrb, sizeof(mrb_irep_debug_info*) * irep->debug_info->flen);
-  bin += sizeof(uint16_t);
-
-  for (f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
-    mrb_irep_debug_info_file *file;
-    uint16_t filename_idx;
-    size_t len;
-
-    file = (mrb_irep_debug_info_file *)mrb_malloc(mrb, sizeof(*file));
-    irep->debug_info->files[f_idx] = file;
-
-    file->start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t);
-
-    // filename
-    filename_idx = bin_to_uint16(bin);
-    bin += sizeof(uint16_t);
-    mrb_assert(filename_idx < filenames_len);
-    file->filename_sym = filenames[filename_idx];
-    len = 0;
-    file->filename = mrb_sym2name_len(mrb, file->filename_sym, &len);
-
-    file->line_entry_count = bin_to_uint32(bin); bin += sizeof(uint32_t);
-    file->line_type = bin_to_uint8(bin); bin += sizeof(uint8_t);
-    switch(file->line_type) {
-      case mrb_debug_line_ary: {
-        size_t l;
-
-        file->line_ary = (uint16_t *)mrb_malloc(mrb, sizeof(uint16_t) * file->line_entry_count);
-        for(l = 0; l < file->line_entry_count; ++l) {
-          file->line_ary[l] = bin_to_uint16(bin); bin += sizeof(uint16_t);
-        }
-      } break;
-
-      case mrb_debug_line_flat_map: {
-        size_t l;
-
-        file->line_flat_map = mrb_malloc(mrb, sizeof(mrb_irep_debug_info_line) * file->line_entry_count);
-        for(l = 0; l < file->line_entry_count; ++l) {
-          file->line_flat_map[l].start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t);
-          file->line_flat_map[l].line = bin_to_uint16(bin); bin += sizeof(uint16_t);
-        }
-      } break;
-
-      default: return MRB_DUMP_GENERAL_FAILURE;
-    }
-  }
-
-  if((long)record_size != (bin - start)) {
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-
-  *len = bin - start;
-
-  return MRB_DUMP_OK;
-}
-
-static int
-read_rite_section_debug(mrb_state *mrb, const uint8_t *start, size_t sirep)
-{
-  const uint8_t *bin;
-  struct rite_section_debug_header *header;
-  uint16_t i;
-  int result;
-  uint16_t nirep;
-  size_t filenames_len;
-  mrb_sym *filenames;
-
-  bin = start;
-  header = (struct rite_section_debug_header *)bin;
-  bin += sizeof(struct rite_section_debug_header);
-
-  nirep = bin_to_uint16(header->nirep);
-
-  filenames_len = bin_to_uint16(bin);
-  bin += sizeof(uint16_t);
-  filenames = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym*) * filenames_len);
-  for(i = 0; i < filenames_len; ++i) {
-    uint16_t f_len = bin_to_uint16(bin);
-    bin += sizeof(uint16_t);
-    filenames[i] = mrb_intern2(mrb, (const char *)bin, f_len);
-    bin += f_len;
-  }
-
-  for(i = sirep; i < (sirep + nirep); ++i) {
-    uint32_t len = 0;
-    result = read_rite_debug_record(mrb, bin, i, &len, filenames, filenames_len);
-    if (result != MRB_DUMP_OK) { goto debug_exit; }
-    bin += len;
-  }
-
-  if ((bin - start) != bin_to_uint32(header->section_size)) {
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-
-  result = sirep + bin_to_uint16(header->sirep);
-debug_exit:
-  mrb_free(mrb, filenames);
-  return result;
-}
-
-static int
-read_rite_binary_header(const uint8_t *bin, size_t *bin_size, uint16_t *crc)
-{
-  const struct rite_binary_header *header = (const struct rite_binary_header *)bin;
-
-  if (memcmp(header->binary_identify, RITE_BINARY_IDENTIFIER, sizeof(header->binary_identify)) != 0) {
-    return MRB_DUMP_INVALID_FILE_HEADER;
-  }
-
-  if (memcmp(header->binary_version, RITE_BINARY_FORMAT_VER, sizeof(header->binary_version)) != 0) {
-    return MRB_DUMP_INVALID_FILE_HEADER;
-  }
-
-  *crc = bin_to_uint16(header->binary_crc);
-  if (bin_size) {
-    *bin_size = bin_to_uint32(header->binary_size);
-  }
-
-  return MRB_DUMP_OK;
-}
-
-int32_t
-mrb_read_irep(mrb_state *mrb, const uint8_t *bin)
-{
-  int result;
-  int32_t total_nirep = 0;
-  const struct rite_section_header *section_header;
-  uint16_t crc;
-  size_t bin_size = 0;
-  size_t n;
-  size_t sirep;
-
-  if ((mrb == NULL) || (bin == NULL)) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  result = read_rite_binary_header(bin, &bin_size, &crc);
-  if (result != MRB_DUMP_OK) {
-    return result;
-  }
-
-  n = offset_crc_body();
-  if (crc != calc_crc_16_ccitt(bin + n, bin_size - n, 0)) {
-    return MRB_DUMP_INVALID_FILE_HEADER;
-  }
-
-  bin += sizeof(struct rite_binary_header);
-  sirep = mrb->irep_len;
-
-  do {
-    section_header = (const struct rite_section_header *)bin;
-    if (memcmp(section_header->section_identify, RITE_SECTION_IREP_IDENTIFIER, sizeof(section_header->section_identify)) == 0) {
-      result = read_rite_section_irep(mrb, bin);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-      total_nirep += result;
-    }
-    else if (memcmp(section_header->section_identify, RITE_SECTION_LINENO_IDENTIFIER, sizeof(section_header->section_identify)) == 0) {
-      result = read_rite_section_lineno(mrb, bin, sirep);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-    }
-    else if (memcmp(section_header->section_identify, RITE_SECTION_DEBUG_IDENTIFIER, sizeof(section_header->section_identify)) == 0) {
-      result = read_rite_section_debug(mrb, bin, sirep);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-    }
-    bin += bin_to_uint32(section_header->section_size);
-  } while (memcmp(section_header->section_identify, RITE_BINARY_EOF, sizeof(section_header->section_identify)) != 0);
-
-  return sirep;
-}
-
-static void
-irep_error(mrb_state *mrb, int n)
-{
-  static const char msg[] = "irep load error";
-  mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SCRIPT_ERROR, msg, sizeof(msg) - 1));
-}
-
-mrb_value
-mrb_load_irep(mrb_state *mrb, const uint8_t *bin)
-{
-  int32_t n;
-
-  n = mrb_read_irep(mrb, bin);
-  if (n < 0) {
-    irep_error(mrb, n);
-    return mrb_nil_value();
-  }
-  return mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
-}
-
-#ifdef ENABLE_STDIO
-
-static int32_t
-read_rite_section_lineno_file(mrb_state *mrb, FILE *fp, size_t sirep)
-{
-  int32_t result;
-  size_t i;
-  uint16_t nirep;
-  uint16_t n;
-  uint32_t len, buf_size;
-  uint8_t *buf = NULL;
-  const size_t record_header_size = 4;
-
-  struct rite_section_lineno_header header;
-  if (fread(&header, sizeof(struct rite_section_lineno_header), 1, fp) == 0) {
-    return MRB_DUMP_READ_FAULT;
-  }
-
-  nirep = bin_to_uint16(header.nirep);
-
-  buf_size = record_header_size;
-  /* We don't need to check buf_size. As it is enough small. */
-  buf = (uint8_t *)mrb_malloc(mrb, buf_size);
-  if (!buf) {
-    result = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-
-  //Read Binary Data Section
-  for (n = 0, i = sirep; n < nirep; n++, i++) {
-    void *ptr;
-
-    if (fread(buf, record_header_size, 1, fp) == 0) {
-      result = MRB_DUMP_READ_FAULT;
-      goto error_exit;
-    }
-    buf_size = bin_to_uint32(&buf[0]);
-    if (SIZE_ERROR(buf_size)) {
-      result = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    ptr = mrb_realloc(mrb, buf, buf_size);
-    if (!ptr) {
-      result = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    buf = (uint8_t *)ptr;
-
-    if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
-      result = MRB_DUMP_READ_FAULT;
-      goto error_exit;
-    }
-    result = read_rite_lineno_record(mrb, buf, i, &len);
-    if (result != MRB_DUMP_OK)
-      goto error_exit;
-  }
-
-  result = sirep + bin_to_uint16(header.sirep);
-error_exit:
-  if (buf) {
-    mrb_free(mrb, buf);
-  }
-  if (result < MRB_DUMP_OK) {
-    irep_free(sirep, mrb);
-  }
-  return result;
-}
-
-static int32_t
-read_rite_section_irep_file(mrb_state *mrb, FILE *fp)
-{
-  int32_t result;
-  size_t sirep;
-  uint16_t nirep;
-  uint16_t n;
-  uint32_t len, buf_size;
-  uint8_t *buf = NULL;
-  const size_t record_header_size = 1 + 4;
-  struct rite_section_irep_header header;
-
-  if (fread(&header, sizeof(struct rite_section_irep_header), 1, fp) == 0) {
-    return MRB_DUMP_READ_FAULT;
-  }
-
-  sirep = mrb->irep_len;
-  nirep = bin_to_uint16(header.nirep);
-
-  buf_size = record_header_size;
-  /* You don't need use SIZE_ERROR as buf_size is enough small. */
-  buf = (uint8_t *)mrb_malloc(mrb, buf_size);
-  if (!buf) {
-    result = MRB_DUMP_GENERAL_FAILURE;
-    goto error_exit;
-  }
-
-  //Read Binary Data Section
-  for (n = 0; n < nirep; n++) {
-    void *ptr;
-
-    if (fread(buf, record_header_size, 1, fp) == 0) {
-      result = MRB_DUMP_READ_FAULT;
-      goto error_exit;
-    }
-    buf_size = bin_to_uint32(&buf[0]);
-    if (SIZE_ERROR(buf_size)) {
-      result = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    ptr = mrb_realloc(mrb, buf, buf_size);
-    if (!ptr) {
-      result = MRB_DUMP_GENERAL_FAILURE;
-      goto error_exit;
-    }
-    buf = (uint8_t *)ptr;
-
-    if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
-      result = MRB_DUMP_READ_FAULT;
-      goto error_exit;
-    }
-    result = read_rite_irep_record(mrb, buf, &len);
-    if (result != MRB_DUMP_OK)
-      goto error_exit;
-  }
-
-  result = nirep;
-error_exit:
-  if (buf) {
-    mrb_free(mrb, buf);
-  }
-  if (result < MRB_DUMP_OK) {
-    irep_free(sirep, mrb);
-  }
-  return result;
-}
-
-int32_t
-mrb_read_irep_file(mrb_state *mrb, FILE* fp)
-{
-  int result;
-  int32_t total_nirep = 0;
-  uint8_t *buf;
-  uint16_t crc, crcwk = 0;
-  uint32_t section_size = 0;
-  size_t nbytes;
-  size_t sirep;
-  struct rite_section_header section_header;
-  long fpos;
-  size_t block_size = 1 << 14;
-  const uint8_t block_fallback_count = 4;
-  int i;
-  const size_t buf_size = sizeof(struct rite_binary_header);
-
-  if ((mrb == NULL) || (fp == NULL)) {
-    return MRB_DUMP_INVALID_ARGUMENT;
-  }
-
-  /* You don't need use SIZE_ERROR as buf_size is enough small. */
-  buf = mrb_malloc(mrb, buf_size);
-  if (!buf) {
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-  if (fread(buf, buf_size, 1, fp) == 0) {
-    mrb_free(mrb, buf);
-    return MRB_DUMP_READ_FAULT;
-  }
-  result = read_rite_binary_header(buf, NULL, &crc);
-  mrb_free(mrb, buf);
-  if (result != MRB_DUMP_OK) {
-    return result;
-  }
-
-  /* verify CRC */
-  fpos = ftell(fp);
-  /* You don't need use SIZE_ERROR as block_size is enough small. */
-  for (i = 0; i < block_fallback_count; i++,block_size >>= 1){
-    buf = mrb_malloc_simple(mrb, block_size);
-    if (buf) break;
-  }
-  if (!buf) {
-    return MRB_DUMP_GENERAL_FAILURE;
-  }
-  fseek(fp, offset_crc_body(), SEEK_SET);
-  while ((nbytes = fread(buf, 1, block_size, fp)) > 0) {
-    crcwk = calc_crc_16_ccitt(buf, nbytes, crcwk);
-  }
-  mrb_free(mrb, buf);
-  if (nbytes == 0 && ferror(fp)) {
-    return MRB_DUMP_READ_FAULT;
-  }
-  if (crcwk != crc) {
-    return MRB_DUMP_INVALID_FILE_HEADER;
-  }
-  fseek(fp, fpos + section_size, SEEK_SET);
-  sirep = mrb->irep_len;
-
-  // read sections
-  do {
-    fpos = ftell(fp);
-    if (fread(&section_header, sizeof(struct rite_section_header), 1, fp) == 0) {
-      return MRB_DUMP_READ_FAULT;
-    }
-    section_size = bin_to_uint32(section_header.section_size);
-
-    if (memcmp(section_header.section_identify, RITE_SECTION_IREP_IDENTIFIER, sizeof(section_header.section_identify)) == 0) {
-      fseek(fp, fpos, SEEK_SET);
-      result = read_rite_section_irep_file(mrb, fp);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-      total_nirep += result;
-    }
-    else if (memcmp(section_header.section_identify, RITE_SECTION_LINENO_IDENTIFIER, sizeof(section_header.section_identify)) == 0) {
-      fseek(fp, fpos, SEEK_SET);
-      result = read_rite_section_lineno_file(mrb, fp, sirep);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-    }
-    else if (memcmp(section_header.section_identify, RITE_SECTION_DEBUG_IDENTIFIER, sizeof(section_header.section_identify)) == 0) {
-      uint8_t* const bin = mrb_malloc(mrb, section_size);
-      fseek(fp, fpos, SEEK_SET);
-      if(fread((char*)bin, section_size, 1, fp) != 1) {
-        mrb_free(mrb, bin);
-        return MRB_DUMP_READ_FAULT;
-      }
-      result = read_rite_section_debug(mrb, bin, sirep);
-      mrb_free(mrb, bin);
-      if (result < MRB_DUMP_OK) {
-        return result;
-      }
-    }
-
-    fseek(fp, fpos + section_size, SEEK_SET);
-  } while (memcmp(section_header.section_identify, RITE_BINARY_EOF, sizeof(section_header.section_identify)) != 0);
-
-  return sirep;
-}
-
-mrb_value
-mrb_load_irep_file(mrb_state *mrb, FILE* fp)
-{
-  int n = mrb_read_irep_file(mrb, fp);
-
-  if (n < 0) {
-    irep_error(mrb, n);
-    return mrb_nil_value();
-  }
-  return mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
-}
-#endif /* ENABLE_STDIO */

  Deleted: vendor/mruby-eeac4be/src/mrblib.c (+0 -971) 100644
===================================================================
--- vendor/mruby-eeac4be/src/mrblib.c    2014-06-08 19:01:14 +0900 (68ebb36)
+++ /dev/null
@@ -1,971 +0,0 @@
-#include "mruby.h"
-#include "mruby/irep.h"
-#include "mruby/dump.h"
-#include "mruby/string.h"
-#include "mruby/proc.h"
-
-extern const uint8_t mrblib_irep[];
-
-void
-mrb_init_mrblib(mrb_state *mrb)
-{
-  mrb_load_irep(mrb, mrblib_irep);
-}
-
-#include <stdint.h>
-const uint8_t mrblib_irep[] = {
-0x52,0x49,0x54,0x45,0x30,0x30,0x30,0x31,0xca,0x4c,0x00,0x00,0x3b,0x9d,0x4d,0x41,
-0x54,0x5a,0x30,0x30,0x30,0x30,0x49,0x52,0x45,0x50,0x00,0x00,0x3b,0x7f,0x30,0x30,
-0x30,0x30,0x00,0x91,0x00,0x00,0x00,0x00,0x03,0x2f,0x00,0x01,0x00,0x03,0x00,0x00,
-0x00,0x7b,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x80,0x00,0x43,0x00,0x80,
-0x00,0xc5,0x00,0x80,0x00,0x05,0x00,0x80,0x40,0x44,0x00,0x80,0x04,0x45,0x00,0x80,
-0x00,0x05,0x00,0x80,0x80,0x44,0x00,0x80,0x04,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x05,0x00,0x80,0x00,0x43,0x00,0x80,0x05,0x45,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x05,0x00,0x80,0xc0,0x43,0x00,0x80,0x06,0x45,0x00,0x80,0x00,0x05,0x00,0x80,
-0x80,0x44,0x00,0x80,0x0a,0xc5,0x00,0x80,0x00,0x05,0x00,0x80,0x40,0x44,0x00,0x80,
-0x0e,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x81,0x00,0x43,0x00,0x80,
-0x20,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x81,0x80,0x43,0x00,0x80,
-0x21,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x81,0xc0,0x43,0x00,0x80,
-0x21,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x82,0x00,0x43,0x00,0x80,
-0x22,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x04,0x11,0x00,0x82,0x40,0x43,0x00,0x80,
-0x22,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x82,0x80,0x43,0x00,0x80,
-0x23,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x82,0xc0,0x43,0x00,0x80,
-0x23,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x83,0x00,0x43,0x00,0x80,
-0x24,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x06,0x11,0x00,0x83,0x40,0x43,0x00,0x80,
-0x25,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,0x02,0x91,0x00,0x83,0x80,0x43,0x00,0x80,
-0x26,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x07,0x11,0x00,0x83,0xc0,0x43,0x00,0x80,
-0x26,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,0x08,0x11,0x00,0x84,0x40,0x43,0x00,0x80,
-0x27,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x84,0x80,0x43,0x00,0x80,
-0x27,0xc5,0x00,0x80,0x00,0x05,0x00,0x80,0x40,0x44,0x00,0x80,0x33,0x45,0x00,0x80,
-0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x84,0x80,0x43,0x00,0x80,0x33,0xc5,0x00,0x80,
-0x00,0x05,0x00,0x84,0xc0,0x44,0x00,0x80,0x34,0x45,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x05,0x00,0x85,0x00,0x43,0x00,0x80,0x37,0xc5,0x00,0x80,0x00,0x05,0x00,0x80,
-0x80,0x44,0x00,0x80,0x3c,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x85,
-0x40,0x43,0x00,0x80,0x3c,0xc5,0x00,0x80,0x00,0x05,0x00,0x84,0xc0,0x44,0x00,0x80,
-0x3d,0x45,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x85,0x80,0x43,0x00,0x80,
-0x3f,0xc5,0x00,0x80,0x00,0x05,0x00,0x80,0x40,0x44,0x00,0x80,0x40,0xc5,0x00,0x80,
-0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x85,0x80,0x43,0x00,0x80,0x41,0x45,0x00,0x80,
-0x00,0x05,0x01,0x00,0x00,0x05,0x00,0x85,0xc0,0x43,0x00,0x80,0x41,0xc5,0x00,0x80,
-0x00,0x05,0x00,0x80,0x80,0x44,0x00,0x80,0x47,0xc5,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x05,0x00,0x85,0xc0,0x43,0x00,0x80,0x48,0x45,0x00,0x00,0x00,0x4a,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x05,0x41,0x72,0x72,0x61,0x79,0x00,0x00,0x0a,
-0x45,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x00,0x00,0x0a,0x43,0x6f,0x6d,
-0x70,0x61,0x72,0x61,0x62,0x6c,0x65,0x00,0x00,0x06,0x4d,0x6f,0x64,0x75,0x6c,0x65,
-0x00,0x00,0x09,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x00,0x00,0x0d,0x53,
-0x74,0x61,0x6e,0x64,0x61,0x72,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x0d,0x41,
-0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x0e,0x4c,
-0x6f,0x63,0x61,0x6c,0x4a,0x75,0x6d,0x70,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x0a,
-0x52,0x61,0x6e,0x67,0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x10,0x46,0x6c,0x6f,
-0x61,0x74,0x44,0x6f,0x6d,0x61,0x69,0x6e,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x0b,
-0x52,0x65,0x67,0x65,0x78,0x70,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x09,0x54,0x79,
-0x70,0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x09,0x4e,0x61,0x6d,0x65,0x45,0x72,
-0x72,0x6f,0x72,0x00,0x00,0x0d,0x4e,0x6f,0x4d,0x65,0x74,0x68,0x6f,0x64,0x45,0x72,
-0x72,0x6f,0x72,0x00,0x00,0x0a,0x49,0x6e,0x64,0x65,0x78,0x45,0x72,0x72,0x6f,0x72,
-0x00,0x00,0x08,0x4b,0x65,0x79,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x0b,0x53,0x63,
-0x72,0x69,0x70,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x13,0x4e,0x6f,0x74,0x49,
-0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,
-0x00,0x04,0x48,0x61,0x73,0x68,0x00,0x00,0x06,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x00,
-0x00,0x07,0x49,0x6e,0x74,0x65,0x67,0x65,0x72,0x00,0x00,0x07,0x4e,0x75,0x6d,0x65,
-0x72,0x69,0x63,0x00,0x00,0x05,0x52,0x61,0x6e,0x67,0x65,0x00,0x00,0x06,0x53,0x74,
-0x72,0x69,0x6e,0x67,0x00,0x00,0x00,0x00,0xb7,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
-0x16,0x00,0x80,0x00,0x48,0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,
-0x48,0x01,0x00,0x04,0xc0,0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x06,
-0xc0,0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x01,0x84,0x01,0x80,0x01,
-0x04,0x02,0x00,0x00,0x05,0x00,0x81,0x01,0x20,0x00,0x80,0x00,0x48,0x01,0x00,0x0a,
-0xc0,0x00,0x81,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,0x00,0x81,0x80,
-0x46,0x00,0x80,0x03,0x04,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x07,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x0a,0x65,0x61,0x63,0x68,0x5f,0x69,
-0x6e,0x64,0x65,0x78,0x00,0x00,0x08,0x63,0x6f,0x6c,0x6c,0x65,0x63,0x74,0x21,0x00,
-0x00,0x04,0x6d,0x61,0x70,0x21,0x00,0x00,0x0c,0x61,0x6c,0x69,0x61,0x73,0x5f,0x6d,
-0x65,0x74,0x68,0x6f,0x64,0x00,0x00,0x0a,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,
-0x7a,0x65,0x00,0x00,0x06,0x64,0x65,0x6c,0x65,0x74,0x65,0x00,0x00,0x00,0x00,0xfc,
-0x00,0x05,0x00,0x08,0x00,0x00,0x00,0x2e,0x00,0x00,0x00,0xa6,0x02,0xbf,0xff,0x03,
-0x03,0x00,0x00,0x06,0x03,0x00,0x00,0x20,0x03,0x00,0x40,0xaf,0x01,0x01,0x40,0x01,
-0x01,0x81,0x80,0x01,0x00,0x40,0x0b,0x17,0x02,0x80,0x00,0x06,0x03,0x00,0x80,0x01,
-0x03,0x00,0xc0,0xad,0x01,0x01,0x80,0x01,0x02,0x80,0x80,0xa0,0x02,0x01,0x40,0x01,
-0x02,0x81,0x00,0x01,0x02,0xc0,0x00,0x99,0x00,0x40,0x05,0x17,0x02,0x81,0x00,0x01,
-0x03,0x00,0x00,0x05,0x02,0x81,0x00,0xb2,0x02,0xc0,0x02,0x19,0x02,0x80,0xc0,0x01,
-0x03,0x00,0x00,0x06,0x03,0x00,0x00,0x20,0x02,0x81,0x40,0xb6,0x02,0xc0,0x00,0x99,
-0x00,0x40,0x08,0x97,0x02,0x80,0x40,0x01,0x03,0x01,0x00,0x01,0x02,0x81,0x80,0xa0,
-0x02,0x80,0x80,0x01,0x03,0x00,0xc0,0x01,0x02,0x81,0xc0,0xb3,0x02,0xc0,0x02,0x19,
-0x02,0x80,0xc0,0x01,0x03,0x00,0x00,0x06,0x03,0x00,0x00,0x20,0x02,0x82,0x00,0xb4,
-0x02,0xc0,0x02,0x19,0x02,0x80,0x00,0x06,0x02,0x80,0x00,0x20,0x02,0x80,0x40,0xaf,
-0x01,0x81,0x40,0x01,0x02,0xbf,0xee,0x18,0x02,0x80,0x00,0x06,0x02,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x6c,0x65,0x6e,0x67,0x74,0x68,
-0x00,0x00,0x01,0x2d,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x01,0x2b,0x00,0x00,0x02,
-0x3d,0x3d,0x00,0x00,0x02,0x3e,0x3d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,
-0x01,0x3c,0x00,0x00,0x02,0x3c,0x3d,0x00,0x00,0x00,0x00,0x6c,0x00,0x03,0x00,0x05,
-0x00,0x00,0x00,0x10,0x00,0x00,0x00,0xa6,0x01,0x3f,0xff,0x83,0x00,0x40,0x03,0x17,
-0x01,0x80,0x40,0x01,0x02,0x00,0x80,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x80,0x01,
-0x01,0x80,0x40,0xad,0x01,0x00,0xc0,0x01,0x01,0x80,0x80,0x01,0x02,0x00,0x00,0x06,
-0x02,0x00,0xc0,0x20,0x01,0x80,0x80,0xb3,0x01,0xbf,0xfa,0x98,0x01,0x80,0x00,0x06,
-0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x63,0x61,
-0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,0x00,0x01,0x3c,0x00,0x00,0x06,0x6c,0x65,0x6e,
-0x67,0x74,0x68,0x00,0x00,0x00,0x00,0x39,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x06,
-0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x06,0x01,0x80,0x03,0x40,0x01,0x00,0x00,0x21,
-0x01,0x00,0x00,0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x00,0x0a,0x65,0x61,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x00,0x00,0x00,0x00,
-0x52,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x26,0x01,0x80,0x40,
-0x15,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x40,0xa0,0x01,0x80,0x00,
-0xa0,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x81,
-0x20,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x63,
-0x61,0x6c,0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,
-0x00,0x01,0x90,0x00,0x05,0x00,0x09,0x00,0x00,0x00,0x39,0x00,0x20,0x00,0xa6,0x00,
-0x40,0x01,0x17,0x00,0x40,0x01,0x17,0x00,0x40,0x01,0x17,0x00,0xbf,0xff,0x83,0x01,
-0x00,0x00,0x05,0x02,0x80,0x40,0x01,0x03,0x00,0x00,0x91,0x02,0x80,0x00,0xa0,0x02,
-0xc0,0x00,0x99,0x00,0x40,0x02,0x17,0x02,0x80,0x00,0x06,0x03,0x00,0x01,0x91,0x03,
-0x80,0x00,0x3d,0x02,0x80,0x81,0x20,0x02,0x80,0x40,0x01,0x03,0x3f,0xff,0x83,0x02,
-0x81,0x00,0xb3,0x02,0xc0,0x02,0x19,0x02,0x80,0x00,0x06,0x03,0x00,0x02,0x91,0x03,
-0x80,0x00,0xbd,0x02,0x80,0x81,0x20,0x02,0x80,0x00,0x06,0x02,0x81,0x80,0x20,0x02,
-0x80,0x40,0x01,0x03,0x3f,0xff,0x83,0x02,0x81,0xc0,0xb5,0x02,0xc0,0x0d,0x19,0x02,
-0x80,0x00,0x05,0x03,0x00,0x00,0x06,0x03,0x80,0x40,0x01,0x03,0x82,0x40,0xaf,0x04,
-0x01,0x40,0x01,0x03,0x02,0x01,0x20,0x02,0x3f,0xff,0x83,0x00,0x40,0x07,0x17,0x02,
-0x80,0xc0,0x01,0x02,0xc0,0x02,0x19,0x02,0x80,0xc0,0x01,0x03,0x01,0x00,0x01,0x02,
-0x82,0x80,0xa0,0x00,0x40,0x00,0x97,0x02,0x80,0x80,0x01,0x03,0x00,0x00,0x06,0x03,
-0x81,0x00,0x01,0x04,0x01,0x40,0x01,0x03,0x02,0x01,0x20,0x02,0x81,0x00,0x01,0x02,
-0x82,0xc0,0xad,0x02,0x01,0x40,0x01,0x02,0x81,0x00,0x01,0x03,0x00,0x40,0x01,0x02,
-0x81,0x00,0xb3,0x02,0xbf,0xf7,0x18,0x02,0x80,0x00,0x06,0x02,0x80,0x00,0x29,0x00,
-0x00,0x00,0x02,0x10,0x00,0x21,0x65,0x78,0x70,0x65,0x63,0x74,0x65,0x64,0x20,0x49,
-0x6e,0x74,0x65,0x67,0x65,0x72,0x20,0x66,0x6f,0x72,0x20,0x31,0x73,0x74,0x20,0x61,
-0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x10,0x00,0x13,0x6e,0x65,0x67,0x61,0x74,0x69,
-0x76,0x65,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x73,0x69,0x7a,0x65,0x00,0x00,0x00,
-0x0c,0x00,0x08,0x6b,0x69,0x6e,0x64,0x5f,0x6f,0x66,0x3f,0x00,0x00,0x07,0x49,0x6e,
-0x74,0x65,0x67,0x65,0x72,0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x09,
-0x54,0x79,0x70,0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x01,0x3c,0x00,0x00,0x0d,
-0x41,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x05,
-0x63,0x6c,0x65,0x61,0x72,0x00,0x00,0x01,0x3e,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,
-0x00,0x01,0x2d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,0x00,
-0x00,0x00,0x8c,0x00,0x05,0x00,0x07,0x00,0x00,0x00,0x16,0x02,0x00,0x00,0xa6,0x00,
-0x40,0x02,0x17,0x02,0x80,0x00,0x06,0x03,0x00,0xc0,0x01,0x02,0x80,0x00,0xa0,0x02,
-0x00,0x40,0x01,0x02,0x80,0x00,0x06,0x03,0x00,0x40,0x01,0x02,0x80,0x40,0xa0,0x01,
-0x81,0x40,0x01,0x02,0xbf,0xfb,0x98,0x02,0x81,0x00,0x01,0x03,0x00,0x00,0x05,0x02,
-0x80,0x80,0xb2,0x02,0xc0,0x00,0x99,0x02,0x80,0x80,0x01,0x02,0xc0,0x01,0x99,0x02,
-0x80,0x80,0x01,0x02,0x80,0xc0,0x20,0x00,0x40,0x00,0x97,0x02,0x81,0x00,0x01,0x02,
-0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x09,0x64,0x65,0x6c,
-0x65,0x74,0x65,0x5f,0x61,0x74,0x00,0x00,0x05,0x69,0x6e,0x64,0x65,0x78,0x00,0x00,
-0x02,0x3d,0x3d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x1c,0x00,
-0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,
-0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,
-0x80,0x00,0x06,0x01,0x00,0x00,0x91,0x00,0x80,0x00,0xa0,0x00,0x80,0x00,0x06,0x01,
-0x00,0x01,0x11,0x00,0x80,0x00,0xa0,0x00,0x80,0x00,0x48,0x01,0x00,0x02,0xc0,0x00,
-0x80,0xc0,0x46,0x00,0x80,0x01,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x04,0x00,0x07,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x00,0x00,0x0a,0x45,
-0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x00,0x00,0x0a,0x43,0x6f,0x6d,0x70,
-0x61,0x72,0x61,0x62,0x6c,0x65,0x00,0x00,0x05,0x73,0x6f,0x72,0x74,0x21,0x00,0x00,
-0x00,0x00,0x41,0x00,0x02,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,
-0x00,0x00,0x06,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x40,0x21,0x01,
-0x00,0x00,0xa0,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
-0x07,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x00,0x00,0x04,0x73,0x6f,0x72,0x74,0x00,
-0x00,0x00,0x00,0x7f,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x80,0x00,0x48,
-0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,
-0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0e,0xc0,0x00,0x80,0x80,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x10,0xc0,0x00,0x80,0xc0,0x46,0x00,0x80,0x01,0x84,
-0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0b,0x61,0x74,
-0x74,0x72,0x5f,0x72,0x65,0x61,0x64,0x65,0x72,0x00,0x00,0x0b,0x61,0x74,0x74,0x72,
-0x5f,0x77,0x72,0x69,0x74,0x65,0x72,0x00,0x00,0x0d,0x61,0x74,0x74,0x72,0x5f,0x61,
-0x63,0x63,0x65,0x73,0x73,0x6f,0x72,0x00,0x00,0x04,0x61,0x74,0x74,0x72,0x00,0x00,
-0x00,0x00,0x2f,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x08,0x00,0x26,0x01,
-0x80,0x40,0x01,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x80,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,
-0x01,0x1e,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x22,0x02,0x00,0x00,0x26,0x02,0x00,
-0x40,0x01,0x02,0x00,0x00,0x20,0x00,0x81,0x00,0x01,0x02,0x00,0x40,0x01,0x02,0x80,
-0x00,0x3d,0x02,0x00,0x40,0xa0,0x02,0x40,0x01,0x98,0x02,0x00,0x40,0x01,0x02,0x80,
-0x00,0xbd,0x02,0x00,0x40,0xa0,0x02,0x40,0x01,0x98,0x02,0x00,0x40,0x01,0x02,0x80,
-0x01,0x3d,0x02,0x00,0x40,0xa0,0x02,0x40,0x04,0x99,0x02,0x00,0x00,0x06,0x02,0x80,
-0x01,0x91,0x03,0x00,0x01,0xbd,0x03,0x80,0x40,0x01,0x03,0x81,0x00,0x20,0x03,0x01,
-0xc0,0x3e,0x03,0x80,0x02,0x3d,0x03,0x01,0xc0,0x3e,0x02,0x00,0x81,0x20,0x02,0x00,
-0x00,0x3d,0x02,0x80,0x40,0x01,0x02,0x01,0x40,0xac,0x01,0x81,0x00,0x01,0x02,0x00,
-0x00,0x06,0x02,0x80,0x40,0x01,0x03,0x00,0x03,0x40,0x02,0x01,0x80,0xa1,0x02,0x00,
-0x00,0x29,0x00,0x00,0x00,0x05,0x10,0x00,0x01,0x40,0x10,0x00,0x01,0x3f,0x10,0x00,
-0x01,0x24,0x10,0x00,0x00,0x10,0x00,0x2c,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,
-0x61,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x61,0x73,0x20,0x61,0x6e,0x20,0x69,0x6e,
-0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,
-0x6e,0x61,0x6d,0x65,0x00,0x00,0x00,0x07,0x00,0x04,0x74,0x6f,0x5f,0x73,0x00,0x00,
-0x08,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x3f,0x00,0x00,0x05,0x72,0x61,0x69,0x73,
-0x65,0x00,0x00,0x09,0x4e,0x61,0x6d,0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x07,
-0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x00,0x00,0x01,0x2b,0x00,0x00,0x0d,0x64,0x65,
-0x66,0x69,0x6e,0x65,0x5f,0x6d,0x65,0x74,0x68,0x6f,0x64,0x00,0x00,0x00,0x00,0x3c,
-0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x80,0x00,0x06,0x01,0x00,0xc0,0x15,
-0x00,0x80,0x00,0xa0,0x00,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x00,0x15,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x5f,0x76,0x61,0x72,0x69,0x61,
-0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x00,0x00,0x00,0x00,0x2f,0x00,0x03,0x00,0x05,
-0x00,0x00,0x00,0x05,0x00,0x08,0x00,0x26,0x01,0x80,0x40,0x01,0x02,0x00,0x03,0x40,
-0x01,0x80,0x00,0x21,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x01,0x3f,0x00,0x04,0x00,0x08,0x00,
-0x00,0x00,0x27,0x02,0x00,0x00,0x26,0x02,0x00,0x40,0x01,0x02,0x00,0x00,0x20,0x00,
-0x81,0x00,0x01,0x02,0x00,0x40,0x01,0x02,0x80,0x00,0x3d,0x02,0x00,0x40,0xa0,0x02,
-0x40,0x01,0x98,0x02,0x00,0x40,0x01,0x02,0x80,0x00,0xbd,0x02,0x00,0x40,0xa0,0x02,
-0x40,0x01,0x98,0x02,0x00,0x40,0x01,0x02,0x80,0x01,0x3d,0x02,0x00,0x40,0xa0,0x02,
-0x40,0x04,0x99,0x02,0x00,0x00,0x06,0x02,0x80,0x01,0x91,0x03,0x00,0x01,0xbd,0x03,
-0x80,0x40,0x01,0x03,0x81,0x00,0x20,0x03,0x01,0xc0,0x3e,0x03,0x80,0x02,0x3d,0x03,
-0x01,0xc0,0x3e,0x02,0x00,0x81,0x20,0x02,0x00,0x00,0x3d,0x02,0x80,0x40,0x01,0x02,
-0x01,0x40,0xac,0x01,0x81,0x00,0x01,0x02,0x00,0x40,0x01,0x02,0x80,0x02,0xbd,0x02,
-0x01,0x40,0xac,0x02,0x01,0x80,0x20,0x00,0x81,0x00,0x01,0x02,0x00,0x00,0x06,0x02,
-0x80,0x40,0x01,0x03,0x00,0x03,0x40,0x02,0x01,0xc0,0xa1,0x02,0x00,0x00,0x29,0x00,
-0x00,0x00,0x06,0x10,0x00,0x01,0x40,0x10,0x00,0x01,0x3f,0x10,0x00,0x01,0x24,0x10,
-0x00,0x00,0x10,0x00,0x2c,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x61,0x6c,0x6c,
-0x6f,0x77,0x65,0x64,0x20,0x61,0x73,0x20,0x61,0x6e,0x20,0x69,0x6e,0x73,0x74,0x61,
-0x6e,0x63,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x6e,0x61,0x6d,
-0x65,0x10,0x00,0x01,0x3d,0x00,0x00,0x00,0x08,0x00,0x04,0x74,0x6f,0x5f,0x73,0x00,
-0x00,0x08,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x3f,0x00,0x00,0x05,0x72,0x61,0x69,
-0x73,0x65,0x00,0x00,0x09,0x4e,0x61,0x6d,0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,
-0x07,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x00,0x00,0x01,0x2b,0x00,0x00,0x06,0x69,
-0x6e,0x74,0x65,0x72,0x6e,0x00,0x00,0x0d,0x64,0x65,0x66,0x69,0x6e,0x65,0x5f,0x6d,
-0x65,0x74,0x68,0x6f,0x64,0x00,0x00,0x00,0x00,0x44,0x00,0x03,0x00,0x06,0x00,0x00,
-0x00,0x06,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0xc0,0x15,0x02,0x80,
-0x40,0x01,0x01,0x80,0x01,0x20,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x01,0x00,0x15,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x5f,0x76,0x61,0x72,
-0x69,0x61,0x62,0x6c,0x65,0x5f,0x73,0x65,0x74,0x00,0x00,0x00,0x00,0x60,0x00,0x03,
-0x00,0x06,0x00,0x00,0x00,0x0c,0x00,0x08,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x01,
-0x00,0x37,0x02,0x80,0x40,0x01,0x02,0x01,0x40,0x38,0x01,0x80,0x3f,0xa0,0x01,0x80,
-0x00,0x06,0x02,0x01,0x00,0x37,0x02,0x80,0x40,0x01,0x02,0x01,0x40,0x38,0x01,0x80,
-0x7f,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0b,
-0x61,0x74,0x74,0x72,0x5f,0x72,0x65,0x61,0x64,0x65,0x72,0x00,0x00,0x0b,0x61,0x74,
-0x74,0x72,0x5f,0x77,0x72,0x69,0x74,0x65,0x72,0x00,0x00,0x00,0x00,0x36,0x00,0x03,
-0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,
-0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x01,0x00,0x0b,0x61,0x74,0x74,0x72,0x5f,0x72,0x65,0x61,0x64,0x65,0x72,0x00,
-0x00,0x00,0x00,0x86,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x80,0x00,0x48,
-0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x04,0xc0,
-0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x06,0xc0,0x00,0x80,0x80,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,0x00,0x80,0xc0,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x0a,0xc0,0x00,0x81,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,
-0x00,0x81,0x40,0x46,0x00,0x80,0x02,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x06,0x00,0x01,0x3c,0x00,0x00,0x02,0x3c,0x3d,0x00,0x00,0x02,0x3d,
-0x3d,0x00,0x00,0x01,0x3e,0x00,0x00,0x02,0x3e,0x3d,0x00,0x00,0x08,0x62,0x65,0x74,
-0x77,0x65,0x65,0x6e,0x3f,0x00,0x00,0x00,0x00,0x6d,0x00,0x04,0x00,0x06,0x00,0x00,
-0x00,0x12,0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,
-0x00,0xa0,0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,0x20,0x02,0x40,
-0x01,0x19,0x02,0x00,0x00,0x08,0x00,0x40,0x03,0x97,0x02,0x00,0xc0,0x01,0x02,0xbf,
-0xff,0x83,0x02,0x00,0x80,0xb3,0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x07,0x00,0x40,
-0x00,0x97,0x02,0x00,0x00,0x08,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x03,0x00,0x03,0x3c,0x3d,0x3e,0x00,0x00,0x04,0x6e,0x69,0x6c,0x3f,0x00,0x00,
-0x01,0x3c,0x00,0x00,0x00,0x00,0x6e,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x12,0x02,
-0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xa0,0x01,
-0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,0x20,0x02,0x40,0x01,0x19,0x02,
-0x00,0x00,0x08,0x00,0x40,0x03,0x97,0x02,0x00,0xc0,0x01,0x02,0xbf,0xff,0x83,0x02,
-0x00,0x80,0xb4,0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x07,0x00,0x40,0x00,0x97,0x02,
-0x00,0x00,0x08,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,
-0x03,0x3c,0x3d,0x3e,0x00,0x00,0x04,0x6e,0x69,0x6c,0x3f,0x00,0x00,0x02,0x3c,0x3d,
-0x00,0x00,0x00,0x00,0x53,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x0d,0x02,0x00,0x00,
-0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xa0,0x01,0x81,0x00,
-0x01,0x02,0x00,0xc0,0x01,0x02,0xbf,0xff,0x83,0x02,0x00,0x40,0xb2,0x02,0x40,0x01,
-0x19,0x02,0x00,0x00,0x07,0x00,0x40,0x00,0x97,0x02,0x00,0x00,0x08,0x02,0x00,0x00,
-0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03,0x3c,0x3d,0x3e,0x00,0x00,
-0x02,0x3d,0x3d,0x00,0x00,0x00,0x00,0x6d,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x12,
-0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xa0,
-0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,0x20,0x02,0x40,0x01,0x19,
-0x02,0x00,0x00,0x08,0x00,0x40,0x03,0x97,0x02,0x00,0xc0,0x01,0x02,0xbf,0xff,0x83,
-0x02,0x00,0x80,0xb5,0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x07,0x00,0x40,0x00,0x97,
-0x02,0x00,0x00,0x08,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
-0x00,0x03,0x3c,0x3d,0x3e,0x00,0x00,0x04,0x6e,0x69,0x6c,0x3f,0x00,0x00,0x01,0x3e,
-0x00,0x00,0x00,0x00,0x6e,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x12,0x02,0x00,0x00,
-0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xa0,0x01,0x81,0x00,
-0x01,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,0x20,0x02,0x40,0x01,0x19,0x02,0x00,0x00,
-0x08,0x00,0x40,0x03,0x97,0x02,0x00,0xc0,0x01,0x02,0xbf,0xff,0x83,0x02,0x00,0x80,
-0xb6,0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x07,0x00,0x40,0x00,0x97,0x02,0x00,0x00,
-0x08,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x3c,
-0x3d,0x3e,0x00,0x00,0x04,0x6e,0x69,0x6c,0x3f,0x00,0x00,0x02,0x3e,0x3d,0x00,0x00,
-0x00,0x00,0x50,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x0d,0x04,0x00,0x00,0x26,0x02,
-0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xb3,0x02,0x40,0x01,0x98,0x02,
-0x00,0x00,0x06,0x02,0x80,0x80,0x01,0x02,0x00,0x40,0xb5,0x02,0x40,0x01,0x19,0x02,
-0x00,0x00,0x08,0x00,0x40,0x00,0x97,0x02,0x00,0x00,0x07,0x02,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x3c,0x00,0x00,0x01,0x3e,0x00,0x00,
-0x00,0x02,0x29,0x00,0x01,0x00,0x04,0x00,0x00,0x00,0x4f,0x00,0x80,0x00,0x48,0x01,
-0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,0x00,
-0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0e,0xc0,0x00,0x80,0x80,0x46,0x00,
-0x80,0x00,0x48,0x01,0x00,0x12,0xc0,0x00,0x80,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,
-0x00,0x16,0xc0,0x00,0x81,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x1a,0xc0,0x00,
-0x81,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x03,0x04,0x01,0x80,0x01,0x84,0x02,
-0x00,0x00,0x05,0x00,0x81,0xc1,0x20,0x00,0x80,0x00,0x48,0x01,0x00,0x1e,0xc0,0x00,
-0x82,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x22,0xc0,0x00,0x82,0x40,0x46,0x00,
-0x80,0x00,0x48,0x01,0x00,0x26,0xc0,0x00,0x82,0x80,0x46,0x00,0x80,0x00,0x48,0x01,
-0x00,0x2a,0xc0,0x00,0x82,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x06,0x04,0x01,
-0x80,0x05,0x84,0x02,0x00,0x00,0x05,0x00,0x81,0xc1,0x20,0x00,0x80,0x00,0x48,0x01,
-0x00,0x06,0x84,0x01,0x80,0x01,0x04,0x02,0x00,0x00,0x05,0x00,0x81,0xc1,0x20,0x00,
-0x80,0x00,0x48,0x01,0x00,0x30,0xc0,0x00,0x83,0x80,0x46,0x00,0x80,0x00,0x48,0x01,
-0x00,0x34,0xc0,0x00,0x83,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0x04,0x01,
-0x80,0x05,0x04,0x02,0x00,0x00,0x05,0x00,0x81,0xc1,0x20,0x00,0x80,0x00,0x48,0x01,
-0x00,0x38,0xc0,0x00,0x84,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x3c,0xc0,0x00,
-0x84,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x09,0x84,0x01,0x80,0x04,0x04,0x02,
-0x00,0x00,0x05,0x00,0x81,0xc1,0x20,0x00,0x80,0x00,0x48,0x01,0x00,0x40,0xc0,0x00,
-0x85,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x44,0xc0,0x00,0x85,0x40,0x46,0x00,
-0x80,0x00,0x48,0x01,0x00,0x0b,0x04,0x01,0x80,0x02,0x84,0x02,0x00,0x00,0x05,0x00,
-0x81,0xc1,0x20,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,
-0x04,0x61,0x6c,0x6c,0x3f,0x00,0x00,0x04,0x61,0x6e,0x79,0x3f,0x00,0x00,0x07,0x63,
-0x6f,0x6c,0x6c,0x65,0x63,0x74,0x00,0x00,0x06,0x64,0x65,0x74,0x65,0x63,0x74,0x00,
-0x00,0x0f,0x65,0x61,0x63,0x68,0x5f,0x77,0x69,0x74,0x68,0x5f,0x69,0x6e,0x64,0x65,
-0x78,0x00,0x00,0x07,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x00,0x00,0x04,0x66,0x69,
-0x6e,0x64,0x00,0x00,0x0c,0x61,0x6c,0x69,0x61,0x73,0x5f,0x6d,0x65,0x74,0x68,0x6f,
-0x64,0x00,0x00,0x08,0x66,0x69,0x6e,0x64,0x5f,0x61,0x6c,0x6c,0x00,0x00,0x04,0x67,
-0x72,0x65,0x70,0x00,0x00,0x08,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x3f,0x00,0x00,
-0x06,0x69,0x6e,0x6a,0x65,0x63,0x74,0x00,0x00,0x06,0x72,0x65,0x64,0x75,0x63,0x65,
-0x00,0x00,0x03,0x6d,0x61,0x70,0x00,0x00,0x03,0x6d,0x61,0x78,0x00,0x00,0x03,0x6d,
-0x69,0x6e,0x00,0x00,0x07,0x6d,0x65,0x6d,0x62,0x65,0x72,0x3f,0x00,0x00,0x09,0x70,
-0x61,0x72,0x74,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x06,0x72,0x65,0x6a,0x65,0x63,
-0x74,0x00,0x00,0x06,0x73,0x65,0x6c,0x65,0x63,0x74,0x00,0x00,0x0c,0x5f,0x5f,0x73,
-0x6f,0x72,0x74,0x5f,0x73,0x75,0x62,0x5f,0x5f,0x00,0x00,0x04,0x73,0x6f,0x72,0x74,
-0x00,0x00,0x04,0x74,0x6f,0x5f,0x61,0x00,0x00,0x00,0x00,0x4b,0x00,0x03,0x00,0x05,
-0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x07,0x01,0x80,0x40,0x01,
-0x01,0xc0,0x02,0x19,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,
-0x00,0x40,0x01,0x97,0x01,0x80,0x00,0x06,0x02,0x00,0x05,0x40,0x01,0x80,0x00,0x21,
-0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,
-0x63,0x68,0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0b,0x02,
-0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,
-0xc0,0x01,0x19,0x01,0x80,0x00,0x05,0x00,0x40,0x01,0x97,0x01,0x80,0x00,0x08,0x01,
-0x80,0x80,0x16,0x01,0x80,0x40,0x29,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x38,0x00,0x03,
-0x00,0x04,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x01,0x01,0xc0,
-0x01,0x19,0x01,0x80,0x00,0x05,0x00,0x40,0x01,0x97,0x01,0x80,0x00,0x08,0x01,0x80,
-0x80,0x16,0x01,0x80,0x40,0x29,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x4b,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0c,0x00,0x00,
-0x00,0xa6,0x01,0x00,0x00,0x08,0x01,0x80,0x40,0x01,0x01,0xc0,0x02,0x19,0x01,0x80,
-0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x00,0x40,0x01,0x97,0x01,0x80,
-0x00,0x06,0x02,0x00,0x05,0x40,0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,
-0x47,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x26,0x01,0x80,0x40,
-0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0xc0,0x02,0x19,0x01,0x80,0x00,
-0x07,0x01,0x80,0x80,0x16,0x01,0x80,0x40,0x29,0x00,0x40,0x00,0x97,0x01,0x80,0x00,
-0x05,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x63,
-0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x38,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x09,
-0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x01,0x01,0xc0,0x02,0x19,0x01,0x80,0x00,0x07,
-0x01,0x80,0x80,0x16,0x01,0x80,0x40,0x29,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,
-0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,
-0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0xa6,0x01,0x00,0xc0,0x37,
-0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,
-0x00,0x00,0x3e,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x07,0x02,0x00,0x00,0x26,0x01,
-0x80,0x80,0x15,0x02,0x00,0x40,0x15,0x02,0x80,0x40,0x01,0x02,0x00,0x40,0xa0,0x01,
-0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
-0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,
-0x3f,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x09,0x00,0x10,0x00,0xa6,0x00,0x40,0x00,
-0x97,0x00,0x40,0x00,0x97,0x00,0x80,0x00,0x05,0x01,0x80,0x40,0x01,0x02,0x00,0x00,
-0x06,0x02,0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x01,0x80,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x43,
-0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0a,0x02,0x00,0x00,0x26,0x01,0x80,0x80,0x15,
-0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0xc0,0x01,0x99,0x00,0x80,0xc0,0x16,
-0x01,0x80,0x40,0x29,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,
-0x00,0x00,0x37,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,
-0x3f,0xff,0x83,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,
-0x80,0x00,0x06,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
-0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x43,0x00,0x03,0x00,0x06,0x00,0x00,
-0x00,0x09,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x02,0x80,
-0x80,0x15,0x01,0x80,0x01,0x20,0x01,0x80,0x80,0x15,0x01,0x80,0x40,0xad,0x01,0x80,
-0x80,0x16,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,0x00,0x00,0x00,0x33,0x00,0x03,0x00,
-0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x26,0x01,0x00,0xc0,0x37,0x01,0x80,0x00,
-0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x2f,
-0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x80,0x15,
-0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x01,0x00,0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x00,0x00,0x33,0x00,
-0x03,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0xa6,0x01,0x00,0xc0,0x37,0x01,
-0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,
-0x00,0x4e,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x26,0x01,0x80,
-0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0xc0,0x02,0x19,0x01,0x80,
-0x80,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x40,0xa0,0x00,0x40,0x00,0x97,0x01,0x80,
-0x00,0x05,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x00,0x00,0x33,
-0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x06,0x02,0x00,0x00,0xa6,0x01,0x81,0x00,0x37,
-0x02,0x00,0x00,0x06,0x02,0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,
-0x00,0x00,0x6c,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x11,0x02,0x00,0x00,0x26,0x01,
-0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0xc0,0x05,0x19,0x01,
-0x80,0xc0,0x15,0x02,0x00,0x80,0x15,0x02,0x40,0x02,0x19,0x02,0x00,0x80,0x15,0x02,
-0x80,0x40,0x01,0x02,0x00,0x80,0xa0,0x00,0x40,0x00,0x97,0x02,0x00,0x40,0x01,0x01,
-0x80,0x40,0xa0,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,0x01,0x80,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x3d,0x3d,0x3d,0x00,0x00,0x04,0x70,
-0x75,0x73,0x68,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x33,0x00,
-0x04,0x00,0x06,0x00,0x00,0x00,0x06,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x08,0x02,
-0x00,0x00,0x06,0x02,0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x01,0x80,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,
-0x00,0x45,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x26,0x01,0x80,
-0x40,0x01,0x02,0x00,0x40,0x15,0x01,0x80,0x00,0xb2,0x01,0xc0,0x02,0x19,0x01,0x80,
-0x00,0x07,0x01,0x80,0xc0,0x16,0x01,0x80,0x40,0x29,0x00,0x40,0x00,0x97,0x01,0x80,
-0x00,0x05,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,
-0x3d,0x3d,0x00,0x00,0x00,0x01,0x12,0x00,0x06,0x00,0x09,0x00,0x00,0x00,0x27,0x00,
-0x08,0x00,0xa6,0x03,0x00,0x40,0x01,0x03,0x00,0x00,0x20,0x03,0xc0,0x00,0x83,0x03,
-0x00,0x40,0xb5,0x03,0x40,0x02,0x19,0x03,0x00,0x00,0x06,0x03,0x80,0x01,0x91,0x04,
-0x00,0x00,0x3d,0x03,0x00,0x81,0x20,0x03,0x00,0x02,0x11,0x03,0x80,0x40,0x01,0x04,
-0x3f,0xff,0x03,0x03,0x81,0x80,0xa0,0x03,0x01,0x40,0xa0,0x03,0x40,0x04,0x19,0x03,
-0x00,0x40,0x01,0x03,0xbf,0xff,0x03,0x03,0x01,0x80,0xa0,0x01,0x81,0x80,0x01,0x03,
-0x00,0x03,0xc0,0x01,0x01,0x80,0x01,0x03,0x00,0x40,0x01,0x03,0x01,0xc0,0x20,0x03,
-0x00,0x40,0x01,0x03,0x02,0x00,0x20,0x03,0x40,0x01,0x99,0x02,0x00,0x00,0x07,0x02,
-0x80,0x00,0x05,0x00,0x40,0x02,0x97,0x02,0x00,0x00,0x08,0x03,0x00,0x40,0x01,0x03,
-0xbf,0xff,0x83,0x03,0x01,0x80,0xa0,0x02,0x81,0x80,0x01,0x03,0x00,0x00,0x06,0x03,
-0x80,0x05,0x40,0x03,0x02,0x40,0x21,0x02,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,
-0x00,0x12,0x74,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,
-0x65,0x6e,0x74,0x73,0x00,0x00,0x00,0x0a,0x00,0x04,0x73,0x69,0x7a,0x65,0x00,0x00,
-0x01,0x3e,0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x0d,0x41,0x72,0x67,
-0x75,0x6d,0x65,0x6e,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x06,0x53,0x79,0x6d,
-0x62,0x6f,0x6c,0x00,0x00,0x03,0x3d,0x3d,0x3d,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,
-0x03,0x70,0x6f,0x70,0x00,0x00,0x06,0x65,0x6d,0x70,0x74,0x79,0x3f,0x00,0x00,0x04,
-0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x33,0x00,0x04,0x00,0x07,0x00,0x00,0x00,
-0x06,0x04,0x00,0x00,0x26,0x02,0x00,0x40,0x01,0x02,0x80,0xc0,0x15,0x03,0x00,0x80,
-0x01,0x02,0x00,0x01,0x20,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x01,0x00,0x04,0x73,0x65,0x6e,0x64,0x00,0x00,0x00,0x00,0x53,0x00,0x03,0x00,0x06,
-0x00,0x00,0x00,0x0e,0x02,0x00,0x00,0x26,0x01,0x81,0x00,0x15,0x01,0xc0,0x02,0x99,
-0x01,0x80,0x00,0x08,0x01,0x81,0x00,0x16,0x01,0x80,0x40,0x01,0x01,0x81,0x40,0x16,
-0x00,0x40,0x02,0x97,0x01,0x80,0x80,0x15,0x02,0x01,0x40,0x15,0x02,0x80,0x40,0x01,
-0x01,0x80,0x01,0x20,0x01,0x81,0x40,0x16,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x37,0x00,
-0x04,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x07,0x01,
-0x80,0x00,0x05,0x02,0x00,0x00,0x06,0x02,0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x01,
-0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,
-0x68,0x00,0x00,0x00,0x00,0xa5,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x20,0x02,0x00,
-0x00,0x26,0x01,0x80,0x80,0x15,0x01,0xc0,0x02,0x19,0x00,0x80,0xc0,0x16,0x01,0x80,
-0x00,0x08,0x01,0x80,0x80,0x16,0x00,0x40,0x0c,0x17,0x01,0x80,0x40,0x15,0x01,0xc0,
-0x06,0x19,0x01,0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x02,0x80,0xc0,0x15,0x01,0x80,
-0x01,0x20,0x02,0x3f,0xff,0x83,0x01,0x80,0x40,0xb5,0x01,0xc0,0x01,0x99,0x01,0x80,
-0x40,0x01,0x01,0x80,0xc0,0x16,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,0x00,0x40,
-0x05,0x17,0x01,0x80,0x40,0x01,0x02,0x00,0xc0,0x15,0x01,0x80,0x80,0xa0,0x02,0x3f,
-0xff,0x83,0x01,0x80,0x40,0xb5,0x01,0xc0,0x01,0x99,0x01,0x80,0x40,0x01,0x01,0x80,
-0xc0,0x16,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,0x01,0x80,0x00,0x29,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x3e,
-0x00,0x00,0x03,0x3c,0x3d,0x3e,0x00,0x00,0x00,0x00,0x37,0x00,0x04,0x00,0x06,0x00,
-0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x07,0x01,0x80,0x00,0x05,0x02,
-0x00,0x00,0x06,0x02,0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x01,0x80,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,
-0x00,0xa5,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x26,0x01,0x80,
-0x80,0x15,0x01,0xc0,0x02,0x19,0x00,0x80,0xc0,0x16,0x01,0x80,0x00,0x08,0x01,0x80,
-0x80,0x16,0x00,0x40,0x0c,0x17,0x01,0x80,0x40,0x15,0x01,0xc0,0x06,0x19,0x01,0x80,
-0x40,0x15,0x02,0x00,0x40,0x01,0x02,0x80,0xc0,0x15,0x01,0x80,0x01,0x20,0x02,0x3f,
-0xff,0x83,0x01,0x80,0x40,0xb3,0x01,0xc0,0x01,0x99,0x01,0x80,0x40,0x01,0x01,0x80,
-0xc0,0x16,0x00,0x40,0x00,0x97,0x01,0x80,0x00,0x05,0x00,0x40,0x05,0x17,0x01,0x80,
-0x40,0x01,0x02,0x00,0xc0,0x15,0x01,0x80,0x80,0xa0,0x02,0x3f,0xff,0x83,0x01,0x80,
-0x40,0xb3,0x01,0xc0,0x01,0x99,0x01,0x80,0x40,0x01,0x01,0x80,0xc0,0x16,0x00,0x40,
-0x00,0x97,0x01,0x80,0x00,0x05,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x03,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x3c,0x00,0x00,0x03,0x3c,
-0x3d,0x3e,0x00,0x00,0x00,0x00,0x43,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x0a,0x00,
-0x00,0x00,0xa6,0x01,0x01,0x00,0x37,0x01,0x81,0x00,0x37,0x02,0x00,0x00,0x06,0x02,
-0x80,0x03,0x40,0x02,0x00,0x00,0x21,0x02,0x00,0x80,0x01,0x02,0x80,0xc0,0x01,0x02,
-0x01,0x01,0x37,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
-0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x56,0x00,0x03,0x00,0x05,0x00,0x00,
-0x00,0x0d,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,
-0x00,0xa0,0x01,0xc0,0x02,0x19,0x01,0x80,0x80,0x15,0x02,0x00,0x40,0x01,0x01,0x80,
-0x40,0xa0,0x00,0x40,0x01,0x97,0x01,0x80,0xc0,0x15,0x02,0x00,0x40,0x01,0x01,0x80,
-0x40,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x00,0x00,0x33,
-0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0xa6,0x01,0x00,0xc0,0x37,
-0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,
-0x00,0x00,0x4e,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x26,0x01,
-0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0xc0,0x01,0x19,0x01,
-0x80,0x00,0x05,0x00,0x40,0x01,0x97,0x01,0x80,0x80,0x15,0x02,0x00,0x40,0x01,0x01,
-0x80,0x40,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
-0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x00,0x01,
-0x9a,0x00,0x0c,0x00,0x13,0x00,0x00,0x00,0x53,0x0a,0x00,0x00,0xa6,0x06,0x01,0x00,
-0x01,0x06,0x81,0x40,0x01,0x06,0x00,0x00,0xb2,0x06,0x40,0x06,0x99,0x06,0x00,0xc0,
-0x01,0x06,0xc0,0x00,0x03,0x06,0x00,0x00,0xb2,0x06,0x40,0x03,0x99,0x06,0x00,0x80,
-0x01,0x06,0x81,0x00,0x01,0x06,0x00,0x40,0xa0,0x06,0x80,0x40,0x01,0x07,0x01,0x00,
-0x01,0x07,0x83,0x00,0x01,0x06,0x80,0x81,0x20,0x06,0x00,0x00,0x05,0x06,0x00,0x00,
-0x29,0x06,0x00,0xc0,0x01,0x06,0xbf,0xff,0x83,0x06,0x00,0x00,0xb2,0x06,0x40,0x02,
-0x99,0x06,0x00,0x40,0x01,0x06,0x80,0x80,0x01,0x03,0x83,0x00,0x01,0x04,0x03,0x40,
-0x01,0x00,0x40,0x02,0x17,0x06,0x00,0x80,0x01,0x06,0x80,0x40,0x01,0x03,0x83,0x00,
-0x01,0x04,0x03,0x40,0x01,0x06,0x01,0xc0,0x01,0x06,0x81,0x00,0x01,0x06,0x00,0x40,
-0xa0,0x04,0x83,0x00,0x01,0x06,0x01,0x00,0x01,0x06,0x81,0x40,0x01,0x05,0x03,0x00,
-0x01,0x05,0x83,0x40,0x01,0x06,0x01,0x00,0x01,0x06,0x00,0xc0,0xad,0x06,0x81,0x40,
-0x01,0x07,0x00,0x03,0x40,0x06,0x01,0x00,0xa1,0x06,0x02,0x40,0x01,0x06,0x80,0x40,
-0x01,0x07,0x02,0x80,0x01,0x07,0x83,0x00,0x01,0x06,0x80,0x81,0x20,0x06,0x00,0xc0,
-0x01,0x06,0x00,0xc0,0xad,0x06,0xc0,0x00,0x83,0x06,0x01,0x40,0xa0,0x01,0x83,0x00,
-0x01,0x06,0x02,0x80,0x01,0x06,0x81,0x00,0x01,0x06,0x01,0x80,0xb5,0x06,0x40,0x04,
-0x99,0x06,0x00,0x00,0x06,0x06,0x80,0x40,0x01,0x07,0x00,0x80,0x01,0x07,0x80,0xc0,
-0x01,0x08,0x01,0x00,0x01,0x08,0x82,0x80,0x01,0x08,0x82,0x00,0xaf,0x09,0x01,0x80,
-0x01,0x06,0x01,0xc2,0xa1,0x06,0x02,0x80,0x01,0x06,0x81,0x40,0x01,0x06,0x02,0x40,
-0xb3,0x06,0x40,0x05,0x19,0x06,0x00,0x00,0x06,0x06,0x80,0x40,0x01,0x07,0x00,0x80,
-0x01,0x07,0x80,0xc0,0x01,0x08,0x02,0x80,0x01,0x08,0x00,0xc0,0xad,0x08,0x81,0x40,
-0x01,0x09,0x01,0x80,0x01,0x06,0x01,0xc2,0xa1,0x00,0x40,0x00,0x97,0x06,0x00,0x00,
-0x05,0x06,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x02,0x3d,
-0x3d,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,0x01,0x2b,
-0x00,0x00,0x04,0x75,0x70,0x74,0x6f,0x00,0x00,0x01,0x25,0x00,0x00,0x01,0x3e,0x00,
-0x00,0x0c,0x5f,0x5f,0x73,0x6f,0x72,0x74,0x5f,0x73,0x75,0x62,0x5f,0x5f,0x00,0x00,
-0x01,0x2d,0x00,0x00,0x01,0x3c,0x00,0x00,0x00,0x00,0xd8,0x00,0x03,0x00,0x07,0x00,
-0x00,0x00,0x28,0x02,0x00,0x00,0x26,0x01,0x81,0x80,0x15,0x01,0xc0,0x03,0x99,0x01,
-0x81,0x80,0x15,0x02,0x01,0xc0,0x15,0x02,0x80,0x40,0x01,0x02,0x00,0x40,0xa0,0x02,
-0x82,0x40,0x15,0x01,0x80,0x01,0x20,0x00,0x40,0x02,0x97,0x01,0x81,0xc0,0x15,0x02,
-0x00,0x40,0x01,0x01,0x80,0x40,0xa0,0x02,0x02,0x40,0x15,0x01,0x80,0x80,0xa0,0x02,
-0x3f,0xff,0x83,0x01,0x80,0xc0,0xb5,0x01,0xc0,0x05,0x99,0x01,0x81,0xc0,0x15,0x02,
-0x00,0x40,0x01,0x01,0x80,0x40,0xa0,0x02,0x02,0x00,0x15,0x02,0x82,0xc0,0x15,0x03,
-0x00,0xc0,0x01,0x02,0x01,0x01,0x20,0x01,0x82,0xc0,0x15,0x01,0x81,0x40,0xaf,0x01,
-0x82,0xc0,0x16,0x00,0x40,0x05,0x17,0x01,0x81,0xc0,0x15,0x02,0x00,0x40,0x01,0x01,
-0x80,0x40,0xa0,0x02,0x02,0x00,0x15,0x02,0x82,0x80,0x15,0x03,0x00,0xc0,0x01,0x02,
-0x01,0x01,0x20,0x01,0x82,0x80,0x15,0x01,0x81,0x80,0xad,0x01,0x82,0x80,0x16,0x01,
-0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x04,0x63,0x61,0x6c,
-0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x3c,0x3d,0x3e,0x00,0x00,0x01,0x3e,
-0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,0x01,0x2d,0x00,0x00,0x01,0x2b,0x00,0x00,
-0x00,0x00,0xac,0x00,0x03,0x00,0x0a,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xa6,0x01,
-0x00,0xc0,0x37,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,0x21,0x01,
-0x80,0x80,0x01,0x01,0x80,0x40,0x20,0x01,0xc0,0x00,0x99,0x00,0x40,0x07,0x17,0x01,
-0x80,0x00,0x06,0x02,0x00,0x80,0x01,0x02,0x80,0x00,0x42,0x02,0x80,0x01,0x93,0x03,
-0x00,0x80,0x01,0x03,0x01,0x40,0x20,0x02,0x81,0x00,0xa0,0x03,0x3f,0xff,0x83,0x03,
-0xbf,0xff,0x83,0x04,0x00,0x80,0x01,0x04,0x01,0x40,0x20,0x04,0x01,0x80,0xaf,0x04,
-0x80,0x40,0x01,0x01,0x80,0x82,0xa1,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x07,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x06,0x65,0x6d,0x70,0x74,
-0x79,0x3f,0x00,0x00,0x0c,0x5f,0x5f,0x73,0x6f,0x72,0x74,0x5f,0x73,0x75,0x62,0x5f,
-0x5f,0x00,0x00,0x05,0x41,0x72,0x72,0x61,0x79,0x00,0x00,0x03,0x6e,0x65,0x77,0x00,
-0x00,0x04,0x73,0x69,0x7a,0x65,0x00,0x00,0x01,0x2d,0x00,0x00,0x00,0x00,0x2f,0x00,
-0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x80,0x15,0x02,
-0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x01,0x00,0x04,0x70,0x75,0x73,0x68,0x00,0x00,0x00,0x00,0x38,0x00,0x01,
-0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x80,0x00,0x06,0x00,0x80,0x40,0x47,0x01,0x00,
-0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x04,0x01,0x00,0x00,0x29,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x09,0x65,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,
-0x6e,0x00,0x00,0x00,0x00,0x3a,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x08,
-0x00,0xa6,0x01,0x80,0x00,0x06,0x02,0x01,0x00,0x37,0x02,0x80,0x40,0x01,0x02,0x01,
-0x40,0x38,0x02,0x80,0x80,0x01,0x01,0x80,0x3f,0xa1,0x01,0x80,0x00,0x29,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x6e,0x65,0x77,0x00,0x00,0x00,0x00,0x1c,
-0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,
-0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,
-0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,
-0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,
-0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,
-0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6a,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x0b,
-0x00,0x80,0x00,0x06,0x01,0x00,0x00,0x84,0x00,0x80,0x00,0xa0,0x00,0x80,0x00,0x48,
-0x01,0x00,0x02,0xc0,0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x04,0xc0,
-0x00,0x80,0xc0,0x46,0x00,0x80,0x01,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x04,0x00,0x0d,0x61,0x74,0x74,0x72,0x5f,0x61,0x63,0x63,0x65,0x73,
-0x73,0x6f,0x72,0x00,0x00,0x04,0x6e,0x61,0x6d,0x65,0x00,0x00,0x03,0x6e,0x65,0x77,
-0x00,0x00,0x0a,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x00,0x00,0x00,
-0x00,0x59,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x0b,0x00,0x20,0x00,0x26,0x00,0x40,
-0x01,0x17,0x00,0x40,0x01,0x17,0x00,0x40,0x01,0x17,0x00,0x80,0x00,0x3d,0x01,0x00,
-0x00,0x05,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,0x03,0x00,0x80,0x01,0x02,0x00,
-0x01,0x20,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x09,0x4e,0x61,0x6d,
-0x65,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x00,0x01,0x00,0x0a,0x69,0x6e,0x69,0x74,
-0x69,0x61,0x6c,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x48,0x00,0x04,0x00,0x06,0x00,
-0x00,0x00,0x0b,0x00,0x20,0x00,0x26,0x00,0x40,0x01,0x17,0x00,0x40,0x01,0x17,0x00,
-0x40,0x01,0x17,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x05,0x01,0x00,0x00,0x0e,0x02,
-0x80,0x40,0x01,0x03,0x00,0x00,0x05,0x02,0x00,0x00,0xa4,0x02,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0x40,0x6e,0x61,0x6d,0x65,0x00,0x00,
-0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,
-0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,
-0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,
-0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,
-0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0xf7,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x80,0x00,0x48,0x01,
-0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x04,0xc0,0x00,
-0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,0x00,0x80,0x80,0x46,0x00,
-0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,0x00,0x80,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,
-0x00,0x10,0xc0,0x00,0x81,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x12,0xc0,0x00,
-0x81,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x1a,0xc0,0x00,0x81,0x80,0x46,0x00,
-0x80,0x00,0x48,0x01,0x00,0x20,0xc0,0x00,0x81,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,
-0x00,0x24,0xc0,0x00,0x82,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x2a,0xc0,0x00,
-0x82,0x40,0x46,0x00,0x80,0x04,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x0a,0x00,0x06,0x64,0x65,0x6c,0x65,0x74,0x65,0x00,0x00,0x04,0x65,0x61,
-0x63,0x68,0x00,0x00,0x08,0x65,0x61,0x63,0x68,0x5f,0x6b,0x65,0x79,0x00,0x00,0x0a,
-0x65,0x61,0x63,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x00,0x00,0x0a,0x69,0x6e,0x69,
-0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x00,0x00,0x05,0x6d,0x65,0x72,0x67,0x65,0x00,
-0x00,0x07,0x72,0x65,0x6a,0x65,0x63,0x74,0x21,0x00,0x00,0x06,0x72,0x65,0x6a,0x65,
-0x63,0x74,0x00,0x00,0x07,0x73,0x65,0x6c,0x65,0x63,0x74,0x21,0x00,0x00,0x06,0x73,
-0x65,0x6c,0x65,0x63,0x74,0x00,0x00,0x00,0x00,0x75,0x00,0x03,0x00,0x05,0x00,0x00,
-0x00,0x10,0x02,0x00,0x00,0xa6,0x01,0x80,0x80,0x01,0x01,0xc0,0x02,0x19,0x01,0x80,
-0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x40,0x20,0x01,0xc0,
-0x02,0x19,0x01,0x80,0x80,0x01,0x02,0x00,0x40,0x01,0x01,0x80,0x80,0xa0,0x00,0x40,
-0x01,0x97,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0xc0,0xa0,0x01,0x80,
-0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x68,0x61,0x73,0x5f,
-0x6b,0x65,0x79,0x3f,0x00,0x00,0x01,0x21,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,
-0x00,0x08,0x5f,0x5f,0x64,0x65,0x6c,0x65,0x74,0x65,0x00,0x00,0x00,0x00,0x3e,0x00,
-0x02,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x06,0x01,
-0x00,0x00,0x20,0x01,0x80,0x03,0x40,0x01,0x00,0x40,0x21,0x01,0x00,0x00,0x06,0x01,
-0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x6b,0x65,0x79,
-0x73,0x00,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x44,0x00,0x03,0x00,
-0x07,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,0x00,0x40,
-0x01,0x02,0x80,0x00,0x06,0x03,0x00,0x40,0x01,0x02,0x80,0x40,0xa0,0x02,0x01,0x01,
-0x37,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x02,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x00,0x00,
-0x3e,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,
-0x06,0x01,0x00,0x00,0x20,0x01,0x80,0x03,0x40,0x01,0x00,0x40,0x21,0x01,0x00,0x00,
-0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x6b,
-0x65,0x79,0x73,0x00,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x2f,0x00,
-0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,
-0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x3e,0x00,0x02,
-0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xa6,0x01,0x00,0x00,0x06,0x01,0x00,
-0x00,0x20,0x01,0x80,0x03,0x40,0x01,0x00,0x40,0x21,0x01,0x00,0x00,0x06,0x01,0x00,
-0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x6b,0x65,0x79,0x73,
-0x00,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x3c,0x00,0x03,0x00,0x06,
-0x00,0x00,0x00,0x07,0x02,0x00,0x00,0x26,0x01,0x80,0x40,0x15,0x02,0x00,0x00,0x06,
-0x02,0x80,0x40,0x01,0x02,0x00,0x40,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,
-0x02,0x5b,0x5d,0x00,0x00,0x00,0x00,0x42,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x08,
-0x00,0x08,0x00,0xa6,0x01,0x80,0x00,0x06,0x02,0x00,0x80,0x01,0x02,0x01,0x00,0xb7,
-0x02,0x80,0x40,0x01,0x02,0x01,0x40,0x38,0x01,0x80,0x3f,0xa0,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0b,0x5f,0x5f,0x69,0x6e,0x69,0x74,
-0x5f,0x63,0x6f,0x72,0x65,0x00,0x00,0x00,0x00,0xca,0x00,0x04,0x00,0x06,0x00,0x00,
-0x00,0x1a,0x02,0x00,0x00,0xa6,0x01,0x81,0x00,0x3f,0x02,0x00,0x40,0x01,0x02,0x80,
-0x00,0x84,0x02,0x00,0x00,0xa0,0x02,0x40,0x00,0x99,0x00,0x40,0x01,0x97,0x02,0x00,
-0x00,0x06,0x02,0x80,0x00,0x3d,0x02,0x00,0x80,0xa0,0x02,0x00,0x40,0x01,0x02,0x00,
-0x40,0x20,0x00,0x81,0x00,0x01,0x02,0x00,0x00,0x06,0x02,0x80,0x03,0x40,0x02,0x00,
-0xc0,0x21,0x02,0x00,0x80,0x01,0x02,0x40,0x02,0x19,0x02,0x00,0x40,0x01,0x02,0x80,
-0x05,0x40,0x02,0x00,0xc0,0x21,0x00,0x40,0x01,0x97,0x02,0x00,0x40,0x01,0x02,0x80,
-0x07,0x40,0x02,0x00,0xc0,0x21,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,
-0x20,0x63,0x61,0x6e,0x27,0x74,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x61,
-0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x20,0x69,0x6e,0x74,0x6f,0x20,0x48,0x61,0x73,
-0x68,0x00,0x00,0x00,0x04,0x00,0x0b,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x5f,0x74,
-0x6f,0x3f,0x00,0x00,0x07,0x74,0x6f,0x5f,0x68,0x61,0x73,0x68,0x00,0x00,0x05,0x72,
-0x61,0x69,0x73,0x65,0x00,0x00,0x08,0x65,0x61,0x63,0x68,0x5f,0x6b,0x65,0x79,0x00,
-0x00,0x00,0x00,0x43,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x26,
-0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x02,0x00,0xc0,0x15,
-0x02,0x80,0x40,0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x5b,
-0x5d,0x3d,0x00,0x00,0x00,0x00,0x8d,0x00,0x03,0x00,0x08,0x00,0x00,0x00,0x17,0x02,
-0x00,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,
-0xc0,0x05,0x19,0x01,0x80,0x80,0x15,0x02,0x00,0x40,0x01,0x02,0x80,0x00,0x06,0x03,
-0x00,0x40,0x01,0x02,0x80,0x80,0xa0,0x03,0x00,0x40,0x15,0x03,0x80,0x40,0x01,0x03,
-0x00,0x80,0xa0,0x01,0x80,0x41,0xa0,0x00,0x40,0x01,0x97,0x01,0x80,0x40,0x15,0x02,
-0x00,0x40,0x01,0x01,0x80,0x80,0xa0,0x02,0x00,0xc0,0x15,0x02,0x80,0x40,0x01,0x03,
-0x00,0xc0,0x01,0x02,0x00,0xc1,0x20,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x04,0x00,0x08,0x68,0x61,0x73,0x5f,0x6b,0x65,0x79,0x3f,0x00,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,
-0x00,0x00,0x00,0x43,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x26,
-0x01,0x80,0x40,0x15,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x02,0x00,0xc0,0x15,
-0x02,0x80,0x40,0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x5b,0x5d,0x00,0x00,0x03,0x5b,
-0x5d,0x3d,0x00,0x00,0x00,0x00,0x76,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x11,0x00,
-0x00,0x00,0xa6,0x01,0x00,0xc0,0x37,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,
-0x80,0x00,0x21,0x01,0x80,0x80,0x01,0x01,0x80,0x40,0x20,0x02,0x3f,0xff,0x83,0x01,
-0x80,0x80,0xb2,0x01,0xc0,0x01,0x19,0x01,0x80,0x00,0x05,0x01,0x80,0x00,0x29,0x01,
-0x80,0x80,0x01,0x02,0x00,0x05,0x40,0x01,0x80,0xc0,0x21,0x01,0x80,0x00,0x06,0x01,
-0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x65,0x61,0x63,
-0x68,0x5f,0x6b,0x65,0x79,0x00,0x00,0x04,0x73,0x69,0x7a,0x65,0x00,0x00,0x02,0x3d,
-0x3d,0x00,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x67,0x00,0x04,0x00,
-0x07,0x00,0x00,0x00,0x10,0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,
-0x01,0x02,0x00,0x00,0xa0,0x01,0x81,0x00,0x01,0x02,0x00,0x40,0x15,0x02,0x80,0x40,
-0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x02,0x40,0x02,0x19,0x02,0x00,0x80,
-0x15,0x02,0x80,0x40,0x01,0x02,0x00,0x80,0xa0,0x00,0x40,0x00,0x97,0x02,0x00,0x00,
-0x05,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x02,0x5b,
-0x5d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x04,0x70,0x75,0x73,0x68,0x00,
-0x00,0x00,0x00,0x31,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,
-0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x64,0x65,0x6c,0x65,0x74,0x65,
-0x00,0x00,0x00,0x00,0x37,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
-0xa6,0x01,0x00,0xc0,0x3f,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,0x01,0x80,0x00,
-0x21,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x65,
-0x61,0x63,0x68,0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x6e,0x00,0x04,0x00,0x08,
-0x00,0x00,0x00,0x12,0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,0x80,0x40,0x01,
-0x02,0x00,0x00,0xa0,0x01,0x81,0x00,0x01,0x02,0x00,0x40,0x15,0x02,0x80,0x40,0x01,
-0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x05,
-0x00,0x40,0x02,0x97,0x02,0x00,0xc0,0x01,0x02,0x80,0x80,0x15,0x03,0x00,0x40,0x01,
-0x03,0x81,0x00,0x01,0x02,0x80,0x81,0x20,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x03,0x00,0x02,0x5b,0x5d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,
-0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,0x00,0x00,0x76,0x00,0x03,0x00,0x05,0x00,0x00,
-0x00,0x11,0x00,0x00,0x00,0xa6,0x01,0x00,0xc0,0x37,0x01,0x80,0x00,0x06,0x02,0x00,
-0x03,0x40,0x01,0x80,0x00,0x21,0x01,0x80,0x80,0x01,0x01,0x80,0x40,0x20,0x02,0x3f,
-0xff,0x83,0x01,0x80,0x80,0xb2,0x01,0xc0,0x01,0x19,0x01,0x80,0x00,0x05,0x01,0x80,
-0x00,0x29,0x01,0x80,0x80,0x01,0x02,0x00,0x05,0x40,0x01,0x80,0xc0,0x21,0x01,0x80,
-0x00,0x06,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,
-0x65,0x61,0x63,0x68,0x5f,0x6b,0x65,0x79,0x00,0x00,0x04,0x73,0x69,0x7a,0x65,0x00,
-0x00,0x02,0x3d,0x3d,0x00,0x00,0x04,0x65,0x61,0x63,0x68,0x00,0x00,0x00,0x00,0x67,
-0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x10,0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,
-0x02,0x80,0x40,0x01,0x02,0x00,0x00,0xa0,0x01,0x81,0x00,0x01,0x02,0x00,0x40,0x15,
-0x02,0x80,0x40,0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x02,0x40,0x01,0x19,
-0x02,0x00,0x00,0x05,0x00,0x40,0x01,0x97,0x02,0x00,0x80,0x15,0x02,0x80,0x40,0x01,
-0x02,0x00,0x80,0xa0,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
-0x00,0x02,0x5b,0x5d,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x04,0x70,0x75,
-0x73,0x68,0x00,0x00,0x00,0x00,0x31,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,
-0x00,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x01,0x80,0x00,0xa0,0x01,
-0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x64,0x65,0x6c,
-0x65,0x74,0x65,0x00,0x00,0x00,0x00,0x37,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x06,
-0x00,0x00,0x00,0xa6,0x01,0x00,0xc0,0x3f,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x40,
-0x01,0x80,0x00,0x21,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x00,0x08,0x65,0x61,0x63,0x68,0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x6e,0x00,
-0x04,0x00,0x08,0x00,0x00,0x00,0x12,0x02,0x00,0x00,0x26,0x02,0x00,0x00,0x06,0x02,
-0x80,0x40,0x01,0x02,0x00,0x00,0xa0,0x01,0x81,0x00,0x01,0x02,0x00,0x40,0x15,0x02,
-0x80,0x40,0x01,0x03,0x00,0xc0,0x01,0x02,0x00,0x41,0x20,0x02,0x40,0x03,0x19,0x02,
-0x00,0xc0,0x01,0x02,0x80,0x80,0x15,0x03,0x00,0x40,0x01,0x03,0x81,0x00,0x01,0x02,
-0x80,0x81,0x20,0x00,0x40,0x00,0x97,0x02,0x00,0x00,0x05,0x02,0x00,0x00,0x29,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x02,0x5b,0x5d,0x00,0x00,0x04,0x63,0x61,
-0x6c,0x6c,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,
-0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x00,0x01,0x00,0x03,0x00,0x00,0x00,
-0x04,0x00,0x80,0x00,0x06,0x01,0x00,0x00,0x91,0x00,0x80,0x00,0xa0,0x01,0x00,0x00,
-0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0x69,0x6e,0x63,0x6c,0x75,
-0x64,0x65,0x00,0x00,0x0a,0x45,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x00,
-0x00,0x00,0x00,0x82,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x17,0x00,0x80,0x00,0x06,
-0x00,0x80,0x40,0x47,0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x04,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x06,0x00,0x80,0x40,0x47,
-0x01,0x00,0x06,0xc0,0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x06,0x00,0x80,0x40,0x47,
-0x01,0x00,0x08,0xc0,0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0a,0xc0,
-0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,0x00,0x80,0x40,0x46,
-0x00,0x80,0x00,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
-0x00,0x01,0x60,0x00,0x00,0x04,0x6c,0x6f,0x6f,0x70,0x00,0x00,0x04,0x65,0x76,0x61,
-0x6c,0x00,0x00,0x00,0x00,0x68,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x07,0x02,0x00,
-0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0x00,0x91,0x02,0x80,0x00,0x3d,0x02,0x00,
-0x80,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,
-0x11,0x60,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
-0x65,0x64,0x00,0x00,0x00,0x03,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x13,
-0x4e,0x6f,0x74,0x49,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x45,0x72,
-0x72,0x6f,0x72,0x00,0x00,0x03,0x6e,0x65,0x77,0x00,0x00,0x00,0x00,0x35,0x00,0x03,
-0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x11,0x02,0x00,
-0x40,0x01,0x01,0x80,0x40,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x02,0x00,0x06,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x00,0x00,0x01,0x60,0x00,0x00,
-0x00,0x00,0x3b,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x26,0x00,
-0x40,0x01,0x17,0x01,0x00,0x00,0x2b,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x07,0x01,
-0x3f,0xfe,0x18,0x01,0x00,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0x6b,0x00,0x03,
-0x00,0x06,0x00,0x00,0x00,0x07,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,
-0x00,0x91,0x02,0x80,0x00,0x3d,0x02,0x00,0x80,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,
-0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x14,0x65,0x76,0x61,0x6c,0x20,0x6e,0x6f,
-0x74,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x00,0x00,0x00,
-0x03,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x13,0x4e,0x6f,0x74,0x49,0x6d,
-0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,
-0x03,0x6e,0x65,0x77,0x00,0x00,0x00,0x00,0x38,0x00,0x03,0x00,0x05,0x00,0x00,0x00,
-0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x00,0x11,0x02,0x00,0x40,0x01,0x01,0x80,0x40,
-0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x4b,
-0x65,0x72,0x6e,0x65,0x6c,0x00,0x00,0x04,0x65,0x76,0x61,0x6c,0x00,0x00,0x00,0x00,
-0x3b,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x26,0x00,0x40,0x01,
-0x17,0x01,0x00,0x00,0x2b,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x07,0x01,0x3f,0xfe,
-0x18,0x01,0x00,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x01,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00,0xbd,0x00,0x01,0x00,0x02,
-0x00,0x00,0x00,0x1a,0x00,0x80,0x00,0x48,0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x04,0xc0,0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x06,0xc0,0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,
-0x00,0x80,0xc0,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0a,0xc0,0x00,0x81,0x00,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,0x00,0x81,0x40,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x0e,0xc0,0x00,0x81,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x10,0xc0,
-0x00,0x81,0xc0,0x46,0x00,0x80,0x03,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x08,0x00,0x04,0x63,0x65,0x69,0x6c,0x00,0x00,0x06,0x64,0x6f,0x77,
-0x6e,0x74,0x6f,0x00,0x00,0x05,0x66,0x6c,0x6f,0x6f,0x72,0x00,0x00,0x05,0x74,0x69,
-0x6d,0x65,0x73,0x00,0x00,0x05,0x72,0x6f,0x75,0x6e,0x64,0x00,0x00,0x08,0x74,0x72,
-0x75,0x6e,0x63,0x61,0x74,0x65,0x00,0x00,0x04,0x75,0x70,0x74,0x6f,0x00,0x00,0x04,
-0x73,0x74,0x65,0x70,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x00,0x03,0x00,0x00,0x00,
-0x03,0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x04,0x00,0x06,0x00,0x00,0x00,
-0x0f,0x02,0x00,0x00,0xa6,0x01,0x80,0x00,0x06,0x00,0x40,0x03,0x17,0x02,0x00,0x80,
-0x01,0x02,0x80,0xc0,0x01,0x02,0x00,0x00,0xa0,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,
-0xaf,0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x80,0x40,0x01,0x02,0x00,0x80,
-0xb6,0x02,0x3f,0xfb,0x18,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2d,0x00,
-0x00,0x02,0x3e,0x3d,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x00,0x03,0x00,0x00,0x00,
-0x03,0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x03,0x00,0x05,0x00,0x00,0x00,
-0x0f,0x00,0x00,0x00,0xa6,0x01,0x3f,0xff,0x83,0x00,0x40,0x03,0x17,0x01,0x80,0x40,
-0x01,0x02,0x00,0x80,0x01,0x01,0x80,0x00,0xa0,0x01,0x80,0x80,0x01,0x01,0x80,0x40,
-0xad,0x01,0x00,0xc0,0x01,0x01,0x80,0x80,0x01,0x02,0x00,0x00,0x06,0x01,0x80,0x80,
-0xb3,0x01,0xbf,0xfb,0x18,0x01,0x80,0x00,0x06,0x01,0x80,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,
-0x00,0x01,0x3c,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x03,
-0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x03,
-0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x06,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x0f,
-0x02,0x00,0x00,0xa6,0x01,0x80,0x00,0x06,0x00,0x40,0x03,0x17,0x02,0x00,0x80,0x01,
-0x02,0x80,0xc0,0x01,0x02,0x00,0x00,0xa0,0x02,0x00,0xc0,0x01,0x02,0x00,0x40,0xad,
-0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x80,0x40,0x01,0x02,0x00,0x80,0xb4,
-0x02,0x3f,0xfb,0x18,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x03,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,0x00,
-0x02,0x3c,0x3d,0x00,0x00,0x00,0x00,0xaa,0x00,0x05,0x00,0x07,0x00,0x00,0x00,0x1b,
-0x02,0x10,0x00,0xa6,0x00,0x40,0x00,0x97,0x00,0x40,0x00,0x97,0x01,0x40,0x00,0x03,
-0x02,0x80,0x40,0x01,0x03,0x00,0x00,0x91,0x02,0x80,0x00,0xa0,0x02,0xc0,0x01,0x99,
-0x02,0x80,0x00,0x06,0x02,0x80,0x80,0x20,0x00,0x40,0x00,0x97,0x02,0x80,0x00,0x06,
-0x02,0x01,0x40,0x01,0x00,0x40,0x03,0x97,0x02,0x80,0xc0,0x01,0x03,0x01,0x00,0x01,
-0x02,0x80,0xc0,0xa0,0x02,0x81,0x00,0x01,0x03,0x00,0x80,0x01,0x02,0x81,0x00,0xac,
-0x02,0x01,0x40,0x01,0x02,0x81,0x00,0x01,0x03,0x00,0x40,0x01,0x02,0x81,0x40,0xb4,
-0x02,0xbf,0xfa,0x98,0x02,0x80,0x00,0x06,0x02,0x80,0x00,0x29,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x06,0x00,0x08,0x6b,0x69,0x6e,0x64,0x5f,0x6f,0x66,0x3f,0x00,0x00,
-0x05,0x46,0x6c,0x6f,0x61,0x74,0x00,0x00,0x04,0x74,0x6f,0x5f,0x66,0x00,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x2b,0x00,0x00,0x02,0x3c,0x3d,0x00,0x00,0x00,
-0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x00,0x01,
-0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x80,0x00,0x06,0x01,0x00,0x00,0x91,0x00,0x80,
-0x00,0xa0,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,
-0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x00,0x00,0x0a,0x43,0x6f,0x6d,0x70,0x61,0x72,
-0x61,0x62,0x6c,0x65,0x00,0x00,0x00,0x00,0x68,0x00,0x01,0x00,0x02,0x00,0x00,0x00,
-0x0e,0x00,0x80,0x00,0x48,0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,
-0x48,0x01,0x00,0x04,0xc0,0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x06,
-0xc0,0x00,0x80,0x80,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,0x00,0x80,0xc0,
-0x46,0x00,0x80,0x01,0x84,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x04,0x00,0x05,0x70,0x72,0x69,0x6e,0x74,0x00,0x00,0x04,0x70,0x75,0x74,0x73,0x00,
-0x00,0x01,0x70,0x00,0x00,0x06,0x70,0x72,0x69,0x6e,0x74,0x66,0x00,0x00,0x00,0x00,
-0x6a,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x08,0x00,0x26,0x01,0x80,0x00,
-0x06,0x02,0x00,0x00,0x91,0x02,0x80,0x00,0x3d,0x02,0x00,0x80,0xa0,0x01,0x80,0x00,
-0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x13,0x70,0x72,0x69,0x6e,
-0x74,0x20,0x6e,0x6f,0x74,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x00,
-0x00,0x00,0x03,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x13,0x4e,0x6f,0x74,
-0x49,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,
-0x00,0x00,0x03,0x6e,0x65,0x77,0x00,0x00,0x00,0x00,0x69,0x00,0x03,0x00,0x06,0x00,
-0x00,0x00,0x07,0x00,0x08,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0x00,0x91,0x02,
-0x80,0x00,0x3d,0x02,0x00,0x80,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,
-0x00,0x00,0x01,0x10,0x00,0x12,0x70,0x75,0x74,0x73,0x20,0x6e,0x6f,0x74,0x20,0x61,
-0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x00,0x00,0x00,0x03,0x00,0x05,0x72,0x61,
-0x69,0x73,0x65,0x00,0x00,0x13,0x4e,0x6f,0x74,0x49,0x6d,0x70,0x6c,0x65,0x6d,0x65,
-0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x03,0x6e,0x65,0x77,0x00,
-0x00,0x00,0x00,0x66,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x08,0x00,0x26,
-0x01,0x80,0x00,0x06,0x02,0x00,0x00,0x91,0x02,0x80,0x00,0x3d,0x02,0x00,0x80,0xa0,
-0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x0f,0x70,
-0x20,0x6e,0x6f,0x74,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x00,0x00,
-0x00,0x03,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x13,0x4e,0x6f,0x74,0x49,
-0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,
-0x00,0x03,0x6e,0x65,0x77,0x00,0x00,0x00,0x00,0x6b,0x00,0x03,0x00,0x06,0x00,0x00,
-0x00,0x07,0x00,0x08,0x00,0x26,0x01,0x80,0x00,0x06,0x02,0x00,0x00,0x91,0x02,0x80,
-0x00,0x3d,0x02,0x00,0x80,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,
-0x00,0x01,0x10,0x00,0x14,0x70,0x72,0x69,0x6e,0x74,0x66,0x20,0x6e,0x6f,0x74,0x20,
-0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x00,0x00,0x00,0x03,0x00,0x05,0x72,
-0x61,0x69,0x73,0x65,0x00,0x00,0x13,0x4e,0x6f,0x74,0x49,0x6d,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0x65,0x64,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x03,0x6e,0x65,0x77,
-0x00,0x00,0x00,0x00,0x2f,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x80,0x00,
-0x48,0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x04,0x01,0x00,0x00,
-0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x65,0x61,0x63,0x68,0x00,
-0x00,0x00,0x01,0x59,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0xa6,
-0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x20,0x01,0x01,0x00,0x01,0x02,0x00,0x80,0x01,
-0x02,0x80,0x01,0x04,0x02,0x00,0x40,0xa0,0x02,0x40,0x00,0x99,0x00,0x40,0x02,0x17,
-0x02,0x00,0x00,0x06,0x02,0x80,0x02,0x11,0x03,0x00,0x00,0x3d,0x02,0x00,0xc1,0x20,
-0x02,0x00,0x00,0x06,0x02,0x01,0x40,0x20,0x01,0x81,0x00,0x01,0x02,0x00,0x80,0x01,
-0x02,0x80,0xc0,0x01,0x02,0x01,0x80,0xa0,0x02,0xbf,0xff,0x83,0x02,0x01,0xc0,0xb5,
-0x02,0x40,0x01,0x19,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x40,0x03,0x17,
-0x02,0x00,0x40,0x01,0x02,0x80,0x80,0x01,0x02,0x02,0x00,0xa0,0x02,0x00,0x80,0x01,
-0x02,0x00,0x80,0x20,0x01,0x01,0x00,0x01,0x02,0x00,0x80,0x01,0x02,0x80,0xc0,0x01,
-0x02,0x01,0x80,0xa0,0x02,0xbf,0xff,0x83,0x02,0x02,0x40,0xb3,0x02,0x3f,0xfa,0x18,
-0x02,0x00,0x00,0x06,0x02,0x02,0x80,0x20,0x02,0x02,0xc0,0x20,0x02,0x40,0x02,0x99,
-0x02,0x00,0x80,0x01,0x02,0x80,0xc0,0x01,0x02,0x01,0x80,0xa0,0x02,0xbf,0xff,0x83,
-0x02,0x03,0x00,0xb2,0x02,0x40,0x01,0x99,0x02,0x00,0x40,0x01,0x02,0x80,0x80,0x01,
-0x02,0x02,0x00,0xa0,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x01,
-0x10,0x00,0x0d,0x63,0x61,0x6e,0x27,0x74,0x20,0x69,0x74,0x65,0x72,0x61,0x74,0x65,
-0x00,0x00,0x00,0x0d,0x00,0x05,0x66,0x69,0x72,0x73,0x74,0x00,0x00,0x0b,0x72,0x65,
-0x73,0x70,0x6f,0x6e,0x64,0x5f,0x74,0x6f,0x3f,0x00,0x00,0x04,0x73,0x75,0x63,0x63,
-0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x09,0x54,0x79,0x70,0x65,0x45,
-0x72,0x72,0x6f,0x72,0x00,0x00,0x04,0x6c,0x61,0x73,0x74,0x00,0x00,0x03,0x3c,0x3d,
-0x3e,0x00,0x00,0x01,0x3e,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x01,0x3c,
-0x00,0x00,0x0c,0x65,0x78,0x63,0x6c,0x75,0x64,0x65,0x5f,0x65,0x6e,0x64,0x3f,0x00,
-0x00,0x01,0x21,0x00,0x00,0x02,0x3d,0x3d,0x00,0x00,0x00,0x00,0x1c,0x00,0x01,0x00,
-0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x00,0x01,0x00,0x03,0x00,0x00,0x00,
-0x04,0x00,0x80,0x00,0x06,0x01,0x00,0x00,0x91,0x00,0x80,0x00,0xa0,0x01,0x00,0x00,
-0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0x69,0x6e,0x63,0x6c,0x75,
-0x64,0x65,0x00,0x00,0x0a,0x45,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x00,
-0x00,0x00,0x00,0xfa,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x23,0x00,0x80,0x00,0x48,
-0x01,0x00,0x02,0xc0,0x00,0x80,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x04,0xc0,
-0x00,0x80,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x06,0xc0,0x00,0x80,0x80,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x08,0xc0,0x00,0x80,0xc0,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x0a,0xc0,0x00,0x81,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0c,0xc0,
-0x00,0x81,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x0e,0xc0,0x00,0x81,0x80,0x46,
-0x00,0x80,0x00,0x48,0x01,0x00,0x10,0xc0,0x00,0x81,0xc0,0x46,0x00,0x80,0x00,0x48,
-0x01,0x00,0x12,0xc0,0x00,0x82,0x00,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x14,0xc0,
-0x00,0x82,0x40,0x46,0x00,0x80,0x00,0x48,0x01,0x00,0x16,0xc0,0x00,0x82,0x80,0x46,
-0x00,0x80,0x05,0x04,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,
-0x00,0x09,0x65,0x61,0x63,0x68,0x5f,0x6c,0x69,0x6e,0x65,0x00,0x00,0x04,0x67,0x73,
-0x75,0x62,0x00,0x00,0x05,0x67,0x73,0x75,0x62,0x21,0x00,0x00,0x04,0x73,0x63,0x61,
-0x6e,0x00,0x00,0x03,0x73,0x75,0x62,0x00,0x00,0x04,0x73,0x75,0x62,0x21,0x00,0x00,
-0x09,0x65,0x61,0x63,0x68,0x5f,0x63,0x68,0x61,0x72,0x00,0x00,0x09,0x65,0x61,0x63,
-0x68,0x5f,0x62,0x79,0x74,0x65,0x00,0x00,0x03,0x5b,0x5d,0x3d,0x00,0x00,0x02,0x3d,
-0x7e,0x00,0x00,0x05,0x6d,0x61,0x74,0x63,0x68,0x00,0x00,0x00,0x00,0xcf,0x00,0x04,
-0x00,0x09,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0xa6,0x01,0x3f,0xff,0x83,0x00,0x40,
-0x06,0x17,0x02,0x00,0x40,0x01,0x02,0x80,0x00,0x06,0x03,0x00,0x80,0x01,0x03,0x80,
-0xc0,0x01,0x03,0x80,0x80,0xad,0x04,0x00,0x80,0x01,0x03,0x80,0xc0,0xae,0x02,0x80,
-0x41,0x20,0x02,0x00,0x00,0xa0,0x02,0x00,0xc0,0x01,0x02,0x00,0x80,0xad,0x01,0x01,
-0x00,0x01,0x02,0x00,0x00,0x06,0x02,0xc0,0x04,0x83,0x03,0x00,0x80,0x01,0x02,0x01,
-0x01,0x20,0x01,0x81,0x00,0x01,0x02,0x3f,0xf7,0x18,0x02,0x00,0x00,0x06,0x02,0x01,
-0x40,0x20,0x02,0x80,0x80,0x01,0x02,0x01,0x80,0xb5,0x02,0x40,0x04,0x99,0x02,0x00,
-0x40,0x01,0x02,0x80,0x00,0x06,0x03,0x00,0x80,0x01,0x03,0x80,0x00,0x06,0x03,0x81,
-0x40,0x20,0x04,0x00,0x80,0x01,0x03,0x80,0xc0,0xae,0x02,0x80,0x41,0x20,0x02,0x00,
-0x00,0xa0,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x07,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x01,
-0x2b,0x00,0x00,0x01,0x2d,0x00,0x00,0x05,0x69,0x6e,0x64,0x65,0x78,0x00,0x00,0x04,
-0x73,0x69,0x7a,0x65,0x00,0x00,0x01,0x3e,0x00,0x00,0x00,0x01,0x17,0x00,0x03,0x00,
-0x07,0x00,0x00,0x00,0x2a,0x00,0x08,0x00,0xa6,0x01,0x80,0x40,0x01,0x01,0x80,0x00,
-0x20,0x02,0x40,0x00,0x83,0x01,0x80,0x40,0xb2,0x01,0xc0,0x05,0x99,0x01,0x80,0x00,
-0x06,0x02,0x00,0x40,0x01,0x02,0xbf,0xff,0x83,0x02,0x00,0xc0,0xa0,0x02,0xbf,0xff,
-0x03,0x01,0x80,0x81,0x20,0x02,0x00,0x40,0x01,0x02,0xc0,0x00,0x03,0x02,0x00,0xc0,
-0xa0,0x01,0x81,0x00,0xa0,0x00,0x40,0x0c,0x17,0x01,0x80,0x40,0x01,0x01,0x80,0x00,
-0x20,0x02,0x40,0x00,0x03,0x01,0x80,0x40,0xb2,0x01,0xc0,0x00,0x99,0x01,0x80,0x80,
-0x01,0x01,0xc0,0x06,0x99,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x02,0xbf,0xff,
-0x83,0x02,0x00,0xc0,0xa0,0x02,0xbf,0xff,0x03,0x01,0x80,0x81,0x20,0x02,0x00,0x80,
-0x01,0x02,0x80,0x40,0x01,0x03,0x3f,0xff,0x83,0x02,0x80,0xc0,0xa0,0x02,0x01,0x40,
-0xa0,0x01,0x81,0x00,0xa0,0x00,0x40,0x02,0x17,0x01,0x80,0x00,0x06,0x02,0x00,0x03,
-0x91,0x02,0x80,0x00,0x3d,0x01,0x81,0x81,0x20,0x01,0x80,0x00,0x29,0x00,0x00,0x00,
-0x01,0x10,0x00,0x19,0x77,0x72,0x6f,0x6e,0x67,0x20,0x6e,0x75,0x6d,0x62,0x65,0x72,
-0x20,0x6f,0x66,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x00,0x00,0x00,
-0x08,0x00,0x04,0x73,0x69,0x7a,0x65,0x00,0x00,0x02,0x3d,0x3d,0x00,0x00,0x05,0x73,
-0x70,0x6c,0x69,0x74,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x04,0x6a,0x6f,0x69,0x6e,
-0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,
-0x00,0x0d,0x41,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,
-0x00,0x00,0x00,0x76,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x13,0x00,0x08,0x00,0xa6,
-0x02,0x00,0x00,0x06,0x02,0x81,0x40,0x37,0x03,0x00,0x40,0x01,0x02,0x81,0x80,0x38,
-0x03,0x00,0x80,0x01,0x02,0x00,0x3f,0xa1,0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,
-0x02,0x80,0x00,0x06,0x02,0x00,0x40,0xa0,0x02,0x40,0x02,0x99,0x02,0x00,0x00,0x06,
-0x02,0x80,0xc0,0x01,0x02,0x00,0x80,0xa0,0x02,0x00,0x00,0x06,0x00,0x40,0x00,0x97,
-0x02,0x00,0x00,0x05,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
-0x00,0x04,0x67,0x73,0x75,0x62,0x00,0x00,0x02,0x21,0x3d,0x00,0x00,0x07,0x72,0x65,
-0x70,0x6c,0x61,0x63,0x65,0x00,0x00,0x00,0x00,0xa0,0x00,0x03,0x00,0x06,0x00,0x00,
-0x00,0x0c,0x02,0x00,0x00,0xa6,0x01,0x80,0x00,0x11,0x02,0x00,0x01,0x04,0x01,0x80,
-0x40,0xa0,0x01,0xc0,0x01,0x19,0x01,0x80,0x00,0x05,0x00,0x40,0x02,0x17,0x01,0x80,
-0x00,0x06,0x02,0x00,0x02,0x11,0x02,0x80,0x00,0x3d,0x01,0x80,0xc1,0x20,0x01,0x80,
-0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x18,0x73,0x63,0x61,0x6e,0x20,0x6e,0x6f,
-0x74,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x28,0x79,0x65,0x74,
-0x29,0x00,0x00,0x00,0x05,0x00,0x06,0x4f,0x62,0x6a,0x65,0x63,0x74,0x00,0x00,0x0e,
-0x63,0x6f,0x6e,0x73,0x74,0x5f,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x3f,0x00,0x00,
-0x06,0x52,0x65,0x67,0x65,0x78,0x70,0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,
-0x00,0x13,0x4e,0x6f,0x74,0x49,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,
-0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x00,0x01,0x17,0x00,0x03,0x00,0x07,0x00,0x00,
-0x00,0x2a,0x00,0x08,0x00,0xa6,0x01,0x80,0x40,0x01,0x01,0x80,0x00,0x20,0x02,0x40,
-0x00,0x83,0x01,0x80,0x40,0xb2,0x01,0xc0,0x05,0x99,0x01,0x80,0x00,0x06,0x02,0x00,
-0x40,0x01,0x02,0xbf,0xff,0x83,0x02,0x00,0xc0,0xa0,0x02,0xc0,0x00,0x83,0x01,0x80,
-0x81,0x20,0x02,0x00,0x40,0x01,0x02,0xc0,0x00,0x03,0x02,0x00,0xc0,0xa0,0x01,0x81,
-0x00,0xa0,0x00,0x40,0x0c,0x17,0x01,0x80,0x40,0x01,0x01,0x80,0x00,0x20,0x02,0x40,
-0x00,0x03,0x01,0x80,0x40,0xb2,0x01,0xc0,0x00,0x99,0x01,0x80,0x80,0x01,0x01,0xc0,
-0x06,0x99,0x01,0x80,0x00,0x06,0x02,0x00,0x40,0x01,0x02,0xbf,0xff,0x83,0x02,0x00,
-0xc0,0xa0,0x02,0xc0,0x00,0x83,0x01,0x80,0x81,0x20,0x02,0x00,0x80,0x01,0x02,0x80,
-0x40,0x01,0x03,0x3f,0xff,0x83,0x02,0x80,0xc0,0xa0,0x02,0x01,0x40,0xa0,0x01,0x81,
-0x00,0xa0,0x00,0x40,0x02,0x17,0x01,0x80,0x00,0x06,0x02,0x00,0x03,0x91,0x02,0x80,
-0x00,0x3d,0x01,0x81,0x81,0x20,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,
-0x19,0x77,0x72,0x6f,0x6e,0x67,0x20,0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x6f,0x66,
-0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x00,0x00,0x00,0x08,0x00,0x04,
-0x73,0x69,0x7a,0x65,0x00,0x00,0x02,0x3d,0x3d,0x00,0x00,0x05,0x73,0x70,0x6c,0x69,
-0x74,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x04,0x6a,0x6f,0x69,0x6e,0x00,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x05,0x72,0x61,0x69,0x73,0x65,0x00,0x00,0x0d,0x41,
-0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x45,0x72,0x72,0x6f,0x72,0x00,0x00,0x00,0x00,
-0x75,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x13,0x00,0x08,0x00,0xa6,0x02,0x00,0x00,
-0x06,0x02,0x81,0x40,0x37,0x03,0x00,0x40,0x01,0x02,0x81,0x80,0x38,0x03,0x00,0x80,
-0x01,0x02,0x00,0x3f,0xa1,0x01,0x81,0x00,0x01,0x02,0x00,0xc0,0x01,0x02,0x80,0x00,
-0x06,0x02,0x00,0x40,0xa0,0x02,0x40,0x02,0x99,0x02,0x00,0x00,0x06,0x02,0x80,0xc0,
-0x01,0x02,0x00,0x80,0xa0,0x02,0x00,0x00,0x06,0x00,0x40,0x00,0x97,0x02,0x00,0x00,
-0x05,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x73,
-0x75,0x62,0x00,0x00,0x02,0x21,0x3d,0x00,0x00,0x07,0x72,0x65,0x70,0x6c,0x61,0x63,
-0x65,0x00,0x00,0x00,0x00,0x77,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x12,0x00,0x00,
-0x00,0xa6,0x01,0x3f,0xff,0x83,0x00,0x40,0x04,0x17,0x01,0x80,0x40,0x01,0x02,0x00,
-0x00,0x06,0x02,0x80,0x80,0x01,0x02,0x00,0x40,0xa0,0x01,0x80,0x00,0xa0,0x01,0x80,
-0x80,0x01,0x01,0x80,0x80,0xad,0x01,0x00,0xc0,0x01,0x01,0x80,0x80,0x01,0x02,0x00,
-0x00,0x06,0x02,0x01,0x00,0x20,0x01,0x80,0xc0,0xb3,0x01,0xbf,0xf9,0x98,0x01,0x80,
-0x00,0x06,0x01,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,
-0x63,0x61,0x6c,0x6c,0x00,0x00,0x02,0x5b,0x5d,0x00,0x00,0x01,0x2b,0x00,0x00,0x01,
-0x3c,0x00,0x00,0x04,0x73,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x8b,0x00,0x04,0x00,
-0x07,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0xa6,0x02,0x00,0x00,0x06,0x02,0x00,0x00,
-0x20,0x01,0x01,0x00,0x01,0x01,0xbf,0xff,0x83,0x00,0x40,0x04,0x17,0x02,0x00,0x40,
-0x01,0x02,0x80,0x80,0x01,0x03,0x00,0xc0,0x01,0x02,0x80,0x80,0xa0,0x02,0x00,0x40,
-0xa0,0x02,0x00,0xc0,0x01,0x02,0x00,0xc0,0xad,0x01,0x81,0x00,0x01,0x02,0x00,0xc0,
-0x01,0x02,0x80,0x80,0x01,0x02,0x81,0x40,0x20,0x02,0x01,0x00,0xb3,0x02,0x3f,0xf9,
-0x98,0x02,0x00,0x00,0x06,0x02,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x06,0x00,0x05,0x62,0x79,0x74,0x65,0x73,0x00,0x00,0x04,0x63,0x61,0x6c,0x6c,0x00,
-0x00,0x02,0x5b,0x5d,0x00,0x00,0x01,0x2b,0x00,0x00,0x01,0x3c,0x00,0x00,0x04,0x73,
-0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x89,0x00,0x06,0x00,0x0a,0x00,0x00,0x00,0x16,
-0x04,0x00,0x00,0x26,0x03,0x00,0x00,0x06,0x03,0xbf,0xff,0x83,0x04,0x00,0x40,0x01,
-0x03,0x00,0x01,0x20,0x02,0x01,0x80,0x01,0x03,0x00,0x00,0x06,0x03,0x80,0x40,0x01,
-0x03,0x80,0x40,0xad,0x04,0x3f,0xff,0x03,0x03,0x81,0xc0,0x41,0x03,0x00,0x00,0xa0,
-0x02,0x81,0x80,0x01,0x03,0x00,0x00,0x06,0x03,0x81,0x00,0x01,0x04,0x00,0x80,0x01,
-0x04,0x81,0x40,0x01,0x03,0x81,0xc1,0xb7,0x04,0x00,0x00,0x3d,0x03,0x80,0xc0,0xa0,
-0x03,0x00,0x80,0xa0,0x03,0x00,0x00,0x29,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,
-0x00,0x00,0x04,0x00,0x02,0x5b,0x5d,0x00,0x00,0x01,0x2b,0x00,0x00,0x07,0x72,0x65,
-0x70,0x6c,0x61,0x63,0x65,0x00,0x00,0x04,0x6a,0x6f,0x69,0x6e,0x00,0x00,0x00,0x00,
-0x2d,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x26,0x01,0x80,0x40,
-0x01,0x02,0x00,0x00,0x06,0x01,0x80,0x00,0xa0,0x01,0x80,0x00,0x29,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x3d,0x7e,0x00,0x00,0x00,0x00,0x34,0x00,0x03,
-0x00,0x06,0x00,0x00,0x00,0x06,0x02,0x00,0x00,0xa6,0x01,0x80,0x40,0x01,0x02,0x00,
-0x00,0x06,0x02,0x80,0x80,0x01,0x01,0x80,0x00,0xa1,0x01,0x80,0x00,0x29,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0x6d,0x61,0x74,0x63,0x68,0x00,0x00,0x00,
-0x00,0x1c,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x05,0x01,0x00,
-0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x00,0x01,
-0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x80,0x00,0x06,0x01,0x00,0x00,0x91,0x00,0x80,
-0x00,0xa0,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,
-0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x00,0x00,0x0a,0x43,0x6f,0x6d,0x70,0x61,0x72,
-0x61,0x62,0x6c,0x65,0x00,0x45,0x4e,0x44,0x00,0x00,0x00,0x00,0x08,
-};

  Deleted: vendor/mruby-eeac4be/src/mruby_core.rake (+0 -28) 100644
===================================================================
--- vendor/mruby-eeac4be/src/mruby_core.rake    2014-06-08 19:01:14 +0900 (db33522)
+++ /dev/null
@@ -1,28 +0,0 @@
-MRuby.each_target do
-  current_dir = File.dirname(__FILE__).relative_path_from(Dir.pwd)
-  relative_from_root = File.dirname(__FILE__).relative_path_from(MRUBY_ROOT)
-  current_build_dir = "#{build_dir}/#{relative_from_root}"
-  
-  lex_def = "#{current_dir}/lex.def"
-  objs = Dir.glob("#{current_dir}/*.c").map { |f| objfile(f.pathmap("#{current_build_dir}/%n")) }
-  objs += [objfile("#{current_build_dir}/y.tab")]
-  self.libmruby << objs
-
-  file libfile("#{build_dir}/lib/libmruby_core") => objs do |t|
-    archiver.run t.name, t.prerequisites
-  end
-
-  # Parser
-  file "#{current_build_dir}/y.tab.c" => ["#{current_dir}/parse.y"] do |t|
-    yacc.run t.name, t.prerequisites.first
-  end
-
-  file objfile("#{current_build_dir}/y.tab") => ["#{current_build_dir}/y.tab.c", lex_def] do |t|
-    cc.run t.name, t.prerequisites.first, [], [current_dir]
-  end
-
-  # Lexical analyzer
-  file lex_def => "#{current_dir}/keywords" do |t|
-    gperf.run t.name, t.prerequisites.first
-  end
-end

  Deleted: vendor/mruby-eeac4be/src/node.h (+0 -117) 100644
===================================================================
--- vendor/mruby-eeac4be/src/node.h    2014-06-08 19:01:14 +0900 (df27c43)
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-** node.h - nodes of abstract syntax tree
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef NODE_H
-#define NODE_H
-
-enum node_type {
-    NODE_METHOD,
-    NODE_FBODY,
-    NODE_CFUNC,
-    NODE_SCOPE,
-    NODE_BLOCK,
-    NODE_IF,
-    NODE_CASE,
-    NODE_WHEN,
-    NODE_OPT_N,
-    NODE_WHILE,
-    NODE_UNTIL,
-    NODE_ITER,
-    NODE_FOR,
-    NODE_BREAK,
-    NODE_NEXT,
-    NODE_REDO,
-    NODE_RETRY,
-    NODE_BEGIN,
-    NODE_RESCUE,
-    NODE_ENSURE,
-    NODE_AND,
-    NODE_OR,
-    NODE_NOT,
-    NODE_MASGN,
-    NODE_ASGN,
-    NODE_CDECL,
-    NODE_CVASGN,
-    NODE_CVDECL,
-    NODE_OP_ASGN,
-    NODE_CALL,
-    NODE_FCALL,
-    NODE_VCALL,
-    NODE_SUPER,
-    NODE_ZSUPER,
-    NODE_ARRAY,
-    NODE_ZARRAY,
-    NODE_HASH,
-    NODE_RETURN,
-    NODE_YIELD,
-    NODE_LVAR,
-    NODE_DVAR,
-    NODE_GVAR,
-    NODE_IVAR,
-    NODE_CONST,
-    NODE_CVAR,
-    NODE_NTH_REF,
-    NODE_BACK_REF,
-    NODE_MATCH,
-    NODE_MATCH2,
-    NODE_MATCH3,
-    NODE_INT,
-    NODE_FLOAT,
-    NODE_NEGATE,
-    NODE_LAMBDA,
-    NODE_SYM,
-    NODE_STR,
-    NODE_DSTR,
-    NODE_XSTR,
-    NODE_DXSTR,
-    NODE_REGX,
-    NODE_DREGX,
-    NODE_DREGX_ONCE,
-    NODE_LIST,
-    NODE_ARG,
-    NODE_ARGSCAT,
-    NODE_ARGSPUSH,
-    NODE_SPLAT,
-    NODE_TO_ARY,
-    NODE_SVALUE,
-    NODE_BLOCK_ARG,
-    NODE_DEF,
-    NODE_SDEF,
-    NODE_ALIAS,
-    NODE_UNDEF,
-    NODE_CLASS,
-    NODE_MODULE,
-    NODE_SCLASS,
-    NODE_COLON2,
-    NODE_COLON3,
-    NODE_CREF,
-    NODE_DOT2,
-    NODE_DOT3,
-    NODE_FLIP2,
-    NODE_FLIP3,
-    NODE_ATTRSET,
-    NODE_SELF,
-    NODE_NIL,
-    NODE_TRUE,
-    NODE_FALSE,
-    NODE_DEFINED,
-    NODE_NEWLINE,
-    NODE_POSTEXE,
-    NODE_ALLOCA,
-    NODE_DMETHOD,
-    NODE_BMETHOD,
-    NODE_MEMO,
-    NODE_IFUNC,
-    NODE_DSYM,
-    NODE_ATTRASGN,
-    NODE_HEREDOC,
-    NODE_LITERAL_DELIM,
-    NODE_WORDS,
-    NODE_SYMBOLS,
-    NODE_LAST
-};
-
-#endif  /* NODE_H */

  Deleted: vendor/mruby-eeac4be/src/numeric.c (+0 -1420) 100644
===================================================================
--- vendor/mruby-eeac4be/src/numeric.c    2014-06-08 19:01:14 +0900 (c309abf)
+++ /dev/null
@@ -1,1420 +0,0 @@
-/*
-** numeric.c - Numeric, Integer, Float, Fixnum class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include <float.h>
-#if defined(__FreeBSD__) && __FreeBSD__ < 4
-# include <floatingpoint.h>
-#endif
-#ifdef HAVE_IEEEFP_H
-# include <ieeefp.h>
-#endif
-#include <limits.h>
-#include <math.h>
-#include <stdlib.h>
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/numeric.h"
-#include "mruby/string.h"
-
-#ifdef MRB_USE_FLOAT
-#define floor(f) floorf(f)
-#define ceil(f) ceilf(f)
-#define floor(f) floorf(f)
-#define fmod(x,y) fmodf(x,y)
-#endif
-
-static mrb_float
-mrb_to_flo(mrb_state *mrb, mrb_value val)
-{
-  switch (mrb_type(val)) {
-  case MRB_TT_FIXNUM:
-    return (mrb_float)mrb_fixnum(val);
-  case MRB_TT_FLOAT:
-    break;
-  default:
-    mrb_raise(mrb, E_TYPE_ERROR, "non float value");
-  }
-  return mrb_float(val);
-}
-
-/*
- *  call-seq:
- *     +num  ->  num
- *
- *  Unary Plus---Returns the receiver's value.
- */
-
-static mrb_value
-num_uplus(mrb_state *mrb, mrb_value num)
-{
-  return num;
-}
-
-/*
- *  call-seq:
- *     -num  ->  numeric
- *
- *  Unary Minus---Returns the receiver's value, negated.
- */
-
-static mrb_value
-num_uminus(mrb_state *mrb, mrb_value num)
-{
-  return mrb_float_value(mrb, (mrb_float)0 - mrb_to_flo(mrb, num));
-}
-
-static mrb_value
-fix_uminus(mrb_state *mrb, mrb_value num)
-{
-  return mrb_fixnum_value(0 - mrb_fixnum(num));
-}
-
-/*
- * call-seq:
- *
- *  num ** other  ->  num
- *
- * Raises <code>num</code> the <code>other</code> power.
- *
- *    2.0**3      #=> 8.0
- */
-static mrb_value
-num_pow(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  int both_int = FALSE;
-  mrb_float d;
-
-  mrb_get_args(mrb, "o", &y);
-  if (mrb_fixnum_p(x) && mrb_fixnum_p(y)) both_int = TRUE;
-  d = pow(mrb_to_flo(mrb, x), mrb_to_flo(mrb, y));
-  if (both_int && FIXABLE(d))
-    return mrb_fixnum_value((mrb_int)d);
-  return mrb_float_value(mrb, d);
-}
-
-/* 15.2.8.3.4  */
-/* 15.2.9.3.4  */
-/*
- * call-seq:
- *   num / other  ->  num
- *
- * Performs division: the class of the resulting object depends on
- * the class of <code>num</code> and on the magnitude of the
- * result.
- */
-
-mrb_value
-mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y)
-{
-  return mrb_float_value(mrb, mrb_to_flo(mrb, x) / mrb_to_flo(mrb, y));
-}
-
-/* 15.2.9.3.19(x) */
-/*
- *  call-seq:
- *     num.quo(numeric)  ->  real
- *
- *  Returns most exact division.
- */
-
-static mrb_value
-num_div(mrb_state *mrb, mrb_value x)
-{
-  mrb_float y;
-
-  mrb_get_args(mrb, "f", &y);
-  return mrb_float_value(mrb, mrb_to_flo(mrb, x) / y);
-}
-
-/*
- *  call-seq:
- *     num.abs        ->  numeric
- *     num.magnitude  ->  numeric
- *
- *  Returns the absolute value of <i>num</i>.
- *
- *     12.abs         #=> 12
- *     (-34.56).abs   #=> 34.56
- *     -34.56.abs     #=> 34.56
- */
-
-static mrb_value
-num_abs(mrb_state *mrb, mrb_value num)
-{
-  if (mrb_to_flo(mrb, num) < 0) {
-    return num_uminus(mrb, num);
-  }
-  return num;
-}
-
-/********************************************************************
- *
- * Document-class: Float
- *
- *  <code>Float</code> objects represent inexact real numbers using
- *  the native architecture's double-precision floating point
- *  representation.
- */
-
-mrb_value
-mrb_flo_to_str(mrb_state *mrb, mrb_value flo, int max_digit)
-{
-  mrb_value result;
-  mrb_float n;
-
-  if (max_digit > 40) {
-    mrb_raise(mrb, E_RANGE_ERROR, "Too large max_digit.");
-  }
-  else if (!mrb_float_p(flo)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "non float value");
-  }
-
-  n = mrb_float(flo);
-
-  if (isnan(n)) {
-    result = mrb_str_new(mrb, "NaN", 3);
-  }
-  else if (isinf(n)) {
-    if (n < 0) {
-      result = mrb_str_new(mrb, "-inf", 4);
-    }
-    else {
-      result = mrb_str_new(mrb, "inf", 3);
-    }
-  }
-  else {
-    int digit;
-    int m;
-    int exp;
-    int e = 0;
-    char s[48];
-    char *c = &s[0];
-
-    if (n < 0) {
-      n = -n;
-      *(c++) = '-';
-    }
-
-    exp = (int)log10(n);
-
-    if ((exp < 0 ? -exp : exp) > max_digit) {
-      /* exponent representation */
-      e = 1;
-      m = exp;
-      if (m < 0) {
-        m -= 1;
-      }
-      n = n / pow(10.0, m);
-      m = 0;
-    }
-    else {
-      /* un-exponent (normal) representation */
-      m = exp;
-      if (m < 0) {
-        m = 0;
-      }
-    }
-
-    /* puts digits */
-    while (max_digit >= 0) {
-      mrb_float weight = pow(10.0, m);
-      digit = (int)floor(n / weight + FLT_EPSILON);
-      *(c++) = '0' + digit;
-      n -= (digit * weight);
-      max_digit--;
-      if (m-- == 0) {
-        *(c++) = '.';
-      }
-      else if (m < -1 && n < FLT_EPSILON) {
-        break;
-      }
-    }
-
-    if (e) {
-      *(c++) = 'e';
-      if (exp > 0) {
-        *(c++) = '+';
-      }
-      else {
-        *(c++) = '-';
-        exp = -exp;
-      }
-
-      if (exp >= 100) {
-        mrb_raise(mrb, E_RANGE_ERROR, "Too large expornent.");
-      }
-
-      *(c++) = '0' + exp / 10;
-      *(c++) = '0' + exp % 10;
-    }
-
-    *c = '\0';
-
-    result = mrb_str_new(mrb, &s[0], c - &s[0]);
-  }
-
-  return result;
-}
-
-/* 15.2.9.3.16(x) */
-/*
- *  call-seq:
- *     flt.to_s  ->  string
- *
- *  Returns a string containing a representation of self. As well as a
- *  fixed or exponential form of the number, the call may return
- *  ``<code>NaN</code>'', ``<code>Infinity</code>'', and
- *  ``<code>-Infinity</code>''.
- */
-
-static mrb_value
-flo_to_s(mrb_state *mrb, mrb_value flt)
-{
-#ifdef MRB_USE_FLOAT
-  return mrb_flo_to_str(mrb, flt, 7);
-#else
-  return mrb_flo_to_str(mrb, flt, 14);
-#endif
-}
-
-/* 15.2.9.3.2  */
-/*
- * call-seq:
- *   float - other  ->  float
- *
- * Returns a new float which is the difference of <code>float</code>
- * and <code>other</code>.
- */
-
-static mrb_value
-flo_minus(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-
-  mrb_get_args(mrb, "o", &y);
-  return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y));
-}
-
-/* 15.2.9.3.3  */
-/*
- * call-seq:
- *   float * other  ->  float
- *
- * Returns a new float which is the product of <code>float</code>
- * and <code>other</code>.
- */
-
-static mrb_value
-flo_mul(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-
-  mrb_get_args(mrb, "o", &y);
-  return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y));
-}
-
-static void
-flodivmod(mrb_state *mrb, mrb_float x, mrb_float y, mrb_float *divp, mrb_float *modp)
-{
-  mrb_float div;
-  mrb_float mod;
-
-  if (y == 0.0) {
-    div = str_to_mrb_float("inf");
-    mod = str_to_mrb_float("nan");
-  }
-  else {
-    mod = fmod(x, y);
-    if (isinf(x) && !isinf(y) && !isnan(y))
-      div = x;
-    else
-      div = (x - mod) / y;
-    if (y*mod < 0) {
-      mod += y;
-      div -= 1.0;
-    }
-  }
-
-  if (modp) *modp = mod;
-  if (divp) *divp = div;
-}
-
-/* 15.2.9.3.5  */
-/*
- *  call-seq:
- *     flt % other        ->  float
- *     flt.modulo(other)  ->  float
- *
- *  Return the modulo after division of <code>flt</code> by <code>other</code>.
- *
- *     6543.21.modulo(137)      #=> 104.21
- *     6543.21.modulo(137.24)   #=> 92.9299999999996
- */
-
-static mrb_value
-flo_mod(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_float fy, mod;
-
-  mrb_get_args(mrb, "o", &y);
-
-  fy = mrb_to_flo(mrb, y);
-  flodivmod(mrb, mrb_float(x), fy, 0, &mod);
-  return mrb_float_value(mrb, mod);
-}
-
-/* 15.2.8.3.16 */
-/*
- *  call-seq:
- *     num.eql?(numeric)  ->  true or false
- *
- *  Returns <code>true</code> if <i>num</i> and <i>numeric</i> are the
- *  same type and have equal values.
- *
- *     1 == 1.0          #=> true
- *     1.eql?(1.0)       #=> false
- *     (1.0).eql?(1.0)   #=> true
- */
-static mrb_value
-num_eql(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_bool eql_p;
-
-  mrb_get_args(mrb, "o", &y);
-  if (mrb_type(x) != mrb_type(y)) {
-    eql_p = 0;
-  }
-  else {
-    eql_p = mrb_equal(mrb, x, y);
-  }
-
-  return mrb_bool_value(eql_p);
-}
-
-static mrb_value
-num_equal(mrb_state *mrb, mrb_value x, mrb_value y)
-{
-  if (mrb_obj_equal(mrb, x, y)) return mrb_true_value();
-  return mrb_funcall(mrb, y, "==", 1, x);
-}
-
-/* 15.2.9.3.7  */
-/*
- *  call-seq:
- *     flt == obj  ->  true or false
- *
- *  Returns <code>true</code> only if <i>obj</i> has the same value
- *  as <i>flt</i>. Contrast this with <code>Float#eql?</code>, which
- *  requires <i>obj</i> to be a <code>Float</code>.
- *
- *     1.0 == 1   #=> true
- *
- */
-
-static mrb_value
-flo_eq(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  volatile mrb_float a, b;
-
-  mrb_get_args(mrb, "o", &y);
-
-  switch (mrb_type(y)) {
-  case MRB_TT_FIXNUM:
-    b = (mrb_float)mrb_fixnum(y);
-    break;
-  case MRB_TT_FLOAT:
-    b = mrb_float(y);
-    break;
-  default:
-    return num_equal(mrb, x, y);
-  }
-  a = mrb_float(x);
-  return mrb_bool_value(a == b);
-}
-
-/* 15.2.8.3.18 */
-/*
- * call-seq:
- *   flt.hash  ->  integer
- *
- * Returns a hash code for this float.
- */
-static mrb_value
-flo_hash(mrb_state *mrb, mrb_value num)
-{
-  mrb_float d;
-  char *c;
-  size_t i;
-  int hash;
-
-  d = (mrb_float)mrb_fixnum(num);
-  /* normalize -0.0 to 0.0 */
-  if (d == 0) d = 0.0;
-  c = (char*)&d;
-  for (hash=0, i=0; i<sizeof(mrb_float);i++) {
-    hash = (hash * 971) ^ (unsigned char)c[i];
-  }
-  if (hash < 0) hash = -hash;
-  return mrb_fixnum_value(hash);
-}
-
-/* 15.2.9.3.13 */
-/*
- * call-seq:
- *   flt.to_f  ->  self
- *
- * As <code>flt</code> is already a float, returns +self+.
- */
-
-static mrb_value
-flo_to_f(mrb_state *mrb, mrb_value num)
-{
-  return num;
-}
-
-/* 15.2.9.3.11 */
-/*
- *  call-seq:
- *     flt.infinite?  ->  nil, -1, +1
- *
- *  Returns <code>nil</code>, -1, or +1 depending on whether <i>flt</i>
- *  is finite, -infinity, or +infinity.
- *
- *     (0.0).infinite?        #=> nil
- *     (-1.0/0.0).infinite?   #=> -1
- *     (+1.0/0.0).infinite?   #=> 1
- */
-
-static mrb_value
-flo_infinite_p(mrb_state *mrb, mrb_value num)
-{
-  mrb_float value = mrb_float(num);
-
-  if (isinf(value)) {
-    return mrb_fixnum_value( value < 0 ? -1 : 1 );
-  }
-  return mrb_nil_value();
-}
-
-/* 15.2.9.3.9  */
-/*
- *  call-seq:
- *     flt.finite?  ->  true or false
- *
- *  Returns <code>true</code> if <i>flt</i> is a valid IEEE floating
- *  point number (it is not infinite, and <code>nan?</code> is
- *  <code>false</code>).
- *
- */
-
-static mrb_value
-flo_finite_p(mrb_state *mrb, mrb_value num)
-{
-  mrb_float value = mrb_float(num);
-  mrb_bool finite_p;
-
-  finite_p = !(isinf(value) || isnan(value));
-
-  return mrb_bool_value(finite_p);
-}
-
-/* 15.2.9.3.10 */
-/*
- *  call-seq:
- *     flt.floor  ->  integer
- *
- *  Returns the largest integer less than or equal to <i>flt</i>.
- *
- *     1.2.floor      #=> 1
- *     2.0.floor      #=> 2
- *     (-1.2).floor   #=> -2
- *     (-2.0).floor   #=> -2
- */
-
-static mrb_value
-flo_floor(mrb_state *mrb, mrb_value num)
-{
-  mrb_float f = floor(mrb_float(num));
-
-  if (!FIXABLE(f)) {
-    return mrb_float_value(mrb, f);
-  }
-  return mrb_fixnum_value((mrb_int)f);
-}
-
-/* 15.2.9.3.8  */
-/*
- *  call-seq:
- *     flt.ceil  ->  integer
- *
- *  Returns the smallest <code>Integer</code> greater than or equal to
- *  <i>flt</i>.
- *
- *     1.2.ceil      #=> 2
- *     2.0.ceil      #=> 2
- *     (-1.2).ceil   #=> -1
- *     (-2.0).ceil   #=> -2
- */
-
-static mrb_value
-flo_ceil(mrb_state *mrb, mrb_value num)
-{
-  mrb_float f = ceil(mrb_float(num));
-
-  if (!FIXABLE(f)) {
-    return mrb_float_value(mrb, f);
-  }
-  return mrb_fixnum_value((mrb_int)f);
-}
-
-/* 15.2.9.3.12 */
-/*
- *  call-seq:
- *     flt.round([ndigits])  ->  integer or float
- *
- *  Rounds <i>flt</i> to a given precision in decimal digits (default 0 digits).
- *  Precision may be negative.  Returns a floating point number when ndigits
- *  is more than zero.
- *
- *     1.4.round      #=> 1
- *     1.5.round      #=> 2
- *     1.6.round      #=> 2
- *     (-1.5).round   #=> -2
- *
- *     1.234567.round(2)  #=> 1.23
- *     1.234567.round(3)  #=> 1.235
- *     1.234567.round(4)  #=> 1.2346
- *     1.234567.round(5)  #=> 1.23457
- *
- *     34567.89.round(-5) #=> 0
- *     34567.89.round(-4) #=> 30000
- *     34567.89.round(-3) #=> 35000
- *     34567.89.round(-2) #=> 34600
- *     34567.89.round(-1) #=> 34570
- *     34567.89.round(0)  #=> 34568
- *     34567.89.round(1)  #=> 34567.9
- *     34567.89.round(2)  #=> 34567.89
- *     34567.89.round(3)  #=> 34567.89
- *
- */
-
-static mrb_value
-flo_round(mrb_state *mrb, mrb_value num)
-{
-  double number, f;
-  mrb_int ndigits = 0;
-  int i;
-
-  mrb_get_args(mrb, "|i", &ndigits);
-  number = mrb_float(num);
-  f = 1.0;
-  i = abs(ndigits);
-  while  (--i >= 0)
-    f = f*10.0;
-
-  if (isinf(f)) {
-    if (ndigits < 0) number = 0;
-  }
-  else {
-    double d;
-
-    if (ndigits < 0) number /= f;
-    else number *= f;
-
-    /* home-made inline implementation of round(3) */
-    if (number > 0.0) {
-        d = floor(number);
-        number = d + (number - d >= 0.5);
-    }
-    else if (number < 0.0) {
-        d = ceil(number);
-        number = d - (d - number >= 0.5);
-    }
-
-    if (ndigits < 0) number *= f;
-    else number /= f;
-  }
-  if (ndigits > 0) return mrb_float_value(mrb, number);
-  return mrb_fixnum_value((mrb_int)number);
-}
-
-/* 15.2.9.3.14 */
-/* 15.2.9.3.15 */
-/*
- *  call-seq:
- *     flt.to_i      ->  integer
- *     flt.to_int    ->  integer
- *     flt.truncate  ->  integer
- *
- *  Returns <i>flt</i> truncated to an <code>Integer</code>.
- */
-
-static mrb_value
-flo_truncate(mrb_state *mrb, mrb_value num)
-{
-  mrb_float f = mrb_float(num);
-
-  if (f > 0.0) f = floor(f);
-  if (f < 0.0) f = ceil(f);
-
-  if (!FIXABLE(f)) {
-    return mrb_float_value(mrb, f);
-  }
-  return mrb_fixnum_value((mrb_int)f);
-}
-
-/*
- * Document-class: Integer
- *
- *  <code>Integer</code> is the basis for the two concrete classes that
- *  hold whole numbers, <code>Bignum</code> and <code>Fixnum</code>.
- *
- */
-
-
-/*
- *  call-seq:
- *     int.to_i      ->  integer
- *     int.to_int    ->  integer
- *
- *  As <i>int</i> is already an <code>Integer</code>, all these
- *  methods simply return the receiver.
- */
-
-static mrb_value
-int_to_i(mrb_state *mrb, mrb_value num)
-{
-  return num;
-}
-
-/* 15.2.8.3.21 */
-/*
- *  call-seq:
- *     fixnum.next  ->  integer
- *     fixnum.succ  ->  integer
- *
- *  Returns the <code>Integer</code> equal to <i>int</i> + 1.
- *
- *     1.next      #=> 2
- *     (-1).next   #=> 0
- */
-
-static mrb_value
-fix_succ(mrb_state *mrb, mrb_value num)
-{
-  return mrb_fixnum_value(mrb_fixnum(num)+1);
-}
-
-/* 15.2.8.3.19 */
-/*
- *  call-seq:
- *     int.next  ->  integer
- *     int.succ  ->  integer
- *
- *  Returns the <code>Integer</code> equal to <i>int</i> + 1.
- *
- *     1.next      #=> 2
- *     (-1).next   #=> 0
- */
-static mrb_value
-int_succ(mrb_state *mrb, mrb_value num)
-{
-  if (mrb_fixnum_p(num)) return fix_succ(mrb, num);
-  return mrb_funcall(mrb, num, "+", 1, mrb_fixnum_value(1));
-}
-
-#define SQRT_INT_MAX ((mrb_int)1<<((sizeof(mrb_int)*CHAR_BIT-1)/2))
-/*tests if N*N would overflow*/
-#define FIT_SQRT_INT(n) (((n)<SQRT_INT_MAX)&&((n)>=-SQRT_INT_MAX))
-
-mrb_value
-mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y)
-{
-  mrb_int a;
-
-  a = mrb_fixnum(x);
-  if (a == 0) return x;
-  if (mrb_fixnum_p(y)) {
-    mrb_int b, c;
-
-    b = mrb_fixnum(y);
-    if (FIT_SQRT_INT(a) && FIT_SQRT_INT(b))
-      return mrb_fixnum_value(a*b);
-    c = a * b;
-    if (a != 0 && c/a != b) {
-      return mrb_float_value(mrb, (mrb_float)a*(mrb_float)b);
-    }
-    return mrb_fixnum_value(c);;
-  }
-  return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y));
-}
-
-/* 15.2.8.3.3  */
-/*
- * call-seq:
- *   fix * numeric  ->  numeric_result
- *
- * Performs multiplication: the class of the resulting object depends on
- * the class of <code>numeric</code> and on the magnitude of the
- * result.
- */
-
-static mrb_value
-fix_mul(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-
-  mrb_get_args(mrb, "o", &y);
-  return mrb_fixnum_mul(mrb, x, y);
-}
-
-static void
-fixdivmod(mrb_state *mrb, mrb_int x, mrb_int y, mrb_int *divp, mrb_int *modp)
-{
-  mrb_int div, mod;
-
-  /* TODO: add mrb_assert(y != 0) to make sure */
-
-  if (y < 0) {
-    if (x < 0)
-      div = -x / -y;
-    else
-      div = - (x / -y);
-  }
-  else {
-    if (x < 0)
-      div = - (-x / y);
-    else
-      div = x / y;
-  }
-  mod = x - div*y;
-  if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) {
-    mod += y;
-    div -= 1;
-  }
-  if (divp) *divp = div;
-  if (modp) *modp = mod;
-}
-
-/* 15.2.8.3.5  */
-/*
- *  call-seq:
- *    fix % other        ->  real
- *    fix.modulo(other)  ->  real
- *
- *  Returns <code>fix</code> modulo <code>other</code>.
- *  See <code>numeric.divmod</code> for more information.
- */
-
-static mrb_value
-fix_mod(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_int a, b;
-
-  mrb_get_args(mrb, "o", &y);
-  a = mrb_fixnum(x);
-  if (mrb_fixnum_p(y) && (b=mrb_fixnum(y)) != 0) {
-    mrb_int mod;
-
-    if (mrb_fixnum(y) == 0) {
-      return mrb_float_value(mrb, str_to_mrb_float("nan"));
-    }
-    fixdivmod(mrb, a, mrb_fixnum(y), 0, &mod);
-    return mrb_fixnum_value(mod);
-  }
-  else {
-    mrb_float mod;
-
-    flodivmod(mrb, (mrb_float)a, mrb_to_flo(mrb, y), 0, &mod);
-    return mrb_float_value(mrb, mod);
-  }
-}
-
-/*
- *  call-seq:
- *     fix.divmod(numeric)  ->  array
- *
- *  See <code>Numeric#divmod</code>.
- */
-static mrb_value
-fix_divmod(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-
-  mrb_get_args(mrb, "o", &y);
-
-  if (mrb_fixnum_p(y)) {
-    mrb_int div, mod;
-
-    if (mrb_fixnum(y) == 0) {
-      return mrb_assoc_new(mrb, mrb_float_value(mrb, str_to_mrb_float("inf")),
-        mrb_float_value(mrb, str_to_mrb_float("nan")));
-    }
-    fixdivmod(mrb, mrb_fixnum(x), mrb_fixnum(y), &div, &mod);
-    return mrb_assoc_new(mrb, mrb_fixnum_value(div), mrb_fixnum_value(mod));
-  }
-  else {
-    mrb_float div, mod;
-    mrb_value a, b;
-
-    flodivmod(mrb, (mrb_float)mrb_fixnum(x), mrb_to_flo(mrb, y), &div, &mod);
-    a = mrb_float_value(mrb, (mrb_int)div);
-    b = mrb_float_value(mrb, mod);
-    return mrb_assoc_new(mrb, a, b);
-  }
-}
-
-/* 15.2.8.3.7  */
-/*
- * call-seq:
- *   fix == other  ->  true or false
- *
- * Return <code>true</code> if <code>fix</code> equals <code>other</code>
- * numerically.
- *
- *   1 == 2      #=> false
- *   1 == 1.0    #=> true
- */
-
-static mrb_value
-fix_equal(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_bool equal_p;
-
-  mrb_get_args(mrb, "o", &y);
-
-  equal_p = mrb_obj_equal(mrb, x, y) ||
-      (mrb_type(y) == MRB_TT_FLOAT &&
-       (mrb_float)mrb_fixnum(x) == mrb_float(y));
-
-  return mrb_bool_value(equal_p);
-}
-
-/* 15.2.8.3.8  */
-/*
- * call-seq:
- *   ~fix  ->  integer
- *
- * One's complement: returns a number where each bit is flipped.
- *   ex.0---00001 (1)-> 1---11110 (-2)
- *   ex.0---00010 (2)-> 1---11101 (-3)
- *   ex.0---00100 (4)-> 1---11011 (-5)
- */
-
-static mrb_value
-fix_rev(mrb_state *mrb, mrb_value num)
-{
-    mrb_int val = mrb_fixnum(num);
-
-    val = ~val;
-    return mrb_fixnum_value(val);
-}
-
-static mrb_value
-bit_coerce(mrb_state *mrb, mrb_value x)
-{
-    while (!mrb_fixnum_p(x)) {
-        if (mrb_float_p(x)) {
-            mrb_raise(mrb, E_TYPE_ERROR, "can't convert Float into Integer");
-        }
-        x = mrb_to_int(mrb, x);
-    }
-    return x;
-}
-
-/* 15.2.8.3.9  */
-/*
- * call-seq:
- *   fix & integer  ->  integer_result
- *
- * Bitwise AND.
- */
-
-static mrb_value
-fix_and(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_int val;
-
-  mrb_get_args(mrb, "o", &y);
-
-  y = bit_coerce(mrb, y);
-  val = mrb_fixnum(x) & mrb_fixnum(y);
-  return mrb_fixnum_value(val);
-}
-
-/* 15.2.8.3.10 */
-/*
- * call-seq:
- *   fix | integer  ->  integer_result
- *
- * Bitwise OR.
- */
-
-static mrb_value
-fix_or(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_int val;
-
-  mrb_get_args(mrb, "o", &y);
-
-  y = bit_coerce(mrb, y);
-  val = mrb_fixnum(x) | mrb_fixnum(y);
-  return mrb_fixnum_value(val);
-}
-
-/* 15.2.8.3.11 */
-/*
- * call-seq:
- *   fix ^ integer  ->  integer_result
- *
- * Bitwise EXCLUSIVE OR.
- */
-
-static mrb_value
-fix_xor(mrb_state *mrb, mrb_value x)
-{
-  mrb_value y;
-  mrb_int val;
-
-  mrb_get_args(mrb, "o", &y);
-
-  y = bit_coerce(mrb, y);
-  val = mrb_fixnum(x) ^ mrb_fixnum(y);
-  return mrb_fixnum_value(val);
-}
-
-#define NUMERIC_SHIFT_WIDTH_MAX (sizeof(mrb_int)*CHAR_BIT-1)
-
-static mrb_value
-lshift(mrb_state *mrb, mrb_int val, size_t width)
-{
-  if (width > NUMERIC_SHIFT_WIDTH_MAX) {
-    mrb_raisef(mrb, E_RANGE_ERROR, "width(%S) > (%S:sizeof(mrb_int)*CHAR_BIT-1)",
-               mrb_fixnum_value(width),
-               mrb_fixnum_value(NUMERIC_SHIFT_WIDTH_MAX));
-  }
-  val = val << width;
-  return mrb_fixnum_value(val);
-}
-
-static mrb_value
-rshift(mrb_int val, size_t width)
-{
-  if (width >= NUMERIC_SHIFT_WIDTH_MAX) {
-    if (val < 0) {
-      val = -1;
-    }
-    else {
-      val = 0;
-    }
-  }
-  else {
-    val = val >> width;
-  }
-
-  return mrb_fixnum_value(val);
-}
-
-static inline void
-fix_shift_get_width(mrb_state *mrb, mrb_int *width)
-{
-  mrb_value y;
-
-  mrb_get_args(mrb, "o", &y);
-  y = bit_coerce(mrb, y);
-  *width = mrb_fixnum(y);
-}
-
-/* 15.2.8.3.12 */
-/*
- * call-seq:
- *   fix << count  ->  integer
- *
- * Shifts _fix_ left _count_ positions (right if _count_ is negative).
- */
-
-static mrb_value
-fix_lshift(mrb_state *mrb, mrb_value x)
-{
-  mrb_int width;
-  mrb_value result;
-
-  fix_shift_get_width(mrb, &width);
-
-  if (width == 0) {
-    result = x;
-  }
-  else {
-    mrb_int val;
-
-    val = mrb_fixnum(x);
-    if (width < 0) {
-      result = rshift(val, -width);
-    }
-    else {
-      result = lshift(mrb, val, width);
-    }
-  }
-
-  return result;
-}
-
-/* 15.2.8.3.13 */
-/*
- * call-seq:
- *   fix >> count  ->  integer
- *
- * Shifts _fix_ right _count_ positions (left if _count_ is negative).
- */
-
-static mrb_value
-fix_rshift(mrb_state *mrb, mrb_value x)
-{
-  mrb_int width;
-  mrb_value result;
-
-  fix_shift_get_width(mrb, &width);
-
-  if (width == 0) {
-    result = x;
-  }
-  else {
-    mrb_int val;
-
-    val = mrb_fixnum(x);
-    if (width < 0) {
-      result = lshift(mrb, val, -width);
-    }
-    else {
-      result = rshift(val, width);
-    }
-  }
-
-  return result;
-}
-
-/* 15.2.8.3.23 */
-/*
- *  call-seq:
- *     fix.to_f  ->  float
- *
- *  Converts <i>fix</i> to a <code>Float</code>.
- *
- */
-
-static mrb_value
-fix_to_f(mrb_state *mrb, mrb_value num)
-{
-    mrb_float val;
-
-    val = (mrb_float)mrb_fixnum(num);
-
-    return mrb_float_value(mrb, val);
-}
-
-/*
- *  Document-class: FloatDomainError
- *
- *  Raised when attempting to convert special float values
- *  (in particular infinite or NaN)
- *  to numerical classes which don't support them.
- *
- *     Float::INFINITY.to_r
- *
- *  <em>raises the exception:</em>
- *
- *     FloatDomainError: Infinity
- */
-/* ------------------------------------------------------------------------*/
-mrb_value
-mrb_flo_to_fixnum(mrb_state *mrb, mrb_value x)
-{
-  mrb_int z;
-
-  if (mrb_float_p(x)) {
-     mrb_raise(mrb, E_TYPE_ERROR, "non float value");
-     z = 0; /* not reached. just supress warnings. */
-  }
-  else {
-    mrb_float d = mrb_float(x);
-
-    if (isinf(d)) {
-      mrb_raise(mrb, E_FLOATDOMAIN_ERROR, d < 0 ? "-Infinity" : "Infinity");
-    }
-    if (isnan(d)) {
-      mrb_raise(mrb, E_FLOATDOMAIN_ERROR, "NaN");
-    }
-    z = (mrb_int)d;
-  }
-  return mrb_fixnum_value(z);
-}
-
-mrb_value
-mrb_fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y)
-{
-  mrb_int a;
-
-  a = mrb_fixnum(x);
-  if (a == 0) return y;
-  if (mrb_fixnum_p(y)) {
-    mrb_int b, c;
-
-    b = mrb_fixnum(y);
-    c = a + b;
-    if (((a < 0) ^ (b < 0)) == 0 && (a < 0) != (c < 0)) {
-      /* integer overflow */
-      return mrb_float_value(mrb, (mrb_float)a + (mrb_float)b);
-    }
-    return mrb_fixnum_value(c);
-  }
-  return mrb_float_value(mrb, (mrb_float)a + mrb_to_flo(mrb, y));
-}
-
-/* 15.2.8.3.1  */
-/*
- * call-seq:
- *   fix + numeric  ->  numeric_result
- *
- * Performs addition: the class of the resulting object depends on
- * the class of <code>numeric</code> and on the magnitude of the
- * result.
- */
-static mrb_value
-fix_plus(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-
-  mrb_get_args(mrb, "o", &other);
-  return mrb_fixnum_plus(mrb, self, other);
-}
-
-mrb_value
-mrb_fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y)
-{
-  mrb_int a;
-
-  a = mrb_fixnum(x);
-  if (mrb_fixnum_p(y)) {
-    mrb_int b, c;
-
-    b = mrb_fixnum(y);
-    c = a - b;
-    if (((a < 0) ^ (b < 0)) != 0 && (a < 0) != (c < 0)) {
-      /* integer overflow */
-      return mrb_float_value(mrb, (mrb_float)a - (mrb_float)b);
-    }
-    return mrb_fixnum_value(c);
-  }
-  return mrb_float_value(mrb, (mrb_float)a - mrb_to_flo(mrb, y));
-}
-
-/* 15.2.8.3.2  */
-/* 15.2.8.3.16 */
-/*
- * call-seq:
- *   fix - numeric  ->  numeric_result
- *
- * Performs subtraction: the class of the resulting object depends on
- * the class of <code>numeric</code> and on the magnitude of the
- * result.
- */
-static mrb_value
-fix_minus(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-
-  mrb_get_args(mrb, "o", &other);
-  return mrb_fixnum_minus(mrb, self, other);
-}
-
-
-mrb_value
-mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, int base)
-{
-  char buf[sizeof(mrb_int)*CHAR_BIT+1];
-  char *b = buf + sizeof buf;
-  mrb_int val = mrb_fixnum(x);
-
-  if (base < 2 || 36 < base) {
-    mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %S", mrb_fixnum_value(base));
-  }
-
-  if (val == 0) {
-    *--b = '0';
-  }
-  else if (val < 0) {
-    do {
-      *--b = mrb_digitmap[-(val % base)];
-    } while (val /= base);
-    *--b = '-';
-  }
-  else {
-    do {
-      *--b = mrb_digitmap[(int)(val % base)];
-    } while (val /= base);
-  }
-
-  return mrb_str_new(mrb, b, buf + sizeof(buf) - b);
-}
-
-/* 15.2.8.3.25 */
-/*
- *  call-seq:
- *     fix.to_s(base=10)  ->  string
- *
- *  Returns a string containing the representation of <i>fix</i> radix
- *  <i>base</i> (between 2 and 36).
- *
- *     12345.to_s       #=> "12345"
- *     12345.to_s(2)    #=> "11000000111001"
- *     12345.to_s(8)    #=> "30071"
- *     12345.to_s(10)   #=> "12345"
- *     12345.to_s(16)   #=> "3039"
- *     12345.to_s(36)   #=> "9ix"
- *
- */
-static mrb_value
-fix_to_s(mrb_state *mrb, mrb_value self)
-{
-  mrb_int base = 10;
-
-  mrb_get_args(mrb, "|i", &base);
-  return mrb_fixnum_to_str(mrb, self, base);
-}
-
-/* 15.2.9.3.6  */
-/*
- * call-seq:
- *     self.f <=> other.f    => -1, 0, +1
- *             <  => -1
- *             =  =>  0
- *             >  => +1
- *  Comparison---Returns -1, 0, or +1 depending on whether <i>fix</i> is
- *  less than, equal to, or greater than <i>numeric</i>. This is the
- *  basis for the tests in <code>Comparable</code>.
- */
-static mrb_value
-num_cmp(mrb_state *mrb, mrb_value self)
-{
-  mrb_value other;
-  mrb_float x, y;
-
-  mrb_get_args(mrb, "o", &other);
-
-  x = mrb_to_flo(mrb, self);
-  switch (mrb_type(other)) {
-  case MRB_TT_FIXNUM:
-    y = (mrb_float)mrb_fixnum(other);
-    break;
-  case MRB_TT_FLOAT:
-    y = mrb_float(other);
-    break;
-  default:
-    return mrb_nil_value();
-  }
-  if (x > y)
-    return mrb_fixnum_value(1);
-  else {
-    if (x < y)
-      return mrb_fixnum_value(-1);
-    return mrb_fixnum_value(0);
-  }
-}
-
-/* 15.2.9.3.1  */
-/*
- * call-seq:
- *   float + other  ->  float
- *
- * Returns a new float which is the sum of <code>float</code>
- * and <code>other</code>.
- */
-static mrb_value
-flo_plus(mrb_state *mrb, mrb_value self)
-{
-  mrb_float x,  y;
-
-  x = mrb_float(self);
-  mrb_get_args(mrb, "f", &y);
-
-  return mrb_float_value(mrb, x + y);
-}
-/* ------------------------------------------------------------------------*/
-void
-mrb_init_numeric(mrb_state *mrb)
-{
-  struct RClass *numeric, *integer, *fixnum, *fl;
-
-  /* Numeric Class */
-  numeric = mrb_define_class(mrb, "Numeric",  mrb->object_class);
-  mrb_include_module(mrb, numeric, mrb_class_get(mrb, "Comparable"));
-
-  mrb_define_method(mrb, numeric, "+@",       num_uplus,      MRB_ARGS_REQ(1));  /* 15.2.7.4.1  */
-  mrb_define_method(mrb, numeric, "-@",       num_uminus,     MRB_ARGS_REQ(1));  /* 15.2.7.4.2  */
-  mrb_define_method(mrb, numeric, "**",       num_pow,        MRB_ARGS_REQ(1));
-  mrb_define_method(mrb, numeric, "/",        num_div,        MRB_ARGS_REQ(1));  /* 15.2.8.3.4  */
-  mrb_define_method(mrb, numeric, "quo",      num_div,        MRB_ARGS_REQ(1));  /* 15.2.7.4.5 (x) */
-  mrb_define_method(mrb, numeric, "abs",      num_abs,        MRB_ARGS_NONE());  /* 15.2.7.4.3  */
-  mrb_define_method(mrb, numeric, "<=>",      num_cmp,        MRB_ARGS_REQ(1));  /* 15.2.9.3.6  */
-
-  /* Integer Class */
-  integer = mrb_define_class(mrb, "Integer",  numeric);
-  mrb_undef_class_method(mrb, integer, "new");
-  mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE());              /* 15.2.8.3.24 */
-  mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE());
-  fixnum = mrb->fixnum_class = mrb_define_class(mrb, "Fixnum", integer);
-
-  mrb_define_method(mrb, fixnum,  "+",        fix_plus,          MRB_ARGS_REQ(1)); /* 15.2.8.3.1  */
-  mrb_define_method(mrb, fixnum,  "-",        fix_minus,         MRB_ARGS_REQ(1)); /* 15.2.8.3.2  */
-  mrb_define_method(mrb, fixnum,  "-@",       fix_uminus,        MRB_ARGS_REQ(1)); /* 15.2.7.4.2  */
-  mrb_define_method(mrb, fixnum,  "*",        fix_mul,           MRB_ARGS_REQ(1)); /* 15.2.8.3.3  */
-  mrb_define_method(mrb, fixnum,  "%",        fix_mod,           MRB_ARGS_REQ(1)); /* 15.2.8.3.5  */
-  mrb_define_method(mrb, fixnum,  "==",       fix_equal,         MRB_ARGS_REQ(1)); /* 15.2.8.3.7  */
-  mrb_define_method(mrb, fixnum,  "~",        fix_rev,           MRB_ARGS_NONE()); /* 15.2.8.3.8  */
-  mrb_define_method(mrb, fixnum,  "&",        fix_and,           MRB_ARGS_REQ(1)); /* 15.2.8.3.9  */
-  mrb_define_method(mrb, fixnum,  "|",        fix_or,            MRB_ARGS_REQ(1)); /* 15.2.8.3.10 */
-  mrb_define_method(mrb, fixnum,  "^",        fix_xor,           MRB_ARGS_REQ(1)); /* 15.2.8.3.11 */
-  mrb_define_method(mrb, fixnum,  "<<",       fix_lshift,        MRB_ARGS_REQ(1)); /* 15.2.8.3.12 */
-  mrb_define_method(mrb, fixnum,  ">>",       fix_rshift,        MRB_ARGS_REQ(1)); /* 15.2.8.3.13 */
-  mrb_define_method(mrb, fixnum,  "eql?",     num_eql,           MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */
-  mrb_define_method(mrb, fixnum,  "hash",     flo_hash,          MRB_ARGS_NONE()); /* 15.2.8.3.18 */
-  mrb_define_method(mrb, fixnum,  "next",     int_succ,          MRB_ARGS_NONE()); /* 15.2.8.3.19 */
-  mrb_define_method(mrb, fixnum,  "succ",     fix_succ,          MRB_ARGS_NONE()); /* 15.2.8.3.21 */
-  mrb_define_method(mrb, fixnum,  "to_f",     fix_to_f,          MRB_ARGS_NONE()); /* 15.2.8.3.23 */
-  mrb_define_method(mrb, fixnum,  "to_s",     fix_to_s,          MRB_ARGS_NONE()); /* 15.2.8.3.25 */
-  mrb_define_method(mrb, fixnum,  "inspect",  fix_to_s,          MRB_ARGS_NONE());
-  mrb_define_method(mrb, fixnum,  "divmod",   fix_divmod,        MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */
-
-  /* Float Class */
-  fl = mrb->float_class = mrb_define_class(mrb, "Float", numeric);
-  mrb_undef_class_method(mrb,  fl, "new");
-  mrb_define_method(mrb, fl,      "+",         flo_plus,         MRB_ARGS_REQ(1)); /* 15.2.9.3.1  */
-  mrb_define_method(mrb, fl,      "-",         flo_minus,        MRB_ARGS_REQ(1)); /* 15.2.9.3.2  */
-  mrb_define_method(mrb, fl,      "*",         flo_mul,          MRB_ARGS_REQ(1)); /* 15.2.9.3.3  */
-  mrb_define_method(mrb, fl,      "%",         flo_mod,          MRB_ARGS_REQ(1)); /* 15.2.9.3.5  */
-  mrb_define_method(mrb, fl,      "==",        flo_eq,           MRB_ARGS_REQ(1)); /* 15.2.9.3.7  */
-  mrb_define_method(mrb, fl,      "ceil",      flo_ceil,         MRB_ARGS_NONE()); /* 15.2.9.3.8  */
-  mrb_define_method(mrb, fl,      "finite?",   flo_finite_p,     MRB_ARGS_NONE()); /* 15.2.9.3.9  */
-  mrb_define_method(mrb, fl,      "floor",     flo_floor,        MRB_ARGS_NONE()); /* 15.2.9.3.10 */
-  mrb_define_method(mrb, fl,      "infinite?", flo_infinite_p,   MRB_ARGS_NONE()); /* 15.2.9.3.11 */
-  mrb_define_method(mrb, fl,      "round",     flo_round,        MRB_ARGS_NONE()); /* 15.2.9.3.12 */
-  mrb_define_method(mrb, fl,      "to_f",      flo_to_f,         MRB_ARGS_NONE()); /* 15.2.9.3.13 */
-  mrb_define_method(mrb, fl,      "to_i",      flo_truncate,     MRB_ARGS_NONE()); /* 15.2.9.3.14 */
-  mrb_define_method(mrb, fl,      "to_int",    flo_truncate,     MRB_ARGS_NONE());
-  mrb_define_method(mrb, fl,      "truncate",  flo_truncate,     MRB_ARGS_NONE()); /* 15.2.9.3.15 */
-
-  mrb_define_method(mrb, fl,      "to_s",      flo_to_s,         MRB_ARGS_NONE()); /* 15.2.9.3.16(x) */
-  mrb_define_method(mrb, fl,      "inspect",   flo_to_s,         MRB_ARGS_NONE());
-}

  Deleted: vendor/mruby-eeac4be/src/object.c (+0 -593) 100644
===================================================================
--- vendor/mruby-eeac4be/src/object.c    2014-06-08 19:01:14 +0900 (1040a08)
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
-** object.c - Object, NilClass, TrueClass, FalseClass class
-**
-** See Copyright Notice in mruby.h
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/numeric.h"
-#include "mruby/string.h"
-#include "error.h"
-
-mrb_bool
-mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
-{
-  if (mrb_type(v1) != mrb_type(v2)) return FALSE;
-  switch (mrb_type(v1)) {
-  case MRB_TT_TRUE:
-    return TRUE;
-
-  case MRB_TT_FALSE:
-  case MRB_TT_FIXNUM:
-    return (v1.value.i == v2.value.i);
-  case MRB_TT_SYMBOL:
-    return (v1.value.sym == v2.value.sym);
-
-  case MRB_TT_FLOAT:
-    return (mrb_float(v1) == mrb_float(v2));
-
-  default:
-    return (mrb_ptr(v1) == mrb_ptr(v2));
-  }
-}
-
-mrb_bool
-mrb_obj_equal(mrb_state *mrb, mrb_value v1, mrb_value v2)
-{
-  /* temporary definition */
-  return mrb_obj_eq(mrb, v1, v2);
-}
-
-mrb_bool
-mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
-{
-  mrb_value result;
-
-  if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
-  result = mrb_funcall(mrb, obj1, "==", 1, obj2);
-  if (mrb_test(result)) return TRUE;
-  return FALSE;
-}
-
-/*
- * Document-class: NilClass
- *
- *  The class of the singleton object <code>nil</code>.
- */
-
-/* 15.2.4.3.4  */
-/*
- * call_seq:
- *   nil.nil?               -> true
- *
- * Only the object <i>nil</i> responds <code>true</code> to <code>nil?</code>.
- */
-
-static mrb_value
-mrb_true(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_true_value();
-}
-
-/* 15.2.4.3.5  */
-/*
- *  call-seq:
- *     nil.to_s    -> ""
- *
- *  Always returns the empty string.
- */
-
-static mrb_value
-nil_to_s(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_str_new(mrb, 0, 0);
-}
-
-static mrb_value
-nil_inspect(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_str_new(mrb, "nil", 3);
-}
-
-/***********************************************************************
- *  Document-class: TrueClass
- *
- *  The global value <code>true</code> is the only instance of class
- *  <code>TrueClass</code> and represents a logically true value in
- *  boolean expressions. The class provides operators allowing
- *  <code>true</code> to be used in logical expressions.
- */
-
-/* 15.2.5.3.1  */
-/*
- *  call-seq:
- *     true & obj    -> true or false
- *
- *  And---Returns <code>false</code> if <i>obj</i> is
- *  <code>nil</code> or <code>false</code>, <code>true</code> otherwise.
- */
-
-static mrb_value
-true_and(mrb_state *mrb, mrb_value obj)
-{
-  mrb_bool obj2;
-
-  mrb_get_args(mrb, "b", &obj2);
-
-  return mrb_bool_value(obj2);
-}
-
-/* 15.2.5.3.2  */
-/*
- *  call-seq:
- *     true ^ obj   -> !obj
- *
- *  Exclusive Or---Returns <code>true</code> if <i>obj</i> is
- *  <code>nil</code> or <code>false</code>, <code>false</code>
- *  otherwise.
- */
-
-static mrb_value
-true_xor(mrb_state *mrb, mrb_value obj)
-{
-  mrb_bool obj2;
-
-  mrb_get_args(mrb, "b", &obj2);
-  return mrb_bool_value(!obj2);
-}
-
-/* 15.2.5.3.3  */
-/*
- * call-seq:
- *   true.to_s   ->  "true"
- *
- * The string representation of <code>true</code> is "true".
- */
-
-static mrb_value
-true_to_s(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_str_new(mrb, "true", 4);
-}
-
-/* 15.2.5.3.4  */
-/*
- *  call-seq:
- *     true | obj   -> true
- *
- *  Or---Returns <code>true</code>. As <i>anObject</i> is an argument to
- *  a method call, it is always evaluated; there is no short-circuit
- *  evaluation in this case.
- *
- *     true |  puts("or")
- *     true || puts("logical or")
- *
- *  <em>produces:</em>
- *
- *     or
- */
-
-static mrb_value
-true_or(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_true_value();
-}
-
-/*
- *  Document-class: FalseClass
- *
- *  The global value <code>false</code> is the only instance of class
- *  <code>FalseClass</code> and represents a logically false value in
- *  boolean expressions. The class provides operators allowing
- *  <code>false</code> to participate correctly in logical expressions.
- *
- */
-
-/* 15.2.4.3.1  */
-/* 15.2.6.3.1  */
-/*
- *  call-seq:
- *     false & obj   -> false
- *     nil & obj     -> false
- *
- *  And---Returns <code>false</code>. <i>obj</i> is always
- *  evaluated as it is the argument to a method call---there is no
- *  short-circuit evaluation in this case.
- */
-
-static mrb_value
-false_and(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_false_value();
-}
-
-/* 15.2.4.3.2  */
-/* 15.2.6.3.2  */
-/*
- *  call-seq:
- *     false ^ obj    -> true or false
- *     nil   ^ obj    -> true or false
- *
- *  Exclusive Or---If <i>obj</i> is <code>nil</code> or
- *  <code>false</code>, returns <code>false</code>; otherwise, returns
- *  <code>true</code>.
- *
- */
-
-static mrb_value
-false_xor(mrb_state *mrb, mrb_value obj)
-{
-  mrb_bool obj2;
-
-  mrb_get_args(mrb, "b", &obj2);
-  return mrb_bool_value(obj2);
-}
-
-/* 15.2.4.3.3  */
-/* 15.2.6.3.4  */
-/*
- *  call-seq:
- *     false | obj   ->   true or false
- *     nil   | obj   ->   true or false
- *
- *  Or---Returns <code>false</code> if <i>obj</i> is
- *  <code>nil</code> or <code>false</code>; <code>true</code> otherwise.
- */
-
-static mrb_value
-false_or(mrb_state *mrb, mrb_value obj)
-{
-  mrb_bool obj2;
-
-  mrb_get_args(mrb, "b", &obj2);
-  return mrb_bool_value(obj2);
-}
-
-/* 15.2.6.3.3  */
-/*
- * call-seq:
- *   false.to_s   ->  "false"
- *
- * 'nuf said...
- */
-
-static mrb_value
-false_to_s(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_str_new(mrb, "false", 5);
-}
-
-void
-mrb_init_object(mrb_state *mrb)
-{
-  struct RClass *n;
-  struct RClass *t;
-  struct RClass *f;
-
-  n = mrb->nil_class   = mrb_define_class(mrb, "NilClass",   mrb->object_class);
-  mrb_undef_class_method(mrb, n, "new");
-  mrb_define_method(mrb, n, "&",    false_and,      MRB_ARGS_REQ(1));  /* 15.2.4.3.1  */
-  mrb_define_method(mrb, n, "^",    false_xor,      MRB_ARGS_REQ(1));  /* 15.2.4.3.2  */
-  mrb_define_method(mrb, n, "|",    false_or,       MRB_ARGS_REQ(1));  /* 15.2.4.3.3  */
-  mrb_define_method(mrb, n, "nil?", mrb_true,       MRB_ARGS_NONE());  /* 15.2.4.3.4  */
-  mrb_define_method(mrb, n, "to_s", nil_to_s,       MRB_ARGS_NONE());  /* 15.2.4.3.5  */
-  mrb_define_method(mrb, n, "inspect", nil_inspect, MRB_ARGS_NONE());
-
-  t = mrb->true_class  = mrb_define_class(mrb, "TrueClass",  mrb->object_class);
-  mrb_undef_class_method(mrb, t, "new");
-  mrb_define_method(mrb, t, "&",    true_and,       MRB_ARGS_REQ(1));  /* 15.2.5.3.1  */
-  mrb_define_method(mrb, t, "^",    true_xor,       MRB_ARGS_REQ(1));  /* 15.2.5.3.2  */
-  mrb_define_method(mrb, t, "to_s", true_to_s,      MRB_ARGS_NONE());  /* 15.2.5.3.3  */
-  mrb_define_method(mrb, t, "|",    true_or,        MRB_ARGS_REQ(1));  /* 15.2.5.3.4  */
-  mrb_define_method(mrb, t, "inspect", true_to_s,   MRB_ARGS_NONE());
-
-  f = mrb->false_class = mrb_define_class(mrb, "FalseClass", mrb->object_class);
-  mrb_undef_class_method(mrb, f, "new");
-  mrb_define_method(mrb, f, "&",    false_and,      MRB_ARGS_REQ(1));  /* 15.2.6.3.1  */
-  mrb_define_method(mrb, f, "^",    false_xor,      MRB_ARGS_REQ(1));  /* 15.2.6.3.2  */
-  mrb_define_method(mrb, f, "to_s", false_to_s,     MRB_ARGS_NONE());  /* 15.2.6.3.3  */
-  mrb_define_method(mrb, f, "|",    false_or,       MRB_ARGS_REQ(1));  /* 15.2.6.3.4  */
-  mrb_define_method(mrb, f, "inspect", false_to_s,  MRB_ARGS_NONE());
-}
-
-static mrb_value
-convert_type(mrb_state *mrb, mrb_value val, const char *tname, const char *method, int raise)
-{
-  mrb_sym m = 0;
-
-  m = mrb_intern_cstr(mrb, method);
-  if (!mrb_respond_to(mrb, val, m)) {
-    if (raise) {
-      mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S into %S", val, mrb_str_new_cstr(mrb, tname));
-      return mrb_nil_value();
-    }
-    else {
-      return mrb_nil_value();
-    }
-  }
-  return mrb_funcall_argv(mrb, val, m, 0, 0);
-}
-
-mrb_value
-mrb_check_to_integer(mrb_state *mrb, mrb_value val, const char *method)
-{
-  mrb_value v;
-
-  if (mrb_type(val) == MRB_TT_FIXNUM) return val;
-  v = convert_type(mrb, val, "Integer", method, FALSE);
-  if (mrb_nil_p(v) || mrb_type(v) != MRB_TT_FIXNUM) {
-    return mrb_nil_value();
-  }
-  return v;
-}
-
-mrb_value
-mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method)
-{
-  mrb_value v;
-
-  if (mrb_type(val) == type) return val;
-  v = convert_type(mrb, val, tname, method, 1/*Qtrue*/);
-  if (mrb_type(v) != type) {
-    mrb_raisef(mrb, E_TYPE_ERROR, "%S cannot be converted to %S by #%S", val,
-               mrb_str_new_cstr(mrb, tname), mrb_str_new_cstr(mrb, method));
-  }
-  return v;
-}
-
-mrb_value
-mrb_check_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method)
-{
-  mrb_value v;
-
-  if (mrb_type(val) == type && type != MRB_TT_DATA) return val;
-  v = convert_type(mrb, val, tname, method, 0/*Qfalse*/);
-  if (mrb_nil_p(v) || mrb_type(v) != type) return mrb_nil_value();
-  return v;
-}
-
-static const struct types {
-  unsigned char type;
-  const char *name;
-} builtin_types[] = {
-//    {MRB_TT_NIL,  "nil"},
-  {MRB_TT_FALSE,  "false"},
-  {MRB_TT_TRUE,   "true"},
-  {MRB_TT_FIXNUM, "Fixnum"},
-  {MRB_TT_SYMBOL, "Symbol"},  /* :symbol */
-  {MRB_TT_MODULE, "Module"},
-  {MRB_TT_OBJECT, "Object"},
-  {MRB_TT_CLASS,  "Class"},
-  {MRB_TT_ICLASS, "iClass"},  /* internal use: mixed-in module holder */
-  {MRB_TT_SCLASS, "SClass"},
-  {MRB_TT_PROC,   "Proc"},
-  {MRB_TT_FLOAT,  "Float"},
-  {MRB_TT_ARRAY,  "Array"},
-  {MRB_TT_HASH,   "Hash"},
-  {MRB_TT_STRING, "String"},
-  {MRB_TT_RANGE,  "Range"},
-//    {MRB_TT_BIGNUM,  "Bignum"},
-  {MRB_TT_FILE,   "File"},
-  {MRB_TT_DATA,   "Data"},  /* internal use: wrapped C pointers */
-//    {MRB_TT_VARMAP,  "Varmap"},  /* internal use: dynamic variables */
-//    {MRB_TT_NODE,  "Node"},  /* internal use: syntax tree node */
-//    {MRB_TT_UNDEF,  "undef"},  /* internal use: #undef; should not happen */
-    {-1,  0}
-};
-
-void
-mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t)
-{
-  const struct types *type = builtin_types;
-  struct RString *s;
-  enum mrb_vtype xt;
-
-  xt = mrb_type(x);
-  if ((xt != t) || (xt == MRB_TT_DATA)) {
-    while (type->type < MRB_TT_MAXDEFINE) {
-      if (type->type == t) {
-        const char *etype;
-
-        if (mrb_nil_p(x)) {
-          etype = "nil";
-        }
-        else if (mrb_type(x) == MRB_TT_FIXNUM) {
-          etype = "Fixnum";
-        }
-        else if (mrb_type(x) == MRB_TT_SYMBOL) {
-          etype = "Symbol";
-        }
-        else if (mrb_special_const_p(x)) {
-          s = mrb_str_ptr(mrb_obj_as_string(mrb, x));
-          etype = s->ptr;
-        }
-        else {
-          etype = mrb_obj_classname(mrb, x);
-        }
-        mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %S (expected %S)",
-                   mrb_str_new_cstr(mrb, etype), mrb_str_new_cstr(mrb, type->name));
-      }
-      type++;
-    }
-    mrb_raisef(mrb, E_TYPE_ERROR, "unknown type %S (%S given)",
-               mrb_fixnum_value(t), mrb_fixnum_value(mrb_type(x)));
-  }
-}
-
-/* 15.3.1.3.46 */
-/*
- *  call-seq:
- *     obj.to_s    => string
- *
- *  Returns a string representing <i>obj</i>. The default
- *  <code>to_s</code> prints the object's class and an encoding of the
- *  object id. As a special case, the top-level object that is the
- *  initial execution context of Ruby programs returns ``main.''
- */
-
-mrb_value
-mrb_any_to_s(mrb_state *mrb, mrb_value obj)
-{
-  mrb_value str = mrb_str_buf_new(mrb, 20);
-  const char *cname = mrb_obj_classname(mrb, obj);
-
-  mrb_str_buf_cat(mrb, str, "#<", 2);
-  mrb_str_cat2(mrb, str, cname);
-  mrb_str_cat(mrb, str, ":", 1);
-  mrb_str_concat(mrb, str, mrb_ptr_to_str(mrb, mrb_cptr(obj)));
-  mrb_str_buf_cat(mrb, str, ">", 1);
-
-  return str;
-}
-
-/*
- *  call-seq:
- *     obj.is_a?(class)       => true or false
- *     obj.kind_of?(class)    => true or false
- *
- *  Returns <code>true</code> if <i>class</i> is the class of
- *  <i>obj</i>, or if <i>class</i> is one of the superclasses of
- *  <i>obj</i> or modules included in <i>obj</i>.
- *
- *     module M;    end
- *     class A
- *       include M
- *     end
- *     class B < A; end
- *     class C < B; end
- *     b = B.new
- *     b.instance_of? A   #=> false
- *     b.instance_of? B   #=> true
- *     b.instance_of? C   #=> false
- *     b.instance_of? M   #=> false
- *     b.kind_of? A       #=> true
- *     b.kind_of? B       #=> true
- *     b.kind_of? C       #=> false
- *     b.kind_of? M       #=> true
- */
-
-mrb_bool
-mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c)
-{
-  struct RClass *cl = mrb_class(mrb, obj);
-
-  switch (c->tt) {
-    case MRB_TT_MODULE:
-    case MRB_TT_CLASS:
-    case MRB_TT_ICLASS:
-      break;
-
-    default:
-      mrb_raise(mrb, E_TYPE_ERROR, "class or module required");
-  }
-
-  while (cl) {
-    if (cl == c || cl->mt == c->mt)
-      return TRUE;
-    cl = cl->super;
-  }
-  return FALSE;
-}
-
-static mrb_value
-mrb_to_integer(mrb_state *mrb, mrb_value val, const char *method)
-{
-  mrb_value v;
-
-  if (mrb_fixnum_p(val)) return val;
-  v = convert_type(mrb, val, "Integer", method, TRUE);
-  if (!mrb_obj_is_kind_of(mrb, v, mrb->fixnum_class)) {
-    mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S to Integer (%S#%S gives %S)",
-               val, val, mrb_str_new_cstr(mrb, method), v);
-  }
-  return v;
-}
-
-mrb_value
-mrb_to_int(mrb_state *mrb, mrb_value val)
-{
-  return mrb_to_integer(mrb, val, "to_int");
-}
-
-static mrb_value
-mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base)
-{
-  mrb_value tmp;
-
-  if (mrb_nil_p(val)) {
-    if (base != 0) goto arg_error;
-      mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Integer");
-  }
-  switch (mrb_type(val)) {
-    case MRB_TT_FLOAT:
-      if (base != 0) goto arg_error;
-      if (FIXABLE(mrb_float(val))) {
-        break;
-      }
-      return mrb_flo_to_fixnum(mrb, val);
-
-    case MRB_TT_FIXNUM:
-      if (base != 0) goto arg_error;
-      return val;
-
-    case MRB_TT_STRING:
-string_conv:
-      return mrb_str_to_inum(mrb, val, base, TRUE);
-
-    default:
-      break;
-  }
-  if (base != 0) {
-    tmp = mrb_check_string_type(mrb, val);
-    if (!mrb_nil_p(tmp)) goto string_conv;
-arg_error:
-    mrb_raise(mrb, E_ARGUMENT_ERROR, "base specified for non string value");
-  }
-  tmp = convert_type(mrb, val, "Integer", "to_int", FALSE);
-  if (mrb_nil_p(tmp)) {
-    return mrb_to_integer(mrb, val, "to_i");
-  }
-  return tmp;
-}
-
-mrb_value
-mrb_Integer(mrb_state *mrb, mrb_value val)
-{
-  return mrb_convert_to_integer(mrb, val, 0);
-}
-
-mrb_value
-mrb_Float(mrb_state *mrb, mrb_value val)
-{
-  if (mrb_nil_p(val)) {
-    mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Float");
-  }
-  switch (mrb_type(val)) {
-    case MRB_TT_FIXNUM:
-      return mrb_float_value(mrb, (mrb_float)mrb_fixnum(val));
-
-    case MRB_TT_FLOAT:
-      return val;
-
-    case MRB_TT_STRING:
-      return mrb_float_value(mrb, mrb_str_to_dbl(mrb, val, TRUE));
-
-    default:
-      return mrb_convert_type(mrb, val, MRB_TT_FLOAT, "Float", "to_f");
-  }
-}
-
-mrb_value
-mrb_inspect(mrb_state *mrb, mrb_value obj)
-{
-  return mrb_obj_as_string(mrb, mrb_funcall(mrb, obj, "inspect", 0, 0));
-}
-
-mrb_bool
-mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
-{
-  if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
-  return mrb_test(mrb_funcall(mrb, obj1, "eql?", 1, obj2));
-}

  Deleted: vendor/mruby-eeac4be/src/opcode.h (+0 -160) 100644
===================================================================
--- vendor/mruby-eeac4be/src/opcode.h    2014-06-08 19:01:14 +0900 (f876111)
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-** opcode.h - RiteVM operation codes
-**
-** See Copyright Notice in mruby.h
-*/
-
-#ifndef OPCODE_H
-#define OPCODE_H
-
-#define MAXARG_Bx        (0xffff)
-#define MAXARG_sBx       (MAXARG_Bx>>1)         /* `sBx' is signed */
-
-/* instructions: packed 32 bit      */
-/* -------------------------------  */
-/*     A:B:C:OP = 9: 9: 7: 7        */
-/*      A:Bx:OP =    9:16: 7        */
-/*        Ax:OP =      25: 7        */
-/*   A:Bz:Cz:OP = 9:14: 2: 7        */
-
-#define GET_OPCODE(i)            ((int)(((mrb_code)(i)) & 0x7f))
-#define GETARG_A(i)              ((int)((((mrb_code)(i)) >> 23) & 0x1ff))
-#define GETARG_B(i)              ((int)((((mrb_code)(i)) >> 14) & 0x1ff))
-#define GETARG_C(i)              ((int)((((mrb_code)(i)) >>  7) & 0x7f))
-#define GETARG_Bx(i)             ((int)((((mrb_code)(i)) >>  7) & 0xffff))
-#define GETARG_sBx(i)            ((int)(GETARG_Bx(i)-MAXARG_sBx))
-#define GETARG_Ax(i)             ((int32_t)((((mrb_code)(i)) >>  7) & 0x1ffffff))
-#define GETARG_UNPACK_b(i,n1,n2) ((int)((((mrb_code)(i)) >> (7+(n2))) & (((1<<(n1))-1))))
-#define GETARG_UNPACK_c(i,n1,n2) ((int)((((mrb_code)(i)) >> 7) & (((1<<(n2))-1))))
-#define GETARG_b(i)              GETARG_UNPACK_b(i,14,2)
-#define GETARG_c(i)              GETARG_UNPACK_c(i,14,2)
-
-#define MKOPCODE(op)          ((op) & 0x7f)
-#define MKARG_A(c)            ((mrb_code)((c) & 0x1ff) << 23)
-#define MKARG_B(c)            ((mrb_code)((c) & 0x1ff) << 14)
-#define MKARG_C(c)            (((c) & 0x7f) <<  7)
-#define MKARG_Bx(v)           ((mrb_code)((v) & 0xffff) << 7)
-#define MKARG_sBx(v)          MKARG_Bx((v)+MAXARG_sBx)
-#define MKARG_Ax(v)           ((mrb_code)((v) & 0x1ffffff) << 7)
-#define MKARG_PACK(b,n1,c,n2) ((((b) & ((1<<n1)-1)) << (7+n2))|(((c) & ((1<<n2)-1)) << 7))
-#define MKARG_bc(b,c)         MKARG_PACK(b,14,c,2)
-
-#define MKOP_A(op,a)        (MKOPCODE(op)|MKARG_A(a))
-#define MKOP_AB(op,a,b)     (MKOP_A(op,a)|MKARG_B(b))
-#define MKOP_ABC(op,a,b,c)  (MKOP_AB(op,a,b)|MKARG_C(c))
-#define MKOP_ABx(op,a,bx)   (MKOP_A(op,a)|MKARG_Bx(bx))
-#define MKOP_Bx(op,bx)      (MKOPCODE(op)|MKARG_Bx(bx))
-#define MKOP_sBx(op,sbx)    (MKOPCODE(op)|MKARG_sBx(sbx))
-#define MKOP_AsBx(op,a,sbx) (MKOP_A(op,a)|MKARG_sBx(sbx))
-#define MKOP_Ax(op,ax)      (MKOPCODE(op)|MKARG_Ax(ax))
-#define MKOP_Abc(op,a,b,c)  (MKOP_A(op,a)|MKARG_bc(b,c))
-
-enum {
-  /*-----------------------------------------------------------------------
-  operation code  operand description
-  ------------------------------------------------------------------------*/
-  OP_NOP=0,/*                                                             */
-  OP_MOVE,/*      A B     R(A) := R(B)                                    */
-  OP_LOADL,/*     A Bx    R(A) := Lit(Bx)                                 */
-  OP_LOADI,/*     A sBx   R(A) := sBx                                     */
-  OP_LOADSYM,/*   A Bx    R(A) := Sym(Bx)                                 */
-  OP_LOADNIL,/*   A       R(A) := nil                                     */
-  OP_LOADSELF,/*  A       R(A) := self                                    */
-  OP_LOADT,/*     A       R(A) := true                                    */
-  OP_LOADF,/*     A       R(A) := false                                   */
-
-  OP_GETGLOBAL,/* A Bx    R(A) := getglobal(Sym(Bx))                      */
-  OP_SETGLOBAL,/* A Bx    setglobal(Sym(Bx), R(A))                        */
-  OP_GETSPECIAL,/*A Bx    R(A) := Special[Bx]                             */
-  OP_SETSPECIAL,/*A Bx    Special[Bx] := R(A)                             */
-  OP_GETIV,/*     A Bx    R(A) := ivget(Sym(Bx))                          */
-  OP_SETIV,/*     A Bx    ivset(Sym(Bx),R(A))                             */
-  OP_GETCV,/*     A Bx    R(A) := cvget(Sym(Bx))                          */
-  OP_SETCV,/*     A Bx    cvset(Sym(Bx),R(A))                             */
-  OP_GETCONST,/*  A Bx    R(A) := constget(Sym(Bx))                       */
-  OP_SETCONST,/*  A Bx    constset(Sym(Bx),R(A))                          */
-  OP_GETMCNST,/*  A Bx    R(A) := R(A)::Sym(B)                            */
-  OP_SETMCNST,/*  A Bx    R(A+1)::Sym(B) := R(A)                          */
-  OP_GETUPVAR,/*  A B C   R(A) := uvget(B,C)                              */
-  OP_SETUPVAR,/*  A B C   uvset(B,C,R(A))                                 */
-
-  OP_JMP,/*       sBx     pc+=sBx                                         */
-  OP_JMPIF,/*     A sBx   if R(A) pc+=sBx                                 */
-  OP_JMPNOT,/*    A sBx   if !R(A) pc+=sBx                                */
-  OP_ONERR,/*     sBx     rescue_push(pc+sBx)                             */
-  OP_RESCUE,/*    A       clear(exc); R(A) := exception (ignore when A=0) */
-  OP_POPERR,/*    A       A.times{rescue_pop()}                           */
-  OP_RAISE,/*     A       raise(R(A))                                     */
-  OP_EPUSH,/*     Bx      ensure_push(SEQ[Bx])                            */
-  OP_EPOP,/*      A       A.times{ensure_pop().call}                      */
-
-  OP_SEND,/*      A B C   R(A) := call(R(A),mSym(B),R(A+1),...,R(A+C))    */
-  OP_SENDB,/*     A B C   R(A) := call(R(A),mSym(B),R(A+1),...,R(A+C),&R(A+C+1))*/
-  OP_FSEND,/*     A B C   R(A) := fcall(R(A),mSym(B),R(A+1),...,R(A+C-1)) */
-  OP_CALL,/*      A B C   R(A) := self.call(R(A),.., R(A+C))              */
-  OP_SUPER,/*     A B C   R(A) := super(R(A+1),... ,R(A+C-1))             */
-  OP_ARGARY,/*    A Bx    R(A) := argument array (16=6:1:5:4)             */
-  OP_ENTER,/*     Ax      arg setup according to flags (24=5:5:1:5:5:1:1) */
-  OP_KARG,/*      A B C   R(A) := kdict[mSym(B)]; if C kdict.rm(mSym(B))  */
-  OP_KDICT,/*     A C     R(A) := kdict                                   */
-
-  OP_RETURN,/*    A B     return R(A) (B=normal,in-block return/break)    */
-  OP_TAILCALL,/*  A B C   return call(R(A),mSym(B),*R(C))                 */
-  OP_BLKPUSH,/*   A Bx    R(A) := block (16=6:1:5:4)                      */
-
-  OP_ADD,/*       A B C   R(A) := R(A)+R(A+1) (mSyms[B]=:+,C=1)           */
-  OP_ADDI,/*      A B C   R(A) := R(A)+C (mSyms[B]=:+)                    */
-  OP_SUB,/*       A B C   R(A) := R(A)-R(A+1) (mSyms[B]=:-,C=1)           */
-  OP_SUBI,/*      A B C   R(A) := R(A)-C (mSyms[B]=:-)                    */
-  OP_MUL,/*       A B C   R(A) := R(A)*R(A+1) (mSyms[B]=:*,C=1)           */
-  OP_DIV,/*       A B C   R(A) := R(A)/R(A+1) (mSyms[B]=:/,C=1)           */
-  OP_EQ,/*        A B C   R(A) := R(A)==R(A+1) (mSyms[B]=:==,C=1)         */
-  OP_LT,/*        A B C   R(A) := R(A)<R(A+1)  (mSyms[B]=:<,C=1)          */
-  OP_LE,/*        A B C   R(A) := R(A)<=R(A+1) (mSyms[B]=:<=,C=1)         */
-  OP_GT,/*        A B C   R(A) := R(A)>R(A+1)  (mSyms[B]=:>,C=1)          */
-  OP_GE,/*        A B C   R(A) := R(A)>=R(A+1) (mSyms[B]=:>=,C=1)         */
-
-  OP_ARRAY,/*     A B C   R(A) := ary_new(R(B),R(B+1)..R(B+C))            */
-  OP_ARYCAT,/*    A B     ary_cat(R(A),R(B))                              */
-  OP_ARYPUSH,/*   A B     ary_push(R(A),R(B))                             */
-  OP_AREF,/*      A B C   R(A) := R(B)[C]                                 */
-  OP_ASET,/*      A B C   R(B)[C] := R(A)                                 */
-  OP_APOST,/*     A B C   *R(A),R(A+1)..R(A+C) := R(A)                    */
-
-  OP_STRING,/*    A Bx    R(A) := str_dup(Lit(Bx))                        */
-  OP_STRCAT,/*    A B     str_cat(R(A),R(B))                              */
-
-  OP_HASH,/*      A B C   R(A) := hash_new(R(B),R(B+1)..R(B+C))           */
-  OP_LAMBDA,/*    A Bz Cz R(A) := lambda(SEQ[Bz],Cm)                      */
-  OP_RANGE,/*     A B C   R(A) := range_new(R(B),R(B+1),C)                */
-
-  OP_OCLASS,/*    A       R(A) := ::Object                                */
-  OP_CLASS,/*     A B     R(A) := newclass(R(A),mSym(B),R(A+1))           */
-  OP_MODULE,/*    A B     R(A) := newmodule(R(A),mSym(B))                 */
-  OP_EXEC,/*      A Bx    R(A) := blockexec(R(A),SEQ[Bx])                 */
-  OP_METHOD,/*    A B     R(A).newmethod(mSym(B),R(A+1))                  */
-  OP_SCLASS,/*    A B     R(A) := R(B).singleton_class                    */
-  OP_TCLASS,/*    A       R(A) := target_class                            */
-
-  OP_DEBUG,/*     A       print R(A)                                      */
-  OP_STOP,/*              stop VM                                         */
-  OP_ERR,/*       Bx      raise RuntimeError with message Lit(Bx)         */
-
-  OP_RSVD1,/*             reserved instruction #1                         */
-  OP_RSVD2,/*             reserved instruction #2                         */
-  OP_RSVD3,/*             reserved instruction #3                         */
-  OP_RSVD4,/*             reserved instruction #4                         */
-  OP_RSVD5,/*             reserved instruction #5                         */
-};
-
-#define OP_L_STRICT  1
-#define OP_L_CAPTURE 2
-#define OP_L_METHOD  OP_L_STRICT
-#define OP_L_LAMBDA  (OP_L_STRICT|OP_L_CAPTURE)
-#define OP_L_BLOCK   OP_L_CAPTURE
-
-#define OP_R_NORMAL 0
-#define OP_R_BREAK  1
-#define OP_R_RETURN 2
-
-#endif  /* OPCODE_H */

  Deleted: vendor/mruby-eeac4be/src/parse.c (+0 -11878) 100644
===================================================================
--- vendor/mruby-eeac4be/src/parse.c    2014-06-08 19:01:14 +0900 (e1e1102)
+++ /dev/null
@@ -1,11878 +0,0 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
-
-/* Bison implementation for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-   
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-   
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "2.7.12-4996"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 1
-
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* Copy the first part of user declarations.  */
-/* Line 371 of yacc.c  */
-#line 7 "src/parse.y"
-
-#undef PARSER_DEBUG
-
-#define YYDEBUG 1
-#define YYERROR_VERBOSE 1
-/*
- * Force yacc to use our memory management.  This is a little evil because
- * the macros assume that "parser_state *p" is in scope
- */
-#define YYMALLOC(n)    mrb_malloc(p->mrb, (n))
-#define YYFREE(o)      mrb_free(p->mrb, (o))
-#define YYSTACK_USE_ALLOCA 0
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include "mruby.h"
-#include "mruby/compile.h"
-#include "mruby/proc.h"
-#include "node.h"
-
-#define YYLEX_PARAM p
-
-typedef mrb_ast_node node;
-typedef struct mrb_parser_state parser_state;
-typedef struct mrb_parser_heredoc_info parser_heredoc_info;
-
-static int yylex(void *lval, parser_state *p);
-static void yyerror(parser_state *p, const char *s);
-static void yywarn(parser_state *p, const char *s);
-static void yywarning(parser_state *p, const char *s);
-static void backref_error(parser_state *p, node *n);
-
-#ifndef isascii
-#define isascii(c) (((c) & ~0x7f) == 0)
-#endif
-
-#define identchar(c) (isalnum(c) || (c) == '_' || !isascii(c))
-
-typedef unsigned int stack_type;
-
-#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
-#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
-#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
-#define BITSTACK_SET_P(stack)   ((stack)&1)
-
-#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
-#define COND_POP()      BITSTACK_POP(p->cond_stack)
-#define COND_LEXPOP()   BITSTACK_LEXPOP(p->cond_stack)
-#define COND_P()        BITSTACK_SET_P(p->cond_stack)
-
-#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
-#define CMDARG_POP()    BITSTACK_POP(p->cmdarg_stack)
-#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
-#define CMDARG_P()      BITSTACK_SET_P(p->cmdarg_stack)
-
-#define sym(x) ((mrb_sym)(intptr_t)(x))
-#define nsym(x) ((node*)(intptr_t)(x))
-
-static inline mrb_sym
-intern_gen(parser_state *p, const char *s)
-{
-  return mrb_intern(p->mrb, s);
-}
-#define intern(s) intern_gen(p,(s))
-
-static inline mrb_sym
-intern_gen2(parser_state *p, const char *s, size_t len)
-{
-  return mrb_intern2(p->mrb, s, len);
-}
-#define intern2(s,len) intern_gen2(p,(s),(len))
-
-static inline mrb_sym
-intern_gen_c(parser_state *p, const char c)
-{
-  return mrb_intern2(p->mrb, &c, 1);
-}
-#define intern_c(c) intern_gen_c(p,(c))
-
-static void
-cons_free_gen(parser_state *p, node *cons)
-{
-  cons->cdr = p->cells;
-  p->cells = cons;
-}
-#define cons_free(c) cons_free_gen(p, (c))
-
-static void*
-parser_palloc(parser_state *p, size_t size)
-{
-  void *m = mrb_pool_alloc(p->pool, size);
-
-  if (!m) {
-    longjmp(p->jmp, 1);
-  }
-  return m;
-}
-
-static node*
-cons_gen(parser_state *p, node *car, node *cdr)
-{
-  node *c;
-
-  if (p->cells) {
-    c = p->cells;
-    p->cells = p->cells->cdr;
-  }
-  else {
-    c = (node *)parser_palloc(p, sizeof(mrb_ast_node));
-  }
-
-  c->car = car;
-  c->cdr = cdr;
-  c->lineno = p->lineno;
-  c->filename_index = p->current_filename_index;
-  return c;
-}
-#define cons(a,b) cons_gen(p,(a),(b))
-
-static node*
-list1_gen(parser_state *p, node *a)
-{
-  return cons(a, 0);
-}
-#define list1(a) list1_gen(p, (a))
-
-static node*
-list2_gen(parser_state *p, node *a, node *b)
-{
-  return cons(a, cons(b,0));
-}
-#define list2(a,b) list2_gen(p, (a),(b))
-
-static node*
-list3_gen(parser_state *p, node *a, node *b, node *c)
-{
-  return cons(a, cons(b, cons(c,0)));
-}
-#define list3(a,b,c) list3_gen(p, (a),(b),(c))
-
-static node*
-list4_gen(parser_state *p, node *a, node *b, node *c, node *d)
-{
-  return cons(a, cons(b, cons(c, cons(d, 0))));
-}
-#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
-
-static node*
-list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e)
-{
-  return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
-}
-#define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
-
-static node*
-list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f)
-{
-  return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0))))));
-}
-#define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f))
-
-static node*
-append_gen(parser_state *p, node *a, node *b)
-{
-  node *c = a;
-
-  if (!a) return b;
-  while (c->cdr) {
-    c = c->cdr;
-  }
-  if (b) {
-    c->cdr = b;
-  }
-  return a;
-}
-#define append(a,b) append_gen(p,(a),(b))
-#define push(a,b) append_gen(p,(a),list1(b))
-
-static char*
-parser_strndup(parser_state *p, const char *s, size_t len)
-{
-  char *b = (char *)parser_palloc(p, len+1);
-
-  memcpy(b, s, len);
-  b[len] = '\0';
-  return b;
-}
-#define strndup(s,len) parser_strndup(p, s, len)
-
-static char*
-parser_strdup(parser_state *p, const char *s)
-{
-  return parser_strndup(p, s, strlen(s));
-}
-#undef strdup
-#define strdup(s) parser_strdup(p, s)
-
-// xxx -----------------------------
-
-static node*
-local_switch(parser_state *p)
-{
-  node *prev = p->locals;
-
-  p->locals = cons(0, 0);
-  return prev;
-}
-
-static void
-local_resume(parser_state *p, node *prev)
-{
-  p->locals = prev;
-}
-
-static void
-local_nest(parser_state *p)
-{
-  p->locals = cons(0, p->locals);
-}
-
-static void
-local_unnest(parser_state *p)
-{
-  p->locals = p->locals->cdr;
-}
-
-static int
-local_var_p(parser_state *p, mrb_sym sym)
-{
-  node *l = p->locals;
-
-  while (l) {
-    node *n = l->car;
-    while (n) {
-      if (sym(n->car) == sym) return 1;
-      n = n->cdr;
-    }
-    l = l->cdr;
-  }
-  return 0;
-}
-
-static void
-local_add_f(parser_state *p, mrb_sym sym)
-{
-  p->locals->car = push(p->locals->car, nsym(sym));
-}
-
-static void
-local_add(parser_state *p, mrb_sym sym)
-{
-  if (!local_var_p(p, sym)) {
-    local_add_f(p, sym);
-  }
-}
-
-// (:scope (vars..) (prog...))
-static node*
-new_scope(parser_state *p, node *body)
-{
-  return cons((node*)NODE_SCOPE, cons(p->locals->car, body));
-}
-
-// (:begin prog...)
-static node*
-new_begin(parser_state *p, node *body)
-{
-  if (body)
-    return list2((node*)NODE_BEGIN, body);
-  return cons((node*)NODE_BEGIN, 0);
-}
-
-#define newline_node(n) (n)
-
-// (:rescue body rescue else)
-static node*
-new_rescue(parser_state *p, node *body, node *resq, node *els)
-{
-  return list4((node*)NODE_RESCUE, body, resq, els);
-}
-
-// (:ensure body ensure)
-static node*
-new_ensure(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_ENSURE, cons(a, cons(0, b)));
-}
-
-// (:nil)
-static node*
-new_nil(parser_state *p)
-{
-  return list1((node*)NODE_NIL);
-}
-
-// (:true)
-static node*
-new_true(parser_state *p)
-{
-  return list1((node*)NODE_TRUE);
-}
-
-// (:false)
-static node*
-new_false(parser_state *p)
-{
-  return list1((node*)NODE_FALSE);
-}
-
-// (:alias new old)
-static node*
-new_alias(parser_state *p, mrb_sym a, mrb_sym b)
-{
-  return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
-}
-
-// (:if cond then else)
-static node*
-new_if(parser_state *p, node *a, node *b, node *c)
-{
-  return list4((node*)NODE_IF, a, b, c);
-}
-
-// (:unless cond then else)
-static node*
-new_unless(parser_state *p, node *a, node *b, node *c)
-{
-  return list4((node*)NODE_IF, a, c, b);
-}
-
-// (:while cond body)
-static node*
-new_while(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_WHILE, cons(a, b));
-}
-
-// (:until cond body)
-static node*
-new_until(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_UNTIL, cons(a, b));
-}
-
-// (:for var obj body)
-static node*
-new_for(parser_state *p, node *v, node *o, node *b)
-{
-  return list4((node*)NODE_FOR, v, o, b);
-}
-
-// (:case a ((when ...) body) ((when...) body))
-static node*
-new_case(parser_state *p, node *a, node *b)
-{
-  node *n = list2((node*)NODE_CASE, a);
-  node *n2 = n;
-
-  while (n2->cdr) {
-    n2 = n2->cdr;
-  }
-  n2->cdr = b;
-  return n;
-}
-
-// (:postexe a)
-static node*
-new_postexe(parser_state *p, node *a)
-{
-  return cons((node*)NODE_POSTEXE, a);
-}
-
-// (:self)
-static node*
-new_self(parser_state *p)
-{
-  return list1((node*)NODE_SELF);
-}
-
-// (:call a b c)
-static node*
-new_call(parser_state *p, node *a, mrb_sym b, node *c)
-{
-  return list4((node*)NODE_CALL, a, nsym(b), c);
-}
-
-// (:fcall self mid args)
-static node*
-new_fcall(parser_state *p, mrb_sym b, node *c)
-{
-  return list4((node*)NODE_FCALL, new_self(p), nsym(b), c);
-}
-
-// (:super . c)
-static node*
-new_super(parser_state *p, node *c)
-{
-  return cons((node*)NODE_SUPER, c);
-}
-
-// (:zsuper)
-static node*
-new_zsuper(parser_state *p)
-{
-  return list1((node*)NODE_ZSUPER);
-}
-
-// (:yield . c)
-static node*
-new_yield(parser_state *p, node *c)
-{
-  if (c) {
-    if (c->cdr) {
-      yyerror(p, "both block arg and actual block given");
-    }
-    return cons((node*)NODE_YIELD, c->car);
-  }
-  return cons((node*)NODE_YIELD, 0);
-}
-
-// (:return . c)
-static node*
-new_return(parser_state *p, node *c)
-{
-  return cons((node*)NODE_RETURN, c);
-}
-
-// (:break . c)
-static node*
-new_break(parser_state *p, node *c)
-{
-  return cons((node*)NODE_BREAK, c);
-}
-
-// (:next . c)
-static node*
-new_next(parser_state *p, node *c)
-{
-  return cons((node*)NODE_NEXT, c);
-}
-
-// (:redo)
-static node*
-new_redo(parser_state *p)
-{
-  return list1((node*)NODE_REDO);
-}
-
-// (:retry)
-static node*
-new_retry(parser_state *p)
-{
-  return list1((node*)NODE_RETRY);
-}
-
-// (:dot2 a b)
-static node*
-new_dot2(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_DOT2, cons(a, b));
-}
-
-// (:dot3 a b)
-static node*
-new_dot3(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_DOT3, cons(a, b));
-}
-
-// (:colon2 b c)
-static node*
-new_colon2(parser_state *p, node *b, mrb_sym c)
-{
-  return cons((node*)NODE_COLON2, cons(b, nsym(c)));
-}
-
-// (:colon3 . c)
-static node*
-new_colon3(parser_state *p, mrb_sym c)
-{
-  return cons((node*)NODE_COLON3, nsym(c));
-}
-
-// (:and a b)
-static node*
-new_and(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_AND, cons(a, b));
-}
-
-// (:or a b)
-static node*
-new_or(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_OR, cons(a, b));
-}
-
-// (:array a...)
-static node*
-new_array(parser_state *p, node *a)
-{
-  return cons((node*)NODE_ARRAY, a);
-}
-
-// (:splat . a)
-static node*
-new_splat(parser_state *p, node *a)
-{
-  return cons((node*)NODE_SPLAT, a);
-}
-
-// (:hash (k . v) (k . v)...)
-static node*
-new_hash(parser_state *p, node *a)
-{
-  return cons((node*)NODE_HASH, a);
-}
-
-// (:sym . a)
-static node*
-new_sym(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_SYM, nsym(sym));
-}
-
-static mrb_sym
-new_strsym(parser_state *p, node* str)
-{
-  const char *s = (const char*)str->cdr->car;
-  size_t len = (size_t)str->cdr->cdr;
-
-  return mrb_intern2(p->mrb, s, len);
-}
-
-// (:lvar . a)
-static node*
-new_lvar(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_LVAR, nsym(sym));
-}
-
-// (:gvar . a)
-static node*
-new_gvar(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_GVAR, nsym(sym));
-}
-
-// (:ivar . a)
-static node*
-new_ivar(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_IVAR, nsym(sym));
-}
-
-// (:cvar . a)
-static node*
-new_cvar(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_CVAR, nsym(sym));
-}
-
-// (:const . a)
-static node*
-new_const(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_CONST, nsym(sym));
-}
-
-// (:undef a...)
-static node*
-new_undef(parser_state *p, mrb_sym sym)
-{
-  return list2((node*)NODE_UNDEF, nsym(sym));
-}
-
-// (:class class super body)
-static node*
-new_class(parser_state *p, node *c, node *s, node *b)
-{
-  return list4((node*)NODE_CLASS, c, s, cons(p->locals->car, b));
-}
-
-// (:sclass obj body)
-static node*
-new_sclass(parser_state *p, node *o, node *b)
-{
-  return list3((node*)NODE_SCLASS, o, cons(p->locals->car, b));
-}
-
-// (:module module body)
-static node*
-new_module(parser_state *p, node *m, node *b)
-{
-  return list3((node*)NODE_MODULE, m, cons(p->locals->car, b));
-}
-
-// (:def m lv (arg . body))
-static node*
-new_def(parser_state *p, mrb_sym m, node *a, node *b)
-{
-  return list5((node*)NODE_DEF, nsym(m), p->locals->car, a, b);
-}
-
-// (:sdef obj m lv (arg . body))
-static node*
-new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
-{
-  return list6((node*)NODE_SDEF, o, nsym(m), p->locals->car, a, b);
-}
-
-// (:arg . sym)
-static node*
-new_arg(parser_state *p, mrb_sym sym)
-{
-  return cons((node*)NODE_ARG, nsym(sym));
-}
-
-// (m o r m2 b)
-// m: (a b c)
-// o: ((a . e1) (b . e2))
-// r: a
-// m2: (a b c)
-// b: a
-static node*
-new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, mrb_sym blk)
-{
-  node *n;
-
-  n = cons(m2, nsym(blk));
-  n = cons(nsym(rest), n);
-  n = cons(opt, n);
-  return cons(m, n);
-}
-
-// (:block_arg . a)
-static node*
-new_block_arg(parser_state *p, node *a)
-{
-  return cons((node*)NODE_BLOCK_ARG, a);
-}
-
-// (:block arg body)
-static node*
-new_block(parser_state *p, node *a, node *b)
-{
-  return list4((node*)NODE_BLOCK, p->locals->car, a, b);
-}
-
-// (:lambda arg body)
-static node*
-new_lambda(parser_state *p, node *a, node *b)
-{
-  return list4((node*)NODE_LAMBDA, p->locals->car, a, b);
-}
-
-// (:asgn lhs rhs)
-static node*
-new_asgn(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_ASGN, cons(a, b));
-}
-
-// (:masgn mlhs=(pre rest post)  mrhs)
-static node*
-new_masgn(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_MASGN, cons(a, b));
-}
-
-// (:asgn lhs rhs)
-static node*
-new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
-{
-  return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
-}
-
-// (:int . i)
-static node*
-new_int(parser_state *p, const char *s, int base)
-{
-  return list3((node*)NODE_INT, (node*)strdup(s), (node*)(intptr_t)base);
-}
-
-// (:float . i)
-static node*
-new_float(parser_state *p, const char *s)
-{
-  return cons((node*)NODE_FLOAT, (node*)strdup(s));
-}
-
-// (:str . (s . len))
-static node*
-new_str(parser_state *p, const char *s, int len)
-{
-  return cons((node*)NODE_STR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
-}
-
-// (:dstr . a)
-static node*
-new_dstr(parser_state *p, node *a)
-{
-  return cons((node*)NODE_DSTR, a);
-}
-
-// (:str . (s . len))
-static node*
-new_xstr(parser_state *p, const char *s, int len)
-{
-  return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
-}
-
-// (:xstr . a)
-static node*
-new_dxstr(parser_state *p, node *a)
-{
-  return cons((node*)NODE_DXSTR, a);
-}
-
-// (:dsym . a)
-static node*
-new_dsym(parser_state *p, node *a)
-{
-  return cons((node*)NODE_DSYM, new_dstr(p, a));
-}
-
-// (:str . (a . a))
-static node*
-new_regx(parser_state *p, const char *p1, const char* p2)
-{
-  return cons((node*)NODE_REGX, cons((node*)p1, (node*)p2));
-}
-
-// (:dregx . a)
-static node*
-new_dregx(parser_state *p, node *a, node *b)
-{
-  return cons((node*)NODE_DREGX, cons(a, b));
-}
-
-// (:backref . n)
-static node*
-new_back_ref(parser_state *p, int n)
-{
-  return cons((node*)NODE_BACK_REF, (node*)(intptr_t)n);
-}
-
-// (:nthref . n)
-static node*
-new_nth_ref(parser_state *p, int n)
-{
-  return cons((node*)NODE_NTH_REF, (node*)(intptr_t)n);
-}
-
-// (:heredoc . a)
-static node*
-new_heredoc(parser_state *p)
-{
-  parser_heredoc_info *inf = (parser_heredoc_info *)parser_palloc(p, sizeof(parser_heredoc_info));
-  return cons((node*)NODE_HEREDOC, (node*)inf);
-}
-
-static void
-new_bv(parser_state *p, mrb_sym id)
-{
-}
-
-static node*
-new_literal_delim(parser_state *p)
-{
-  return cons((node*)NODE_LITERAL_DELIM, 0);
-}
-
-// (:words . a)
-static node*
-new_words(parser_state *p, node *a)
-{
-  return cons((node*)NODE_WORDS, a);
-}
-
-// (:symbols . a)
-static node*
-new_symbols(parser_state *p, node *a)
-{
-  return cons((node*)NODE_SYMBOLS, a);
-}
-
-// xxx -----------------------------
-
-// (:call a op)
-static node*
-call_uni_op(parser_state *p, node *recv, char *m)
-{
-  return new_call(p, recv, intern(m), 0);
-}
-
-// (:call a op b)
-static node*
-call_bin_op(parser_state *p, node *recv, char *m, node *arg1)
-{
-  return new_call(p, recv, intern(m), list1(list1(arg1)));
-}
-
-static void
-args_with_block(parser_state *p, node *a, node *b)
-{
-  if (b) {
-    if (a->cdr) {
-      yyerror(p, "both block arg and actual block given");
-    }
-    a->cdr = b;
-  }
-}
-
-static void
-call_with_block(parser_state *p, node *a, node *b)
-{
-  node *n;
-
-  if (a->car == (node*)NODE_SUPER ||
-      a->car == (node*)NODE_ZSUPER) {
-    if (!a->cdr) a->cdr = cons(0, b);
-    else {
-      args_with_block(p, a->cdr, b);
-    }
-  }
-  else {
-    n = a->cdr->cdr->cdr;
-    if (!n->car) n->car = cons(0, b);
-    else {
-      args_with_block(p, n->car, b);
-    }
-  }
-}
-
-static node*
-negate_lit(parser_state *p, node *n)
-{
-  return cons((node*)NODE_NEGATE, n);
-}
-
-static node*
-cond(node *n)
-{
-  return n;
-}
-
-static node*
-ret_args(parser_state *p, node *n)
-{
-  if (n->cdr) {
-    yyerror(p, "block argument should not be given");
-    return NULL;
-  }
-  if (!n->car->cdr) return n->car->car;
-  return new_array(p, n->car);
-}
-
-static void
-assignable(parser_state *p, node *lhs)
-{
-  if ((int)(intptr_t)lhs->car == NODE_LVAR) {
-    local_add(p, sym(lhs->cdr));
-  }
-}
-
-static node*
-var_reference(parser_state *p, node *lhs)
-{
-  node *n;
-
-  if ((int)(intptr_t)lhs->car == NODE_LVAR) {
-    if (!local_var_p(p, sym(lhs->cdr))) {
-      n = new_fcall(p, sym(lhs->cdr), 0);
-      cons_free(lhs);
-      return n;
-    }
-  }
-
-  return lhs;
-}
-
-typedef enum mrb_string_type  string_type;
-
-static node*
-new_strterm(parser_state *p, string_type type, int term, int paren)
-{
-  return cons((node*)(intptr_t)type, cons((node*)0, cons((node*)(intptr_t)paren, (node*)(intptr_t)term)));
-}
-
-static void
-end_strterm(parser_state *p)
-{
-  cons_free(p->lex_strterm->cdr->cdr);
-  cons_free(p->lex_strterm->cdr);
-  cons_free(p->lex_strterm);
-  p->lex_strterm = NULL;
-}
-
-parser_heredoc_info *
-parsing_heredoc_inf(parser_state *p)
-{
-  node *nd = p->parsing_heredoc;
-  if (nd == NULL)
-    return NULL;
-  /* mrb_assert(nd->car->car == NODE_HEREDOC); */
-  return (parser_heredoc_info*)nd->car->cdr;
-}
-
-static void
-heredoc_end(parser_state *p)
-{
-  p->parsing_heredoc = p->parsing_heredoc->cdr;
-  if (p->parsing_heredoc == NULL) {
-    p->lstate = EXPR_BEG;
-    p->cmd_start = TRUE;
-    end_strterm(p);
-    p->heredoc_end_now = TRUE;
-  } else {
-    /* next heredoc */
-    p->lex_strterm->car = (node*)(intptr_t)parsing_heredoc_inf(p)->type;
-  }
-}
-#define is_strterm_type(p,str_func) ((int)(intptr_t)((p)->lex_strterm->car) & (str_func))
-
-// xxx -----------------------------
-
-
-/* Line 371 of yacc.c  */
-#line 999 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
-
-# ifndef YY_NULL
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
-#  else
-#   define YY_NULL 0
-#  endif
-# endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     keyword_class = 258,
-     keyword_module = 259,
-     keyword_def = 260,
-     keyword_undef = 261,
-     keyword_begin = 262,
-     keyword_rescue = 263,
-     keyword_ensure = 264,
-     keyword_end = 265,
-     keyword_if = 266,
-     keyword_unless = 267,
-     keyword_then = 268,
-     keyword_elsif = 269,
-     keyword_else = 270,
-     keyword_case = 271,
-     keyword_when = 272,
-     keyword_while = 273,
-     keyword_until = 274,
-     keyword_for = 275,
-     keyword_break = 276,
-     keyword_next = 277,
-     keyword_redo = 278,
-     keyword_retry = 279,
-     keyword_in = 280,
-     keyword_do = 281,
-     keyword_do_cond = 282,
-     keyword_do_block = 283,
-     keyword_do_LAMBDA = 284,
-     keyword_return = 285,
-     keyword_yield = 286,
-     keyword_super = 287,
-     keyword_self = 288,
-     keyword_nil = 289,
-     keyword_true = 290,
-     keyword_false = 291,
-     keyword_and = 292,
-     keyword_or = 293,
-     keyword_not = 294,
-     modifier_if = 295,
-     modifier_unless = 296,
-     modifier_while = 297,
-     modifier_until = 298,
-     modifier_rescue = 299,
-     keyword_alias = 300,
-     keyword_BEGIN = 301,
-     keyword_END = 302,
-     keyword__LINE__ = 303,
-     keyword__FILE__ = 304,
-     keyword__ENCODING__ = 305,
-     tIDENTIFIER = 306,
-     tFID = 307,
-     tGVAR = 308,
-     tIVAR = 309,
-     tCONSTANT = 310,
-     tCVAR = 311,
-     tLABEL = 312,
-     tINTEGER = 313,
-     tFLOAT = 314,
-     tCHAR = 315,
-     tXSTRING = 316,
-     tREGEXP = 317,
-     tSTRING = 318,
-     tSTRING_PART = 319,
-     tSTRING_MID = 320,
-     tNTH_REF = 321,
-     tBACK_REF = 322,
-     tREGEXP_END = 323,
-     tUPLUS = 324,
-     tUMINUS = 325,
-     tPOW = 326,
-     tCMP = 327,
-     tEQ = 328,
-     tEQQ = 329,
-     tNEQ = 330,
-     tGEQ = 331,
-     tLEQ = 332,
-     tANDOP = 333,
-     tOROP = 334,
-     tMATCH = 335,
-     tNMATCH = 336,
-     tDOT2 = 337,
-     tDOT3 = 338,
-     tAREF = 339,
-     tASET = 340,
-     tLSHFT = 341,
-     tRSHFT = 342,
-     tCOLON2 = 343,
-     tCOLON3 = 344,
-     tOP_ASGN = 345,
-     tASSOC = 346,
-     tLPAREN = 347,
-     tLPAREN_ARG = 348,
-     tRPAREN = 349,
-     tLBRACK = 350,
-     tLBRACE = 351,
-     tLBRACE_ARG = 352,
-     tSTAR = 353,
-     tAMPER = 354,
-     tLAMBDA = 355,
-     tSYMBEG = 356,
-     tREGEXP_BEG = 357,
-     tWORDS_BEG = 358,
-     tSYMBOLS_BEG = 359,
-     tSTRING_BEG = 360,
-     tXSTRING_BEG = 361,
-     tSTRING_DVAR = 362,
-     tLAMBEG = 363,
-     tHEREDOC_BEG = 364,
-     tHEREDOC_END = 365,
-     tLITERAL_DELIM = 366,
-     tLOWEST = 367,
-     tUMINUS_NUM = 368,
-     idNULL = 369,
-     idRespond_to = 370,
-     idIFUNC = 371,
-     idCFUNC = 372,
-     id_core_set_method_alias = 373,
-     id_core_set_variable_alias = 374,
-     id_core_undef_method = 375,
-     id_core_define_method = 376,
-     id_core_define_singleton_method = 377,
-     id_core_set_postexe = 378,
-     tLAST_TOKEN = 379
-   };
-#endif
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-{
-/* Line 387 of yacc.c  */
-#line 942 "src/parse.y"
-
-    node *nd;
-    mrb_sym id;
-    int num;
-    unsigned int stack;
-    const struct vtable *vars;
-
-
-/* Line 387 of yacc.c  */
-#line 1172 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (parser_state *p);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
-
-/* Copy the second part of user declarations.  */
-
-/* Line 390 of yacc.c  */
-#line 1199 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
-
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(N) (N)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
-    int yyi;
-#endif
-{
-  return yyi;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-       && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
-
-#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (YYID (0))
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  3
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   10895
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  151
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  154
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  544
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  956
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   379
-
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     150,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   127,     2,     2,     2,   125,   120,     2,
-     146,   147,   123,   121,   144,   122,   143,   124,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   115,   149,
-     117,   113,   116,   114,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   142,     2,   148,   119,     2,   145,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   140,   118,   141,   128,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   126,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     7,    10,    12,    14,    18,    21,
-      23,    24,    30,    35,    38,    40,    42,    46,    49,    50,
-      55,    58,    62,    66,    70,    74,    78,    83,    85,    89,
-      93,   100,   106,   112,   118,   124,   128,   132,   136,   140,
-     142,   146,   150,   152,   156,   160,   164,   167,   169,   171,
-     173,   175,   177,   182,   183,   189,   192,   196,   201,   207,
-     212,   218,   221,   224,   227,   230,   233,   235,   239,   241,
-     245,   247,   250,   254,   260,   263,   268,   271,   276,   278,
-     282,   284,   288,   291,   295,   297,   300,   302,   307,   311,
-     315,   319,   323,   326,   328,   330,   335,   339,   343,   347,
-     351,   354,   356,   358,   360,   363,   365,   369,   371,   373,
-     375,   377,   379,   381,   383,   385,   386,   391,   393,   395,
-     397,   399,   401,   403,   405,   407,   409,   411,   413,   415,
-     417,   419,   421,   423,   425,   427,   429,   431,   433,   435,
-     437,   439,   441,   443,   445,   447,   449,   451,   453,   455,
-     457,   459,   461,   463,   465,   467,   469,   471,   473,   475,
-     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
-     497,   499,   501,   503,   505,   507,   509,   511,   513,   515,
-     517,   519,   521,   523,   525,   527,   529,   533,   539,   543,
-     549,   556,   562,   568,   574,   580,   585,   589,   593,   597,
-     601,   605,   609,   613,   617,   621,   626,   631,   634,   637,
-     641,   645,   649,   653,   657,   661,   665,   669,   673,   677,
-     681,   685,   689,   692,   695,   699,   703,   707,   711,   718,
-     720,   722,   724,   727,   732,   735,   739,   741,   743,   745,
-     747,   750,   755,   758,   760,   763,   766,   771,   773,   774,
-     777,   780,   783,   785,   787,   790,   794,   799,   803,   808,
-     811,   813,   815,   817,   819,   821,   823,   825,   827,   828,
-     833,   834,   839,   840,   844,   848,   852,   855,   859,   863,
-     865,   870,   874,   876,   881,   885,   888,   890,   893,   894,
-     899,   906,   913,   914,   915,   923,   924,   925,   933,   939,
-     944,   945,   946,   956,   957,   964,   965,   966,   975,   976,
-     982,   983,   990,   991,   992,  1002,  1004,  1006,  1008,  1010,
-    1012,  1014,  1016,  1019,  1021,  1023,  1025,  1031,  1033,  1036,
-    1038,  1040,  1042,  1046,  1048,  1052,  1054,  1059,  1066,  1070,
-    1076,  1079,  1084,  1086,  1090,  1097,  1106,  1111,  1118,  1123,
-    1126,  1133,  1136,  1141,  1148,  1151,  1156,  1159,  1164,  1166,
-    1168,  1170,  1174,  1176,  1181,  1183,  1188,  1190,  1194,  1196,
-    1198,  1203,  1205,  1209,  1213,  1214,  1220,  1223,  1228,  1234,
-    1240,  1243,  1248,  1253,  1257,  1261,  1265,  1268,  1270,  1275,
-    1276,  1282,  1283,  1289,  1295,  1297,  1299,  1306,  1308,  1310,
-    1312,  1314,  1317,  1319,  1322,  1324,  1326,  1328,  1330,  1332,
-    1334,  1336,  1339,  1343,  1345,  1348,  1350,  1351,  1356,  1358,
-    1361,  1365,  1368,  1372,  1374,  1376,  1378,  1380,  1383,  1385,
-    1388,  1391,  1395,  1397,  1402,  1405,  1407,  1409,  1411,  1413,
-    1415,  1418,  1421,  1425,  1427,  1429,  1432,  1435,  1437,  1439,
-    1441,  1443,  1445,  1447,  1449,  1451,  1453,  1455,  1457,  1459,
-    1461,  1463,  1465,  1467,  1468,  1473,  1476,  1480,  1483,  1490,
-    1499,  1504,  1511,  1516,  1523,  1526,  1531,  1538,  1541,  1546,
-    1549,  1554,  1556,  1557,  1559,  1561,  1563,  1565,  1567,  1569,
-    1571,  1575,  1577,  1581,  1585,  1589,  1591,  1595,  1597,  1601,
-    1603,  1605,  1608,  1610,  1612,  1614,  1617,  1620,  1622,  1624,
-    1625,  1630,  1632,  1635,  1637,  1641,  1645,  1648,  1650,  1652,
-    1654,  1656,  1658,  1660,  1662,  1664,  1666,  1668,  1670,  1672,
-    1673,  1675,  1676,  1678,  1681,  1684,  1685,  1687,  1689,  1691,
-    1693,  1694,  1698,  1700,  1703
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     152,     0,    -1,    -1,   153,   154,    -1,   155,   295,    -1,
-     304,    -1,   156,    -1,   155,   303,   156,    -1,     1,   156,
-      -1,   161,    -1,    -1,    46,   157,   140,   154,   141,    -1,
-     159,   244,   222,   247,    -1,   160,   295,    -1,   304,    -1,
-     161,    -1,   160,   303,   161,    -1,     1,   161,    -1,    -1,
-      45,   182,   162,   182,    -1,     6,   183,    -1,   161,    40,
-     165,    -1,   161,    41,   165,    -1,   161,    42,   165,    -1,
-     161,    43,   165,    -1,   161,    44,   161,    -1,    47,   140,
-     159,   141,    -1,   163,    -1,   171,   113,   166,    -1,   266,
-      90,   166,    -1,   218,   142,   192,   298,    90,   166,    -1,
-     218,   143,    51,    90,   166,    -1,   218,   143,    55,    90,
-     166,    -1,   218,    88,    55,    90,   166,    -1,   218,    88,
-      51,    90,   166,    -1,   268,    90,   166,    -1,   178,   113,
-     199,    -1,   171,   113,   188,    -1,   171,   113,   199,    -1,
-     164,    -1,   178,   113,   166,    -1,   178,   113,   163,    -1,
-     166,    -1,   164,    37,   164,    -1,   164,    38,   164,    -1,
-      39,   296,   164,    -1,   127,   166,    -1,   187,    -1,   164,
-      -1,   170,    -1,   167,    -1,   237,    -1,   237,   294,   292,
-     194,    -1,    -1,    97,   169,   228,   159,   141,    -1,   291,
-     194,    -1,   291,   194,   168,    -1,   218,   143,   292,   194,
-      -1,   218,   143,   292,   194,   168,    -1,   218,    88,   292,
-     194,    -1,   218,    88,   292,   194,   168,    -1,    32,   194,
-      -1,    31,   194,    -1,    30,   193,    -1,    21,   193,    -1,
-      22,   193,    -1,   173,    -1,    92,   172,   297,    -1,   173,
-      -1,    92,   172,   297,    -1,   175,    -1,   175,   174,    -1,
-     175,    98,   177,    -1,   175,    98,   177,   144,   176,    -1,
-     175,    98,    -1,   175,    98,   144,   176,    -1,    98,   177,
-      -1,    98,   177,   144,   176,    -1,    98,    -1,    98,   144,
-     176,    -1,   177,    -1,    92,   172,   297,    -1,   174,   144,
-      -1,   175,   174,   144,    -1,   174,    -1,   175,   174,    -1,
-     265,    -1,   218,   142,   192,   298,    -1,   218,   143,    51,
-      -1,   218,    88,    51,    -1,   218,   143,    55,    -1,   218,
-      88,    55,    -1,    89,    55,    -1,   268,    -1,   265,    -1,
-     218,   142,   192,   298,    -1,   218,   143,    51,    -1,   218,
-      88,    51,    -1,   218,   143,    55,    -1,   218,    88,    55,
-      -1,    89,    55,    -1,   268,    -1,    51,    -1,    55,    -1,
-      89,   179,    -1,   179,    -1,   218,    88,   179,    -1,    51,
-      -1,    55,    -1,    52,    -1,   185,    -1,   186,    -1,   181,
-      -1,   261,    -1,   182,    -1,    -1,   183,   144,   184,   182,
-      -1,   118,    -1,   119,    -1,   120,    -1,    72,    -1,    73,
-      -1,    74,    -1,    80,    -1,    81,    -1,   116,    -1,    76,
-      -1,   117,    -1,    77,    -1,    75,    -1,    86,    -1,    87,
-      -1,   121,    -1,   122,    -1,   123,    -1,    98,    -1,   124,
-      -1,   125,    -1,    71,    -1,   127,    -1,   128,    -1,    69,
-      -1,    70,    -1,    84,    -1,    85,    -1,   145,    -1,    48,
-      -1,    49,    -1,    50,    -1,    46,    -1,    47,    -1,    45,
-      -1,    37,    -1,     7,    -1,    21,    -1,    16,    -1,     3,
-      -1,     5,    -1,    26,    -1,    15,    -1,    14,    -1,    10,
-      -1,     9,    -1,    36,    -1,    20,    -1,    25,    -1,     4,
-      -1,    22,    -1,    34,    -1,    39,    -1,    38,    -1,    23,
-      -1,     8,    -1,    24,    -1,    30,    -1,    33,    -1,    32,
-      -1,    13,    -1,    35,    -1,     6,    -1,    17,    -1,    31,
-      -1,    11,    -1,    12,    -1,    18,    -1,    19,    -1,   178,
-     113,   187,    -1,   178,   113,   187,    44,   187,    -1,   266,
-      90,   187,    -1,   266,    90,   187,    44,   187,    -1,   218,
-     142,   192,   298,    90,   187,    -1,   218,   143,    51,    90,
-     187,    -1,   218,   143,    55,    90,   187,    -1,   218,    88,
-      51,    90,   187,    -1,   218,    88,    55,    90,   187,    -1,
-      89,    55,    90,   187,    -1,   268,    90,   187,    -1,   187,
-      82,   187,    -1,   187,    83,   187,    -1,   187,   121,   187,
-      -1,   187,   122,   187,    -1,   187,   123,   187,    -1,   187,
-     124,   187,    -1,   187,   125,   187,    -1,   187,    71,   187,
-      -1,   126,    58,    71,   187,    -1,   126,    59,    71,   187,
-      -1,    69,   187,    -1,    70,   187,    -1,   187,   118,   187,
-      -1,   187,   119,   187,    -1,   187,   120,   187,    -1,   187,
-      72,   187,    -1,   187,   116,   187,    -1,   187,    76,   187,
-      -1,   187,   117,   187,    -1,   187,    77,   187,    -1,   187,
-      73,   187,    -1,   187,    74,   187,    -1,   187,    75,   187,
-      -1,   187,    80,   187,    -1,   187,    81,   187,    -1,   127,
-     187,    -1,   128,   187,    -1,   187,    86,   187,    -1,   187,
-      87,   187,    -1,   187,    78,   187,    -1,   187,    79,   187,
-      -1,   187,   114,   187,   296,   115,   187,    -1,   200,    -1,
-     187,    -1,   304,    -1,   198,   299,    -1,   198,   144,   289,
-     299,    -1,   289,   299,    -1,   146,   192,   297,    -1,   304,
-      -1,   190,    -1,   304,    -1,   193,    -1,   198,   144,    -1,
-     198,   144,   289,   144,    -1,   289,   144,    -1,   170,    -1,
-     198,   197,    -1,   289,   197,    -1,   198,   144,   289,   197,
-      -1,   196,    -1,    -1,   195,   193,    -1,    99,   188,    -1,
-     144,   196,    -1,   304,    -1,   188,    -1,    98,   188,    -1,
-     198,   144,   188,    -1,   198,   144,    98,   188,    -1,   198,
-     144,   188,    -1,   198,   144,    98,   188,    -1,    98,   188,
-      -1,   248,    -1,   249,    -1,   253,    -1,   254,    -1,   255,
-      -1,   267,    -1,   268,    -1,    52,    -1,    -1,     7,   201,
-     158,    10,    -1,    -1,    93,   164,   202,   297,    -1,    -1,
-      93,   203,   297,    -1,    92,   159,   147,    -1,   218,    88,
-      55,    -1,    89,    55,    -1,    95,   189,   148,    -1,    96,
-     288,   141,    -1,    30,    -1,    31,   146,   193,   297,    -1,
-      31,   146,   297,    -1,    31,    -1,    39,   146,   164,   297,
-      -1,    39,   146,   297,    -1,   291,   239,    -1,   238,    -1,
-     238,   239,    -1,    -1,   100,   204,   233,   234,    -1,    11,
-     165,   219,   159,   221,    10,    -1,    12,   165,   219,   159,
-     222,    10,    -1,    -1,    -1,    18,   205,   165,   220,   206,
-     159,    10,    -1,    -1,    -1,    19,   207,   165,   220,   208,
-     159,    10,    -1,    16,   165,   295,   242,    10,    -1,    16,
-     295,   242,    10,    -1,    -1,    -1,    20,   223,    25,   209,
-     165,   220,   210,   159,    10,    -1,    -1,     3,   180,   269,
-     211,   158,    10,    -1,    -1,    -1,     3,    86,   164,   212,
-     300,   213,   158,    10,    -1,    -1,     4,   180,   214,   158,
-      10,    -1,    -1,     5,   181,   215,   271,   158,    10,    -1,
-      -1,    -1,     5,   286,   294,   216,   181,   217,   271,   158,
-      10,    -1,    21,    -1,    22,    -1,    23,    -1,    24,    -1,
-     200,    -1,   300,    -1,    13,    -1,   300,    13,    -1,   300,
-      -1,    27,    -1,   222,    -1,    14,   165,   219,   159,   221,
-      -1,   304,    -1,    15,   159,    -1,   178,    -1,   171,    -1,
-     274,    -1,    92,   226,   297,    -1,   224,    -1,   225,   144,
-     224,    -1,   225,    -1,   225,   144,    98,   274,    -1,   225,
-     144,    98,   274,   144,   225,    -1,   225,   144,    98,    -1,
-     225,   144,    98,   144,   225,    -1,    98,   274,    -1,    98,
-     274,   144,   225,    -1,    98,    -1,    98,   144,   225,    -1,
-     276,   144,   279,   144,   282,   285,    -1,   276,   144,   279,
-     144,   282,   144,   276,   285,    -1,   276,   144,   279,   285,
-      -1,   276,   144,   279,   144,   276,   285,    -1,   276,   144,
-     282,   285,    -1,   276,   144,    -1,   276,   144,   282,   144,
-     276,   285,    -1,   276,   285,    -1,   279,   144,   282,   285,
-      -1,   279,   144,   282,   144,   276,   285,    -1,   279,   285,
-      -1,   279,   144,   276,   285,    -1,   282,   285,    -1,   282,
-     144,   276,   285,    -1,   284,    -1,   304,    -1,   229,    -1,
-     118,   230,   118,    -1,    79,    -1,   118,   227,   230,   118,
-      -1,   296,    -1,   296,   149,   231,   296,    -1,   232,    -1,
-     231,   144,   232,    -1,    51,    -1,   273,    -1,   146,   272,
-     230,   147,    -1,   272,    -1,   108,   159,   141,    -1,    29,
-     159,    10,    -1,    -1,    28,   236,   228,   159,    10,    -1,
-     170,   235,    -1,   237,   294,   292,   191,    -1,   237,   294,
-     292,   191,   239,    -1,   237,   294,   292,   194,   235,    -1,
-     291,   190,    -1,   218,   143,   292,   191,    -1,   218,    88,
-     292,   190,    -1,   218,    88,   293,    -1,   218,   143,   190,
-      -1,   218,    88,   190,    -1,    32,   190,    -1,    32,    -1,
-     218,   142,   192,   298,    -1,    -1,   140,   240,   228,   159,
-     141,    -1,    -1,    26,   241,   228,   159,    10,    -1,    17,
-     198,   219,   159,   243,    -1,   222,    -1,   242,    -1,     8,
-     245,   246,   219,   159,   244,    -1,   304,    -1,   188,    -1,
-     199,    -1,   304,    -1,    91,   178,    -1,   304,    -1,     9,
-     159,    -1,   304,    -1,   264,    -1,   260,    -1,   259,    -1,
-     263,    -1,    60,    -1,    63,    -1,   105,    63,    -1,   105,
-     250,    63,    -1,   251,    -1,   250,   251,    -1,    65,    -1,
-      -1,    64,   252,   159,   141,    -1,   111,    -1,   106,    61,
-      -1,   106,   250,    61,    -1,   102,    62,    -1,   102,   250,
-      62,    -1,   109,    -1,   304,    -1,   257,    -1,   258,    -1,
-     257,   258,    -1,   110,    -1,   250,   110,    -1,   103,    63,
-      -1,   103,   250,    63,    -1,   261,    -1,   101,   105,   251,
-      63,    -1,   101,   262,    -1,   181,    -1,    54,    -1,    53,
-      -1,    56,    -1,    63,    -1,   105,    63,    -1,   104,    63,
-      -1,   104,   250,    63,    -1,    58,    -1,    59,    -1,   126,
-      58,    -1,   126,    59,    -1,    51,    -1,    54,    -1,    53,
-      -1,    56,    -1,    55,    -1,   265,    -1,   265,    -1,    34,
-      -1,    33,    -1,    35,    -1,    36,    -1,    49,    -1,    48,
-      -1,    66,    -1,    67,    -1,   300,    -1,    -1,   117,   270,
-     165,   300,    -1,     1,   300,    -1,   146,   272,   297,    -1,
-     272,   300,    -1,   276,   144,   280,   144,   282,   285,    -1,
-     276,   144,   280,   144,   282,   144,   276,   285,    -1,   276,
-     144,   280,   285,    -1,   276,   144,   280,   144,   276,   285,
-      -1,   276,   144,   282,   285,    -1,   276,   144,   282,   144,
-     276,   285,    -1,   276,   285,    -1,   280,   144,   282,   285,
-      -1,   280,   144,   282,   144,   276,   285,    -1,   280,   285,
-      -1,   280,   144,   276,   285,    -1,   282,   285,    -1,   282,
-     144,   276,   285,    -1,   284,    -1,    -1,    55,    -1,    54,
-      -1,    53,    -1,    56,    -1,   273,    -1,    51,    -1,   274,
-      -1,    92,   226,   297,    -1,   275,    -1,   276,   144,   275,
-      -1,    51,   113,   188,    -1,    51,   113,   218,    -1,   278,
-      -1,   279,   144,   278,    -1,   277,    -1,   280,   144,   277,
-      -1,   123,    -1,    98,    -1,   281,    51,    -1,   281,    -1,
-     120,    -1,    99,    -1,   283,    51,    -1,   144,   284,    -1,
-     304,    -1,   267,    -1,    -1,   146,   287,   164,   297,    -1,
-     304,    -1,   289,   299,    -1,   290,    -1,   289,   144,   290,
-      -1,   188,    91,   188,    -1,    57,   188,    -1,    51,    -1,
-      55,    -1,    52,    -1,    51,    -1,    55,    -1,    52,    -1,
-     185,    -1,    51,    -1,    52,    -1,   185,    -1,   143,    -1,
-      88,    -1,    -1,   303,    -1,    -1,   301,    -1,   296,   147,
-      -1,   296,   148,    -1,    -1,   301,    -1,   144,    -1,   149,
-      -1,   301,    -1,    -1,   150,   302,   256,    -1,   300,    -1,
-     303,   149,    -1,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,  1100,  1100,  1100,  1110,  1116,  1120,  1124,  1128,  1134,
-    1136,  1135,  1147,  1173,  1179,  1183,  1187,  1191,  1197,  1197,
-    1201,  1205,  1209,  1213,  1217,  1221,  1225,  1230,  1231,  1235,
-    1239,  1243,  1247,  1251,  1256,  1260,  1265,  1269,  1273,  1277,
-    1280,  1284,  1291,  1292,  1296,  1300,  1304,  1308,  1311,  1318,
-    1319,  1322,  1323,  1327,  1326,  1339,  1343,  1348,  1352,  1357,
-    1361,  1366,  1370,  1374,  1378,  1382,  1388,  1392,  1398,  1399,
-    1405,  1409,  1413,  1417,  1421,  1425,  1429,  1433,  1437,  1441,
-    1447,  1448,  1454,  1458,  1464,  1468,  1474,  1478,  1482,  1486,
-    1490,  1494,  1500,  1506,  1513,  1517,  1521,  1525,  1529,  1533,
-    1539,  1545,  1552,  1556,  1559,  1563,  1567,  1573,  1574,  1575,
-    1576,  1581,  1588,  1589,  1592,  1596,  1596,  1602,  1603,  1604,
-    1605,  1606,  1607,  1608,  1609,  1610,  1611,  1612,  1613,  1614,
-    1615,  1616,  1617,  1618,  1619,  1620,  1621,  1622,  1623,  1624,
-    1625,  1626,  1627,  1628,  1629,  1630,  1633,  1633,  1633,  1634,
-    1634,  1635,  1635,  1635,  1636,  1636,  1636,  1636,  1637,  1637,
-    1637,  1638,  1638,  1638,  1639,  1639,  1639,  1639,  1640,  1640,
-    1640,  1640,  1641,  1641,  1641,  1641,  1642,  1642,  1642,  1642,
-    1643,  1643,  1643,  1643,  1644,  1644,  1647,  1651,  1655,  1659,
-    1663,  1667,  1671,  1675,  1679,  1684,  1689,  1694,  1698,  1702,
-    1706,  1710,  1714,  1718,  1722,  1726,  1730,  1734,  1738,  1742,
-    1746,  1750,  1754,  1758,  1762,  1766,  1770,  1774,  1778,  1782,
-    1786,  1790,  1794,  1798,  1802,  1806,  1810,  1814,  1818,  1822,
-    1828,  1835,  1836,  1840,  1844,  1850,  1856,  1857,  1860,  1861,
-    1862,  1866,  1870,  1876,  1880,  1884,  1888,  1892,  1898,  1898,
-    1909,  1915,  1919,  1925,  1929,  1933,  1937,  1943,  1947,  1951,
-    1957,  1958,  1959,  1960,  1961,  1962,  1963,  1964,  1969,  1968,
-    1979,  1979,  1983,  1983,  1987,  1991,  1995,  1999,  2003,  2007,
-    2011,  2015,  2019,  2023,  2027,  2031,  2035,  2036,  2042,  2041,
-    2054,  2061,  2068,  2068,  2068,  2074,  2074,  2074,  2080,  2086,
-    2091,  2093,  2090,  2100,  2099,  2112,  2117,  2111,  2130,  2129,
-    2142,  2141,  2154,  2155,  2154,  2168,  2172,  2176,  2180,  2186,
-    2193,  2194,  2195,  2198,  2199,  2202,  2203,  2211,  2212,  2218,
-    2222,  2225,  2229,  2235,  2239,  2245,  2249,  2253,  2257,  2261,
-    2265,  2269,  2273,  2277,  2283,  2287,  2291,  2295,  2299,  2303,
-    2307,  2311,  2315,  2319,  2323,  2327,  2331,  2335,  2339,  2345,
-    2346,  2353,  2358,  2363,  2370,  2374,  2380,  2381,  2384,  2389,
-    2392,  2396,  2402,  2406,  2413,  2412,  2425,  2435,  2439,  2444,
-    2451,  2455,  2459,  2463,  2467,  2471,  2475,  2479,  2483,  2490,
-    2489,  2500,  2499,  2511,  2519,  2528,  2531,  2538,  2541,  2545,
-    2546,  2549,  2553,  2556,  2560,  2563,  2564,  2565,  2566,  2569,
-    2570,  2571,  2575,  2581,  2582,  2588,  2593,  2592,  2603,  2609,
-    2613,  2619,  2623,  2629,  2632,  2633,  2636,  2637,  2640,  2645,
-    2652,  2656,  2663,  2667,  2674,  2681,  2682,  2683,  2684,  2685,
-    2689,  2695,  2699,  2705,  2706,  2707,  2711,  2717,  2721,  2725,
-    2729,  2733,  2739,  2745,  2749,  2753,  2757,  2761,  2765,  2772,
-    2781,  2782,  2785,  2790,  2789,  2798,  2805,  2811,  2817,  2821,
-    2825,  2829,  2833,  2837,  2841,  2845,  2849,  2853,  2857,  2861,
-    2865,  2869,  2874,  2880,  2885,  2890,  2895,  2902,  2906,  2913,
-    2917,  2923,  2927,  2933,  2940,  2947,  2951,  2957,  2961,  2967,
-    2968,  2971,  2976,  2983,  2984,  2987,  2994,  2998,  3005,  3010,
-    3010,  3035,  3036,  3042,  3046,  3052,  3056,  3062,  3063,  3064,
-    3067,  3068,  3069,  3070,  3073,  3074,  3075,  3078,  3079,  3082,
-    3083,  3086,  3087,  3090,  3093,  3096,  3097,  3098,  3101,  3102,
-    3106,  3105,  3112,  3113,  3117
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "keyword_class", "keyword_module",
-  "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
-  "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
-  "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
-  "keyword_when", "keyword_while", "keyword_until", "keyword_for",
-  "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
-  "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
-  "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
-  "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
-  "keyword_and", "keyword_or", "keyword_not", "modifier_if",
-  "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
-  "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__",
-  "keyword__FILE__", "keyword__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR",
-  "tIVAR", "tCONSTANT", "tCVAR", "tLABEL", "tINTEGER", "tFLOAT", "tCHAR",
-  "tXSTRING", "tREGEXP", "tSTRING", "tSTRING_PART", "tSTRING_MID",
-  "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW",
-  "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP",
-  "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT",
-  "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN",
-  "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR",
-  "tAMPER", "tLAMBDA", "tSYMBEG", "tREGEXP_BEG", "tWORDS_BEG",
-  "tSYMBOLS_BEG", "tSTRING_BEG", "tXSTRING_BEG", "tSTRING_DVAR", "tLAMBEG",
-  "tHEREDOC_BEG", "tHEREDOC_END", "tLITERAL_DELIM", "tLOWEST", "'='",
-  "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'", "'-'", "'*'",
-  "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL", "idRespond_to",
-  "idIFUNC", "idCFUNC", "id_core_set_method_alias",
-  "id_core_set_variable_alias", "id_core_undef_method",
-  "id_core_define_method", "id_core_define_singleton_method",
-  "id_core_set_postexe", "tLAST_TOKEN", "'{'", "'}'", "'['", "'.'", "','",
-  "'`'", "'('", "')'", "']'", "';'", "'\\n'", "$accept", "program", "$@1",
-  "top_compstmt", "top_stmts", "top_stmt", "@2", "bodystmt", "compstmt",
-  "stmts", "stmt", "$@3", "command_asgn", "expr", "expr_value",
-  "command_call", "block_command", "cmd_brace_block", "$@4", "command",
-  "mlhs", "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list",
-  "mlhs_post", "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym",
-  "undef_list", "$@5", "op", "reswords", "arg", "arg_value", "aref_args",
-  "paren_args", "opt_paren_args", "opt_call_args", "call_args",
-  "command_args", "@6", "block_arg", "opt_block_arg", "args", "mrhs",
-  "primary", "$@7", "$@8", "$@9", "@10", "$@11", "$@12", "$@13", "$@14",
-  "$@15", "$@16", "@17", "@18", "@19", "@20", "@21", "$@22", "@23",
-  "primary_value", "then", "do", "if_tail", "opt_else", "for_var",
-  "f_marg", "f_marg_list", "f_margs", "block_param", "opt_block_param",
-  "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_larglist",
-  "lambda_body", "do_block", "$@24", "block_call", "method_call",
-  "brace_block", "$@25", "$@26", "case_body", "cases", "opt_rescue",
-  "exc_list", "exc_var", "opt_ensure", "literal", "string", "string_rep",
-  "string_interp", "@27", "xstring", "regexp", "heredoc",
-  "opt_heredoc_bodies", "heredoc_bodies", "heredoc_body", "words",
-  "symbol", "basic_symbol", "sym", "symbols", "numeric", "variable",
-  "var_lhs", "var_ref", "backref", "superclass", "$@28", "f_arglist",
-  "f_args", "f_bad_arg", "f_norm_arg", "f_arg_item", "f_arg", "f_opt",
-  "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
-  "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
-  "singleton", "$@29", "assoc_list", "assocs", "assoc", "operation",
-  "operation2", "operation3", "dot_or_colon", "opt_terms", "opt_nl",
-  "rparen", "rbracket", "trailer", "term", "nl", "$@30", "terms", "none", YY_NULL
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,    61,    63,    58,    62,    60,   124,    94,
-      38,    43,    45,    42,    47,    37,   368,    33,   126,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-     123,   125,    91,    46,    44,    96,    40,    41,    93,    59,
-      10
-};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   151,   153,   152,   154,   155,   155,   155,   155,   156,
-     157,   156,   158,   159,   160,   160,   160,   160,   162,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
-     163,   163,   164,   164,   164,   164,   164,   164,   165,   166,
-     166,   167,   167,   169,   168,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   171,   171,   172,   172,
-     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-     174,   174,   175,   175,   176,   176,   177,   177,   177,   177,
-     177,   177,   177,   177,   178,   178,   178,   178,   178,   178,
-     178,   178,   179,   179,   180,   180,   180,   181,   181,   181,
-     181,   181,   182,   182,   183,   184,   183,   185,   185,   185,
-     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
-     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
-     185,   185,   185,   185,   185,   185,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     188,   189,   189,   189,   189,   190,   191,   191,   192,   192,
-     192,   192,   192,   193,   193,   193,   193,   193,   195,   194,
-     196,   197,   197,   198,   198,   198,   198,   199,   199,   199,
-     200,   200,   200,   200,   200,   200,   200,   200,   201,   200,
-     202,   200,   203,   200,   200,   200,   200,   200,   200,   200,
-     200,   200,   200,   200,   200,   200,   200,   200,   204,   200,
-     200,   200,   205,   206,   200,   207,   208,   200,   200,   200,
-     209,   210,   200,   211,   200,   212,   213,   200,   214,   200,
-     215,   200,   216,   217,   200,   200,   200,   200,   200,   218,
-     219,   219,   219,   220,   220,   221,   221,   222,   222,   223,
-     223,   224,   224,   225,   225,   226,   226,   226,   226,   226,
-     226,   226,   226,   226,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   228,
-     228,   229,   229,   229,   230,   230,   231,   231,   232,   232,
-     233,   233,   234,   234,   236,   235,   237,   237,   237,   237,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   240,
-     239,   241,   239,   242,   243,   243,   244,   244,   245,   245,
-     245,   246,   246,   247,   247,   248,   248,   248,   248,   249,
-     249,   249,   249,   250,   250,   251,   252,   251,   251,   253,
-     253,   254,   254,   255,   256,   256,   257,   257,   258,   258,
-     259,   259,   260,   260,   261,   262,   262,   262,   262,   262,
-     262,   263,   263,   264,   264,   264,   264,   265,   265,   265,
-     265,   265,   266,   267,   267,   267,   267,   267,   267,   267,
-     268,   268,   269,   270,   269,   269,   271,   271,   272,   272,
-     272,   272,   272,   272,   272,   272,   272,   272,   272,   272,
-     272,   272,   272,   273,   273,   273,   273,   274,   274,   275,
-     275,   276,   276,   277,   278,   279,   279,   280,   280,   281,
-     281,   282,   282,   283,   283,   284,   285,   285,   286,   287,
-     286,   288,   288,   289,   289,   290,   290,   291,   291,   291,
-     292,   292,   292,   292,   293,   293,   293,   294,   294,   295,
-     295,   296,   296,   297,   298,   299,   299,   299,   300,   300,
-     302,   301,   303,   303,   304
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     0,     2,     2,     1,     1,     3,     2,     1,
-       0,     5,     4,     2,     1,     1,     3,     2,     0,     4,
-       2,     3,     3,     3,     3,     3,     4,     1,     3,     3,
-       6,     5,     5,     5,     5,     3,     3,     3,     3,     1,
-       3,     3,     1,     3,     3,     3,     2,     1,     1,     1,
-       1,     1,     4,     0,     5,     2,     3,     4,     5,     4,
-       5,     2,     2,     2,     2,     2,     1,     3,     1,     3,
-       1,     2,     3,     5,     2,     4,     2,     4,     1,     3,
-       1,     3,     2,     3,     1,     2,     1,     4,     3,     3,
-       3,     3,     2,     1,     1,     4,     3,     3,     3,     3,
-       2,     1,     1,     1,     2,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     5,     3,     5,
-       6,     5,     5,     5,     5,     4,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     4,     4,     2,     2,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     2,     3,     3,     3,     3,     6,     1,
-       1,     1,     2,     4,     2,     3,     1,     1,     1,     1,
-       2,     4,     2,     1,     2,     2,     4,     1,     0,     2,
-       2,     2,     1,     1,     2,     3,     4,     3,     4,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     3,     3,     3,     2,     3,     3,     1,
-       4,     3,     1,     4,     3,     2,     1,     2,     0,     4,
-       6,     6,     0,     0,     7,     0,     0,     7,     5,     4,
-       0,     0,     9,     0,     6,     0,     0,     8,     0,     5,
-       0,     6,     0,     0,     9,     1,     1,     1,     1,     1,
-       1,     1,     2,     1,     1,     1,     5,     1,     2,     1,
-       1,     1,     3,     1,     3,     1,     4,     6,     3,     5,
-       2,     4,     1,     3,     6,     8,     4,     6,     4,     2,
-       6,     2,     4,     6,     2,     4,     2,     4,     1,     1,
-       1,     3,     1,     4,     1,     4,     1,     3,     1,     1,
-       4,     1,     3,     3,     0,     5,     2,     4,     5,     5,
-       2,     4,     4,     3,     3,     3,     2,     1,     4,     0,
-       5,     0,     5,     5,     1,     1,     6,     1,     1,     1,
-       1,     2,     1,     2,     1,     1,     1,     1,     1,     1,
-       1,     2,     3,     1,     2,     1,     0,     4,     1,     2,
-       3,     2,     3,     1,     1,     1,     1,     2,     1,     2,
-       2,     3,     1,     4,     2,     1,     1,     1,     1,     1,
-       2,     2,     3,     1,     1,     2,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     2,     3,     2,     6,     8,
-       4,     6,     4,     6,     2,     4,     6,     2,     4,     2,
-       4,     1,     0,     1,     1,     1,     1,     1,     1,     1,
-       3,     1,     3,     3,     3,     1,     3,     1,     3,     1,
-       1,     2,     1,     1,     1,     2,     2,     1,     1,     0,
-       4,     1,     2,     1,     3,     3,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       1,     0,     1,     2,     2,     0,     1,     1,     1,     1,
-       0,     3,     1,     2,     0
-};
-
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-       2,     0,     0,     1,     0,     0,     0,     0,     0,   268,
-       0,     0,   529,   292,   295,     0,   315,   316,   317,   318,
-     279,   248,   248,   455,   454,   456,   457,   531,     0,    10,
-       0,   459,   458,   447,   519,   449,   448,   451,   450,   443,
-     444,   409,   410,   460,   461,     0,     0,     0,     0,   272,
-     544,   544,    78,   288,     0,     0,     0,     0,     0,     0,
-     423,     0,     0,     0,     3,   529,     6,     9,    27,    39,
-      42,    50,    49,     0,    66,     0,    70,    80,     0,    47,
-     229,     0,    51,   286,   260,   261,   262,   263,   264,   407,
-     406,   432,   408,   405,   453,     0,   265,   266,   248,     5,
-       8,   315,   316,   279,   282,   387,     0,   102,   103,     0,
-       0,     0,     0,   105,     0,   319,     0,   453,   266,     0,
-     308,   156,   166,   157,   179,   153,   172,   162,   161,   182,
-     183,   177,   160,   159,   155,   180,   184,   185,   164,   154,
-     167,   171,   173,   165,   158,   174,   181,   176,   175,   168,
-     178,   163,   152,   170,   169,   151,   149,   150,   146,   147,
-     148,   107,   109,   108,   141,   142,   138,   120,   121,   122,
-     129,   126,   128,   123,   124,   143,   144,   130,   131,   135,
-     125,   127,   117,   118,   119,   132,   133,   134,   136,   137,
-     139,   140,   145,   509,   310,   110,   111,   508,     0,   175,
-     168,   178,   163,   146,   147,   107,   108,     0,   112,   114,
-      20,   113,     0,     0,    48,     0,     0,     0,   453,     0,
-     266,     0,   538,   540,   529,     0,   542,   539,   530,     0,
-       0,     0,   330,   329,     0,     0,   453,   266,     0,     0,
-       0,     0,   243,   230,   253,    64,   247,   544,   544,   513,
-      65,    63,   531,    62,     0,   544,   386,    61,   531,     0,
-     532,    18,     0,     0,   207,     0,   208,   276,     0,     0,
-       0,   529,    15,   531,    68,    14,   270,   531,     0,   535,
-     535,   231,     0,     0,   535,   511,     0,     0,    76,     0,
-      86,    93,   482,   437,   436,   438,   439,     0,   435,   434,
-     421,   416,   415,   418,     0,   413,   430,     0,   441,     0,
-     411,     0,   419,     0,   445,   446,    46,   222,   223,     4,
-     530,     0,     0,     0,     0,     0,     0,     0,   374,   376,
-       0,    82,     0,    74,    71,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   544,     0,   528,   527,     0,   391,   389,
-     287,     0,     0,   380,    55,   285,   305,   102,   103,   104,
-     445,   446,     0,   463,   303,   462,     0,   544,     0,     0,
-       0,   482,   312,     0,   115,     0,   544,   276,   321,     0,
-     320,     0,     0,   544,     0,     0,     0,     0,   544,     0,
-       0,     0,   543,     0,     0,   276,     0,   544,     0,   300,
-     516,   254,   250,     0,     0,   244,   252,     0,   245,   531,
-       0,   281,   249,   531,   239,   544,   544,   238,   531,   284,
-      45,     0,     0,     0,     0,     0,     0,    17,   531,   274,
-      13,   530,    67,   531,   273,   277,   537,   232,   536,   537,
-     234,   278,   512,    92,    84,     0,    79,     0,     0,   544,
-       0,   488,   485,   484,   483,   486,     0,   500,   504,   503,
-     499,   482,     0,   371,   487,   489,   491,   544,   497,   544,
-     502,   544,     0,   481,   440,     0,     0,   422,   414,   431,
-     442,   412,   420,     0,     0,     7,    21,    22,    23,    24,
-      25,    43,    44,   544,     0,    28,    37,     0,    38,   531,
-       0,    72,    83,    41,    40,     0,   186,   253,    36,   204,
-     212,   217,   218,   219,   214,   216,   226,   227,   220,   221,
-     197,   198,   224,   225,   531,   213,   215,   209,   210,   211,
-     199,   200,   201,   202,   203,   520,   525,   521,   526,   385,
-     248,   383,   531,   520,   522,   521,   523,   384,   248,   520,
-     521,   248,   544,   544,    29,   188,    35,   196,    53,    56,
-       0,   465,     0,     0,   102,   103,   106,     0,   531,   544,
-       0,   531,   482,     0,     0,     0,     0,   269,   544,   544,
-     397,   544,   322,   186,   524,   521,   531,   520,   521,   544,
-     428,     0,   541,   425,   426,   424,     0,     0,   299,   324,
-     293,   323,   296,   524,   275,   531,   520,   521,     0,   515,
-       0,   255,   251,   544,   514,   280,   533,   235,   240,   242,
-     283,    19,     0,    26,   195,    69,    16,   271,   535,    85,
-      77,    89,    91,   531,   520,   521,     0,   488,     0,   342,
-     333,   335,   531,   331,   531,     0,     0,   289,     0,   474,
-     507,     0,   477,   501,     0,   479,   505,   433,     0,   205,
-     206,   362,   531,     0,   360,   359,   259,     0,    81,    75,
-       0,     0,     0,     0,     0,     0,   382,    59,     0,   388,
-       0,     0,   237,   381,    57,   236,   377,    52,     0,     0,
-       0,   544,   306,     0,     0,   388,   309,   510,   531,     0,
-     467,   313,   116,   398,   399,   544,   400,     0,   544,   327,
-       0,     0,   325,     0,     0,   388,     0,     0,     0,   429,
-     427,   298,     0,     0,     0,     0,   388,     0,   256,   246,
-     544,    11,   233,    87,   493,   531,     0,   340,     0,   490,
-       0,   364,     0,     0,   492,   544,   544,   506,   544,   498,
-     544,   544,   417,   488,   531,     0,   544,   495,   544,   544,
-     358,     0,     0,   257,    73,   187,     0,    34,   193,    33,
-     194,    60,   534,     0,    31,   191,    32,   192,    58,   378,
-     379,     0,     0,   189,     0,     0,   464,   304,   466,   311,
-     482,     0,     0,   402,   328,     0,    12,   404,     0,   290,
-       0,   291,   255,   544,     0,     0,   301,   241,   332,   343,
-       0,   338,   334,   370,     0,   373,   372,     0,   470,     0,
-     472,     0,   478,     0,   475,   480,     0,     0,   361,   349,
-     351,     0,   354,     0,   356,   375,   258,   228,    30,   190,
-     392,   390,     0,     0,     0,     0,   401,     0,    94,   101,
-       0,   403,     0,   394,   395,   393,   294,   297,     0,     0,
-     341,     0,   336,   368,   531,   366,   369,   544,   544,   544,
-     544,     0,   494,   363,   544,   544,   544,   496,   544,   544,
-      54,   307,     0,   100,     0,   544,     0,   544,   544,     0,
-     339,     0,     0,   365,   471,     0,   468,   473,   476,   276,
-       0,     0,   346,     0,   348,   355,     0,   352,   357,   314,
-     524,    99,   531,   520,   521,   396,   326,   302,   337,   367,
-     544,   524,   275,   544,   544,   544,   544,   388,   469,   347,
-       0,   344,   350,   353,   544,   345
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,     1,     2,    64,    65,    66,   262,   395,   396,   271,
-     272,   441,    68,    69,   215,    70,    71,   579,   711,    72,
-      73,   273,    74,    75,    76,   466,    77,   216,   113,   114,
-     208,   209,   210,   596,   195,   196,    79,   244,   278,   559,
-     703,   433,   434,   253,   254,   246,   425,   435,   518,    80,
-     212,   453,   277,   292,   229,   744,   230,   745,   628,   878,
-     583,   580,   805,   389,   391,   595,   810,   265,   399,   620,
-     731,   732,   235,   660,   661,   662,   774,   683,   684,   760,
-     884,   885,   482,   667,   329,   513,    82,    83,   375,   573,
-     572,   411,   875,   599,   725,   812,   816,    84,    85,   611,
-     305,   496,    86,    87,    88,   612,   613,   614,    89,    90,
-      91,   299,    92,    93,   218,   219,    96,   220,   384,   582,
-     593,   594,   484,   485,   486,   487,   488,   777,   778,   489,
-     490,   491,   492,   767,   669,   198,   390,   283,   436,   249,
-     119,   587,   561,   367,   225,   430,   431,   699,   457,   400,
-     260,   408,   228,   275
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -745
-static const yytype_int16 yypact[] =
-{
-    -745,   109,  2594,  -745,  7293,  9101,  9428,  5731,  6790,  -745,
-    8762,  8762,  5204,  -745,  -745,  9210,  7519,  7519,  -745,  -745,
-    7519,  3298,  2863,  -745,  -745,  -745,  -745,   -13,  6790,  -745,
-       1,  -745,  -745,  5862,  3008,  -745,  -745,  5993,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  8875,  8875,    94,  4515,  8762,
-    7745,  8084,  7061,  -745,  6504,   671,   707,   751,   771,   314,
-    -745,   125,  8988,  8875,  -745,   189,  -745,   905,  -745,   491,
-    -745,  -745,   124,    67,  -745,    43,  9319,  -745,    99,  2845,
-     228,   271,    24,    76,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,   392,    86,  -745,   436,    63,  -745,
-    -745,  -745,  -745,  -745,   102,   123,   168,   328,   418,  8762,
-     104,  4665,   283,  -745,   160,  -745,   278,  -745,  -745,    63,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,    56,    59,
-     214,   234,  -745,  -745,  -745,  -745,  -745,  -745,   260,   274,
-    -745,   292,  -745,   295,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  -745,    24,  -745,
-    -745,  -745,  -745,  -745,  -745,  -745,  -745,  6647,  -745,  -745,
-      93,  -745,  3682,   150,   491,    92,   218,   284,    49,   237,
-      75,    92,  -745,  -745,   189,   332,  -745,  -745,   235,  8762,
-    8762,   312,  -745,  -745,   304,   364,    88,    95,  8875,  8875,
-    8875,  8875,  -745,  2845,   300,  -745,  -745,   261,   266,  -745,
-    -745,  -745,  5091,  -745,  7519,  7519,  -745,  -745,  5339,  8762,
-    -745,  -745,   279,  4815,  -745,   330,   370,   472,  7406,  4515,
-     301,   189,   905,   308,   338,  -745,   491,   308,   315,    19,
-     145,  -745,   300,   324,   145,  -745,   421,  9537,   334,   354,
-     373,   378,   745,  -745,  -745,  -745,  -745,   939,  -745,  -745,
-    -745,  -745,  -745,  -745,   696,  -745,  -745,   943,  -745,   961,
-    -745,   971,  -745,   388,   409,   415,  -745,  -745,  -745,  -745,
-    5452,  8762,  8762,  8762,  8762,  7406,  8762,  8762,  -745,  -745,
-    8197,  -745,  4515,  7177,   357,  8197,  8875,  8875,  8875,  8875,
-    8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,
-    8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,  8875,
-    8875,  8875,  2206,  7519,  9814,  -745,  -745, 10750,  -745,  -745,
-    -745,  8988,  8988,  -745,   395,  -745,   491,  -745,   381,  -745,
-    -745,  -745,   189,  -745,  -745,  -745,  9892,  7519,  9970,  3682,
-    8762,   875,  -745,   441,  -745,   503,   523,    91,  -745,  3823,
-     520,  8875, 10048,  7519, 10126,  8875,  8875,  4095,   802,   332,
... truncated to 1.0MB




More information about the Groonga-commit mailing list
Back to archive index